From 3b01da696253bfa8f08a3017022be395b7a6b1ce Mon Sep 17 00:00:00 2001 From: AKALegman Date: Sat, 30 May 2015 16:57:50 +0100 Subject: [PATCH 001/118] IED Class Inheritance Fixes --- addons/explosives/CfgAmmo.hpp | 65 ++++++++++++++++++++---------- addons/explosives/CfgMagazines.hpp | 36 ++++++++++------- 2 files changed, 66 insertions(+), 35 deletions(-) diff --git a/addons/explosives/CfgAmmo.hpp b/addons/explosives/CfgAmmo.hpp index c6d70bc64a..ace7d5ef02 100644 --- a/addons/explosives/CfgAmmo.hpp +++ b/addons/explosives/CfgAmmo.hpp @@ -69,25 +69,48 @@ class CfgAmmo { /*class DemoCharge_Remote_Ammo_Scripted: DemoCharge_Remote_Ammo; class SatchelCharge_Remote_Ammo_Scripted: SatchelCharge_Remote_Ammo;*/ - - class IEDUrbanBig_Remote_Ammo: PipeBombBase { - mineTrigger = "RangeTrigger"; - triggerWhenDestroyed = 1; - soundTrigger[] = {"A3\Sounds_F\weapons\mines\mech_trigger_1", 0.562341, 1, 40}; - }; - class IEDLandBig_Remote_Ammo: PipeBombBase { - mineTrigger = "RangeTrigger"; - triggerWhenDestroyed = 1; - soundTrigger[] = {"A3\Sounds_F\weapons\mines\mech_trigger_1", 0.562341, 1, 40}; - }; - class IEDUrbanSmall_Remote_Ammo: PipeBombBase { - mineTrigger = "RangeTrigger"; - triggerWhenDestroyed = 1; - soundTrigger[] = {"A3\Sounds_F\weapons\mines\mech_trigger_1", 0.562341, 1, 40}; - }; - class IEDLandSmall_Remote_Ammo: PipeBombBase { - mineTrigger = "RangeTrigger"; - triggerWhenDestroyed = 1; - soundTrigger[] = {"A3\Sounds_F\weapons\mines\mech_trigger_1", 0.562341, 1, 40}; - }; + + class IEDUrbanBig_Remote_Ammo: PipeBombBase { + triggerWhenDestroyed = 1; + soundTrigger[] = {"A3\Sounds_F\weapons\mines\mech_trigger_1", 0.8, 1, 40}; + }; + class IEDUrbanBig_Command_Ammo: IEDUrbanBig_Remote_Ammo { + mineTrigger = "RemoteTrigger"; + }; + class IEDUrbanBig_Range_Ammo: IEDUrbanBig_Remote_Ammo { + mineTrigger = "RangeTrigger"; + }; + + class IEDUrbanSmall_Remote_Ammo: PipeBombBase { + triggerWhenDestroyed = 1; + soundTrigger[] = {"A3\Sounds_F\weapons\mines\mech_trigger_1", 0.8, 1, 40}; + }; + class IEDUrbanSmall_Command_Ammo: IEDUrbanSmall_Remote_Ammo { + mineTrigger = "RemoteTrigger"; + }; + class IEDUrbanSmall_Range_Ammo: IEDUrbanSmall_Remote_Ammo { + mineTrigger = "RangeTrigger"; + }; + + class IEDLandBig_Remote_Ammo: PipeBombBase { + triggerWhenDestroyed = 1; + soundTrigger[] = {"A3\Sounds_F\weapons\mines\mech_trigger_1", 0.8, 1, 40}; + }; + class IEDLandBig_Command_Ammo: IEDLandBig_Remote_Ammo { + mineTrigger = "RemoteTrigger"; + }; + class IEDLandBig_Range_Ammo: IEDLandBig_Remote_Ammo { + mineTrigger = "RangeTrigger"; + }; + + class IEDLandSmall_Remote_Ammo: PipeBombBase { + triggerWhenDestroyed = 1; + soundTrigger[] = {"A3\Sounds_F\weapons\mines\mech_trigger_1", 0.8, 1, 40}; + }; + class IEDLandSmall_Command_Ammo: IEDLandSmall_Remote_Ammo { + mineTrigger = "RemoteTrigger"; + }; + class IEDLandSmall_Range_Ammo: IEDLandSmall_Remote_Ammo { + mineTrigger = "RangeTrigger"; + }; }; diff --git a/addons/explosives/CfgMagazines.hpp b/addons/explosives/CfgMagazines.hpp index 248ee12640..bb8b0080bb 100644 --- a/addons/explosives/CfgMagazines.hpp +++ b/addons/explosives/CfgMagazines.hpp @@ -95,29 +95,33 @@ class CfgMagazines { }; }; }; - - class IEDUrbanBig_Remote_Mag: DemoCharge_Remote_Mag { - ACE_SetupObject = "ACE_Explosives_Place_IEDUrbanBig"; - class ACE_Triggers { - SupportedTriggers[] = {"Command","DeadmanSwitch", "Cellphone", "PressurePlate"}; + + class IEDUrbanBig_Remote_Mag: DemoCharge_Remote_Mag { + class ACE_Triggers { + SupportedTriggers[] = {"Command", "DeadmanSwitch", "Cellphone", "PressurePlate"}; class Command { FuseTime = 0.5; + ammo = "IEDUrbanBig_Command_Ammo"; }; - class DeadmanSwitch:Command {}; - class Cellphone:Command {}; - class PressurePlate { + class DeadmanSwitch: Command{}; + class Cellphone: Command{}; + class PressurePlate{ displayName = $STR_ACE_Explosives_SLAME_Magnetic; digDistance = 0; - ammo = "IEDUrbanBig_Remote_Ammo"; + ammo = "IEDUrbanBig_Range_Ammo"; pitch = 0; }; - }; - }; + }; + }; + class IEDLandBig_Remote_Mag: IEDUrbanBig_Remote_Mag { ACE_SetupObject = "ACE_Explosives_Place_IEDLandBig"; class ACE_Triggers: ACE_Triggers { + class Command: Command { + ammo = "IEDLandBig_Command_Ammo"; + }; class PressurePlate: PressurePlate { - ammo = "IEDLandBig_Remote_Ammo"; + ammo = "IEDLandBig_Range_Ammo"; }; }; }; @@ -127,13 +131,14 @@ class CfgMagazines { SupportedTriggers[] = {"Command","DeadmanSwitch", "Cellphone", "PressurePlate"}; class Command { FuseTime = 0.5; + ammo = "IEDUrbanSmall_Command_Ammo"; }; class DeadmanSwitch: Command {}; class Cellphone: Command {}; class PressurePlate { displayName = $STR_ACE_Explosives_SLAME_Magnetic; digDistance = 0; - ammo = "IEDUrbanSmall_Remote_Ammo"; + ammo = "IEDUrbanSmall_Range_Ammo"; pitch = 0; }; }; @@ -141,8 +146,11 @@ class CfgMagazines { class IEDLandSmall_Remote_Mag: IEDUrbanSmall_Remote_Mag { ACE_SetupObject = "ACE_Explosives_Place_IEDLandSmall"; class ACE_Triggers: ACE_Triggers { + class Command: Command { + ammo = "IEDLandSmall_Command_Ammo"; + }; class PressurePlate: PressurePlate { - ammo = "IEDLandSmall_Remote_Ammo"; + ammo = "IEDLandSmall_Range_Ammo"; }; }; }; From 25f613b7125b8e3b1cec25fd6002e26ad929e607 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Thu, 4 Jun 2015 23:11:35 +0100 Subject: [PATCH 002/118] Initial implementation of static zeus menu --- addons/interact_menu/ACE_ZeusActions.hpp | 43 +++++++++ addons/interact_menu/XEH_clientInit.sqf | 8 ++ addons/interact_menu/XEH_preInit.sqf | 4 + addons/interact_menu/config.cpp | 2 + .../functions/fnc_compileMenuZeus.sqf | 94 +++++++++++++++++++ .../interact_menu/functions/fnc_keyDown.sqf | 3 +- .../functions/fnc_renderActionPoints.sqf | 42 +++++++-- .../functions/fnc_renderBaseMenu.sqf | 2 +- 8 files changed, 187 insertions(+), 11 deletions(-) create mode 100644 addons/interact_menu/ACE_ZeusActions.hpp create mode 100644 addons/interact_menu/functions/fnc_compileMenuZeus.sqf diff --git a/addons/interact_menu/ACE_ZeusActions.hpp b/addons/interact_menu/ACE_ZeusActions.hpp new file mode 100644 index 0000000000..ea5be4505c --- /dev/null +++ b/addons/interact_menu/ACE_ZeusActions.hpp @@ -0,0 +1,43 @@ +class ACE_ZeusActions { + class ZeusUnits { + displayName = "Units"; + icon = "\A3\UI_F_Curator\Data\Displays\RscDisplayCurator\modeunits_ca.paa"; + }; + class ZeusGroups { + displayName = "Groups"; + icon = "\A3\UI_F_Curator\Data\Displays\RscDisplayCurator\modegroups_ca.paa"; + + class behaviour { + displayName = "Behaviour"; + + class aware { + displayName = "Aware"; + icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeBehaviour\aware_ca.paa"; + statement = "{ _x setBehaviour 'AWARE'; } forEach (curatorSelected select 1);"; + }; + class combat { + displayName = "Combat"; + icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeBehaviour\combat_ca.paa"; + statement = "{ _x setBehaviour 'COMBAT'; } forEach (curatorSelected select 1);"; + }; + class safe { + displayName = "Safe"; + icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeBehaviour\safe_ca.paa"; + statement = "{ _x setBehaviour 'SAFE'; } forEach (curatorSelected select 1);"; + }; + class stealth { + displayName = "Stealth"; + icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeBehaviour\stealth_ca.paa"; + statement = "{ _x setBehaviour 'STEALTH'; } forEach (curatorSelected select 1);"; + }; + }; + }; + class ZeusWaypoints { + displayName = "Waypoints"; + icon = "\A3\UI_F_Curator\Data\CfgCurator\waypoint_ca.paa"; + }; + class ZeusMarkers { + displayName = "Markers"; + icon = "\A3\UI_F_Curator\Data\Displays\RscDisplayCurator\modemarkers_ca.paa"; + }; +}; diff --git a/addons/interact_menu/XEH_clientInit.sqf b/addons/interact_menu/XEH_clientInit.sqf index f6c712a668..99e9ad1a2a 100644 --- a/addons/interact_menu/XEH_clientInit.sqf +++ b/addons/interact_menu/XEH_clientInit.sqf @@ -72,3 +72,11 @@ addMissionEventHandler ["Draw3D", DFUNC(render)]; if (GVAR(menuBackground)==1) then {[QGVAR(menuBackground), false] call EFUNC(common,blurScreen);}; if (GVAR(menuBackground)==2) then {(uiNamespace getVariable [QGVAR(menuBackground), displayNull]) closeDisplay 0;}; }] call EFUNC(common,addEventHandler); + +// Let key work with zeus open (not perfect, enables all added hotkeys in zeus interface rather than only menu) +["zeusDisplayChanged",{ + if (_this select 1) then { + (finddisplay 312) displayAddEventHandler ["KeyUp", {[_this,'keyup'] call CBA_events_fnc_keyHandler}]; + (finddisplay 312) displayAddEventHandler ["KeyDown", {[_this,'keydown'] call CBA_events_fnc_keyHandler}]; + }; +}] call EFUNC(common,addEventHandler); diff --git a/addons/interact_menu/XEH_preInit.sqf b/addons/interact_menu/XEH_preInit.sqf index 1620349468..1539f8e2aa 100644 --- a/addons/interact_menu/XEH_preInit.sqf +++ b/addons/interact_menu/XEH_preInit.sqf @@ -6,6 +6,7 @@ PREP(addActionToClass); PREP(addActionToObject); PREP(compileMenu); PREP(compileMenuSelfAction); +PREP(compileMenuZeus); PREP(collectActiveActionTree); PREP(createAction); PREP(ctrlSetParsedTextCached); @@ -75,4 +76,7 @@ GVAR(lastTimeSearchedActions) = -1000; ["CAManBase"] call FUNC(compileMenu); ["CAManBase"] call FUNC(compileMenuSelfAction); +// Init zeus menu +[] call FUNC(compileMenuZeus); + ADDON = true; diff --git a/addons/interact_menu/config.cpp b/addons/interact_menu/config.cpp index c1da3392e9..9ec0b75ebd 100644 --- a/addons/interact_menu/config.cpp +++ b/addons/interact_menu/config.cpp @@ -23,3 +23,5 @@ class CfgPatches { class ACE_Extensions { extensions[] += {"ace_break_line"}; }; + +#include "ACE_ZeusActions.hpp" diff --git a/addons/interact_menu/functions/fnc_compileMenuZeus.sqf b/addons/interact_menu/functions/fnc_compileMenuZeus.sqf new file mode 100644 index 0000000000..9dc212ac40 --- /dev/null +++ b/addons/interact_menu/functions/fnc_compileMenuZeus.sqf @@ -0,0 +1,94 @@ +/* + * Author: SilentSpike + * Compile the zeus action menu (only to be done once) + * + * Argument: + * nil + * + * Return value: + * None + * + * Public: No + */ +#include "script_component.hpp"; + +// Exit if the action menu is already compiled for zeus +if !(isNil {missionNamespace getVariable [QGVAR(ZeusActions), nil]}) exitWith {}; + +private "_recurseFnc"; +_recurseFnc = { + private ["_actions", "_displayName", "_icon", "_statement", "_condition", "_showDisabled", + "_enableInside", "_canCollapse", "_runOnHover", "_children", "_entry", "_entryCfg", "_insertChildren", "_modifierFunction"]; + EXPLODE_1_PVT(_this,_actionsCfg); + _actions = []; + + { + _entryCfg = _x; + if(isClass _entryCfg) then { + _displayName = getText (_entryCfg >> "displayName"); + + _icon = getText (_entryCfg >> "icon"); + _statement = compile (getText (_entryCfg >> "statement")); + + _condition = getText (_entryCfg >> "condition"); + if (_condition == "") then {_condition = "true"}; + + _insertChildren = compile (getText (_entryCfg >> "insertChildren")); + _modifierFunction = compile (getText (_entryCfg >> "modifierFunction")); + + _showDisabled = (getNumber (_entryCfg >> "showDisabled")) > 0; + _enableInside = (getNumber (_entryCfg >> "enableInside")) > 0; + _canCollapse = (getNumber (_entryCfg >> "canCollapse")) > 0; + _runOnHover = true; + if (isText (_entryCfg >> "runOnHover")) then { + _runOnHover = compile getText (_entryCfg >> "runOnHover"); + } else { + _runOnHover = (getNumber (_entryCfg >> "runOnHover")) > 0; + }; + + _condition = compile _condition; + _children = [_entryCfg] call _recurseFnc; + + _entry = [ + [ + configName _entryCfg, + _displayName, + _icon, + _statement, + _condition, + _insertChildren, + {}, + [0,0,0], + 10, //distace + [_showDisabled,_enableInside,_canCollapse,_runOnHover], + _modifierFunction + ], + _children + ]; + _actions pushBack _entry; + }; + } forEach (configProperties [_actionsCfg, "isClass _x", true]); + _actions +}; + +private ["_actionsCfg"]; +_actionsCfg = configFile >> "ACE_ZeusActions"; + +// Create a master action to base zeus actions on +GVAR(ZeusActions) = [ + [ + [ + "ACE_ZeusActions", + localize LSTRING(ZeusActionsRoot), + "\A3\Ui_F_Curator\Data\Logos\arma3_zeus_icon_ca.paa", + {true}, + {true}, + {}, + {}, + {[0,0,0]}, + 10, + [false,true,false] + ], + [_actionsCfg] call _recurseFnc + ] +]; diff --git a/addons/interact_menu/functions/fnc_keyDown.sqf b/addons/interact_menu/functions/fnc_keyDown.sqf index 50e911c878..2928953c81 100644 --- a/addons/interact_menu/functions/fnc_keyDown.sqf +++ b/addons/interact_menu/functions/fnc_keyDown.sqf @@ -34,6 +34,7 @@ GVAR(ParsedTextCached) = []; GVAR(useCursorMenu) = (vehicle ACE_player != ACE_player) || visibleMap || + (!isNull curatorCamera) || {(_menuType == 1) && {(isWeaponDeployed ACE_player) || GVAR(AlwaysUseCursorSelfInteraction) || {cameraView == "GUNNER"}}} || {(_menuType == 0) && GVAR(AlwaysUseCursorInteraction)}; @@ -46,7 +47,7 @@ for "_i" from 0 to (count GVAR(iconCtrls))-1 do { GVAR(iconCtrls) resize GVAR(iconCount); if (GVAR(useCursorMenu)) then { - (findDisplay 46) createDisplay QGVAR(cursorMenu); //"RscCinemaBorder";// + (findDisplay ([312,46] select (isNull curatorCamera))) createDisplay QGVAR(cursorMenu); //"RscCinemaBorder";// (finddisplay 91919) displayAddEventHandler ["KeyUp", {[_this,'keyup'] call CBA_events_fnc_keyHandler}]; (finddisplay 91919) displayAddEventHandler ["KeyDown", {[_this,'keydown'] call CBA_events_fnc_keyHandler}]; // The dialog sets: diff --git a/addons/interact_menu/functions/fnc_renderActionPoints.sqf b/addons/interact_menu/functions/fnc_renderActionPoints.sqf index 707c3a3349..ca4bdbc037 100644 --- a/addons/interact_menu/functions/fnc_renderActionPoints.sqf +++ b/addons/interact_menu/functions/fnc_renderActionPoints.sqf @@ -118,24 +118,48 @@ _fnc_renderSelfActions = { } forEach _classActions; }; +_fnc_renderZeusActions = { + _target = _this; + + // Iterate through zeus actions, find base level actions and render them if appropiate + _pos = if !(GVAR(useCursorMenu)) then { + _virtualPoint = (((positionCameraToWorld [0, 0, 0]) call EFUNC(common,positionToASL)) vectorAdd GVAR(selfMenuOffset)) call EFUNC(common,ASLToPosition); + _wavesAtOrigin = [(positionCameraToWorld [0, 0, 0])] call EFUNC(common,waveHeightAt); + _wavesAtVirtualPoint = [_virtualPoint] call EFUNC(common,waveHeightAt); + _virtualPoint set [2, ((_virtualPoint select 2) - _wavesAtOrigin + _wavesAtVirtualPoint)]; + _virtualPoint + } else { + [0.5, 0.5] + }; + + { + _action = _x; + [_target, _action, _pos] call FUNC(renderBaseMenu); + } forEach GVAR(ZeusActions); +}; + GVAR(collectedActionPoints) resize 0; // Render nearby actions, unit self actions or vehicle self actions as appropiate if (GVAR(openedMenuType) == 0) then { - - if (vehicle ACE_player == ACE_player) then { - if (ACE_diagTime > GVAR(lastTimeSearchedActions) + 0.20) then { - // Once every 0.2 secs, collect nearby objects active and visible action points and render them - call _fnc_renderNearbyActions; + if (isNull curatorCamera) then { + if (vehicle ACE_player == ACE_player) then { + if (ACE_diagTime > GVAR(lastTimeSearchedActions) + 0.20) then { + // Once every 0.2 secs, collect nearby objects active and visible action points and render them + call _fnc_renderNearbyActions; + } else { + // The rest of the frames just draw the same action points rendered the last frame + call _fnc_renderLastFrameActions; + }; } else { - // The rest of the frames just draw the same action points rendered the last frame - call _fnc_renderLastFrameActions; + // Render vehicle self actions when in vehicle + (vehicle ACE_player) call _fnc_renderSelfActions; }; } else { - (vehicle ACE_player) call _fnc_renderSelfActions; + // Render zeus actions when zeus open + (getAssignedCuratorLogic player) call _fnc_renderZeusActions; }; - } else { ACE_player call _fnc_renderSelfActions; }; diff --git a/addons/interact_menu/functions/fnc_renderBaseMenu.sqf b/addons/interact_menu/functions/fnc_renderBaseMenu.sqf index 5ee698b547..a844930a7c 100644 --- a/addons/interact_menu/functions/fnc_renderBaseMenu.sqf +++ b/addons/interact_menu/functions/fnc_renderBaseMenu.sqf @@ -36,7 +36,7 @@ _pos = if((count _this) > 2) then { }; // For non-self actions, exit if the action is too far away or ocluded -if (GVAR(openedMenuType) == 0 && vehicle ACE_player == ACE_player && +if (GVAR(openedMenuType) == 0 && (vehicle ACE_player == ACE_player) && (isNull curatorCamera) && { private ["_headPos","_actualDistance"]; _headPos = ACE_player modelToWorldVisual (ACE_player selectionPosition "pilot"); From 8a4b4a7e0c71500ea625d5bffac4f962e898fd4f Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Fri, 5 Jun 2015 18:37:29 +0100 Subject: [PATCH 003/118] Added a bunch of basic actions --- addons/interact_menu/ACE_ZeusActions.hpp | 256 +++++++++++++++++++++-- addons/interact_menu/stringtable.xml | 3 + 2 files changed, 244 insertions(+), 15 deletions(-) diff --git a/addons/interact_menu/ACE_ZeusActions.hpp b/addons/interact_menu/ACE_ZeusActions.hpp index ea5be4505c..0c9eae8566 100644 --- a/addons/interact_menu/ACE_ZeusActions.hpp +++ b/addons/interact_menu/ACE_ZeusActions.hpp @@ -1,43 +1,269 @@ class ACE_ZeusActions { + // _target = curatorLogic + // curatorSelected = [objects,groups,waypoints,markers] + class ZeusUnits { - displayName = "Units"; - icon = "\A3\UI_F_Curator\Data\Displays\RscDisplayCurator\modeunits_ca.paa"; + displayName = "$STR_A3_RscDisplayCurator_ModeUnits_tooltip"; + icon = "\A3\UI_F_Curator\Data\Displays\RscDisplayCurator\modeUnits_ca.paa"; + + class remoteControl { + displayName = "$STR_A3_CfgVehicles_ModuleRemoteControl_F"; + icon = "\A3\Modules_F_Curator\Data\portraitRemoteControl_ca.paa"; + statement = "_unit = objNull; { if ((side _x in [east,west,resistance,civilian]) && !(isPlayer _x)) exitWith { _unit = _x; }; } forEach (curatorSelected select 0); bis_fnc_curatorObjectPlaced_mouseOver = ['OBJECT',_unit]; (group _target) createUnit ['ModuleRemoteControl_F',[0,0,0],[],0,''];"; + }; + class stance { + displayName = "$STR_A3_RscAttributeUnitPos_Title"; + + class limited { + displayName = "$STR_A3_RscAttributeUnitPos_Down_tooltip"; + icon = "\A3\UI_F\Data\IGUI\RscIngameUI\RscUnitInfo\SI_prone_ca.paa"; + statement = "{_x setUnitPos 'DOWN';} forEach (curatorSelected select 0);"; + }; + class normal { + displayName = "$STR_A3_RscAttributeUnitPos_Crouch_tooltip"; + icon = "\A3\UI_F\Data\IGUI\RscIngameUI\RscUnitInfo\SI_crouch_ca.paa"; + statement = "{_x setUnitPos 'MIDDLE';} forEach (curatorSelected select 0);"; + }; + class full { + displayName = "$STR_A3_RscAttributeUnitPos_Up_tooltip"; + icon = "\A3\UI_F\Data\IGUI\RscIngameUI\RscUnitInfo\SI_stand_ca.paa"; + statement = "{_x setUnitPos 'UP';} forEach (curatorSelected select 0);"; + }; + class auto { + displayName = "$STR_A3_RscAttributeUnitPos_Auto_tooltip"; + icon = "\A3\UI_F_Curator\Data\default_ca.paa"; + statement = "{_x setUnitPos 'AUTO';} forEach (curatorSelected select 0);"; + }; + }; }; class ZeusGroups { - displayName = "Groups"; - icon = "\A3\UI_F_Curator\Data\Displays\RscDisplayCurator\modegroups_ca.paa"; + displayName = "$STR_A3_RscDisplayCurator_ModeGroups_tooltip"; + icon = "\A3\UI_F_Curator\Data\Displays\RscDisplayCurator\modeGroups_ca.paa"; class behaviour { - displayName = "Behaviour"; + displayName = "$STR_disp_arcwp_semaphore"; + class careless { + displayName = "$STR_careless"; + statement = "{ _x setBehaviour 'CARELESS'; } forEach (curatorSelected select 1);"; + }; + class safe { + displayName = "$STR_safe"; + icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeBehaviour\safe_ca.paa"; + statement = "{ _x setBehaviour 'SAFE'; } forEach (curatorSelected select 1);"; + }; class aware { - displayName = "Aware"; + displayName = "$STR_aware"; icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeBehaviour\aware_ca.paa"; statement = "{ _x setBehaviour 'AWARE'; } forEach (curatorSelected select 1);"; }; class combat { - displayName = "Combat"; + displayName = "$STR_combat"; icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeBehaviour\combat_ca.paa"; statement = "{ _x setBehaviour 'COMBAT'; } forEach (curatorSelected select 1);"; }; - class safe { - displayName = "Safe"; - icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeBehaviour\safe_ca.paa"; - statement = "{ _x setBehaviour 'SAFE'; } forEach (curatorSelected select 1);"; - }; class stealth { - displayName = "Stealth"; + displayName = "$STR_stealth"; icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeBehaviour\stealth_ca.paa"; statement = "{ _x setBehaviour 'STEALTH'; } forEach (curatorSelected select 1);"; }; }; + class speed { + displayName = "$STR_disp_arcwp_speed"; + + class limited { + displayName = "$STR_speed_limited"; + icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeSpeedMode\limited_ca.paa"; + statement = "{_x setSpeedMode 'LIMITED';} forEach (curatorSelected select 1);"; + }; + class normal { + displayName = "$STR_speed_normal"; + icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeSpeedMode\normal_ca.paa"; + statement = "{_x setSpeedMode 'NORMAL';} forEach (curatorSelected select 1);"; + }; + class full { + displayName = "$STR_speed_full"; + icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeSpeedMode\full_ca.paa"; + statement = "{_x setSpeedMode 'FULL';} forEach (curatorSelected select 1);"; + }; + }; + class stance { + displayName = "$STR_A3_RscAttributeUnitPos_Title"; + + class limited { + displayName = "$STR_A3_RscAttributeUnitPos_Down_tooltip"; + icon = "\A3\UI_F\Data\IGUI\RscIngameUI\RscUnitInfo\SI_prone_ca.paa"; + statement = "{ {_x setUnitPos 'DOWN'} forEach (units _x); } forEach (curatorSelected select 1);"; + }; + class normal { + displayName = "$STR_A3_RscAttributeUnitPos_Crouch_tooltip"; + icon = "\A3\UI_F\Data\IGUI\RscIngameUI\RscUnitInfo\SI_crouch_ca.paa"; + statement = "{ {_x setUnitPos 'MIDDLE'} forEach (units _x); } forEach (curatorSelected select 1);"; + }; + class full { + displayName = "$STR_A3_RscAttributeUnitPos_Up_tooltip"; + icon = "\A3\UI_F\Data\IGUI\RscIngameUI\RscUnitInfo\SI_stand_ca.paa"; + statement = "{ {_x setUnitPos 'UP'} forEach (units _x); } forEach (curatorSelected select 1);"; + }; + class auto { + displayName = "$STR_A3_RscAttributeUnitPos_Auto_tooltip"; + icon = "\A3\UI_F_Curator\Data\default_ca.paa"; + statement = "{ {_x setUnitPos 'AUTO'} forEach (units _x); } forEach (curatorSelected select 1);"; + }; + }; + class formation { + displayName = "$STR_disp_arcwp_form"; + + class wedge { + displayName = "$STR_wedge"; + icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\wedge_ca.paa"; + statement = "{_x setFormation 'WEDGE';} forEach (curatorSelected select 1);"; + }; + class vee { + displayName = "$STR_vee"; + icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\vee_ca.paa"; + statement = "{_x setFormation 'VEE';} forEach (curatorSelected select 1);"; + }; + class line { + displayName = "$STR_line"; + icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\line_ca.paa"; + statement = "{_x setFormation 'LINE';} forEach (curatorSelected select 1);"; + }; + class column { + displayName = "$STR_column"; + icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\column_ca.paa"; + statement = "{_x setFormation 'COLUMN';} forEach (curatorSelected select 1);"; + }; + class file { + displayName = "$STR_file"; + icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\file_ca.paa"; + statement = "{_x setFormation 'FILE';} forEach (curatorSelected select 1);"; + }; + class stag_column { + displayName = "$STR_staggered"; + icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\stag_column_ca.paa"; + statement = "{_x setFormation 'STAG COLUMN';} forEach (curatorSelected select 1);"; + }; + class ech_left { + displayName = "$STR_echl"; + icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\ech_left_ca.paa"; + statement = "{_x setFormation 'ECH LEFT';} forEach (curatorSelected select 1);"; + }; + class ech_right { + displayName = "$STR_echr"; + icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\ech_right_ca.paa"; + statement = "{_x setFormation 'ECH RIGHT';} forEach (curatorSelected select 1);"; + }; + class diamond { + displayName = "$STR_diamond"; + icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\diamond_ca.paa"; + statement = "{_x setFormation 'DIAMOND';} forEach (curatorSelected select 1);"; + }; + }; }; class ZeusWaypoints { displayName = "Waypoints"; icon = "\A3\UI_F_Curator\Data\CfgCurator\waypoint_ca.paa"; + + class behaviour { + displayName = "$STR_disp_arcwp_semaphore"; + + class careless { + displayName = "$STR_careless"; + statement = "{ _x setWaypointBehaviour 'CARELESS'; } forEach (curatorSelected select 2);"; + }; + class safe { + displayName = "$STR_safe"; + icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeBehaviour\safe_ca.paa"; + statement = "{ _x setWaypointBehaviour 'SAFE'; } forEach (curatorSelected select 2);"; + }; + class aware { + displayName = "$STR_aware"; + icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeBehaviour\aware_ca.paa"; + statement = "{ _x setWaypointBehaviour 'AWARE'; } forEach (curatorSelected select 2);"; + }; + class combat { + displayName = "$STR_combat"; + icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeBehaviour\combat_ca.paa"; + statement = "{ _x setWaypointBehaviour 'COMBAT'; } forEach (curatorSelected select 2);"; + }; + class stealth { + displayName = "$STR_stealth"; + icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeBehaviour\stealth_ca.paa"; + statement = "{ _x setWaypointBehaviour 'STEALTH'; } forEach (curatorSelected select 2);"; + }; + }; + class speed { + displayName = "$STR_disp_arcwp_speed"; + + class limited { + displayName = "$STR_speed_limited"; + icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeSpeedMode\limited_ca.paa"; + statement = "{ _x setWaypointSpeed 'LIMITED'; } forEach (curatorSelected select 2);"; + }; + class normal { + displayName = "$STR_speed_normal"; + icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeSpeedMode\normal_ca.paa"; + statement = "{ _x setWaypointSpeed 'NORMAL'; } forEach (curatorSelected select 2);"; + }; + class full { + displayName = "$STR_speed_full"; + icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeSpeedMode\full_ca.paa"; + statement = "{ _x setWaypointSpeed 'FULL'; } forEach (curatorSelected select 2);"; + }; + }; + class formation { + displayName = "$STR_disp_arcwp_form"; + + class wedge { + displayName = "$STR_wedge"; + icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\wedge_ca.paa"; + statement = "{_x setWaypointFormation 'WEDGE';} forEach (curatorSelected select 1);"; + }; + class vee { + displayName = "$STR_vee"; + icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\vee_ca.paa"; + statement = "{_x setWaypointFormation 'VEE';} forEach (curatorSelected select 1);"; + }; + class line { + displayName = "$STR_line"; + icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\line_ca.paa"; + statement = "{_x setWaypointFormation 'LINE';} forEach (curatorSelected select 1);"; + }; + class column { + displayName = "$STR_column"; + icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\column_ca.paa"; + statement = "{_x setWaypointFormation 'COLUMN';} forEach (curatorSelected select 1);"; + }; + class file { + displayName = "$STR_file"; + icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\file_ca.paa"; + statement = "{_x setWaypointFormation 'FILE';} forEach (curatorSelected select 1);"; + }; + 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);"; + }; + 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);"; + }; + 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);"; + }; + class diamond { + displayName = "$STR_diamond"; + icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\diamond_ca.paa"; + statement = "{_x setWaypointFormation 'DIAMOND';} forEach (curatorSelected select 1);"; + }; + }; }; class ZeusMarkers { - displayName = "Markers"; - icon = "\A3\UI_F_Curator\Data\Displays\RscDisplayCurator\modemarkers_ca.paa"; + displayName = "$STR_A3_RscDisplayCurator_ModeMarkers_tooltip"; + icon = "\A3\UI_F_Curator\Data\Displays\RscDisplayCurator\modeMarkers_ca.paa"; }; }; diff --git a/addons/interact_menu/stringtable.xml b/addons/interact_menu/stringtable.xml index 880edc3c71..f589a8c1da 100644 --- a/addons/interact_menu/stringtable.xml +++ b/addons/interact_menu/stringtable.xml @@ -85,6 +85,9 @@ Interazioni con veicoli Ações de Veículos + + Zeus Actions + Interaction - Text Max Interakcja - Tekst max From f9a7ab5ae05ea17ae83199ce3418b9352a7cb7d0 Mon Sep 17 00:00:00 2001 From: AKALegman Date: Sat, 6 Jun 2015 10:11:00 +0100 Subject: [PATCH 004/118] improved explosives --- addons/explosives/ACE_Settings.hpp | 4 ++++ addons/explosives/CfgAmmo.hpp | 6 +++++- addons/explosives/CfgMagazines.hpp | 4 ++-- addons/explosives/CfgModule.hpp | 6 ++++++ addons/explosives/functions/fnc_defuseExplosive.sqf | 4 +++- addons/explosives/functions/fnc_module.sqf | 2 ++ addons/explosives/stringtable.xml | 6 ++++++ 7 files changed, 28 insertions(+), 4 deletions(-) diff --git a/addons/explosives/ACE_Settings.hpp b/addons/explosives/ACE_Settings.hpp index 038f06291d..6f48e739cf 100644 --- a/addons/explosives/ACE_Settings.hpp +++ b/addons/explosives/ACE_Settings.hpp @@ -7,4 +7,8 @@ class ACE_Settings { value = 1; typeName = "BOOL"; }; + class GVAR(ExplodeOnDefuseChance) { + value = 0.02; + typeName = "SCALAR"; + }; }; diff --git a/addons/explosives/CfgAmmo.hpp b/addons/explosives/CfgAmmo.hpp index ace7d5ef02..15e742af31 100644 --- a/addons/explosives/CfgAmmo.hpp +++ b/addons/explosives/CfgAmmo.hpp @@ -72,7 +72,8 @@ class CfgAmmo { class IEDUrbanBig_Remote_Ammo: PipeBombBase { triggerWhenDestroyed = 1; - soundTrigger[] = {"A3\Sounds_F\weapons\mines\mech_trigger_1", 0.8, 1, 40}; + ACE_ExplodeOnDefuse = 1; + soundTrigger[] = {"A3\Sounds_F\weapons\mines\mech_trigger_1", 0.8, 1, 40}; }; class IEDUrbanBig_Command_Ammo: IEDUrbanBig_Remote_Ammo { mineTrigger = "RemoteTrigger"; @@ -83,6 +84,7 @@ class CfgAmmo { class IEDUrbanSmall_Remote_Ammo: PipeBombBase { triggerWhenDestroyed = 1; + ACE_ExplodeOnDefuse = 1; soundTrigger[] = {"A3\Sounds_F\weapons\mines\mech_trigger_1", 0.8, 1, 40}; }; class IEDUrbanSmall_Command_Ammo: IEDUrbanSmall_Remote_Ammo { @@ -94,6 +96,7 @@ class CfgAmmo { class IEDLandBig_Remote_Ammo: PipeBombBase { triggerWhenDestroyed = 1; + ACE_ExplodeOnDefuse = 1; soundTrigger[] = {"A3\Sounds_F\weapons\mines\mech_trigger_1", 0.8, 1, 40}; }; class IEDLandBig_Command_Ammo: IEDLandBig_Remote_Ammo { @@ -105,6 +108,7 @@ class CfgAmmo { class IEDLandSmall_Remote_Ammo: PipeBombBase { triggerWhenDestroyed = 1; + ACE_ExplodeOnDefuse = 1; soundTrigger[] = {"A3\Sounds_F\weapons\mines\mech_trigger_1", 0.8, 1, 40}; }; class IEDLandSmall_Command_Ammo: IEDLandSmall_Remote_Ammo { diff --git a/addons/explosives/CfgMagazines.hpp b/addons/explosives/CfgMagazines.hpp index bb8b0080bb..68563d8b13 100644 --- a/addons/explosives/CfgMagazines.hpp +++ b/addons/explosives/CfgMagazines.hpp @@ -106,7 +106,7 @@ class CfgMagazines { class DeadmanSwitch: Command{}; class Cellphone: Command{}; class PressurePlate{ - displayName = $STR_ACE_Explosives_SLAME_Magnetic; + displayName = $STR_ACE_Explosives_PressurePlate; digDistance = 0; ammo = "IEDUrbanBig_Range_Ammo"; pitch = 0; @@ -136,7 +136,7 @@ class CfgMagazines { class DeadmanSwitch: Command {}; class Cellphone: Command {}; class PressurePlate { - displayName = $STR_ACE_Explosives_SLAME_Magnetic; + displayName = $STR_ACE_Explosives_PressurePlate; digDistance = 0; ammo = "IEDUrbanSmall_Range_Ammo"; pitch = 0; diff --git a/addons/explosives/CfgModule.hpp b/addons/explosives/CfgModule.hpp index 52f70ea3af..e614400191 100644 --- a/addons/explosives/CfgModule.hpp +++ b/addons/explosives/CfgModule.hpp @@ -22,6 +22,12 @@ class ACE_ModuleExplosive: Module_F { description = "$STR_ACE_Explosive_PunishNonSpecialists_Description"; typeName = "BOOL"; defaultValue = 1; + }; + class ExplodeOnDefuseChance { + displayName = "$STR_ACE_Explosive_ExplodeOnDefuseChance_DisplayName"; + description = "$STR_ACE_Explosive_ExplodeOnDefuseChance_Description"; + typeName = "NUMBER"; + defaultValue = 0.02; }; }; class ModuleDescription: ModuleDescription { diff --git a/addons/explosives/functions/fnc_defuseExplosive.sqf b/addons/explosives/functions/fnc_defuseExplosive.sqf index 5abfabe60f..e16a485fe7 100644 --- a/addons/explosives/functions/fnc_defuseExplosive.sqf +++ b/addons/explosives/functions/fnc_defuseExplosive.sqf @@ -17,7 +17,9 @@ #include "script_component.hpp" EXPLODE_2_PVT(_this,_unit,_explosive); -if (getNumber (ConfigFile >> "CfgAmmo" >> typeof _explosive >> "ACE_explodeOnDefuse") == 1) exitWith { +_explode = random 1.0; +if (getNumber (ConfigFile >> "CfgAmmo" >> typeOf _explosive >> "ACE_explodeOnDefuse") == 1 && + _explode < GVAR(ExplodeOnDefuseChance)) exitWith { [_unit, -1, [_explosive, 1], true] call FUNC(detonateExplosive); }; diff --git a/addons/explosives/functions/fnc_module.sqf b/addons/explosives/functions/fnc_module.sqf index 4080b41bde..67de88410d 100644 --- a/addons/explosives/functions/fnc_module.sqf +++ b/addons/explosives/functions/fnc_module.sqf @@ -27,5 +27,7 @@ if !(_activated) exitWith {}; call EFUNC(Common,readSettingFromModule); [_logic, QGVAR(PunishNonSpecialists),"PunishNonSpecialists"] call EFUNC(Common,readSettingFromModule); +[_logic, QGVAR(ExplodeOnDefuseChance),"ExplodeOnDefuseChance"] + call EFUNC(Common,readSettingFromModule); diag_log text "[ACE]: Explosive Module Initialized."; diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index 5f5076175d..6ac5e09620 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -524,6 +524,12 @@ Increase the time it takes to complete actions for non-specialists? Default: Yes Zwiększyć ilość wymaganego czasu do ukończenia akcji dla nie-specjalistów? Domyślnie: Tak + + + Explode chance? + + + Chance for special explosives to explode on defuse? Default: 0.02 (2%) From 5cc6abd49a25565c1ee9747f370c0a6949780a29 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sat, 6 Jun 2015 16:20:22 +0100 Subject: [PATCH 005/118] Open menu over zeus inerface --- addons/interact_menu/functions/fnc_keyDown.sqf | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/addons/interact_menu/functions/fnc_keyDown.sqf b/addons/interact_menu/functions/fnc_keyDown.sqf index 2928953c81..cef1239278 100644 --- a/addons/interact_menu/functions/fnc_keyDown.sqf +++ b/addons/interact_menu/functions/fnc_keyDown.sqf @@ -47,7 +47,12 @@ for "_i" from 0 to (count GVAR(iconCtrls))-1 do { GVAR(iconCtrls) resize GVAR(iconCount); if (GVAR(useCursorMenu)) then { - (findDisplay ([312,46] select (isNull curatorCamera))) createDisplay QGVAR(cursorMenu); //"RscCinemaBorder";// + // Don't close zeus interface if open + if (isNull curatorCamera) then { + (findDisplay 46) createDisplay QGVAR(cursorMenu); //"RscCinemaBorder";// + } else { + createDialog QGVAR(cursorMenu); + }; (finddisplay 91919) displayAddEventHandler ["KeyUp", {[_this,'keyup'] call CBA_events_fnc_keyHandler}]; (finddisplay 91919) displayAddEventHandler ["KeyDown", {[_this,'keydown'] call CBA_events_fnc_keyHandler}]; // The dialog sets: From 822dd11ec617afbf71332b23f7faeba0e9b7a84b Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sat, 6 Jun 2015 17:33:13 +0100 Subject: [PATCH 006/118] Moved base ACE_ZeusActions to ace_interaction --- addons/interact_menu/config.cpp | 2 -- .../ACE_ZeusActions.hpp | 27 +++++++++---------- addons/interaction/config.cpp | 1 + addons/interaction/stringtable.xml | 12 +++++++++ 4 files changed, 26 insertions(+), 16 deletions(-) rename addons/{interact_menu => interaction}/ACE_ZeusActions.hpp (96%) diff --git a/addons/interact_menu/config.cpp b/addons/interact_menu/config.cpp index 9ec0b75ebd..c1da3392e9 100644 --- a/addons/interact_menu/config.cpp +++ b/addons/interact_menu/config.cpp @@ -23,5 +23,3 @@ class CfgPatches { class ACE_Extensions { extensions[] += {"ace_break_line"}; }; - -#include "ACE_ZeusActions.hpp" diff --git a/addons/interact_menu/ACE_ZeusActions.hpp b/addons/interaction/ACE_ZeusActions.hpp similarity index 96% rename from addons/interact_menu/ACE_ZeusActions.hpp rename to addons/interaction/ACE_ZeusActions.hpp index 0c9eae8566..913e7a7c85 100644 --- a/addons/interact_menu/ACE_ZeusActions.hpp +++ b/addons/interaction/ACE_ZeusActions.hpp @@ -1,16 +1,10 @@ class ACE_ZeusActions { // _target = curatorLogic // curatorSelected = [objects,groups,waypoints,markers] - class ZeusUnits { displayName = "$STR_A3_RscDisplayCurator_ModeUnits_tooltip"; icon = "\A3\UI_F_Curator\Data\Displays\RscDisplayCurator\modeUnits_ca.paa"; - class remoteControl { - displayName = "$STR_A3_CfgVehicles_ModuleRemoteControl_F"; - icon = "\A3\Modules_F_Curator\Data\portraitRemoteControl_ca.paa"; - statement = "_unit = objNull; { if ((side _x in [east,west,resistance,civilian]) && !(isPlayer _x)) exitWith { _unit = _x; }; } forEach (curatorSelected select 0); bis_fnc_curatorObjectPlaced_mouseOver = ['OBJECT',_unit]; (group _target) createUnit ['ModuleRemoteControl_F',[0,0,0],[],0,''];"; - }; class stance { displayName = "$STR_A3_RscAttributeUnitPos_Title"; @@ -35,16 +29,21 @@ class ACE_ZeusActions { statement = "{_x setUnitPos 'AUTO';} forEach (curatorSelected select 0);"; }; }; + class remoteControl { + displayName = "$STR_A3_CfgVehicles_ModuleRemoteControl_F"; + icon = "\A3\Modules_F_Curator\Data\portraitRemoteControl_ca.paa"; + statement = "_unit = objNull; { if ((side _x in [east,west,resistance,civilian]) && !(isPlayer _x)) exitWith { _unit = _x; }; } forEach (curatorSelected select 0); bis_fnc_curatorObjectPlaced_mouseOver = ['OBJECT',_unit]; (group _target) createUnit ['ModuleRemoteControl_F',[0,0,0],[],0,''];"; + }; }; class ZeusGroups { displayName = "$STR_A3_RscDisplayCurator_ModeGroups_tooltip"; icon = "\A3\UI_F_Curator\Data\Displays\RscDisplayCurator\modeGroups_ca.paa"; class behaviour { - displayName = "$STR_disp_arcwp_semaphore"; + displayName = CSTRING(Zeus_Behaviour); class careless { - displayName = "$STR_careless"; + displayName = CSTRING(Zeus_Behaviour_careless); statement = "{ _x setBehaviour 'CARELESS'; } forEach (curatorSelected select 1);"; }; class safe { @@ -69,7 +68,7 @@ class ACE_ZeusActions { }; }; class speed { - displayName = "$STR_disp_arcwp_speed"; + displayName = CSTRING(Zeus_Speed); class limited { displayName = "$STR_speed_limited"; @@ -112,7 +111,7 @@ class ACE_ZeusActions { }; }; class formation { - displayName = "$STR_disp_arcwp_form"; + displayName = CSTRING(Zeus_Formation); class wedge { displayName = "$STR_wedge"; @@ -166,10 +165,10 @@ class ACE_ZeusActions { icon = "\A3\UI_F_Curator\Data\CfgCurator\waypoint_ca.paa"; class behaviour { - displayName = "$STR_disp_arcwp_semaphore"; + displayName = CSTRING(Zeus_Behaviour); class careless { - displayName = "$STR_careless"; + displayName = CSTRING(Zeus_Behaviour_careless); statement = "{ _x setWaypointBehaviour 'CARELESS'; } forEach (curatorSelected select 2);"; }; class safe { @@ -194,7 +193,7 @@ class ACE_ZeusActions { }; }; class speed { - displayName = "$STR_disp_arcwp_speed"; + displayName = CSTRING(Zeus_Speed); class limited { displayName = "$STR_speed_limited"; @@ -213,7 +212,7 @@ class ACE_ZeusActions { }; }; class formation { - displayName = "$STR_disp_arcwp_form"; + displayName = CSTRING(Zeus_Formation); class wedge { displayName = "$STR_wedge"; diff --git a/addons/interaction/config.cpp b/addons/interaction/config.cpp index 7a68b2c12a..0afb2fc0fe 100644 --- a/addons/interaction/config.cpp +++ b/addons/interaction/config.cpp @@ -16,3 +16,4 @@ class CfgPatches { #include "CfgVehicles.hpp" #include "Menu_Config.hpp" #include "ACE_Settings.hpp" +#include "ACE_ZeusActions.hpp" diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index a1dad1a8e0..b06d0b1e9c 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -816,5 +816,17 @@ Na zarządzanie drużyną składa się: przydział kolorów dla członków drużyny, przejmowanie dowodzenia, dołączanie/opuszczanie drużyn. Die Gruppenverwaltung erlaubt die Zuweisung von Farben für Einheiten, die Kommandierung und das Beitreten/Verlassen einer Gruppe. + + Behaviour + + + Careless + + + Formation + + + Speed Mode + From 85a281d5869ab7f512de9bf9bfea4ef2b143b415 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sat, 6 Jun 2015 17:41:24 +0100 Subject: [PATCH 007/118] Fixed random missing english string --- addons/interaction/stringtable.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index b06d0b1e9c..9e743d2cb4 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -812,7 +812,7 @@ Sollen Spieler das Gruppenverwaltungsmenü verwenden dürfen? Standard: Ja - + Team management allows color allocation for team members, taking team command and joining/leaving teams. Na zarządzanie drużyną składa się: przydział kolorów dla członków drużyny, przejmowanie dowodzenia, dołączanie/opuszczanie drużyn. Die Gruppenverwaltung erlaubt die Zuweisung von Farben für Einheiten, die Kommandierung und das Beitreten/Verlassen einer Gruppe. From 46ed9416ed308b77cf7abf2960e7037a82c28978 Mon Sep 17 00:00:00 2001 From: AKALegman Date: Sat, 6 Jun 2015 18:58:42 +0100 Subject: [PATCH 008/118] improved explosives v2 --- addons/explosives/ACE_Settings.hpp | 6 +++--- addons/explosives/CfgAmmo.hpp | 8 ++++---- addons/explosives/CfgModule.hpp | 10 +++++----- addons/explosives/functions/fnc_defuseExplosive.sqf | 3 +-- addons/explosives/functions/fnc_module.sqf | 2 +- addons/explosives/stringtable.xml | 8 ++++---- 6 files changed, 18 insertions(+), 19 deletions(-) diff --git a/addons/explosives/ACE_Settings.hpp b/addons/explosives/ACE_Settings.hpp index 6f48e739cf..e2e987f560 100644 --- a/addons/explosives/ACE_Settings.hpp +++ b/addons/explosives/ACE_Settings.hpp @@ -7,8 +7,8 @@ class ACE_Settings { value = 1; typeName = "BOOL"; }; - class GVAR(ExplodeOnDefuseChance) { - value = 0.02; - typeName = "SCALAR"; + class GVAR(ExplodeOnDefuse) { + value = 1; + typeName = "BOOL"; }; }; diff --git a/addons/explosives/CfgAmmo.hpp b/addons/explosives/CfgAmmo.hpp index 15e742af31..f456476f8f 100644 --- a/addons/explosives/CfgAmmo.hpp +++ b/addons/explosives/CfgAmmo.hpp @@ -72,7 +72,7 @@ class CfgAmmo { class IEDUrbanBig_Remote_Ammo: PipeBombBase { triggerWhenDestroyed = 1; - ACE_ExplodeOnDefuse = 1; + ACE_explodeOnDefuse = 0.02; soundTrigger[] = {"A3\Sounds_F\weapons\mines\mech_trigger_1", 0.8, 1, 40}; }; class IEDUrbanBig_Command_Ammo: IEDUrbanBig_Remote_Ammo { @@ -84,7 +84,7 @@ class CfgAmmo { class IEDUrbanSmall_Remote_Ammo: PipeBombBase { triggerWhenDestroyed = 1; - ACE_ExplodeOnDefuse = 1; + ACE_explodeOnDefuse = 0.02; soundTrigger[] = {"A3\Sounds_F\weapons\mines\mech_trigger_1", 0.8, 1, 40}; }; class IEDUrbanSmall_Command_Ammo: IEDUrbanSmall_Remote_Ammo { @@ -96,7 +96,7 @@ class CfgAmmo { class IEDLandBig_Remote_Ammo: PipeBombBase { triggerWhenDestroyed = 1; - ACE_ExplodeOnDefuse = 1; + ACE_explodeOnDefuse = 0.02; soundTrigger[] = {"A3\Sounds_F\weapons\mines\mech_trigger_1", 0.8, 1, 40}; }; class IEDLandBig_Command_Ammo: IEDLandBig_Remote_Ammo { @@ -108,7 +108,7 @@ class CfgAmmo { class IEDLandSmall_Remote_Ammo: PipeBombBase { triggerWhenDestroyed = 1; - ACE_ExplodeOnDefuse = 1; + ACE_explodeOnDefuse = 0.02; soundTrigger[] = {"A3\Sounds_F\weapons\mines\mech_trigger_1", 0.8, 1, 40}; }; class IEDLandSmall_Command_Ammo: IEDLandSmall_Remote_Ammo { diff --git a/addons/explosives/CfgModule.hpp b/addons/explosives/CfgModule.hpp index e614400191..ff6a8bc01d 100644 --- a/addons/explosives/CfgModule.hpp +++ b/addons/explosives/CfgModule.hpp @@ -23,11 +23,11 @@ class ACE_ModuleExplosive: Module_F { typeName = "BOOL"; defaultValue = 1; }; - class ExplodeOnDefuseChance { - displayName = "$STR_ACE_Explosive_ExplodeOnDefuseChance_DisplayName"; - description = "$STR_ACE_Explosive_ExplodeOnDefuseChance_Description"; - typeName = "NUMBER"; - defaultValue = 0.02; + class ExplodeOnDefuse { + displayName = "$STR_ACE_Explosive_ExplodeOnDefuse_DisplayName"; + description = "$STR_ACE_Explosive_ExplodeOnDefuse_Description"; + typeName = "BOOL"; + defaultValue = 1; }; }; class ModuleDescription: ModuleDescription { diff --git a/addons/explosives/functions/fnc_defuseExplosive.sqf b/addons/explosives/functions/fnc_defuseExplosive.sqf index e16a485fe7..628b343aeb 100644 --- a/addons/explosives/functions/fnc_defuseExplosive.sqf +++ b/addons/explosives/functions/fnc_defuseExplosive.sqf @@ -18,8 +18,7 @@ EXPLODE_2_PVT(_this,_unit,_explosive); _explode = random 1.0; -if (getNumber (ConfigFile >> "CfgAmmo" >> typeOf _explosive >> "ACE_explodeOnDefuse") == 1 && - _explode < GVAR(ExplodeOnDefuseChance)) exitWith { +if (GVAR(ExplodeOnDefuse) && _explode < getNumber(ConfigFile >> "CfgAmmo" >> typeOf _explosive >> "ACE_explodeOnDefuse")) exitWith { [_unit, -1, [_explosive, 1], true] call FUNC(detonateExplosive); }; diff --git a/addons/explosives/functions/fnc_module.sqf b/addons/explosives/functions/fnc_module.sqf index 67de88410d..56225d8ca8 100644 --- a/addons/explosives/functions/fnc_module.sqf +++ b/addons/explosives/functions/fnc_module.sqf @@ -27,7 +27,7 @@ if !(_activated) exitWith {}; call EFUNC(Common,readSettingFromModule); [_logic, QGVAR(PunishNonSpecialists),"PunishNonSpecialists"] call EFUNC(Common,readSettingFromModule); -[_logic, QGVAR(ExplodeOnDefuseChance),"ExplodeOnDefuseChance"] +[_logic, QGVAR(ExplodeOnDefuse),"ExplodeOnDefuse"] call EFUNC(Common,readSettingFromModule); diag_log text "[ACE]: Explosive Module Initialized."; diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index 6ac5e09620..d13d0c87f7 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -525,11 +525,11 @@ Increase the time it takes to complete actions for non-specialists? Default: Yes Zwiększyć ilość wymaganego czasu do ukończenia akcji dla nie-specjalistów? Domyślnie: Tak - - Explode chance? + + Explode on defusal? - - Chance for special explosives to explode on defuse? Default: 0.02 (2%) + + Enable certain explosives to explode on defusal? Default: Yes From 0e375075ea3a51606d255b5396f901ce1b5cb740 Mon Sep 17 00:00:00 2001 From: AKALegman Date: Sat, 6 Jun 2015 19:04:58 +0100 Subject: [PATCH 009/118] improved explosives v2.1 --- addons/explosives/ACE_Settings.hpp | 2 +- addons/explosives/CfgAmmo.hpp | 96 +++++++++++++++--------------- addons/explosives/CfgModule.hpp | 2 +- addons/explosives/stringtable.xml | 2 +- 4 files changed, 51 insertions(+), 51 deletions(-) diff --git a/addons/explosives/ACE_Settings.hpp b/addons/explosives/ACE_Settings.hpp index e2e987f560..c91c94464d 100644 --- a/addons/explosives/ACE_Settings.hpp +++ b/addons/explosives/ACE_Settings.hpp @@ -7,7 +7,7 @@ class ACE_Settings { value = 1; typeName = "BOOL"; }; - class GVAR(ExplodeOnDefuse) { + class GVAR(ExplodeOnDefuse) { value = 1; typeName = "BOOL"; }; diff --git a/addons/explosives/CfgAmmo.hpp b/addons/explosives/CfgAmmo.hpp index f456476f8f..8299a979b3 100644 --- a/addons/explosives/CfgAmmo.hpp +++ b/addons/explosives/CfgAmmo.hpp @@ -69,52 +69,52 @@ class CfgAmmo { /*class DemoCharge_Remote_Ammo_Scripted: DemoCharge_Remote_Ammo; class SatchelCharge_Remote_Ammo_Scripted: SatchelCharge_Remote_Ammo;*/ - - class IEDUrbanBig_Remote_Ammo: PipeBombBase { - triggerWhenDestroyed = 1; - ACE_explodeOnDefuse = 0.02; - soundTrigger[] = {"A3\Sounds_F\weapons\mines\mech_trigger_1", 0.8, 1, 40}; - }; - class IEDUrbanBig_Command_Ammo: IEDUrbanBig_Remote_Ammo { - mineTrigger = "RemoteTrigger"; - }; - class IEDUrbanBig_Range_Ammo: IEDUrbanBig_Remote_Ammo { - mineTrigger = "RangeTrigger"; - }; - - class IEDUrbanSmall_Remote_Ammo: PipeBombBase { - triggerWhenDestroyed = 1; - ACE_explodeOnDefuse = 0.02; - soundTrigger[] = {"A3\Sounds_F\weapons\mines\mech_trigger_1", 0.8, 1, 40}; - }; - class IEDUrbanSmall_Command_Ammo: IEDUrbanSmall_Remote_Ammo { - mineTrigger = "RemoteTrigger"; - }; - class IEDUrbanSmall_Range_Ammo: IEDUrbanSmall_Remote_Ammo { - mineTrigger = "RangeTrigger"; - }; - - class IEDLandBig_Remote_Ammo: PipeBombBase { - triggerWhenDestroyed = 1; - ACE_explodeOnDefuse = 0.02; - soundTrigger[] = {"A3\Sounds_F\weapons\mines\mech_trigger_1", 0.8, 1, 40}; - }; - class IEDLandBig_Command_Ammo: IEDLandBig_Remote_Ammo { - mineTrigger = "RemoteTrigger"; - }; - class IEDLandBig_Range_Ammo: IEDLandBig_Remote_Ammo { - mineTrigger = "RangeTrigger"; - }; - - class IEDLandSmall_Remote_Ammo: PipeBombBase { - triggerWhenDestroyed = 1; - ACE_explodeOnDefuse = 0.02; - soundTrigger[] = {"A3\Sounds_F\weapons\mines\mech_trigger_1", 0.8, 1, 40}; - }; - class IEDLandSmall_Command_Ammo: IEDLandSmall_Remote_Ammo { - mineTrigger = "RemoteTrigger"; - }; - class IEDLandSmall_Range_Ammo: IEDLandSmall_Remote_Ammo { - mineTrigger = "RangeTrigger"; - }; + + class IEDUrbanBig_Remote_Ammo: PipeBombBase { + triggerWhenDestroyed = 1; + ACE_explodeOnDefuse = 0.02; + soundTrigger[] = {"A3\Sounds_F\weapons\mines\mech_trigger_1", 0.8, 1, 40}; + }; + class IEDUrbanBig_Command_Ammo: IEDUrbanBig_Remote_Ammo { + mineTrigger = "RemoteTrigger"; + }; + class IEDUrbanBig_Range_Ammo: IEDUrbanBig_Remote_Ammo { + mineTrigger = "RangeTrigger"; + }; + + class IEDUrbanSmall_Remote_Ammo: PipeBombBase { + triggerWhenDestroyed = 1; + ACE_explodeOnDefuse = 0.02; + soundTrigger[] = {"A3\Sounds_F\weapons\mines\mech_trigger_1", 0.8, 1, 40}; + }; + class IEDUrbanSmall_Command_Ammo: IEDUrbanSmall_Remote_Ammo { + mineTrigger = "RemoteTrigger"; + }; + class IEDUrbanSmall_Range_Ammo: IEDUrbanSmall_Remote_Ammo { + mineTrigger = "RangeTrigger"; + }; + + class IEDLandBig_Remote_Ammo: PipeBombBase { + triggerWhenDestroyed = 1; + ACE_explodeOnDefuse = 0.02; + soundTrigger[] = {"A3\Sounds_F\weapons\mines\mech_trigger_1", 0.8, 1, 40}; + }; + class IEDLandBig_Command_Ammo: IEDLandBig_Remote_Ammo { + mineTrigger = "RemoteTrigger"; + }; + class IEDLandBig_Range_Ammo: IEDLandBig_Remote_Ammo { + mineTrigger = "RangeTrigger"; + }; + + class IEDLandSmall_Remote_Ammo: PipeBombBase { + triggerWhenDestroyed = 1; + ACE_explodeOnDefuse = 0.02; + soundTrigger[] = {"A3\Sounds_F\weapons\mines\mech_trigger_1", 0.8, 1, 40}; + }; + class IEDLandSmall_Command_Ammo: IEDLandSmall_Remote_Ammo { + mineTrigger = "RemoteTrigger"; + }; + class IEDLandSmall_Range_Ammo: IEDLandSmall_Remote_Ammo { + mineTrigger = "RangeTrigger"; + }; }; diff --git a/addons/explosives/CfgModule.hpp b/addons/explosives/CfgModule.hpp index ff6a8bc01d..217048d200 100644 --- a/addons/explosives/CfgModule.hpp +++ b/addons/explosives/CfgModule.hpp @@ -23,7 +23,7 @@ class ACE_ModuleExplosive: Module_F { typeName = "BOOL"; defaultValue = 1; }; - class ExplodeOnDefuse { + class ExplodeOnDefuse { displayName = "$STR_ACE_Explosive_ExplodeOnDefuse_DisplayName"; description = "$STR_ACE_Explosive_ExplodeOnDefuse_Description"; typeName = "BOOL"; diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index d13d0c87f7..c8b537a515 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -525,7 +525,7 @@ Increase the time it takes to complete actions for non-specialists? Default: Yes Zwiększyć ilość wymaganego czasu do ukończenia akcji dla nie-specjalistów? Domyślnie: Tak - + Explode on defusal? From cb1b0c6262ccb2d4ae8800381163165d5c3f1c51 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sun, 7 Jun 2015 20:21:51 +0100 Subject: [PATCH 010/118] Added zeus exception for interaction conditions --- addons/interact_menu/XEH_clientInit.sqf | 4 ---- addons/interact_menu/functions/fnc_keyDown.sqf | 5 +++++ 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/addons/interact_menu/XEH_clientInit.sqf b/addons/interact_menu/XEH_clientInit.sqf index 99e9ad1a2a..02bc94688c 100644 --- a/addons/interact_menu/XEH_clientInit.sqf +++ b/addons/interact_menu/XEH_clientInit.sqf @@ -30,8 +30,6 @@ addMissionEventHandler ["Draw3D", DFUNC(render)]; ["ACE3 Common", QGVAR(InteractKey), (localize LSTRING(InteractKey)), { - // Conditions: canInteract - if !([ACE_player, objNull, ["isNotInside","isNotDragging", "isNotCarrying", "isNotSwimming", "notOnMap", "isNotEscorting", "isNotSurrendering"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Statement [0] call FUNC(keyDown) },{[0,false] call FUNC(keyUp)}, @@ -39,8 +37,6 @@ addMissionEventHandler ["Draw3D", DFUNC(render)]; ["ACE3 Common", QGVAR(SelfInteractKey), (localize LSTRING(SelfInteractKey)), { - // Conditions: canInteract - if !([ACE_player, objNull, ["isNotInside","isNotDragging", "isNotCarrying", "isNotSwimming", "notOnMap", "isNotEscorting", "isNotSurrendering"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Statement [1] call FUNC(keyDown) },{[1,false] call FUNC(keyUp)}, diff --git a/addons/interact_menu/functions/fnc_keyDown.sqf b/addons/interact_menu/functions/fnc_keyDown.sqf index cef1239278..6533f0785f 100644 --- a/addons/interact_menu/functions/fnc_keyDown.sqf +++ b/addons/interact_menu/functions/fnc_keyDown.sqf @@ -16,6 +16,11 @@ EXPLODE_1_PVT(_this,_menuType); if (GVAR(openedMenuType) == _menuType) exitWith {true}; +// Conditions: canInteract (these don't apply to zeus) +if ((isNull curatorCamera) && { + !([ACE_player, objNull, ["isNotInside","isNotDragging", "isNotCarrying", "isNotSwimming", "notOnMap", "isNotEscorting", "isNotSurrendering"]] call EFUNC(common,canInteractWith)) +}) exitWith {false}; + while {dialog} do { closeDialog 0; }; From c3c2fd007491efae6587fe80d980469249e578e3 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 7 Jun 2015 22:00:43 +0200 Subject: [PATCH 011/118] Initial Sitting commit --- addons/sitting/$PBOPREFIX$ | 1 + addons/sitting/CfgEventHandlers.hpp | 5 + addons/sitting/CfgVehicles.hpp | 99 +++++++++++++++++++ addons/sitting/XEH_preInit.sqf | 11 +++ addons/sitting/config.cpp | 16 +++ addons/sitting/functions/fnc_canSit.sqf | 27 +++++ addons/sitting/functions/fnc_canStand.sqf | 22 +++++ .../functions/fnc_getRandomAnimation.sqf | 55 +++++++++++ addons/sitting/functions/fnc_sit.sqf | 41 ++++++++ addons/sitting/functions/fnc_stand.sqf | 23 +++++ addons/sitting/functions/script_component.hpp | 1 + addons/sitting/script_component.hpp | 12 +++ addons/sitting/stringtable.xml | 11 +++ 13 files changed, 324 insertions(+) create mode 100644 addons/sitting/$PBOPREFIX$ create mode 100644 addons/sitting/CfgEventHandlers.hpp create mode 100644 addons/sitting/CfgVehicles.hpp create mode 100644 addons/sitting/XEH_preInit.sqf create mode 100644 addons/sitting/config.cpp create mode 100644 addons/sitting/functions/fnc_canSit.sqf create mode 100644 addons/sitting/functions/fnc_canStand.sqf create mode 100644 addons/sitting/functions/fnc_getRandomAnimation.sqf create mode 100644 addons/sitting/functions/fnc_sit.sqf create mode 100644 addons/sitting/functions/fnc_stand.sqf create mode 100644 addons/sitting/functions/script_component.hpp create mode 100644 addons/sitting/script_component.hpp create mode 100644 addons/sitting/stringtable.xml diff --git a/addons/sitting/$PBOPREFIX$ b/addons/sitting/$PBOPREFIX$ new file mode 100644 index 0000000000..419bf892be --- /dev/null +++ b/addons/sitting/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\sitting \ No newline at end of file diff --git a/addons/sitting/CfgEventHandlers.hpp b/addons/sitting/CfgEventHandlers.hpp new file mode 100644 index 0000000000..b928bc2de6 --- /dev/null +++ b/addons/sitting/CfgEventHandlers.hpp @@ -0,0 +1,5 @@ +class Extended_PreInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_preInit)); + }; +}; diff --git a/addons/sitting/CfgVehicles.hpp b/addons/sitting/CfgVehicles.hpp new file mode 100644 index 0000000000..a02647da14 --- /dev/null +++ b/addons/sitting/CfgVehicles.hpp @@ -0,0 +1,99 @@ +#define MACRO_SEAT_ACTION \ + class ACE_Actions { \ + class ACE_MainActions { \ + displayName = ECSTRING(interaction,MainAction); \ + selection = ""; \ + distance = 1.25; \ + condition = "true"; \ + class GVAR(Sit) { \ + displayName = CSTRING(Sit); \ + condition = QUOTE(_this call FUNC(canSit)); \ + statement = QUOTE(_this call FUNC(sit)); \ + showDisabled = 0; \ + priority = 0; \ + icon = PATHTOF(UI\sit_ca.paa); \ + }; \ + }; \ + }; + +class CfgVehicles { + class Man; + class CAManBase: Man { + class ACE_SelfActions { + class GVAR(Stand) { + displayName = CSTRING(Stand); + condition = QUOTE(_player call FUNC(canStand)); + statement = QUOTE(_player call FUNC(stand)); + priority = 0; + //icon = PATHTOF(UI\sit_ca.paa); + //add exception isNotSitting to everything that shouldn't be available (eg. medical) + }; + }; + }; + + class ThingX; + // Folding Chair + class Land_CampingChair_V1_F: ThingX { + XEH_ENABLED; + MACRO_SEAT_ACTION + GVAR(canSit) = 1; + GVAR(sitDirection) = 180; + GVAR(sitPosition[]) = {0, -0.1, -0.45}; + }; + // Camping Chair + class Land_CampingChair_V2_F: ThingX { + XEH_ENABLED; + MACRO_SEAT_ACTION + GVAR(canSit) = 1; + GVAR(sitDirection) = 180; + GVAR(sitPosition[]) = {0, -0.1, -0.45}; + }; + // Chair (Plastic) + class Land_ChairPlastic_F: ThingX { + XEH_ENABLED; + MACRO_SEAT_ACTION + GVAR(canSit) = 1; + GVAR(sitDirection) = 90; + GVAR(sitPosition[]) = {-0.1, 0, -0.2}; + }; + // Chair (Wooden) + class Land_ChairWood_F: ThingX { + XEH_ENABLED; + MACRO_SEAT_ACTION + GVAR(canSit) = 1; + GVAR(sitDirection) = 180; + GVAR(sitPosition[]) = {0, 0, 0}; + }; + // Office Chair + class Land_OfficeChair_01_F: ThingX { + XEH_ENABLED; + MACRO_SEAT_ACTION + GVAR(canSit) = 1; + GVAR(sitDirection) = 180; + GVAR(sitPosition[]) = {0, 0, -0.6}; + }; + // Rattan Chair + class Land_RattanChair_01_F: ThingX { + XEH_ENABLED; + MACRO_SEAT_ACTION + GVAR(canSit) = 1; + GVAR(sitDirection) = 180; + GVAR(sitPosition[]) = {0.07, 0.17, 1}; + }; + // Field Toilet + class Land_FieldToilet_F: ThingX { + XEH_ENABLED; + MACRO_SEAT_ACTION + GVAR(canSit) = 1; + GVAR(sitDirection) = 180; + GVAR(sitPosition[]) = {0, 0.75, -1.1}; + }; + // Toiletbox + class Land_ToiletBox_F: ThingX { + XEH_ENABLED; + MACRO_SEAT_ACTION + GVAR(canSit) = 1; + GVAR(sitDirection) = 180; + GVAR(sitPosition[]) = {0, 0.75, -1.1}; + }; +}; diff --git a/addons/sitting/XEH_preInit.sqf b/addons/sitting/XEH_preInit.sqf new file mode 100644 index 0000000000..1c8e8ce8ad --- /dev/null +++ b/addons/sitting/XEH_preInit.sqf @@ -0,0 +1,11 @@ +#include "script_component.hpp" + +ADDON = false; + +PREP(canSit); +PREP(canStand); +PREP(getRandomAnimation); +PREP(sit); +PREP(stand); + +ADDON = true; diff --git a/addons/sitting/config.cpp b/addons/sitting/config.cpp new file mode 100644 index 0000000000..9412666aaf --- /dev/null +++ b/addons/sitting/config.cpp @@ -0,0 +1,16 @@ +#include "script_component.hpp" + +class CfgPatches { + class ADDON { + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_common"}; + author[] = {"Jonpas"}; + authorUrl = "https://github.com/jonpas"; + VERSION_CONFIG; + }; +}; + +#include "CfgEventHandlers.hpp" +#include "CfgVehicles.hpp" diff --git a/addons/sitting/functions/fnc_canSit.sqf b/addons/sitting/functions/fnc_canSit.sqf new file mode 100644 index 0000000000..1c00e79cd8 --- /dev/null +++ b/addons/sitting/functions/fnc_canSit.sqf @@ -0,0 +1,27 @@ +/* + * Author: Jonpas + * Check if the player can sit down. + * + * Arguments: + * 0: Seat + * 1: Player + * + * Return Value: + * Can Sit Down + * + * Example: + * [seat, player] call ace_sitting_fnc_canSit; + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_2(_seat,_player); + +// If seat object and not occupied +if (getNumber (configFile >> "CfgVehicles" >> typeOf _seat >> QGVAR(canSit)) == 1 && + {isNil{_seat getVariable QGVAR(seatOccupied)}} +) exitWith {true}; + +// Default +false diff --git a/addons/sitting/functions/fnc_canStand.sqf b/addons/sitting/functions/fnc_canStand.sqf new file mode 100644 index 0000000000..853eadc3d1 --- /dev/null +++ b/addons/sitting/functions/fnc_canStand.sqf @@ -0,0 +1,22 @@ +/* + * Author: Jonpas + * Check if the player can stand up (is in sitting position). + * + * Arguments: + * Player + * + * Return Value: + * Can Stand Up + * + * Example: + * player call ace_sitting_fnc_canStand; + * + * Public: No + */ +#include "script_component.hpp" + +// If sitting +if (_this getVariable [QGVAR(sitting),false]) exitWith {true}; + +// Default +false diff --git a/addons/sitting/functions/fnc_getRandomAnimation.sqf b/addons/sitting/functions/fnc_getRandomAnimation.sqf new file mode 100644 index 0000000000..79b8c5628f --- /dev/null +++ b/addons/sitting/functions/fnc_getRandomAnimation.sqf @@ -0,0 +1,55 @@ +/* + * Author: Jonpas + * Gets a random animations from the list. + * + * Arguments: + * None + * + * Return Value: + * Random Animation + * + * Example: + * _animation = call ace_sitting_fnc_getRandomAnimation; + * + * Public: No + */ +#include "script_component.hpp" + +// Animations Pool +_animPool = [ + "HubSittingChairUA_idle1", + "HubSittingChairUA_idle2", + "HubSittingChairUA_idle3", + "HubSittingChairUA_move1", + "HubSittingChairUB_idle1", + "HubSittingChairUB_idle2", + "HubSittingChairUB_idle3", + "HubSittingChairUB_move1", + "HubSittingChairUC_idle1", + "HubSittingChairUC_idle2", + "HubSittingChairUC_idle3", + "HubSittingChairUC_move1", + "HubSittingChairA_idle1", + "HubSittingChairA_idle2", + "HubSittingChairA_idle3", + "HubSittingChairA_move1", + "HubSittingChairB_idle1", + "HubSittingChairB_idle2", + "HubSittingChairB_idle3", + "HubSittingChairB_move1", + "HubSittingChairC_idle1", + "HubSittingChairC_idle2", + "HubSittingChairC_idle3", + "HubSittingChairC_move1" +]; + +// Set all animation names to lower-case +_animations = []; +{ + _animations pushBack (toLower _x); +} forEach _animPool; + +// Select random animation +_animation = _animations select (floor (random (count _animations))); + +_animation diff --git a/addons/sitting/functions/fnc_sit.sqf b/addons/sitting/functions/fnc_sit.sqf new file mode 100644 index 0000000000..07026c6e35 --- /dev/null +++ b/addons/sitting/functions/fnc_sit.sqf @@ -0,0 +1,41 @@ +/* + * Author: Jonpas + * Sits down the player. + * + * Arguments: + * 0: Seat + * 1: Player + * + * Return Value: + * None + * + * Example: + * [seat, player] call ace_sitting_fnc_sit; + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_2(_seat,_player); + +// Set global variable for standing up +GVAR(seat) = _seat; + +// Overwrite weird position, because Arma decides to set it differently based on current animation/stance... +_player switchMove "amovpknlmstpsraswrfldnon"; + +// Read config +_sitDirection = getNumber (configFile >> "CfgVehicles" >> typeOf _seat >> QGVAR(sitDirection)); +_sitPosition = getArray (configFile >> "CfgVehicles" >> typeOf _seat >> QGVAR(sitPosition)); + +// Set direction and position +_player setDir ((getDir _seat) + _sitDirection); +_player setPos (_seat modelToWorld _sitPosition); + +// Get random animation and perform it +_animation = call FUNC(getRandomAnimation); +[_player, _animation, 2] call EFUNC(common,doAnimation); + +// Set variables +_player setVariable [QGVAR(sitting), true]; +_seat setVariable [QGVAR(seatOccupied), true, true]; // To prevent multiple people sitting on one seat diff --git a/addons/sitting/functions/fnc_stand.sqf b/addons/sitting/functions/fnc_stand.sqf new file mode 100644 index 0000000000..5474720b47 --- /dev/null +++ b/addons/sitting/functions/fnc_stand.sqf @@ -0,0 +1,23 @@ +/* + * Author: Jonpas + * Stands up the player. + * + * Arguments: + * Player + * + * Return Value: + * None + * + * Example: + * player call ace_sitting_fnc_stand; + * + * Public: No + */ +#include "script_component.hpp" + +// Restore animation +[_this, "", 2] call EFUNC(common,doAnimation); + +// Set variables to nil +_this setVariable [QGVAR(sitting), nil]; +GVAR(seat) setVariable [QGVAR(seatOccupied), nil, true]; diff --git a/addons/sitting/functions/script_component.hpp b/addons/sitting/functions/script_component.hpp new file mode 100644 index 0000000000..1360c56284 --- /dev/null +++ b/addons/sitting/functions/script_component.hpp @@ -0,0 +1 @@ +#include "\z\ace\addons\sitting\script_component.hpp" \ No newline at end of file diff --git a/addons/sitting/script_component.hpp b/addons/sitting/script_component.hpp new file mode 100644 index 0000000000..cbc8800cd2 --- /dev/null +++ b/addons/sitting/script_component.hpp @@ -0,0 +1,12 @@ +#define COMPONENT sitting +#include "\z\ace\addons\main\script_mod.hpp" + +#ifdef DEBUG_ENABLED_SITTING + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_SETTINGS_SITTING + #define DEBUG_SETTINGS DEBUG_SETTINGS_SITTING +#endif + +#include "\z\ace\addons\main\script_macros.hpp" \ No newline at end of file diff --git a/addons/sitting/stringtable.xml b/addons/sitting/stringtable.xml new file mode 100644 index 0000000000..f58883c4c0 --- /dev/null +++ b/addons/sitting/stringtable.xml @@ -0,0 +1,11 @@ + + + + + Sit Down + + + Stand Up + + + \ No newline at end of file From 78c9991f689d46b67ac73e7740c2c3070bb9d63b Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 7 Jun 2015 22:25:43 +0200 Subject: [PATCH 012/118] Added Polish stringtable --- addons/sitting/stringtable.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/sitting/stringtable.xml b/addons/sitting/stringtable.xml index f58883c4c0..cfe3a64f41 100644 --- a/addons/sitting/stringtable.xml +++ b/addons/sitting/stringtable.xml @@ -3,9 +3,11 @@ Sit Down + Usiądź Stand Up + Wstań \ No newline at end of file From eb0541d726b09bbc00ad732f2707aba7c3a5a8f1 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 7 Jun 2015 22:36:22 +0200 Subject: [PATCH 013/118] Added icons --- addons/sitting/CfgVehicles.hpp | 2 +- addons/sitting/UI/sit_ca.paa | Bin 0 -> 22016 bytes addons/sitting/UI/stand_ca.paa | Bin 0 -> 22016 bytes 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 addons/sitting/UI/sit_ca.paa create mode 100644 addons/sitting/UI/stand_ca.paa diff --git a/addons/sitting/CfgVehicles.hpp b/addons/sitting/CfgVehicles.hpp index a02647da14..c81fbbdef1 100644 --- a/addons/sitting/CfgVehicles.hpp +++ b/addons/sitting/CfgVehicles.hpp @@ -25,7 +25,7 @@ class CfgVehicles { condition = QUOTE(_player call FUNC(canStand)); statement = QUOTE(_player call FUNC(stand)); priority = 0; - //icon = PATHTOF(UI\sit_ca.paa); + icon = PATHTOF(UI\stand_ca.paa); //add exception isNotSitting to everything that shouldn't be available (eg. medical) }; }; diff --git a/addons/sitting/UI/sit_ca.paa b/addons/sitting/UI/sit_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..1191c3b1e0af9f75af0a75665783ed8830568481 GIT binary patch literal 22016 zcmeHP4|G)3nZIu`BN?cYdNRTqBeRmBnAVmqbm(qaGp-(Vj{o9mUK~rcW1^)>Gvl@; zth&hz(w1Y-wn;hA+6shrm+JAuy;{u!b+eUs$;Cb`S2u_^!mw_bV7%Q_0v`ov{P>o_z{a9iDW4YA_ApX82*oDv$=Y zG1&cd=3Q0dU1jZkkuhD@9nYOIYG<}{-r5V;rm@BE?xe0E`F7Z;pGjt+dML+MT)%#3 zd9qo&XUqqMWt8?&&)A;IrfZtiwitw>JuGT{g|4 zuvYly3}2<>V_K^RbSrv?VZ6vh>Xfa{TmPbU%VUqFzzjTWDoJf;ou!oe5qCoiQvjmb!PVi(n0QQ`NDO6Hq*j|cwmJ!UK^GnN$H9c9dcG~E2otgq!@ zDEVqg&IcZ(3I0n8sPUrcG5ql0`hOYoHetRmxvL%g$Amv;KUzLX`hWTk#w=PU|IQaK zogYd>+NA#XS5!>sf0N;k3TNBMIZ0 z0hbbd(_RwvS^>j{^QF&{J*T)NG03)W zOBtAN^1l*E(Sgd12mTkC{8sD#_j%ocSy0&me=G=wqF?6w1h=oVLO$p@#DTfqCV5cn zzp4?R|0nn_C79@cHvXRmj`e`MdM@R6xLmGGex5JP{ysI9*A|;5`{Vb^-i_Sv1pjm6 z|Ej;#1-k2k2Z%p5+wk*$?vYTUi}y5B{T@#^e7>Cj=3eL%_%GtG(EQ|ZuzJ+!Ju2rX z{TWueD&ELXlC~%PpEsobDqYobapZwMQNF6`87ArvCxyStW}BSuF4dR@a5Gxrd$tgL zY6L$kDw>?Ld)+(4^o`zcgy;5#7h96A@?#QTf0$i<$Q|f2W^N(uTn@(%6_yIW^M+q$ zmJQ4bdOh6k*%}^5!gIRMGuN*=>@^1rl(}&%UOR)mqMsIf&id&xGPory+>Jk@BiXW{=l(GuwLV|YNA zr?j`RzTd~nbP zUc-1wML|SR&oZ?AJXHOe?-v|incVl3)UQ6DZ^->A!L1yATp!d04j7BYdKK;ronxM0 zjO6)Y;7U!9sY5|Ael)v1d;B0DB?ySP%dBrG_^Q9OCAXDh3PR}$G$<+?!Jpz|?KM{D zhkEE6?eVksKT-e2BL6>T&X3gpCM*EH4@sB)U99jdd0Fe>se8ycBYR-pM$FG)@8J`{ zZuiL9gUezhY{?nazu~Y4hf8#*KOe>YpUeLik3ye=<}{n1NuPK2hC$4m-!!K7JwKz2 z=I6^UyR4AtLJ0yQ?#>r}BgK2#guKBX3^R6(@INU3o1XT+h(`Y(e+aLSBLC+efilOC zCj9Jnn{6om-Ta#umPJ;|`FVAv&(}%*-di7oKj*jDF&_T?q3T3S5|s<-5|eQsYf`W< z#xmej+_=VW`j^D}QyC{};Vc7wE+j zkMM(gXUP3t*CFiJV~VEr0HzN=OD5mqr=&e?fk8Nw{EYVZ-`X8Y%rNDF^v@Ts9xw;P z-Xrb7)Q%v~g?@wr8SVVdwSTNndx%YX2=m*zsFvpbSmd|DT* z-a+lbdv@}kauRNCZ1!wrtTsyPsq0}y!X9=xs#GhKgX$dfu(|(3``yrQX$esHDY}h4 zcyRvTmr6x3p1ZqfJZnRb=hsr3>i<-p_%h|M#B?zCXUS;79T4&WcbmTUJ)#WF543~C zhJC#_;_@}l`2RmCcc2XO0nydvfPdsDNx1U&u_5Po*WZ>W_Y%ud-si{O@L%C~*)dg z*9rbl@PA_d@3*(qI2|tiuj(7E*NO2zzQ=!U0E<6&K+-)l5UM-eANEhugYKx2-#BIO} zw#H$5aM!|4s*7O4;lVv2^2s56srw(>pMy{#R~?58ntp zO6_A;f5>g!OSre`kB_h2NBP4ZPde-_S9~+`Unu;+Hj$k8CH`I8xih%Lxc}gK+SIf; zw9g#j&%YUoiDOB`a8FAM!lH{sSRmX6>0>CWJW7e=#P6W;u!c2pb*zkXI#_H{C^m`k z*Zuv+8VDZQFcK;Mlm0;C|A8{X7vtYi-WPACev_J;0*5K}gAzTVYgsD|ei?REfo)xS zM#+h<%5x@|uTjUUT6+b44j^yh5A^+1mePpf|8uH+MT+pPth6!~Wfo^)+)r*PhlA8R zz3;~*3w}g}q1Q(}XMz7e9ye+?*9B*ie$nmliy!Q#FHI7T*7C$BIB%nN{Al-=%==i$ zt@79tUgIOvK-$uibA_MyU&Q3LQ&?twG@n^N_VI2WL)hjFY9He{+>qeS2zy5Lpom4w z%fdf{K6e~yxhC?fVi6We^NHErv^;ptY4r*U8-SawxQD-mY4xD2SF_JJ8cJ^c(XHZ` zXxLwoE>G`ALjG@0?V)Xo-Y&u;Ki_)SM&1(=VPw7?I8_q@v3d<{e zX@7ZY`wZAVgnzyW-=I2FdBSrb+z_QOAGvLZU0uc+@WnBjR+4vMSKk01uO{^;!PDvi zdwWFvx*ldv3<#US^j|`CQ&R0oX!zhOx+sigaS`>eu&{7-CO(($UDgomYIujFM?OksI2d?D})_BI~N3niNg z{{p9n-TV$p_NnnY^tNuU__MIm|6SaPbo&0Pnq`h`d~$s+@xS_MD8mzhEuFv@Q4Cr3 z&)h@b?paBVLGGVG(~Cn*t3fQJ-|nHoTN_eggA)FyhT11FXyki8V~dPc)nzT;D5J0` z<|xb>Zx-$UCT9Zw z3p@Uax0Iato(q4eEF~wtgO!Ip*L0tEeF^DPgiY$76RT_51{Yz__Rk;SiMPtHfc=0l zI#zHc)kSGwU1x%w)H2LiGi4W}(>Q*A;c<6OD*hZNHD}k*-QPFD<~y15GL{BJZf2Qm z{}%i^Ow#?;N2$C;v)QJ$@spFTUi&)r2a76?+5I#b?|&U;g8M$-1lux4}U|FU#tu{uraEOCK@XKsIHn>2GstZ;hk z_je}CQ#0F6eS`C&u7WumHe|Nn_R0%MfjH@zw z>2z1CkVjo#wDhH5Vnwy*l@#0@Y5m1T0`G8nw*Wi$@YjG#BdD?QsGe-Htw zCi(}wDqBFVz_e7L$~*oGt5eUcuAQ%xpE|s|OE#$e!u*pC>HroWj{DNq_q>f5*7^VZ zYvB!iQj|y6?(AuQy!?%3u%SM>e7R*Z#GvL#%O?ey95!oV!P~zomWN*7dK6sIoL`WK zXsJ9cC;8WAhb`|EG?6#KYW?(IeFl~Sym>!)6Q5@6^2r-o?v89CwB(-#N}>=+WdHrU z7S@p13o@X?pN>6Cn>1yDZ8%l8Vgm|qx)|jJp~)KP502@mHL5g+c;+wV7S6!DB* z8Di}0Z*+fnxzQlR+Cv#t?2D9 ze2l?63Mezzo^gY3_IIc~R5TMFO)K#dFAu~(^&1NEzw{-@L!U9_ibj%$-Ttx>trg

bS2h0bfCZ3cQnga` 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 JGuuQY`# Date: Sun, 7 Jun 2015 22:38:23 +0200 Subject: [PATCH 014/118] Added Sitting README.md --- addons/sitting/README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 addons/sitting/README.md diff --git a/addons/sitting/README.md b/addons/sitting/README.md new file mode 100644 index 0000000000..41db2ce8ee --- /dev/null +++ b/addons/sitting/README.md @@ -0,0 +1,10 @@ +ace_sitting +=============== + +The Sitting module introduces ability to sit on different chairs and toilets. + +## Maintainers + +The people responsible for merging changes to this component or answering potential questions. + +- [Jonpas] (https://github.com/jonpas) From 246d303943c30ec4203c3076be571c814795f314 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Mon, 8 Jun 2015 13:00:03 +0100 Subject: [PATCH 015/118] menuClosed event before variable clearing --- addons/interact_menu/functions/fnc_keyUp.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/interact_menu/functions/fnc_keyUp.sqf b/addons/interact_menu/functions/fnc_keyUp.sqf index 6f1d00276f..02e2d4db01 100644 --- a/addons/interact_menu/functions/fnc_keyUp.sqf +++ b/addons/interact_menu/functions/fnc_keyUp.sqf @@ -46,6 +46,8 @@ if(GVAR(actionSelected)) then { }; }; +["interactMenuClosed", [GVAR(openedMenuType)]] call EFUNC(common,localEvent); + GVAR(keyDown) = false; GVAR(keyDownSelfAction) = false; GVAR(openedMenuType) = -1; @@ -54,6 +56,4 @@ GVAR(expanded) = false; GVAR(lastPath) = []; GVAR(menuDepthPath) = []; -["interactMenuClosed", [GVAR(openedMenuType)]] call EFUNC(common,localEvent); - true From f19320419512e617566e7588775b5aa2a4c596f0 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Mon, 8 Jun 2015 13:12:27 +0100 Subject: [PATCH 016/118] Simplify the renderZeus code --- .../functions/fnc_renderActionPoints.sqf | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/addons/interact_menu/functions/fnc_renderActionPoints.sqf b/addons/interact_menu/functions/fnc_renderActionPoints.sqf index ca4bdbc037..8ca7f8aa33 100644 --- a/addons/interact_menu/functions/fnc_renderActionPoints.sqf +++ b/addons/interact_menu/functions/fnc_renderActionPoints.sqf @@ -119,22 +119,9 @@ _fnc_renderSelfActions = { }; _fnc_renderZeusActions = { - _target = _this; - - // Iterate through zeus actions, find base level actions and render them if appropiate - _pos = if !(GVAR(useCursorMenu)) then { - _virtualPoint = (((positionCameraToWorld [0, 0, 0]) call EFUNC(common,positionToASL)) vectorAdd GVAR(selfMenuOffset)) call EFUNC(common,ASLToPosition); - _wavesAtOrigin = [(positionCameraToWorld [0, 0, 0])] call EFUNC(common,waveHeightAt); - _wavesAtVirtualPoint = [_virtualPoint] call EFUNC(common,waveHeightAt); - _virtualPoint set [2, ((_virtualPoint select 2) - _wavesAtOrigin + _wavesAtVirtualPoint)]; - _virtualPoint - } else { - [0.5, 0.5] - }; - { _action = _x; - [_target, _action, _pos] call FUNC(renderBaseMenu); + [_this, _action, [0.5, 0.5]] call FUNC(renderBaseMenu); } forEach GVAR(ZeusActions); }; From 2104e5b45f3c7a3dbbbac33d77a08ef63fd95e24 Mon Sep 17 00:00:00 2001 From: jonpas Date: Mon, 8 Jun 2015 17:52:33 +0200 Subject: [PATCH 017/118] Optimized condition functions, Removed redundant toLower for animation names --- addons/sitting/functions/fnc_canSit.sqf | 7 +------ addons/sitting/functions/fnc_canStand.sqf | 7 +++---- addons/sitting/functions/fnc_getRandomAnimation.sqf | 12 ++---------- addons/sitting/functions/fnc_sit.sqf | 3 +-- addons/sitting/functions/fnc_stand.sqf | 7 +++++-- 5 files changed, 12 insertions(+), 24 deletions(-) diff --git a/addons/sitting/functions/fnc_canSit.sqf b/addons/sitting/functions/fnc_canSit.sqf index 1c00e79cd8..3e270c9f1a 100644 --- a/addons/sitting/functions/fnc_canSit.sqf +++ b/addons/sitting/functions/fnc_canSit.sqf @@ -19,9 +19,4 @@ PARAMS_2(_seat,_player); // If seat object and not occupied -if (getNumber (configFile >> "CfgVehicles" >> typeOf _seat >> QGVAR(canSit)) == 1 && - {isNil{_seat getVariable QGVAR(seatOccupied)}} -) exitWith {true}; - -// Default -false +(getNumber (configFile >> "CfgVehicles" >> typeOf _seat >> QGVAR(canSit)) == 1 && {isNil{_seat getVariable QGVAR(seatOccupied)}}) diff --git a/addons/sitting/functions/fnc_canStand.sqf b/addons/sitting/functions/fnc_canStand.sqf index 853eadc3d1..1e862ecaea 100644 --- a/addons/sitting/functions/fnc_canStand.sqf +++ b/addons/sitting/functions/fnc_canStand.sqf @@ -15,8 +15,7 @@ */ #include "script_component.hpp" -// If sitting -if (_this getVariable [QGVAR(sitting),false]) exitWith {true}; +PARAMS_1(_player); -// Default -false +// If sitting +(_player getVariable [QGVAR(sitting),false]) diff --git a/addons/sitting/functions/fnc_getRandomAnimation.sqf b/addons/sitting/functions/fnc_getRandomAnimation.sqf index 79b8c5628f..65249f24f6 100644 --- a/addons/sitting/functions/fnc_getRandomAnimation.sqf +++ b/addons/sitting/functions/fnc_getRandomAnimation.sqf @@ -16,7 +16,7 @@ #include "script_component.hpp" // Animations Pool -_animPool = [ +_animations = [ "HubSittingChairUA_idle1", "HubSittingChairUA_idle2", "HubSittingChairUA_idle3", @@ -43,13 +43,5 @@ _animPool = [ "HubSittingChairC_move1" ]; -// Set all animation names to lower-case -_animations = []; -{ - _animations pushBack (toLower _x); -} forEach _animPool; - // Select random animation -_animation = _animations select (floor (random (count _animations))); - -_animation +(_animations select (floor (random (count _animations)))) diff --git a/addons/sitting/functions/fnc_sit.sqf b/addons/sitting/functions/fnc_sit.sqf index 07026c6e35..355da12613 100644 --- a/addons/sitting/functions/fnc_sit.sqf +++ b/addons/sitting/functions/fnc_sit.sqf @@ -33,8 +33,7 @@ _player setDir ((getDir _seat) + _sitDirection); _player setPos (_seat modelToWorld _sitPosition); // Get random animation and perform it -_animation = call FUNC(getRandomAnimation); -[_player, _animation, 2] call EFUNC(common,doAnimation); +[_player, call FUNC(getRandomAnimation), 2] call EFUNC(common,doAnimation); // Set variables _player setVariable [QGVAR(sitting), true]; diff --git a/addons/sitting/functions/fnc_stand.sqf b/addons/sitting/functions/fnc_stand.sqf index 5474720b47..673cb67ccc 100644 --- a/addons/sitting/functions/fnc_stand.sqf +++ b/addons/sitting/functions/fnc_stand.sqf @@ -15,9 +15,12 @@ */ #include "script_component.hpp" +PARAMS_1(_player); + // Restore animation -[_this, "", 2] call EFUNC(common,doAnimation); +[_player, "", 2] call EFUNC(common,doAnimation); // Set variables to nil -_this setVariable [QGVAR(sitting), nil]; +_player setVariable [QGVAR(sitting), nil]; GVAR(seat) setVariable [QGVAR(seatOccupied), nil, true]; +GVAR(seat) = nil; From c6b5c705c721adac9756b4f209b88029196a25a2 Mon Sep 17 00:00:00 2001 From: jonpas Date: Mon, 8 Jun 2015 23:25:15 +0200 Subject: [PATCH 018/118] Added Sitting Settings and Module --- addons/sitting/ACE_Settings.hpp | 7 +++ addons/sitting/CfgVehicles.hpp | 55 ++++++++++++++------- addons/sitting/XEH_preInit.sqf | 1 + addons/sitting/config.cpp | 3 +- addons/sitting/functions/fnc_canSit.sqf | 4 +- addons/sitting/functions/fnc_moduleInit.sqf | 23 +++++++++ addons/sitting/stringtable.xml | 9 ++++ 7 files changed, 82 insertions(+), 20 deletions(-) create mode 100644 addons/sitting/ACE_Settings.hpp create mode 100644 addons/sitting/functions/fnc_moduleInit.sqf diff --git a/addons/sitting/ACE_Settings.hpp b/addons/sitting/ACE_Settings.hpp new file mode 100644 index 0000000000..d4ebb61e83 --- /dev/null +++ b/addons/sitting/ACE_Settings.hpp @@ -0,0 +1,7 @@ +class ACE_Settings { + class GVAR(enable) { + value = 1; + typeName = "BOOL"; + displayName = CSTRING(Enable); + }; +}; diff --git a/addons/sitting/CfgVehicles.hpp b/addons/sitting/CfgVehicles.hpp index c81fbbdef1..319fc6b918 100644 --- a/addons/sitting/CfgVehicles.hpp +++ b/addons/sitting/CfgVehicles.hpp @@ -1,22 +1,25 @@ -#define MACRO_SEAT_ACTION \ - class ACE_Actions { \ - class ACE_MainActions { \ - displayName = ECSTRING(interaction,MainAction); \ - selection = ""; \ - distance = 1.25; \ - condition = "true"; \ - class GVAR(Sit) { \ - displayName = CSTRING(Sit); \ - condition = QUOTE(_this call FUNC(canSit)); \ - statement = QUOTE(_this call FUNC(sit)); \ - showDisabled = 0; \ - priority = 0; \ - icon = PATHTOF(UI\sit_ca.paa); \ - }; \ - }; \ +class CfgVehicles { + class ACE_Module; + class ACE_ModuleSitting: ACE_Module { + author = ECSTRING(common,ACETeam); + category = "ACE"; + displayName = CSTRING(ModuleDisplayName); + function = QFUNC(moduleInit); + scope = 2; + isGlobal = 1; + //icon = QUOTE(PATHTOF(UI\Icon_Module_Sitting_ca.paa)); + class Arguments { + class enable { + displayName = CSTRING(Enable); + typeName = "BOOL"; + defaultValue = 1; + }; + }; + class ModuleDescription { + description = CSTRING(ModuleDescription); + }; }; -class CfgVehicles { class Man; class CAManBase: Man { class ACE_SelfActions { @@ -31,6 +34,24 @@ class CfgVehicles { }; }; + #define MACRO_SEAT_ACTION \ + class ACE_Actions { \ + class ACE_MainActions { \ + displayName = ECSTRING(interaction,MainAction); \ + selection = ""; \ + distance = 1.25; \ + condition = "true"; \ + class GVAR(Sit) { \ + displayName = CSTRING(Sit); \ + condition = QUOTE(_this call FUNC(canSit)); \ + statement = QUOTE(_this call FUNC(sit)); \ + showDisabled = 0; \ + priority = 0; \ + icon = PATHTOF(UI\sit_ca.paa); \ + }; \ + }; \ + }; + class ThingX; // Folding Chair class Land_CampingChair_V1_F: ThingX { diff --git a/addons/sitting/XEH_preInit.sqf b/addons/sitting/XEH_preInit.sqf index 1c8e8ce8ad..ced588299a 100644 --- a/addons/sitting/XEH_preInit.sqf +++ b/addons/sitting/XEH_preInit.sqf @@ -5,6 +5,7 @@ ADDON = false; PREP(canSit); PREP(canStand); PREP(getRandomAnimation); +PREP(moduleInit); PREP(sit); PREP(stand); diff --git a/addons/sitting/config.cpp b/addons/sitting/config.cpp index 9412666aaf..f12fa530fa 100644 --- a/addons/sitting/config.cpp +++ b/addons/sitting/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_common"}; + requiredAddons[] = {"ace_interaction"}; author[] = {"Jonpas"}; authorUrl = "https://github.com/jonpas"; VERSION_CONFIG; @@ -13,4 +13,5 @@ class CfgPatches { }; #include "CfgEventHandlers.hpp" +#include "ACE_Settings.hpp" #include "CfgVehicles.hpp" diff --git a/addons/sitting/functions/fnc_canSit.sqf b/addons/sitting/functions/fnc_canSit.sqf index 3e270c9f1a..c9762e265c 100644 --- a/addons/sitting/functions/fnc_canSit.sqf +++ b/addons/sitting/functions/fnc_canSit.sqf @@ -18,5 +18,5 @@ PARAMS_2(_seat,_player); -// If seat object and not occupied -(getNumber (configFile >> "CfgVehicles" >> typeOf _seat >> QGVAR(canSit)) == 1 && {isNil{_seat getVariable QGVAR(seatOccupied)}}) +// Sitting enabled, is seat object and not occupied +(GVAR(enable) && {getNumber (configFile >> "CfgVehicles" >> typeOf _seat >> QGVAR(canSit)) == 1} && {isNil{_seat getVariable QGVAR(seatOccupied)}}) diff --git a/addons/sitting/functions/fnc_moduleInit.sqf b/addons/sitting/functions/fnc_moduleInit.sqf new file mode 100644 index 0000000000..4dbe2c5f0a --- /dev/null +++ b/addons/sitting/functions/fnc_moduleInit.sqf @@ -0,0 +1,23 @@ +/* + * Author: Jonpas + * Initializes the Sitting module. + * + * Arguments: + * Whatever the module provides. + * + * Return Value: + * None + */ +#include "script_component.hpp" + +if !(isServer) exitWith {}; + +PARAMS_3(_logic,_units,_activated); + +if !(_activated) exitWith {}; + +GVAR(Module) = true; + +[_logic, QGVAR(enable), "enable"] call EFUNC(common,readSettingFromModule); + +diag_log text "[ACE]: Sitting Module Initialized."; diff --git a/addons/sitting/stringtable.xml b/addons/sitting/stringtable.xml index cfe3a64f41..16eb84c59f 100644 --- a/addons/sitting/stringtable.xml +++ b/addons/sitting/stringtable.xml @@ -9,5 +9,14 @@ Stand Up Wstań + + Enable Sitting + + + Sitting + + + This module allows you to disable the ability to sit on chairs and toilets. + \ No newline at end of file From 95ec2ea1f99efcfeeec439684dee17b5397f6819 Mon Sep 17 00:00:00 2001 From: jonpas Date: Mon, 8 Jun 2015 23:39:14 +0200 Subject: [PATCH 019/118] Added isNotSitting exception, Renamed sitting QGVAR --- addons/sitting/CfgEventHandlers.hpp | 7 +++++++ addons/sitting/XEH_clientInit.sqf | 3 +++ addons/sitting/functions/fnc_canStand.sqf | 4 ++-- addons/sitting/functions/fnc_sit.sqf | 2 +- addons/sitting/functions/fnc_stand.sqf | 2 +- 5 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 addons/sitting/XEH_clientInit.sqf diff --git a/addons/sitting/CfgEventHandlers.hpp b/addons/sitting/CfgEventHandlers.hpp index b928bc2de6..c19217fb29 100644 --- a/addons/sitting/CfgEventHandlers.hpp +++ b/addons/sitting/CfgEventHandlers.hpp @@ -3,3 +3,10 @@ class Extended_PreInit_EventHandlers { init = QUOTE(call COMPILE_FILE(XEH_preInit)); }; }; + + +class Extended_PostInit_EventHandlers { + class ADDON { + clientInit = QUOTE(call COMPILE_FILE(XEH_clientInit)); + }; +}; diff --git a/addons/sitting/XEH_clientInit.sqf b/addons/sitting/XEH_clientInit.sqf new file mode 100644 index 0000000000..bbe81b27c7 --- /dev/null +++ b/addons/sitting/XEH_clientInit.sqf @@ -0,0 +1,3 @@ +#include "script_component.hpp" + +["isNotSitting", {!((_this select 0) getVariable [QGVAR(isSitting), false])}] call EFUNC(common,addCanInteractWithCondition); diff --git a/addons/sitting/functions/fnc_canStand.sqf b/addons/sitting/functions/fnc_canStand.sqf index 1e862ecaea..4549b9891b 100644 --- a/addons/sitting/functions/fnc_canStand.sqf +++ b/addons/sitting/functions/fnc_canStand.sqf @@ -17,5 +17,5 @@ PARAMS_1(_player); -// If sitting -(_player getVariable [QGVAR(sitting),false]) +// Sitting +(_player getVariable [QGVAR(isSitting),false]) diff --git a/addons/sitting/functions/fnc_sit.sqf b/addons/sitting/functions/fnc_sit.sqf index 355da12613..0edaffb1a4 100644 --- a/addons/sitting/functions/fnc_sit.sqf +++ b/addons/sitting/functions/fnc_sit.sqf @@ -36,5 +36,5 @@ _player setPos (_seat modelToWorld _sitPosition); [_player, call FUNC(getRandomAnimation), 2] call EFUNC(common,doAnimation); // Set variables -_player setVariable [QGVAR(sitting), true]; +_player setVariable [QGVAR(isSitting), true]; _seat setVariable [QGVAR(seatOccupied), true, true]; // To prevent multiple people sitting on one seat diff --git a/addons/sitting/functions/fnc_stand.sqf b/addons/sitting/functions/fnc_stand.sqf index 673cb67ccc..df1ee6f169 100644 --- a/addons/sitting/functions/fnc_stand.sqf +++ b/addons/sitting/functions/fnc_stand.sqf @@ -21,6 +21,6 @@ PARAMS_1(_player); [_player, "", 2] call EFUNC(common,doAnimation); // Set variables to nil -_player setVariable [QGVAR(sitting), nil]; +_player setVariable [QGVAR(isSitting), nil]; GVAR(seat) setVariable [QGVAR(seatOccupied), nil, true]; GVAR(seat) = nil; From f9d292e9c296f240c584ae6fe40544e8294298f5 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 9 Jun 2015 15:52:41 +0200 Subject: [PATCH 020/118] Missing privates --- addons/sitting/functions/fnc_getRandomAnimation.sqf | 2 ++ addons/sitting/functions/fnc_sit.sqf | 1 + 2 files changed, 3 insertions(+) diff --git a/addons/sitting/functions/fnc_getRandomAnimation.sqf b/addons/sitting/functions/fnc_getRandomAnimation.sqf index 65249f24f6..c83d230a90 100644 --- a/addons/sitting/functions/fnc_getRandomAnimation.sqf +++ b/addons/sitting/functions/fnc_getRandomAnimation.sqf @@ -15,6 +15,8 @@ */ #include "script_component.hpp" +private ["_animations"]; + // Animations Pool _animations = [ "HubSittingChairUA_idle1", diff --git a/addons/sitting/functions/fnc_sit.sqf b/addons/sitting/functions/fnc_sit.sqf index 0edaffb1a4..b144653d02 100644 --- a/addons/sitting/functions/fnc_sit.sqf +++ b/addons/sitting/functions/fnc_sit.sqf @@ -25,6 +25,7 @@ GVAR(seat) = _seat; _player switchMove "amovpknlmstpsraswrfldnon"; // Read config +private ["_sitDirection", "_sitPosition"]; _sitDirection = getNumber (configFile >> "CfgVehicles" >> typeOf _seat >> QGVAR(sitDirection)); _sitPosition = getArray (configFile >> "CfgVehicles" >> typeOf _seat >> QGVAR(sitPosition)); From 951f9d32c366470592c6a7a6578d2d7975015795 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 9 Jun 2015 16:04:37 +0200 Subject: [PATCH 021/118] Allow interaction menu while sitting --- addons/interact_menu/XEH_clientInit.sqf | 4 ++-- addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf | 2 +- addons/sitting/CfgVehicles.hpp | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/addons/interact_menu/XEH_clientInit.sqf b/addons/interact_menu/XEH_clientInit.sqf index f6c712a668..d2231d8768 100644 --- a/addons/interact_menu/XEH_clientInit.sqf +++ b/addons/interact_menu/XEH_clientInit.sqf @@ -31,7 +31,7 @@ addMissionEventHandler ["Draw3D", DFUNC(render)]; ["ACE3 Common", QGVAR(InteractKey), (localize LSTRING(InteractKey)), { // Conditions: canInteract - if !([ACE_player, objNull, ["isNotInside","isNotDragging", "isNotCarrying", "isNotSwimming", "notOnMap", "isNotEscorting", "isNotSurrendering"]] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, objNull, ["isNotInside","isNotDragging", "isNotCarrying", "isNotSwimming", "notOnMap", "isNotEscorting", "isNotSurrendering", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Statement [0] call FUNC(keyDown) },{[0,false] call FUNC(keyUp)}, @@ -40,7 +40,7 @@ addMissionEventHandler ["Draw3D", DFUNC(render)]; ["ACE3 Common", QGVAR(SelfInteractKey), (localize LSTRING(SelfInteractKey)), { // Conditions: canInteract - if !([ACE_player, objNull, ["isNotInside","isNotDragging", "isNotCarrying", "isNotSwimming", "notOnMap", "isNotEscorting", "isNotSurrendering"]] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, objNull, ["isNotInside","isNotDragging", "isNotCarrying", "isNotSwimming", "notOnMap", "isNotEscorting", "isNotSurrendering", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Statement [1] call FUNC(keyDown) },{[1,false] call FUNC(keyUp)}, diff --git a/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf b/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf index 7efc4ffba9..27f841c505 100644 --- a/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf +++ b/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf @@ -122,7 +122,7 @@ _actions = if (_isMan) then { // Dummy statement so it's not collapsed when there's no available actions true }, - {[ACE_player, _target, ["isNotInside","isNotDragging", "isNotCarrying", "isNotSwimming", "notOnMap", "isNotEscorting", "isNotSurrendering"]] call EFUNC(common,canInteractWith)}, + {[ACE_player, _target, ["isNotInside","isNotDragging", "isNotCarrying", "isNotSwimming", "notOnMap", "isNotEscorting", "isNotSurrendering", "isNotSitting"]] call EFUNC(common,canInteractWith)}, {}, {}, "Spine3", diff --git a/addons/sitting/CfgVehicles.hpp b/addons/sitting/CfgVehicles.hpp index 319fc6b918..f46469616f 100644 --- a/addons/sitting/CfgVehicles.hpp +++ b/addons/sitting/CfgVehicles.hpp @@ -26,6 +26,7 @@ class CfgVehicles { class GVAR(Stand) { displayName = CSTRING(Stand); condition = QUOTE(_player call FUNC(canStand)); + exceptions[] = {"isNotSitting"}; statement = QUOTE(_player call FUNC(stand)); priority = 0; icon = PATHTOF(UI\stand_ca.paa); From 332afb217405fbd9fb8a5069f1ef61b6ca1ecd1d Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 9 Jun 2015 16:17:05 +0200 Subject: [PATCH 022/118] Allow certain self-interactions while sitting --- addons/atragmx/CfgVehicles.hpp | 2 +- addons/explosives/CfgVehicles.hpp | 6 +++--- addons/hearing/CfgVehicles.hpp | 4 ++-- addons/interaction/CfgVehicles.hpp | 18 +++++++++--------- addons/kestrel4500/CfgVehicles.hpp | 4 ++-- addons/magazinerepack/CfgVehicles.hpp | 2 +- addons/maptools/CfgVehicles.hpp | 16 ++++++++-------- addons/medical/ACE_Medical_SelfActions.hpp | 14 +++++++------- addons/microdagr/CfgVehicles.hpp | 6 +++--- addons/mk6mortar/CfgVehicles.hpp | 2 +- addons/overheating/CfgVehicles.hpp | 2 +- addons/scopes/CfgVehicles.hpp | 2 +- 12 files changed, 39 insertions(+), 39 deletions(-) diff --git a/addons/atragmx/CfgVehicles.hpp b/addons/atragmx/CfgVehicles.hpp index 9e70047013..65ef589d0f 100644 --- a/addons/atragmx/CfgVehicles.hpp +++ b/addons/atragmx/CfgVehicles.hpp @@ -10,7 +10,7 @@ class CfgVehicles { showDisabled = 0; priority = 2; icon = PATHTOF(UI\ATRAG_Icon.paa); - exceptions[] = {"notOnMap", "isNotInside"}; + exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"}; }; }; }; diff --git a/addons/explosives/CfgVehicles.hpp b/addons/explosives/CfgVehicles.hpp index 3cc63fb36a..4250538c87 100644 --- a/addons/explosives/CfgVehicles.hpp +++ b/addons/explosives/CfgVehicles.hpp @@ -6,7 +6,7 @@ class CfgVehicles { displayName = $STR_ACE_Explosives_Menu; condition = QUOTE(!(_player getVariable [ARR_2('ace_explosives_PlantingExplosive',false)])); statement = ""; - exceptions[] = {"isNotSwimming", "isNotInside"}; + exceptions[] = {"isNotSwimming", "isNotInside", "isNotSitting"}; showDisabled = 1; priority = 4; icon = PATHTOF(UI\Explosives_Menu_ca.paa); @@ -17,7 +17,7 @@ class CfgVehicles { condition = QUOTE([_player] call FUNC(canDetonate)); statement = ""; insertChildren = QUOTE([_player] call FUNC(addTransmitterActions);); - exceptions[] = {"isNotSwimming", "isNotInside"}; + exceptions[] = {"isNotSwimming", "isNotInside", "isNotSitting"}; showDisabled = 1; icon = PATHTOF(UI\Explosives_Menu_ca.paa); priority = 2; @@ -38,7 +38,7 @@ class CfgVehicles { displayName = $STR_ACE_Explosives_cellphone_displayName; condition = "('ACE_Cellphone' in (items ace_player))"; statement = "closeDialog 0;createDialog 'Rsc_ACE_PhoneInterface';"; - exceptions[] = {"isNotSwimming", "isNotInside"}; + exceptions[] = {"isNotSwimming", "isNotInside", "isNotSitting"}; showDisabled = 0; icon = PATHTOF(Data\UI\Cellphone_UI.paa); priority = 0.8; diff --git a/addons/hearing/CfgVehicles.hpp b/addons/hearing/CfgVehicles.hpp index b0ef46faa0..1cf06910b0 100644 --- a/addons/hearing/CfgVehicles.hpp +++ b/addons/hearing/CfgVehicles.hpp @@ -6,7 +6,7 @@ class CfgVehicles { class ACE_PutInEarplugs { displayName = CSTRING(EarPlugs_On); condition = QUOTE( !([_player] call FUNC(hasEarPlugsIn)) && {'ACE_EarPlugs' in items _player} ); - exceptions[] = {"isNotInside"}; + exceptions[] = {"isNotInside", "isNotSitting"}; statement = QUOTE( [_player] call FUNC(putInEarPlugs) ); showDisabled = 0; priority = 2.5; @@ -16,7 +16,7 @@ class CfgVehicles { class ACE_RemoveEarplugs { displayName = CSTRING(EarPlugs_Off); condition = QUOTE( [_player] call FUNC(hasEarPlugsIn) ); - exceptions[] = {"isNotInside"}; + exceptions[] = {"isNotInside", "isNotSitting"}; statement = QUOTE( [_player] call FUNC(removeEarPlugs) ); showDisabled = 0; priority = 2.5; diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index f83fd26344..74a46ae106 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -191,7 +191,7 @@ class CfgVehicles { class ACE_TeamManagement { displayName = CSTRING(TeamManagement); condition = QUOTE(GVAR(EnableTeamManagement)); - exceptions[] = {"isNotInside"}; + exceptions[] = {"isNotInside", "isNotSitting"}; statement = ""; showDisabled = 1; priority = 3.2; @@ -201,7 +201,7 @@ class CfgVehicles { class ACE_JoinTeamRed { displayName = CSTRING(JoinTeamRed); condition = QUOTE(true); - exceptions[] = {"isNotInside"}; + exceptions[] = {"isNotInside", "isNotSitting"}; statement = QUOTE([ARR_2(_player,'RED')] call DFUNC(joinTeam)); showDisabled = 1; priority = 2.4; @@ -211,7 +211,7 @@ class CfgVehicles { class ACE_JoinTeamGreen { displayName = CSTRING(JoinTeamGreen); condition = QUOTE(true); - exceptions[] = {"isNotInside"}; + exceptions[] = {"isNotInside", "isNotSitting"}; statement = QUOTE([ARR_2(_player,'GREEN')] call DFUNC(joinTeam)); showDisabled = 1; priority = 2.3; @@ -221,7 +221,7 @@ class CfgVehicles { class ACE_JoinTeamBlue { displayName = CSTRING(JoinTeamBlue); condition = QUOTE(true); - exceptions[] = {"isNotInside"}; + exceptions[] = {"isNotInside", "isNotSitting"}; statement = QUOTE([ARR_2(_player,'BLUE')] call DFUNC(joinTeam)); showDisabled = 1; priority = 2.2; @@ -231,7 +231,7 @@ class CfgVehicles { class ACE_JoinTeamYellow { displayName = CSTRING(JoinTeamYellow); condition = QUOTE(true); - exceptions[] = {"isNotInside"}; + exceptions[] = {"isNotInside", "isNotSitting"}; statement = QUOTE([ARR_2(_player,'YELLOW')] call DFUNC(joinTeam)); showDisabled = 1; priority = 2.1; @@ -242,7 +242,7 @@ class CfgVehicles { class ACE_LeaveTeam { displayName = CSTRING(LeaveTeam); condition = QUOTE(assignedTeam _player != 'MAIN'); - exceptions[] = {"isNotInside"}; + exceptions[] = {"isNotInside", "isNotSitting"}; statement = QUOTE([ARR_2(_player,'MAIN')] call DFUNC(joinTeam)); showDisabled = 1; priority = 2.5; @@ -252,7 +252,7 @@ class CfgVehicles { class ACE_BecomeLeader { displayName = CSTRING(BecomeLeader); condition = QUOTE(_this call DFUNC(canBecomeLeader)); - exceptions[] = {"isNotInside"}; + exceptions[] = {"isNotInside", "isNotSitting"}; statement = QUOTE(_this call DFUNC(doBecomeLeader)); showDisabled = 1; priority = 1.0; @@ -262,7 +262,7 @@ class CfgVehicles { class ACE_LeaveGroup { displayName = CSTRING(LeaveGroup); condition = QUOTE(count (units group _player) > 1); - exceptions[] = {"isNotInside"}; + exceptions[] = {"isNotInside", "isNotSitting"}; statement = QUOTE(_oldGroup = units group _player; _newGroup = createGroup side _player; [_player] joinSilent _newGroup; {_player reveal _x} forEach _oldGroup;); showDisabled = 1; priority = 1.2; @@ -379,7 +379,7 @@ class CfgVehicles { class ACE_Equipment { displayName = CSTRING(Equipment); condition = QUOTE(true); - exceptions[] = {"isNotInside","notOnMap"}; + exceptions[] = {"isNotInside","notOnMap", "isNotSitting"}; statement = ""; showDisabled = 1; priority = 4.5; diff --git a/addons/kestrel4500/CfgVehicles.hpp b/addons/kestrel4500/CfgVehicles.hpp index 6e2fc1cba5..c29bdfed7d 100644 --- a/addons/kestrel4500/CfgVehicles.hpp +++ b/addons/kestrel4500/CfgVehicles.hpp @@ -19,7 +19,7 @@ class CfgVehicles { showDisabled = 0; priority = 0.2; icon = QUOTE(PATHTOF(UI\Kestrel4500_Icon.paa)); - exceptions[] = {"notOnMap", "isNotInside"}; + exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"}; }; class GVAR(hide) { displayName = CSTRING(HideKestrel); @@ -28,7 +28,7 @@ class CfgVehicles { showDisabled = 0; priority = 0.3; icon = QUOTE(PATHTOF(UI\Kestrel4500_Icon.paa)); - exceptions[] = {"notOnMap", "isNotInside"}; + exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"}; }; }; }; diff --git a/addons/magazinerepack/CfgVehicles.hpp b/addons/magazinerepack/CfgVehicles.hpp index f94d8f2b06..78af19bcfe 100644 --- a/addons/magazinerepack/CfgVehicles.hpp +++ b/addons/magazinerepack/CfgVehicles.hpp @@ -5,7 +5,7 @@ class CfgVehicles { class ACE_RepackMagazines { displayName = CSTRING(RepackMagazines); condition = QUOTE(true); - exceptions[] = {"isNotInside"}; + exceptions[] = {"isNotInside", "isNotSitting"}; insertChildren = QUOTE(_this call FUNC(getMagazineChildren)); priority = -2; icon = QUOTE(PATHTOF(UI\repack_ca.paa)); diff --git a/addons/maptools/CfgVehicles.hpp b/addons/maptools/CfgVehicles.hpp index 3046ec0ec1..5c3266d2d6 100644 --- a/addons/maptools/CfgVehicles.hpp +++ b/addons/maptools/CfgVehicles.hpp @@ -7,7 +7,7 @@ class CfgVehicles { displayName = CSTRING(MapTools_Menu); condition = QUOTE((call FUNC(canUseMapTools) || {call FUNC(canUseMapGPS)})); statement = ""; - exceptions[] = {"isNotDragging", "notOnMap", "isNotInside"}; + exceptions[] = {"isNotDragging", "notOnMap", "isNotInside", "isNotSitting"}; showDisabled = 0; priority = 100; @@ -15,7 +15,7 @@ class CfgVehicles { displayName = CSTRING(MapToolsHide); condition = QUOTE((call FUNC(canUseMapTools) && {GVAR(mapTool_Shown) != 0})); statement = QUOTE(GVAR(mapTool_Shown) = 0; [] call FUNC(updateMapToolMarkers)); - exceptions[] = {"isNotDragging", "notOnMap", "isNotInside"}; + exceptions[] = {"isNotDragging", "notOnMap", "isNotInside", "isNotSitting"}; showDisabled = 1; priority = 5; }; @@ -23,7 +23,7 @@ class CfgVehicles { displayName = CSTRING(MapToolsShowNormal); condition = QUOTE((call FUNC(canUseMapTools) && {GVAR(mapTool_Shown) != 1})); statement = QUOTE(GVAR(mapTool_Shown) = 1; [] call FUNC(updateMapToolMarkers)); - exceptions[] = {"isNotDragging", "notOnMap", "isNotInside"}; + exceptions[] = {"isNotDragging", "notOnMap", "isNotInside", "isNotSitting"}; showDisabled = 1; priority = 4; }; @@ -31,7 +31,7 @@ class CfgVehicles { displayName = CSTRING(MapToolsShowSmall); condition = QUOTE((call FUNC(canUseMapTools) && {GVAR(mapTool_Shown) != 2})); statement = QUOTE(GVAR(mapTool_Shown) = 2; [] call FUNC(updateMapToolMarkers)); - exceptions[] = {"isNotDragging", "notOnMap", "isNotInside"}; + exceptions[] = {"isNotDragging", "notOnMap", "isNotInside", "isNotSitting"}; showDisabled = 1; priority = 3; }; @@ -39,7 +39,7 @@ class CfgVehicles { displayName = CSTRING(MapToolsAlignNorth); condition = QUOTE((call FUNC(canUseMapTools) && {GVAR(mapTool_Shown) != 0})); statement = QUOTE(GVAR(mapTool_angle) = 0; [] call FUNC(updateMapToolMarkers)); - exceptions[] = {"isNotDragging", "notOnMap", "isNotInside"}; + exceptions[] = {"isNotDragging", "notOnMap", "isNotInside", "isNotSitting"}; showDisabled = 1; priority = 2; }; @@ -47,7 +47,7 @@ class CfgVehicles { displayName = CSTRING(MapToolsAlignCompass); condition = QUOTE((call FUNC(canUseMapTools) && {GVAR(mapTool_Shown) != 0} && {('ItemCompass' in assigneditems ACE_player) || {'ItemCompass' in assigneditems ACE_player}})); statement = QUOTE(GVAR(mapTool_angle) = getDir ACE_player; [] call FUNC(updateMapToolMarkers)); - exceptions[] = {"isNotDragging", "notOnMap", "isNotInside"}; + exceptions[] = {"isNotDragging", "notOnMap", "isNotInside", "isNotSitting"}; showDisabled = 1; priority = 1; }; @@ -55,7 +55,7 @@ class CfgVehicles { displayName = CSTRING(MapGpsShow); condition = QUOTE((call FUNC(canUseMapGPS) && {!GVAR(mapGpsShow)})); statement = QUOTE(GVAR(mapGpsShow) = true; [GVAR(mapGpsShow)] call FUNC(openMapGps)); - exceptions[] = {"isNotDragging", "notOnMap", "isNotInside"}; + exceptions[] = {"isNotDragging", "notOnMap", "isNotInside", "isNotSitting"}; showDisabled = 0; priority = 0; }; @@ -63,7 +63,7 @@ class CfgVehicles { displayName = CSTRING(MapGpsHide); condition = QUOTE((call FUNC(canUseMapGPS) && {GVAR(mapGpsShow)})); statement = QUOTE(GVAR(mapGpsShow) = false; [GVAR(mapGpsShow)] call FUNC(openMapGps)); - exceptions[] = {"isNotDragging", "notOnMap", "isNotInside"}; + exceptions[] = {"isNotDragging", "notOnMap", "isNotInside", "isNotSitting"}; showDisabled = 0; priority = 0; }; diff --git a/addons/medical/ACE_Medical_SelfActions.hpp b/addons/medical/ACE_Medical_SelfActions.hpp index e0c1f4ccf8..0f85930f51 100644 --- a/addons/medical/ACE_Medical_SelfActions.hpp +++ b/addons/medical/ACE_Medical_SelfActions.hpp @@ -2,7 +2,7 @@ class Medical { displayName = CSTRING(Actions_Medical); runOnHover = 1; hotkey = "M"; - exceptions[] = {"isNotInside"}; + exceptions[] = {"isNotInside", "isNotSitting"}; statement = QUOTE([ARR_3(_target, true, 0)] call DFUNC(displayPatientInformation)); condition = "true"; icon = PATHTOF(UI\icons\medical_cross.paa); @@ -10,7 +10,7 @@ class Medical { class ACE_Head { displayName = CSTRING(Head); icon = PATHTOF(UI\icons\medical_cross.paa); - exceptions[] = {"isNotInside"}; + exceptions[] = {"isNotInside", "isNotSitting"}; statement = QUOTE([ARR_3(_target, true, 0)] call DFUNC(displayPatientInformation)); modifierFunction = QUOTE([ARR_4(_target,_player,0,_this select 3)] call FUNC(modifyMedicalAction)); condition = "true"; @@ -79,7 +79,7 @@ class Medical { distance = 5.0; condition = "true"; runOnHover = 1; - exceptions[] = {"isNotInside"}; + exceptions[] = {"isNotInside", "isNotSitting"}; statement = QUOTE([ARR_3(_target, true, 1)] call DFUNC(displayPatientInformation)); modifierFunction = QUOTE([ARR_4(_target,_player,1,_this select 3)] call FUNC(modifyMedicalAction)); showDisabled = 1; @@ -148,7 +148,7 @@ class Medical { class ACE_ArmLeft { displayName = ECSTRING(interaction,ArmLeft); runOnHover = 1; - exceptions[] = {"isNotInside"}; + exceptions[] = {"isNotInside", "isNotSitting"}; statement = QUOTE([ARR_3(_target, true, 2)] call DFUNC(displayPatientInformation)); modifierFunction = QUOTE([ARR_4(_target,_player,2,_this select 3)] call FUNC(modifyMedicalAction)); condition = "true"; @@ -250,7 +250,7 @@ class Medical { class ACE_ArmRight { displayName = ECSTRING(interaction,ArmRight); runOnHover = 1; - exceptions[] = {"isNotInside"}; + exceptions[] = {"isNotInside", "isNotSitting"}; statement = QUOTE([ARR_3(_target, true, 3)] call DFUNC(displayPatientInformation)); modifierFunction = QUOTE([ARR_4(_target,_player,3,_this select 3)] call FUNC(modifyMedicalAction)); condition = "true"; @@ -348,7 +348,7 @@ class Medical { class ACE_LegLeft { displayName = ECSTRING(interaction,LegLeft); runOnHover = 1; - exceptions[] = {"isNotInside"}; + exceptions[] = {"isNotInside", "isNotSitting"}; statement = QUOTE([ARR_3(_target, true, 4)] call DFUNC(displayPatientInformation)); modifierFunction = QUOTE([ARR_4(_target,_player,4,_this select 3)] call FUNC(modifyMedicalAction)); condition = "true"; @@ -435,7 +435,7 @@ class Medical { class ACE_LegRight { displayName = ECSTRING(interaction,LegRight); runOnHover = 1; - exceptions[] = {"isNotInside"}; + exceptions[] = {"isNotInside", "isNotSitting"}; statement = QUOTE([ARR_3(_target, true, 5)] call DFUNC(displayPatientInformation)); modifierFunction = QUOTE([ARR_4(_target,_player,5,_this select 3)] call FUNC(modifyMedicalAction)); condition = "true"; diff --git a/addons/microdagr/CfgVehicles.hpp b/addons/microdagr/CfgVehicles.hpp index d07903dbc1..60f49c20c3 100644 --- a/addons/microdagr/CfgVehicles.hpp +++ b/addons/microdagr/CfgVehicles.hpp @@ -11,7 +11,7 @@ class CfgVehicles { showDisabled = 0; priority = 0.2; icon = QUOTE(PATHTOF(UI\icon_microDAGR.paa)); - exceptions[] = {"notOnMap", "isNotInside"}; + exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"}; }; class GVAR(configure) { //Opens the dialog @@ -21,7 +21,7 @@ class CfgVehicles { showDisabled = 0; priority = 0.1; icon = QUOTE(PATHTOF(UI\icon_microDAGR.paa)); - exceptions[] = {"notOnMap", "isNotInside"}; + exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"}; }; class GVAR(close) { displayName = CSTRING(closeUnit); @@ -30,7 +30,7 @@ class CfgVehicles { showDisabled = 0; priority = 0.3; icon = QUOTE(PATHTOF(UI\icon_microDAGR.paa)); - exceptions[] = {"notOnMap", "isNotInside"}; + exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"}; }; }; }; diff --git a/addons/mk6mortar/CfgVehicles.hpp b/addons/mk6mortar/CfgVehicles.hpp index 8a069b9031..2738a649a9 100644 --- a/addons/mk6mortar/CfgVehicles.hpp +++ b/addons/mk6mortar/CfgVehicles.hpp @@ -9,7 +9,7 @@ class CfgVehicles { statement = QUOTE(_this call FUNC(rangeTableOpen)); priority = 0; icon = QUOTE(PATHTOF(UI\icon_rangeTable.paa)); - exceptions[] = {"notOnMap", "isNotInside"}; + exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"}; }; }; }; diff --git a/addons/overheating/CfgVehicles.hpp b/addons/overheating/CfgVehicles.hpp index 3041075c8d..a198ef71b6 100644 --- a/addons/overheating/CfgVehicles.hpp +++ b/addons/overheating/CfgVehicles.hpp @@ -16,7 +16,7 @@ class CfgVehicles { class ACE_CheckTemperature { displayName = CSTRING(CheckTemperatureShort); condition = "switch (currentWeapon _player) do {case (''): {false}; case (primaryWeapon _player); case (secondaryWeapon _player); case (handgunWeapon _player): {true}; default {false}}"; - exceptions[] = {"isNotInside"}; + exceptions[] = {"isNotInside", "isNotSitting"}; statement = QUOTE( [ARR_2(_player, currentWeapon _player)] call FUNC(CheckTemperature); ); showDisabled = 0; priority = 2.9; diff --git a/addons/scopes/CfgVehicles.hpp b/addons/scopes/CfgVehicles.hpp index b3d4ef8806..81756249e1 100644 --- a/addons/scopes/CfgVehicles.hpp +++ b/addons/scopes/CfgVehicles.hpp @@ -11,7 +11,7 @@ class CfgVehicles { showDisabled = 0; priority = 0.2; //icon = QUOTE(PATHTOF(UI\...)); // TODO - exceptions[] = {"notOnMap", "isNotInside"}; + exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"}; }; }; }; From 3e0d4d1f7b6915954663f679eb4dbd12f4350e4f Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 9 Jun 2015 16:48:58 +0200 Subject: [PATCH 023/118] Fixed Rattan Chair position, doAnimation before moving player --- addons/sitting/CfgVehicles.hpp | 2 +- addons/sitting/functions/fnc_sit.sqf | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/sitting/CfgVehicles.hpp b/addons/sitting/CfgVehicles.hpp index f46469616f..a2e5a624e8 100644 --- a/addons/sitting/CfgVehicles.hpp +++ b/addons/sitting/CfgVehicles.hpp @@ -100,7 +100,7 @@ class CfgVehicles { MACRO_SEAT_ACTION GVAR(canSit) = 1; GVAR(sitDirection) = 180; - GVAR(sitPosition[]) = {0.07, 0.17, 1}; + GVAR(sitPosition[]) = {0, -0.1, -1}; // Z must be -1 due to chair's geometry (magic floating seat point) }; // Field Toilet class Land_FieldToilet_F: ThingX { diff --git a/addons/sitting/functions/fnc_sit.sqf b/addons/sitting/functions/fnc_sit.sqf index b144653d02..32e1c45b40 100644 --- a/addons/sitting/functions/fnc_sit.sqf +++ b/addons/sitting/functions/fnc_sit.sqf @@ -29,13 +29,13 @@ private ["_sitDirection", "_sitPosition"]; _sitDirection = getNumber (configFile >> "CfgVehicles" >> typeOf _seat >> QGVAR(sitDirection)); _sitPosition = getArray (configFile >> "CfgVehicles" >> typeOf _seat >> QGVAR(sitPosition)); +// Get random animation and perform it (before moving player to ensure correct placement) +[_player, call FUNC(getRandomAnimation), 2] call EFUNC(common,doAnimation); + // Set direction and position _player setDir ((getDir _seat) + _sitDirection); _player setPos (_seat modelToWorld _sitPosition); -// Get random animation and perform it -[_player, call FUNC(getRandomAnimation), 2] call EFUNC(common,doAnimation); - // Set variables _player setVariable [QGVAR(isSitting), true]; _seat setVariable [QGVAR(seatOccupied), true, true]; // To prevent multiple people sitting on one seat From 36d4d01a30871b4a6ca00e42c4b607e4d0837aa7 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 9 Jun 2015 16:55:06 +0200 Subject: [PATCH 024/118] Adjusted Chair (Plastic) sitting position --- addons/sitting/CfgVehicles.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/sitting/CfgVehicles.hpp b/addons/sitting/CfgVehicles.hpp index a2e5a624e8..5ef62e50ae 100644 --- a/addons/sitting/CfgVehicles.hpp +++ b/addons/sitting/CfgVehicles.hpp @@ -76,7 +76,7 @@ class CfgVehicles { MACRO_SEAT_ACTION GVAR(canSit) = 1; GVAR(sitDirection) = 90; - GVAR(sitPosition[]) = {-0.1, 0, -0.2}; + GVAR(sitPosition[]) = {0, 0, -0.5}; }; // Chair (Wooden) class Land_ChairWood_F: ThingX { From f1f9ee1365fe7f07eec6a213ffdb7022ff5172b9 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 9 Jun 2015 18:27:58 +0200 Subject: [PATCH 025/118] Added module icon, removed comment --- addons/sitting/CfgVehicles.hpp | 3 +-- addons/sitting/UI/Icons_Module_Sitting_ca.paa | Bin 0 -> 5625 bytes extras/assets/icons/Icons_Modules.psd | Bin 2341232 -> 2345035 bytes .../Icon_Module/Icons_Module_Sitting_ca.png | Bin 0 -> 4187 bytes 4 files changed, 1 insertion(+), 2 deletions(-) create mode 100644 addons/sitting/UI/Icons_Module_Sitting_ca.paa create mode 100644 extras/assets/icons/png/Icon_Module/Icons_Module_Sitting_ca.png diff --git a/addons/sitting/CfgVehicles.hpp b/addons/sitting/CfgVehicles.hpp index 5ef62e50ae..cd7ec735e4 100644 --- a/addons/sitting/CfgVehicles.hpp +++ b/addons/sitting/CfgVehicles.hpp @@ -7,7 +7,7 @@ class CfgVehicles { function = QFUNC(moduleInit); scope = 2; isGlobal = 1; - //icon = QUOTE(PATHTOF(UI\Icon_Module_Sitting_ca.paa)); + icon = QUOTE(PATHTOF(UI\Icon_Module_Sitting_ca.paa)); class Arguments { class enable { displayName = CSTRING(Enable); @@ -30,7 +30,6 @@ class CfgVehicles { statement = QUOTE(_player call FUNC(stand)); priority = 0; icon = PATHTOF(UI\stand_ca.paa); - //add exception isNotSitting to everything that shouldn't be available (eg. medical) }; }; }; diff --git a/addons/sitting/UI/Icons_Module_Sitting_ca.paa b/addons/sitting/UI/Icons_Module_Sitting_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..1d4bbccb700b9270cb115a1c7b48ce3202c14002 GIT binary patch literal 5625 zcmd^De`p(Z6n~c{w%OV=x^@oZ)(krtV@h$s4OYl?WBq|Y8gSQjsI2RTFlE;Lv5Lsd zIfXe88@nGWv~~zLa4a$gje;9JnN~#&!$0OmU0a9H6_I5Pu^mnOeDAJzxm;~C*G`7} zCI|Pq@B97U_kF*2F084k+Ptx*p~?vWlarIrYPhlLDaJ^HaZS~e)rYjv>(X=w=0hHW=qRVZX&<;F{5SDD+fU-; z^4k3teGnYx`=Zo{W<+7f^2`L%g@#)wr69T{{Rj@{SABU`g7rF`G#5t^BD3F z>g-q(Y0lf?Z`U_nes(_X^tmwF^RF|Q{_EyMtob5}S+LFi+n;~(pDZ%t2UJ|S@ND(3 z=RaE>r7TPSte696jSm%nZKmFNmWM@NgzA6B`0CVFdVVr9eeQg5y=3f}%Kwb|bIY^a zL-C(AKL7W5dpzzg%--@a>RU(ifu(3DG^8lfk9^G4pPS>)<9=Qj2_PQrJ|8+? z;VA5FnTWSdARdXj7rKi*--Od;c)bi!iZ-dLobg|ZmIi~{GWh27-Es8y%bu&U=Xbvd=`Ue5Ilaw%}RyWdus9U=i%|564gJcnjIFx$_2vdT98gMmy&nsOLhJf_ zei|5Sp?Z*_gZqUQ_gorl@!iWVzZM6<1Fm5#RyCK`^}=8icv9Gwj$cdjdZB!~9YE)i zCr*>R0d&yNt-E#m{yTo||Dh0gWzFXC{(!PVQIvz1Yn%IGyZb7KN)%{lXehm0*JNNh zm68_Sh_|J`Ya{;y3io?~{nyT8n*WCRcWnL*13BO9zA+f5QYizH{Ze$xmMvLWk|gkq z&}P}%+{g3my$kAo*8Sfa*I$Em7G5GIGu_-OHl!H*cN_MDAHWH64+S8cIA?@G!_e$A zu>Cb0WS&Wu8S@&p9HT+be`8Sa3}($2C(JZyxzpN&9&ouQoXFM>BRGqG;^)_1i#*^5n4014HeT}j6PsjPo{1*As z=d<y!ylH=I$9hT$ zZv&u$Dh`jYnd}Qwo9w)%7J#$mB=yuwyshkwmR_Oa(Cp=7MY01NnSFC6|8m(!^2}{b z7DaKxkZ}Cf*iNlYf#cJC>%ZC=|1+;8sl~&;z-4ROIkzqP%#!;v02#^K0w0?)^Z{kx z34qpjT3^-{D;+yrtB6n#_}d;0YMXS7&d}@mwqq}S3M4vFMciILvfT)i+%p>P8r>5# zuwM?JULHHN+Q39#)>nU@Stg?TCRGY|Z(WV3?xDyvAJWSdoT7Trsn35z-5eefRa&za zdU~b}gMUNMUoWhwZlSzxjTbrr&ip`WjxD{280&WDdHhr4rhd&WOB;CXu`_%KxsF6jlway={-`T{5b5nyO_sayLu%DSLf literal 0 HcmV?d00001 diff --git a/extras/assets/icons/Icons_Modules.psd b/extras/assets/icons/Icons_Modules.psd index af9b9abaa08e5e3549206c354d2572cbbd0160cb..927c497ecd1f6c8ba04ce04e319a4013e9bd953b 100644 GIT binary patch delta 7080 zcmd@YSyU8P_PwIJS!9(>N2B0!G$+9{-E87GQQQ-^QD>5z9FM^TL!!h%W|YY!t%#D0 z0%EHbvW%i&Xb1{4T53#0f^nCi1BNJ(MigjQAZ!Bt=Dt@|&9pI&@tCjaI=AZX@7AsR zmfQE5Q}CJ1sd%%WYm`G+#IzX-1){%wX`?dIUUWz+^K=gwtgUlTs{3ff(p09{%9Wgq zFmSXsR5N;fL{Laj#H8S0b*S;MQ=xM3|Ip$yj(Uc;2M4HahT$Vmdd@Ho@-S||#p=PW|y~mVUdcP@sJrPq3U|bc#@H}XYog%mmKgtBo zRKV%sMn&T!C`O3-;Z_-EzA}*u)5Lw}ysmoqs4dGEoeO_y&a`1$c909L^R`SI{_K=1 zVVACb-fkGS<)bs1Gk3Vm(?`T@%>>DdqzV}izNWw~A>r!LesU7|rb6G1Ld*a!ca?E* zWQxM!wM2xgmXRI&URQive>5sVHNW&|-n5%~|7Jhq(xo%7ac0WOq52Vw)Ds>S$j;nv|y>%ARD@9(E$5kEy;>1R)NFs4?8NxT+`=gJ>- z#YOskm&IYfoqQY23HVBC>90!k#JW7 zhu(wX9?I|3Vebc=QS~QsW?WIzU&&JO{sL<%gzL{suee(8U*}s`KVKrZ^5r8Swebye zB*sBwd83?;O53#c+?3MRVas27TjcBdv2?oKnJW6yg&61GohRY5Y;Dq;B%2jR|K=5v z&Zo>?XgSQW_;p_!SGBz=$!cuvg$~KShuJLX94G3n8Dq@4FO|ZYKik?=b&ED@;*60! zizR)%m;jR{Tw>&H^T(0=ID4$*u@Ba4JA{w0Xx3b`@rDoSi=);u$yzTe88Hy1kPpBZ zfM=0{5SU~cfFo`eoo#T3`OD4X-9aPN`H5N`y8`&`Z@B>niw zK6=tPlHcZnHKB8(g zVKJp^V_6!7E)L(Z6ID}%yDBVI!rCGx=0WTv%y+<2fvvsBr@3N3;e;cOm8?317hSOQ z{Sx{MAeKH>yO_MYh+zNK|26TmANiZNE;}}v5u9wFkp~uw{Eo%Jy;HT z-B#P-vizmt*0KEf2{VRR?J9&%hT=D+@!AE);qrKiUNo0}`j;k)s~JCSgybbrBY;GT zF>#I%`mCJE#N`jzy#1VPvr+s6p3lo8CuR$g0dmBN-%xQa|Je(&zDd-dq?U7-Xc1Ba z@oX{D^}eG139Y2RK9nW$ogg_w>;EKF1f zuoCaG*q@mwzuksy!pccjhkI=uelkUNc#fG(m?~#~gIU-%P5yjIY|nxHN&0#fFH2@g zFR(cxtelQt65~&rsV{Hz7QUZ>LnTHGe{3~;jrLixO^Rr}Atop|M-NV%ehU zut?a+yQ20{yP|OMUA)2Wft`$QhEKGUJ#1SHd{Srn6*c#Twl#Q%xHl%(+J3$FlBATT zaAJWE|3ID)DMM)1y@d}x#4m~oOc^Uy`M!;^(d$C!CV94|tQNA8agDf#rEC{AZkEeE z#l(Y}pP<}=bHjCxs1I_IE=TFv2YAlX)faG)_Cj9B6;awjx>P;L&Z+r!pEg7g#;P8I z9NGaz&Rqlz=%AQ8V4e))0JHBv7K8?Xo^v~*wuI;$+W=F*KIMqpsnian#~G&RCdjt~ z*}>%ur~{xFaVkJvJD7!i59l5daeN){M!=PX;9a1@bs~i?>BJatXTT95oI^L^@>F&f zC1*!BFS3O5{Ttu@9h}3ON#@!p?1g6XgCc@XR5sRN5=BYbUq^ z^C1@ET;=biQaUQ>C}E9XM^s9(G~3`+&9} zg;%FeL_EPC0)|gFdm>j0jM;>^=6WSUd-iN6-Inf-Bl`~@KKxbYIYNr_40+(6kZYgs z%g-;!I1jALmGzWE$fbW*R#s-50oL7{9U{xp+11sMR>rh$h^&%hrKNdW%XL512+7AEW1g{d9sTyfmdc>kh-6M-&wNP@EsxbmzdU#Hu`Az zsvv_tnSY7^YTlUz58YX6WBpZ~|ACORwN{!Um%(}Cw^AlWN&c?u5N8?by5HH|bgdOW z8p%qh8ECmiSuH1W=-0`~-H{JTlzs0W0%##o3JP?Ci{J0e>1;$;p%qq@Hsi?eIQBlEas*xob z{Pxz=_ZO}K4L_--0NZce%S!58Z%JkDPT$k~U`gfZXic@zn#yA?NYU8?S19%iH3c7= z{`Q?AA}yW^6jB#+O%D94uX6GB+EGD4!J$FhV>n+Kr_Nuo690(dMp}v7 z815M>Q3ixcwC82FZ#l~1r{xg>y|wVE1u8(GDSbO*f#0mZ zB{=uqyF#(f4xnm@4#d>vPA$0smhEt+zSjsg*wP9|bc-4M(*RI+HDD}&D>TZxZ8Yq9 zivDCFxV7s(j8G5J;ycal1l_7<;r6tdEw>crdtE)P^`x5M&JOnIXcsB^@E}+u$^Ci) zXG4pb_uqym{8CzIf_`{9skvoM%}>_UG||-HP7AaRG&xU}n>)R^X{EX8w$07$$H|RP zry{bDx@8k;khL~Wr*z6yxg zEZ0yWYnBSooNK`&==FBa z$gY902z0y9IGY*4Nxd_r6xQ~cQp(;A+N^_D{CN{?rZ4`pHrfnt_uq}Q8Q%NBR@#he sdYfr8s;2EU#7Z$c+D|u9gf`R^fsWc2T52=8%$jO5I);wHN=2{#07`OaV*mgE delta 3590 zcmcgvdr(x@8UM~*Sx^Cybpb(Ok%ee*aWCvHy95;(QL$*$5J@K15rs8obh<|Cq%lNL zdC6<>qBq7yC2gZZ+LT=FNrN*{rplO&6;jy`D!oYdc<_r%dF;aHZXJePfr_+Lhy)2y(x`#*{x|a z(`;F@v$Jh1>&%)t%W1QwI$e$|)}A$sUs%sX3YSK`! zo{%{9W~z{woj`)3 zDxGzihL!4kW?ZBY{mPip`rN}n&g|z4PR1Fy*q*~&zk7>*$u~>$t_29CtJV_!lY9~; z?5+D{JXcV2Sn|A>IZcSFT}y2kEA2%k*gp&Kh^Izo>d0d(;G+kJ( zj(2lC-B-EqFUl2OEIlo(yHrRrrJP$>kQTXcO>Q9ox#n53G8b2?Gqb6Vl){1(m&ILV zE3&X`ktTWQA|Yjs*(MUEA$Loj~ZOE$BR3JyqtLMXty3oPJqLTKTUF>`SN%_ zS(YuYaZMK{2|XQC6lu2X72>aNP{;q|dy-Lf;l^Ucu+^U{U1bzZH>axe>9US#w-p_? zz9CPWI@RgN$TkT%U2|3Tb%DQ=r;N9S3q9S1>Ue?7+tj;IomUEHeP1(jd)tl*tv|e^ z+JBJK_w*_0%PicwOJ?D{{tU%kwo>?RK;7)JMuB~xrY}1!r*9jYrSQr@Syhynt{PlO zh~`Sp`|T_yGq{jWzn#ZPmt4NwBbDSo*At~?`3G_=-xf$l(Y5~Mnogm8OY=t)b(s~x zGKV5(fl{DiHWo1Q9xEA5rv{VPm7t2v^uSo6He5l6Dg4?ra)Q5TP)k;HO6}9F7lD{Y+w0 zy>0YlmZm^mmz=m~mYTT!8JWF1TkE!d6}>Z?c$Cok{j#@g?y&b?^kR;d%d4kxztGBh zr_0oqTuol@MmjWK+Z*ozx$LxsYFY1h($<9WLwWczbS%^|HW)F9k!CI?X-WePIkfl% ztwh5%If!CVmg;V!*-OZJ!d2FV(e`{|Fw5`M!CrcO6H(voLm51#xXO=yTdjRa5lDDj zd!!EC;z%E?k&qiNCn4!u~bJ%!EE@%Qj!AMRCyTXb}vS9=Rvo})oK$Ytf! zZCOWsjaq`1K^|!)x^@?7NvD6gKn!jYL{H6Ngb8%sTg;UJUgu$claP{Z#VyOPS>(6Vj6Hsn!(RL&BxllkHXqn<6WxxcU7aCYq0PGwFKOu)@tG zY2!vWW75WLZYEY6UvV=mZ7*j+{0Q*hR5LN!>+!^&F%_{j3_^z(f$&4<5&nn(#7M*_ z#ArkyA_x(T7=s8wj75af*c!u)6s_D7-^Plh&kTrh2qPj45srvJj7LNwq7V}h(TEsC zEW(6{Lrmn8K8ruWA8RJ7`H(%tBi(+*+mFXP`O621J~a@6AqWf*hA==lL_(B&MME@x zj>jt!BESga@E(HPUc@7+z-{PY$^Kl(gAfNVYv($xXPoIB(uIWZk@ z1DNHX`1(br^UrxV;1)0udwf2TbZ)%~w}E(k1ETJ$FV379K-22m&;?|MuTO;ce+0%{ z)j24VFQ4s#I{>fW6Jfy+kcfi=BIMnHZv4;Vu1KzhJ^+wR+q$6_2tTo%ghuy(4~V`M zGy9_8jX@FSAt|F@1aB|+_(km`ECULCa2H@bmP*B}F@GBp;R9rCKtuXnxCfAUUj+Ri zfaIAw1YqsMYGdx9i{H~u#>Yt`IEM6V7$17-fyjKiNcSUv5#ziv?TdC2{`@_yOv)hW z=KI8Rm~taVW!%Lk;azO1dH{b&pA+|Eb&6BBPwxIO3gV0E2j-Bt2(voS!}UThKlLBP zIHgBgezUadKF}>Hf#2hBXSXENuW_`m4~XL=O6SYJ16{laBj$FY*s!Z#6wiuhFjduU sX(!@#UH9R>RE6Gx?|~UpbhHm=t@$^k{hPcP_itWYhrFM-r=oKG2TZ!=xc~qF diff --git a/extras/assets/icons/png/Icon_Module/Icons_Module_Sitting_ca.png b/extras/assets/icons/png/Icon_Module/Icons_Module_Sitting_ca.png new file mode 100644 index 0000000000000000000000000000000000000000..c19c3ca27657368996da209355c59466663041c0 GIT binary patch literal 4187 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 literal 0 HcmV?d00001 From 3a4cd99001d6adb6b1925b3910c443d1e588a135 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 9 Jun 2015 18:33:07 +0200 Subject: [PATCH 026/118] Changed setPos to setPosASL for reliability, Fixed module icon name --- addons/sitting/UI/Icons_Module_Sitting_ca.paa | Bin 5625 -> 0 bytes addons/sitting/functions/fnc_sit.sqf | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 addons/sitting/UI/Icons_Module_Sitting_ca.paa diff --git a/addons/sitting/UI/Icons_Module_Sitting_ca.paa b/addons/sitting/UI/Icons_Module_Sitting_ca.paa deleted file mode 100644 index 1d4bbccb700b9270cb115a1c7b48ce3202c14002..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5625 zcmd^De`p(Z6n~c{w%OV=x^@oZ)(krtV@h$s4OYl?WBq|Y8gSQjsI2RTFlE;Lv5Lsd zIfXe88@nGWv~~zLa4a$gje;9JnN~#&!$0OmU0a9H6_I5Pu^mnOeDAJzxm;~C*G`7} zCI|Pq@B97U_kF*2F084k+Ptx*p~?vWlarIrYPhlLDaJ^HaZS~e)rYjv>(X=w=0hHW=qRVZX&<;F{5SDD+fU-; z^4k3teGnYx`=Zo{W<+7f^2`L%g@#)wr69T{{Rj@{SABU`g7rF`G#5t^BD3F z>g-q(Y0lf?Z`U_nes(_X^tmwF^RF|Q{_EyMtob5}S+LFi+n;~(pDZ%t2UJ|S@ND(3 z=RaE>r7TPSte696jSm%nZKmFNmWM@NgzA6B`0CVFdVVr9eeQg5y=3f}%Kwb|bIY^a zL-C(AKL7W5dpzzg%--@a>RU(ifu(3DG^8lfk9^G4pPS>)<9=Qj2_PQrJ|8+? z;VA5FnTWSdARdXj7rKi*--Od;c)bi!iZ-dLobg|ZmIi~{GWh27-Es8y%bu&U=Xbvd=`Ue5Ilaw%}RyWdus9U=i%|564gJcnjIFx$_2vdT98gMmy&nsOLhJf_ zei|5Sp?Z*_gZqUQ_gorl@!iWVzZM6<1Fm5#RyCK`^}=8icv9Gwj$cdjdZB!~9YE)i zCr*>R0d&yNt-E#m{yTo||Dh0gWzFXC{(!PVQIvz1Yn%IGyZb7KN)%{lXehm0*JNNh zm68_Sh_|J`Ya{;y3io?~{nyT8n*WCRcWnL*13BO9zA+f5QYizH{Ze$xmMvLWk|gkq z&}P}%+{g3my$kAo*8Sfa*I$Em7G5GIGu_-OHl!H*cN_MDAHWH64+S8cIA?@G!_e$A zu>Cb0WS&Wu8S@&p9HT+be`8Sa3}($2C(JZyxzpN&9&ouQoXFM>BRGqG;^)_1i#*^5n4014HeT}j6PsjPo{1*As z=d<y!ylH=I$9hT$ zZv&u$Dh`jYnd}Qwo9w)%7J#$mB=yuwyshkwmR_Oa(Cp=7MY01NnSFC6|8m(!^2}{b z7DaKxkZ}Cf*iNlYf#cJC>%ZC=|1+;8sl~&;z-4ROIkzqP%#!;v02#^K0w0?)^Z{kx z34qpjT3^-{D;+yrtB6n#_}d;0YMXS7&d}@mwqq}S3M4vFMciILvfT)i+%p>P8r>5# zuwM?JULHHN+Q39#)>nU@Stg?TCRGY|Z(WV3?xDyvAJWSdoT7Trsn35z-5eefRa&za zdU~b}gMUNMUoWhwZlSzxjTbrr&ip`WjxD{280&WDdHhr4rhd&WOB;CXu`_%KxsF6jlway={-`T{5b5nyO_sayLu%DSLf diff --git a/addons/sitting/functions/fnc_sit.sqf b/addons/sitting/functions/fnc_sit.sqf index 32e1c45b40..4121813b41 100644 --- a/addons/sitting/functions/fnc_sit.sqf +++ b/addons/sitting/functions/fnc_sit.sqf @@ -34,7 +34,7 @@ _sitPosition = getArray (configFile >> "CfgVehicles" >> typeOf _seat >> QGVAR(si // Set direction and position _player setDir ((getDir _seat) + _sitDirection); -_player setPos (_seat modelToWorld _sitPosition); +_player setPosASL (_seat modelToWorld _sitPosition) call EFUNC(common,positionToASL); // Set variables _player setVariable [QGVAR(isSitting), true]; From 5bfa2425bb01167a3258d4ecff629d97b921d9e0 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 9 Jun 2015 18:33:39 +0200 Subject: [PATCH 027/118] Git hates me --- addons/sitting/UI/Icon_Module_Sitting_ca.paa | Bin 0 -> 5625 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 addons/sitting/UI/Icon_Module_Sitting_ca.paa diff --git a/addons/sitting/UI/Icon_Module_Sitting_ca.paa b/addons/sitting/UI/Icon_Module_Sitting_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..1d4bbccb700b9270cb115a1c7b48ce3202c14002 GIT binary patch literal 5625 zcmd^De`p(Z6n~c{w%OV=x^@oZ)(krtV@h$s4OYl?WBq|Y8gSQjsI2RTFlE;Lv5Lsd zIfXe88@nGWv~~zLa4a$gje;9JnN~#&!$0OmU0a9H6_I5Pu^mnOeDAJzxm;~C*G`7} zCI|Pq@B97U_kF*2F084k+Ptx*p~?vWlarIrYPhlLDaJ^HaZS~e)rYjv>(X=w=0hHW=qRVZX&<;F{5SDD+fU-; z^4k3teGnYx`=Zo{W<+7f^2`L%g@#)wr69T{{Rj@{SABU`g7rF`G#5t^BD3F z>g-q(Y0lf?Z`U_nes(_X^tmwF^RF|Q{_EyMtob5}S+LFi+n;~(pDZ%t2UJ|S@ND(3 z=RaE>r7TPSte696jSm%nZKmFNmWM@NgzA6B`0CVFdVVr9eeQg5y=3f}%Kwb|bIY^a zL-C(AKL7W5dpzzg%--@a>RU(ifu(3DG^8lfk9^G4pPS>)<9=Qj2_PQrJ|8+? z;VA5FnTWSdARdXj7rKi*--Od;c)bi!iZ-dLobg|ZmIi~{GWh27-Es8y%bu&U=Xbvd=`Ue5Ilaw%}RyWdus9U=i%|564gJcnjIFx$_2vdT98gMmy&nsOLhJf_ zei|5Sp?Z*_gZqUQ_gorl@!iWVzZM6<1Fm5#RyCK`^}=8icv9Gwj$cdjdZB!~9YE)i zCr*>R0d&yNt-E#m{yTo||Dh0gWzFXC{(!PVQIvz1Yn%IGyZb7KN)%{lXehm0*JNNh zm68_Sh_|J`Ya{;y3io?~{nyT8n*WCRcWnL*13BO9zA+f5QYizH{Ze$xmMvLWk|gkq z&}P}%+{g3my$kAo*8Sfa*I$Em7G5GIGu_-OHl!H*cN_MDAHWH64+S8cIA?@G!_e$A zu>Cb0WS&Wu8S@&p9HT+be`8Sa3}($2C(JZyxzpN&9&ouQoXFM>BRGqG;^)_1i#*^5n4014HeT}j6PsjPo{1*As z=d<y!ylH=I$9hT$ zZv&u$Dh`jYnd}Qwo9w)%7J#$mB=yuwyshkwmR_Oa(Cp=7MY01NnSFC6|8m(!^2}{b z7DaKxkZ}Cf*iNlYf#cJC>%ZC=|1+;8sl~&;z-4ROIkzqP%#!;v02#^K0w0?)^Z{kx z34qpjT3^-{D;+yrtB6n#_}d;0YMXS7&d}@mwqq}S3M4vFMciILvfT)i+%p>P8r>5# zuwM?JULHHN+Q39#)>nU@Stg?TCRGY|Z(WV3?xDyvAJWSdoT7Trsn35z-5eefRa&za zdU~b}gMUNMUoWhwZlSzxjTbrr&ip`WjxD{280&WDdHhr4rhd&WOB;CXu`_%KxsF6jlway={-`T{5b5nyO_sayLu%DSLf literal 0 HcmV?d00001 From 51e83ba0fa1046f4218c05c625cb691bd38a267b Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 9 Jun 2015 18:52:12 +0200 Subject: [PATCH 028/118] Handle kileld and disconnect while sitting --- addons/sitting/CfgEventHandlers.hpp | 9 ++++++- addons/sitting/XEH_clientInit.sqf | 4 ++++ addons/sitting/XEH_preInit.sqf | 1 + .../sitting/functions/fnc_handleInterrupt.sqf | 24 +++++++++++++++++++ 4 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 addons/sitting/functions/fnc_handleInterrupt.sqf diff --git a/addons/sitting/CfgEventHandlers.hpp b/addons/sitting/CfgEventHandlers.hpp index c19217fb29..1e804e8cc9 100644 --- a/addons/sitting/CfgEventHandlers.hpp +++ b/addons/sitting/CfgEventHandlers.hpp @@ -4,9 +4,16 @@ class Extended_PreInit_EventHandlers { }; }; - class Extended_PostInit_EventHandlers { class ADDON { clientInit = QUOTE(call COMPILE_FILE(XEH_clientInit)); }; }; + +class Extended_Killed_EventHandlers { + class CAManBase { + class ADDON { + killed = QUOTE(_this call DFUNC(handleInterrupt)); + }; + }; +}; diff --git a/addons/sitting/XEH_clientInit.sqf b/addons/sitting/XEH_clientInit.sqf index bbe81b27c7..eea6e7108c 100644 --- a/addons/sitting/XEH_clientInit.sqf +++ b/addons/sitting/XEH_clientInit.sqf @@ -1,3 +1,7 @@ #include "script_component.hpp" +// Add interaction menu exception ["isNotSitting", {!((_this select 0) getVariable [QGVAR(isSitting), false])}] call EFUNC(common,addCanInteractWithCondition); + +// Handle falling unconscious +["medical_onUnconscious", {_this call DFUNC(handleInterrupt)}] call EFUNC(common,addEventhandler); diff --git a/addons/sitting/XEH_preInit.sqf b/addons/sitting/XEH_preInit.sqf index ced588299a..86912ada6b 100644 --- a/addons/sitting/XEH_preInit.sqf +++ b/addons/sitting/XEH_preInit.sqf @@ -5,6 +5,7 @@ ADDON = false; PREP(canSit); PREP(canStand); PREP(getRandomAnimation); +PREP(handleInterrupt); PREP(moduleInit); PREP(sit); PREP(stand); diff --git a/addons/sitting/functions/fnc_handleInterrupt.sqf b/addons/sitting/functions/fnc_handleInterrupt.sqf new file mode 100644 index 0000000000..81ed96d005 --- /dev/null +++ b/addons/sitting/functions/fnc_handleInterrupt.sqf @@ -0,0 +1,24 @@ +/* + * Author: Jonpas + * Handles interruptions of sitting, like killed or unconsciousness. + * + * Arguments: + * 0: Player + * + * Return Value: + * None + * + * Example: + * [player] call ace_sitting_fnc_handleInterrupt; + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_1(_player); + +if (_player getVariable [QGVAR(isSitting), false]) then { + _player setVariable [QGVAR(isSitting), nil]; + GVAR(seat) setVariable [QGVAR(seatOccupied), nil, true]; + QGVAR(seat) = nil; +}; From 46020259fdd5ca369dc3b70db34064fce9e4a845 Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 11 Jun 2015 16:48:08 +0200 Subject: [PATCH 029/118] Fixed typo --- addons/sitting/functions/fnc_handleInterrupt.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/sitting/functions/fnc_handleInterrupt.sqf b/addons/sitting/functions/fnc_handleInterrupt.sqf index 81ed96d005..96a8da42df 100644 --- a/addons/sitting/functions/fnc_handleInterrupt.sqf +++ b/addons/sitting/functions/fnc_handleInterrupt.sqf @@ -20,5 +20,5 @@ PARAMS_1(_player); if (_player getVariable [QGVAR(isSitting), false]) then { _player setVariable [QGVAR(isSitting), nil]; GVAR(seat) setVariable [QGVAR(seatOccupied), nil, true]; - QGVAR(seat) = nil; + GVAR(seat) = nil; }; From 0a71bd693103510636c6bf9795a2ff99564b9bb8 Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 11 Jun 2015 19:46:16 +0200 Subject: [PATCH 030/118] Restricted sitting rotation --- addons/sitting/CfgVehicles.hpp | 10 +++++++- addons/sitting/functions/fnc_sit.sqf | 34 ++++++++++++++++++++++++---- 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/addons/sitting/CfgVehicles.hpp b/addons/sitting/CfgVehicles.hpp index cd7ec735e4..c915750d02 100644 --- a/addons/sitting/CfgVehicles.hpp +++ b/addons/sitting/CfgVehicles.hpp @@ -60,6 +60,7 @@ class CfgVehicles { GVAR(canSit) = 1; GVAR(sitDirection) = 180; GVAR(sitPosition[]) = {0, -0.1, -0.45}; + GVAR(sitRotation) = 10; }; // Camping Chair class Land_CampingChair_V2_F: ThingX { @@ -68,6 +69,7 @@ class CfgVehicles { GVAR(canSit) = 1; GVAR(sitDirection) = 180; GVAR(sitPosition[]) = {0, -0.1, -0.45}; + GVAR(sitRotation) = 45; }; // Chair (Plastic) class Land_ChairPlastic_F: ThingX { @@ -76,6 +78,7 @@ class CfgVehicles { GVAR(canSit) = 1; GVAR(sitDirection) = 90; GVAR(sitPosition[]) = {0, 0, -0.5}; + GVAR(sitRotation) = 5; }; // Chair (Wooden) class Land_ChairWood_F: ThingX { @@ -83,7 +86,8 @@ class CfgVehicles { MACRO_SEAT_ACTION GVAR(canSit) = 1; GVAR(sitDirection) = 180; - GVAR(sitPosition[]) = {0, 0, 0}; + GVAR(sitPosition[]) = {0, -0.05, 0}; + GVAR(sitRotation) = 75; }; // Office Chair class Land_OfficeChair_01_F: ThingX { @@ -92,6 +96,7 @@ class CfgVehicles { GVAR(canSit) = 1; GVAR(sitDirection) = 180; GVAR(sitPosition[]) = {0, 0, -0.6}; + GVAR(sitRotation) = 15; }; // Rattan Chair class Land_RattanChair_01_F: ThingX { @@ -100,6 +105,7 @@ class CfgVehicles { GVAR(canSit) = 1; GVAR(sitDirection) = 180; GVAR(sitPosition[]) = {0, -0.1, -1}; // Z must be -1 due to chair's geometry (magic floating seat point) + GVAR(sitRotation) = 2; }; // Field Toilet class Land_FieldToilet_F: ThingX { @@ -108,6 +114,7 @@ class CfgVehicles { GVAR(canSit) = 1; GVAR(sitDirection) = 180; GVAR(sitPosition[]) = {0, 0.75, -1.1}; + GVAR(sitRotation) = 10; }; // Toiletbox class Land_ToiletBox_F: ThingX { @@ -116,5 +123,6 @@ class CfgVehicles { GVAR(canSit) = 1; GVAR(sitDirection) = 180; GVAR(sitPosition[]) = {0, 0.75, -1.1}; + GVAR(sitRotation) = 10; }; }; diff --git a/addons/sitting/functions/fnc_sit.sqf b/addons/sitting/functions/fnc_sit.sqf index 4121813b41..1b02ce8e19 100644 --- a/addons/sitting/functions/fnc_sit.sqf +++ b/addons/sitting/functions/fnc_sit.sqf @@ -16,6 +16,8 @@ */ #include "script_component.hpp" +private ["_configFile", "_sitDirection", "_sitPosition", "_seatRotation", "_sitDirectionVisual"]; + PARAMS_2(_seat,_player); // Set global variable for standing up @@ -25,17 +27,41 @@ GVAR(seat) = _seat; _player switchMove "amovpknlmstpsraswrfldnon"; // Read config -private ["_sitDirection", "_sitPosition"]; -_sitDirection = getNumber (configFile >> "CfgVehicles" >> typeOf _seat >> QGVAR(sitDirection)); -_sitPosition = getArray (configFile >> "CfgVehicles" >> typeOf _seat >> QGVAR(sitPosition)); +_configFile = configFile >> "CfgVehicles" >> typeOf _seat; +_sitDirection = (getDir _seat) + getNumber (_configFile >> QGVAR(sitDirection)); +_sitPosition = getArray (_configFile >> QGVAR(sitPosition)); +_sitRotation = if (isNumber (_configFile >> QGVAR(sitRotation))) then {getNumber (_configFile >> QGVAR(sitRotation))} else {45}; // Apply default if config entry not present // Get random animation and perform it (before moving player to ensure correct placement) [_player, call FUNC(getRandomAnimation), 2] call EFUNC(common,doAnimation); // Set direction and position -_player setDir ((getDir _seat) + _sitDirection); +_player setDir _sitDirection; _player setPosASL (_seat modelToWorld _sitPosition) call EFUNC(common,positionToASL); // Set variables _player setVariable [QGVAR(isSitting), true]; _seat setVariable [QGVAR(seatOccupied), true, true]; // To prevent multiple people sitting on one seat + +// Add rotation control PFH +_sitDirectionVisual = getDirVisual _player; // Needed for precision and issues with using above directly +[{ + private ["_args", "_player", "_sitDirectionVisual", "_sitRotation", "_currentDirection"]; + _args = _this select 0; + _player = _args select 0; + _sitDirectionVisual = _args select 1; + _sitRotation = _args select 2; + + // Remove PFH if not sitting anymore + if !(_player getVariable [QGVAR(isSitting), false]) exitWith { + [_this select 1] call cba_fnc_removePerFrameHandler; + }; + + _currentDirection = getDir _player; + if (_currentDirection > _sitDirectionVisual + _sitRotation) exitWith { + _player setDir (_sitDirectionVisual + _sitRotation); + }; + if (_currentDirection < _sitDirectionVisual - _sitRotation) exitWith { + _player setDir (_sitDirectionVisual - _sitRotation); + }; +}, 0, [_player, _sitDirectionVisual, _sitRotation]] call CBA_fnc_addPerFrameHandler; From 491e2a442995ef70781127357f00037e60b9723d Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 11 Jun 2015 20:01:38 +0200 Subject: [PATCH 031/118] Handle handcuffing --- addons/sitting/XEH_clientInit.sqf | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/addons/sitting/XEH_clientInit.sqf b/addons/sitting/XEH_clientInit.sqf index eea6e7108c..7c0bb9edc1 100644 --- a/addons/sitting/XEH_clientInit.sqf +++ b/addons/sitting/XEH_clientInit.sqf @@ -3,5 +3,7 @@ // Add interaction menu exception ["isNotSitting", {!((_this select 0) getVariable [QGVAR(isSitting), false])}] call EFUNC(common,addCanInteractWithCondition); -// Handle falling unconscious +// Handle interruptions ["medical_onUnconscious", {_this call DFUNC(handleInterrupt)}] call EFUNC(common,addEventhandler); +["SetHandcuffed", {_this call DFUNC(handleInterrupt)}] call EFUNC(common,addEventhandler); +["SetSurrendered", {_this call DFUNC(handleInterrupt)}] call EFUNC(common,addEventhandler); From b974a639470c8594bc075a024a89d3957a972fac Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 11 Jun 2015 21:51:41 +0200 Subject: [PATCH 032/118] Lowercased function, comment --- addons/sitting/functions/fnc_sit.sqf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/sitting/functions/fnc_sit.sqf b/addons/sitting/functions/fnc_sit.sqf index 1b02ce8e19..44d548dce7 100644 --- a/addons/sitting/functions/fnc_sit.sqf +++ b/addons/sitting/functions/fnc_sit.sqf @@ -57,6 +57,7 @@ _sitDirectionVisual = getDirVisual _player; // Needed for precision and issues w [_this select 1] call cba_fnc_removePerFrameHandler; }; + // Set direction to boundary when passing it _currentDirection = getDir _player; if (_currentDirection > _sitDirectionVisual + _sitRotation) exitWith { _player setDir (_sitDirectionVisual + _sitRotation); @@ -64,4 +65,4 @@ _sitDirectionVisual = getDirVisual _player; // Needed for precision and issues w if (_currentDirection < _sitDirectionVisual - _sitRotation) exitWith { _player setDir (_sitDirectionVisual - _sitRotation); }; -}, 0, [_player, _sitDirectionVisual, _sitRotation]] call CBA_fnc_addPerFrameHandler; +}, 0, [_player, _sitDirectionVisual, _sitRotation]] call cba_fnc_addPerFrameHandler; From 805c0e1c68b4c0fce0a2803f641f347350ba7d97 Mon Sep 17 00:00:00 2001 From: SzwedzikPL Date: Fri, 12 Jun 2015 19:48:28 +0200 Subject: [PATCH 033/118] Open action for boxes --- addons/interaction/CfgVehicles.hpp | 7 +++++++ addons/interaction/stringtable.xml | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index f83fd26344..ff736923fa 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -557,6 +557,13 @@ class CfgVehicles { selection = ""; distance = 2; condition = "true"; + class ACE_OpenBox { + displayName = CSTRING(OpenBox); + condition = QUOTE(alive _target); + statement = QUOTE(_player action [ARR_2(QUOTE(QUOTE(Gear)), _target)]); + showDisabled = 0; + priority = -1; + }; }; }; class ACE_SelfActions {}; diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index a1dad1a8e0..d3b1a2bb61 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -793,6 +793,10 @@ Passeggeri Passageiros + + Open + Otwórz + Interaction System System interakcji @@ -816,5 +820,6 @@ Na zarządzanie drużyną składa się: przydział kolorów dla członków drużyny, przejmowanie dowodzenia, dołączanie/opuszczanie drużyn. Die Gruppenverwaltung erlaubt die Zuweisung von Farben für Einheiten, die Kommandierung und das Beitreten/Verlassen einer Gruppe. + From 19d3cd168ccd574bfea705e23b7c1849783881f4 Mon Sep 17 00:00:00 2001 From: SzwedzikPL Date: Fri, 12 Jun 2015 19:54:45 +0200 Subject: [PATCH 034/118] del extra space --- addons/interaction/stringtable.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index d3b1a2bb61..0c1f8e69be 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -820,6 +820,5 @@ Na zarządzanie drużyną składa się: przydział kolorów dla członków drużyny, przejmowanie dowodzenia, dołączanie/opuszczanie drużyn. Die Gruppenverwaltung erlaubt die Zuweisung von Farben für Einheiten, die Kommandierung und das Beitreten/Verlassen einer Gruppe. - From d448c9e7c0f2509c672e5aa7532e9a646df916b6 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 13 Jun 2015 12:37:41 +0200 Subject: [PATCH 035/118] Fixed select new injuryToAdd always selects first It should not always take the first injury in the list. That would with the current configuration almost always be the same injury as in `highestSpot`. This might need to be expanded with something that prefers higher damage types. --- extensions/medical/handleDamage.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/extensions/medical/handleDamage.cpp b/extensions/medical/handleDamage.cpp index b388845ac5..e36d8994b0 100644 --- a/extensions/medical/handleDamage.cpp +++ b/extensions/medical/handleDamage.cpp @@ -96,7 +96,8 @@ namespace ace { } else { - injuryToAdd = information.at(0); + int indexNewInjuryToAdd = rand() % information.size(); + injuryToAdd = information.at(indexNewInjuryToAdd); } int bodyPartID = selection; From 09337fcd7801ebb07a4167cfefc8f34260428ab2 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 13 Jun 2015 17:18:22 +0200 Subject: [PATCH 036/118] Added new dll build --- ace_medical.dll | Bin 223744 -> 223744 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ace_medical.dll b/ace_medical.dll index cab14d4a199a875b83aafebc053a6982a3cfef58..f053346ff10de9cf16bb58534cfd776806d0bb93 100644 GIT binary patch delta 19913 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
^nF%|FMT@{ru$0l}tAOF#;Mv$+&} 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 BtSbNj delta 19921 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 From 254b386805a1aa318f5db44e29747cab14941a6b Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 13 Jun 2015 21:46:55 +0200 Subject: [PATCH 037/118] Allowed Kestrel4500 Inside and Sitting --- addons/kestrel4500/CfgVehicles.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/kestrel4500/CfgVehicles.hpp b/addons/kestrel4500/CfgVehicles.hpp index d7dfbc6c72..776bd8dcf5 100644 --- a/addons/kestrel4500/CfgVehicles.hpp +++ b/addons/kestrel4500/CfgVehicles.hpp @@ -10,7 +10,7 @@ class CfgVehicles { showDisabled = 0; priority = 0.1; icon = QUOTE(PATHTOF(UI\Kestrel4500_Icon.paa)); - exceptions[] = {"notOnMap"}; + exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"}; class GVAR(show) { displayName = CSTRING(ShowKestrel); condition = QUOTE(call FUNC(canShow) && !GVAR(Overlay)); From 1eeca28a3d042c22dad4dd6079c3c8392b31ddad Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 13 Jun 2015 22:08:13 +0200 Subject: [PATCH 038/118] Enabled DAGR, Kestrel4500, Laser switching, Mag Repack, Markers, MicroDAGR, NVG Adjusting and Check Ammo while Sitting --- addons/atragmx/initKeybinds.sqf | 4 ++-- addons/dagr/CfgVehicles.hpp | 4 ++-- addons/dagr/initKeybinds.sqf | 4 ++-- addons/kestrel4500/initKeybinds.sqf | 4 ++-- addons/laserpointer/initKeybinds.sqf | 2 +- addons/magazinerepack/functions/fnc_magazineRepackFinish.sqf | 2 +- .../magazinerepack/functions/fnc_startRepackingMagazine.sqf | 4 ++-- addons/markers/functions/fnc_initInsertMarker.sqf | 2 +- addons/microdagr/XEH_clientInit.sqf | 2 +- addons/microdagr/functions/fnc_canShow.sqf | 4 ++-- addons/nightvision/XEH_postInitClient.sqf | 4 ++-- addons/reload/XEH_postInit.sqf | 2 +- 12 files changed, 19 insertions(+), 19 deletions(-) diff --git a/addons/atragmx/initKeybinds.sqf b/addons/atragmx/initKeybinds.sqf index c2ab01d217..51d2338292 100644 --- a/addons/atragmx/initKeybinds.sqf +++ b/addons/atragmx/initKeybinds.sqf @@ -1,7 +1,7 @@ ["ACE3 Equipment", QGVAR(ATragMXDialogKey), localize LSTRING(ATragMXDialogKey), { // Conditions: canInteract - if !([ACE_player, objNull, ["notOnMap", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, objNull, ["notOnMap", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false}; if (GVAR(active)) exitWith { closeDialog 0; false @@ -21,7 +21,7 @@ _conditonCode = { }; _toggleCode = { // Conditions: canInteract - if !([ACE_player, objNull, ["notOnMap", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {}; + if !([ACE_player, objNull, ["notOnMap", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {}; if (GVAR(active)) exitWith { closeDialog 0; }; diff --git a/addons/dagr/CfgVehicles.hpp b/addons/dagr/CfgVehicles.hpp index 96b81c15b6..f26d8841ae 100644 --- a/addons/dagr/CfgVehicles.hpp +++ b/addons/dagr/CfgVehicles.hpp @@ -10,7 +10,7 @@ class CfgVehicles { showDisabled = 0; priority = 0.1; icon = QUOTE(PATHTOF(UI\DAGR_Icon.paa)); - exceptions[] = {"isNotInside"}; + exceptions[] = {"isNotInside", "isNotSitting"}; class GVAR(toggle) { displayName = "Toggle DAGR"; condition = QUOTE([ARR_2(_player,'ACE_DAGR')] call EFUNC(common,hasItem)); @@ -18,7 +18,7 @@ class CfgVehicles { showDisabled = 0; priority = 0.2; icon = QUOTE(PATHTOF(UI\DAGR_Icon.paa)); - exceptions[] = {"notOnMap", "isNotInside"}; + exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"}; }; }; }; diff --git a/addons/dagr/initKeybinds.sqf b/addons/dagr/initKeybinds.sqf index 3f89842cfc..832e7cf411 100644 --- a/addons/dagr/initKeybinds.sqf +++ b/addons/dagr/initKeybinds.sqf @@ -2,7 +2,7 @@ ["ACE3 Equipment", QGVAR(MenuKey), "Configure DAGR", { // Conditions: canInteract - if !([ACE_player, objNull, ["notOnMap", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, objNull, ["notOnMap", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false}; if !([ACE_player, "ACE_DAGR"] call EFUNC(common,hasItem)) exitWith {false}; // Statement @@ -19,7 +19,7 @@ ["ACE3 Equipment", QGVAR(ToggleKey), "Toggle DAGR", { // Conditions: canInteract - if !([ACE_player, objNull, ["notOnMap", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, objNull, ["notOnMap", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false}; if !([ACE_player, "ACE_DAGR"] call EFUNC(common,hasItem)) exitWith {false}; // Statement diff --git a/addons/kestrel4500/initKeybinds.sqf b/addons/kestrel4500/initKeybinds.sqf index 2a691bbe4f..5793d36976 100644 --- a/addons/kestrel4500/initKeybinds.sqf +++ b/addons/kestrel4500/initKeybinds.sqf @@ -1,7 +1,7 @@ ["ACE3 Equipment", QGVAR(KestrelDialogKey), localize LSTRING(KestrelDialogKey), { // Conditions: canInteract - if !([ACE_player, objNull, ["notOnMap", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, objNull, ["notOnMap", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false}; if (GVAR(Kestrel4500)) exitWith { closeDialog 0; false @@ -16,7 +16,7 @@ ["ACE3 Equipment", QGVAR(DisplayKestrelKey), localize LSTRING(DisplayKestrelKey), { // Conditions: canInteract - if !([ACE_player, objNull, ["notOnMap", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, objNull, ["notOnMap", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Statement [] call FUNC(displayKestrel); diff --git a/addons/laserpointer/initKeybinds.sqf b/addons/laserpointer/initKeybinds.sqf index da53da8a20..a4164d420e 100644 --- a/addons/laserpointer/initKeybinds.sqf +++ b/addons/laserpointer/initKeybinds.sqf @@ -3,7 +3,7 @@ ["ACE3 Weapons", QGVAR(switchLaserLightMode), localize LSTRING(switchLaserLight), { // Conditions: canInteract - if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, objNull, ["isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific if !([ACE_player] call EFUNC(common,canUseWeapon)) exitWith {false}; diff --git a/addons/magazinerepack/functions/fnc_magazineRepackFinish.sqf b/addons/magazinerepack/functions/fnc_magazineRepackFinish.sqf index 4c985e3d36..1f5be8f72a 100644 --- a/addons/magazinerepack/functions/fnc_magazineRepackFinish.sqf +++ b/addons/magazinerepack/functions/fnc_magazineRepackFinish.sqf @@ -26,7 +26,7 @@ EXPLODE_2_PVT(_args,_magazineClassname,_lastAmmoCount); _fullMagazineCount = getNumber (configfile >> "CfgMagazines" >> _magazineClassname >> "count"); //Don't show anything if player can't interact: -if (!([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith))) exitWith {}; +if (!([ACE_player, objNull, ["isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith))) exitWith {}; _structuredOutputText = if (_errorCode == 0) then { format ["%1
", (localize LSTRING(RepackComplete))]; diff --git a/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf b/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf index a2947a0106..e0621a41be 100644 --- a/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf +++ b/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf @@ -31,7 +31,7 @@ _fullMagazineCount = getNumber (_magazineCfg >> "count"); _isBelt = (isNumber (_magazineCfg >> "ACE_isBelt")) && {(getNumber (_magazineCfg >> "ACE_isBelt")) == 1}; //Check canInteractWith: -if (!([_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith))) exitWith {}; +if (!([_player, objNull, ["isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith))) exitWith {}; [_player] call EFUNC(common,goKneeling); @@ -69,5 +69,5 @@ _totalTime, {_this call FUNC(magazineRepackFinish)}, (localize LSTRING(RepackingMagazine)), {_this call FUNC(magazineRepackProgress)}, -["isNotInside"] +["isNotInside", "isNotSitting"] ] call EFUNC(common,progressBar); diff --git a/addons/markers/functions/fnc_initInsertMarker.sqf b/addons/markers/functions/fnc_initInsertMarker.sqf index 6c5160c031..c55e07c360 100644 --- a/addons/markers/functions/fnc_initInsertMarker.sqf +++ b/addons/markers/functions/fnc_initInsertMarker.sqf @@ -25,7 +25,7 @@ PARAMS_1(_display); //Can't place markers when can't interact - if (!([ACE_player, objNull, ["notOnMap", "isNotInside"]] call EFUNC(common,canInteractWith))) exitWith { + if (!([ACE_player, objNull, ["notOnMap", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith))) exitWith { _display closeDisplay 2; //emulate "Cancel" button }; diff --git a/addons/microdagr/XEH_clientInit.sqf b/addons/microdagr/XEH_clientInit.sqf index 736403cb5f..2d33969b56 100644 --- a/addons/microdagr/XEH_clientInit.sqf +++ b/addons/microdagr/XEH_clientInit.sqf @@ -9,7 +9,7 @@ _conditonCode = { ("ACE_microDAGR" in (items ACE_player)) }; _toggleCode = { - if !([ACE_player, objNull, ["notOnMap", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {}; + if !([ACE_player, objNull, ["notOnMap", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {}; [] call FUNC(openDisplay); //toggle display mode }; _closeCode = { diff --git a/addons/microdagr/functions/fnc_canShow.sqf b/addons/microdagr/functions/fnc_canShow.sqf index b251a65c10..9e54f927e0 100644 --- a/addons/microdagr/functions/fnc_canShow.sqf +++ b/addons/microdagr/functions/fnc_canShow.sqf @@ -26,11 +26,11 @@ case (DISPLAY_MODE_CLOSED): {_returnValue = true}; //Can always close case (DISPLAY_MODE_HIDDEN): {_returnValue = true}; //Can always hide case (DISPLAY_MODE_DIALOG): { - _returnValue = ("ACE_microDAGR" in (items ACE_player)) && {[ACE_player, objNull, ["notOnMap", "isNotInside"]] call EFUNC(common,canInteractWith)}; + _returnValue = ("ACE_microDAGR" in (items ACE_player)) && {[ACE_player, objNull, ["notOnMap", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)}; }; case (DISPLAY_MODE_DISPLAY): { //Can't have minimap up while zoomed in - _returnValue = (cameraview != "GUNNER") && {"ACE_microDAGR" in (items ACE_player)} && {[ACE_player, objNull, ["notOnMap", "isNotInside"]] call EFUNC(common,canInteractWith)}; + _returnValue = (cameraview != "GUNNER") && {"ACE_microDAGR" in (items ACE_player)} && {[ACE_player, objNull, ["notOnMap", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)}; }; }; diff --git a/addons/nightvision/XEH_postInitClient.sqf b/addons/nightvision/XEH_postInitClient.sqf index cc8490eb15..2839f6e5f9 100644 --- a/addons/nightvision/XEH_postInitClient.sqf +++ b/addons/nightvision/XEH_postInitClient.sqf @@ -40,7 +40,7 @@ GVAR(ppEffectMuzzleFlash) ppEffectCommit 0; ["ACE3 Equipment", QGVAR(IncreaseNVGBrightness), localize LSTRING(IncreaseNVGBrightness), { // Conditions: canInteract - if !([ACE_player, objNull, ["isNotEscorting", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, objNull, ["isNotEscorting", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific if ((currentVisionMode ACE_player != 1)) exitWith {false}; @@ -54,7 +54,7 @@ GVAR(ppEffectMuzzleFlash) ppEffectCommit 0; ["ACE3 Equipment", QGVAR(DecreaseNVGBrightness), localize LSTRING(DecreaseNVGBrightness), { // Conditions: canInteract - if !([ACE_player, objNull, ["isNotEscorting", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, objNull, ["isNotEscorting", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific if ((currentVisionMode ACE_player != 1)) exitWith {false}; diff --git a/addons/reload/XEH_postInit.sqf b/addons/reload/XEH_postInit.sqf index cd0108f740..9d5110d330 100644 --- a/addons/reload/XEH_postInit.sqf +++ b/addons/reload/XEH_postInit.sqf @@ -7,7 +7,7 @@ if !(hasInterface) exitWith {}; ["ACE3 Weapons", QGVAR(checkAmmo), localize LSTRING(checkAmmo), { // Conditions: canInteract - if !([ACE_player, (vehicle ACE_player), ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, (vehicle ACE_player), ["isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific if !([ACE_player] call EFUNC(common,canUseWeapon) || {(vehicle ACE_player) isKindOf "StaticWeapon"}) exitWith {false}; From 670d23e14cd6c254522d5f9b3291b436ef94ce70 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 13 Jun 2015 22:12:32 +0200 Subject: [PATCH 039/118] Fixed Black Cellphone Display after 1.46 --- addons/explosives/ExplosivesUI.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/explosives/ExplosivesUI.hpp b/addons/explosives/ExplosivesUI.hpp index 9eb2bad49a..6e6374af12 100644 --- a/addons/explosives/ExplosivesUI.hpp +++ b/addons/explosives/ExplosivesUI.hpp @@ -15,7 +15,7 @@ class RscEdit; class Rsc_ACE_CallScreen_Edit:RscEdit { canModify = 1; - colorBackground[] = {0,0,0,1}; + colorBackground[] = {0,0,0,0}; colorText[] = {0,0,0,1}; colorDisabled[] = {1,1,1,0.25}; colorSelection[] = { From 4c572ef298fbfce90f6f5b22f717723639acee80 Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Sat, 13 Jun 2015 13:46:24 -0700 Subject: [PATCH 040/118] Set version number to 3.1.0 --- addons/main/script_mod.hpp | 4 ++-- mod.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/main/script_mod.hpp b/addons/main/script_mod.hpp index 707ec21b63..d0834792c6 100644 --- a/addons/main/script_mod.hpp +++ b/addons/main/script_mod.hpp @@ -4,8 +4,8 @@ #define PREFIX ace #define MAJOR 3 -#define MINOR 0 -#define PATCHLVL 1 +#define MINOR 1 +#define PATCHLVL 0 #define BUILD 0 #define VERSION MAJOR.MINOR.PATCHLVL.BUILD diff --git a/mod.cpp b/mod.cpp index f9ae718fdc..fafb7b060e 100644 --- a/mod.cpp +++ b/mod.cpp @@ -1,8 +1,8 @@ -name = "Advanced Combat Environment 3.0.1"; +name = "Advanced Combat Environment 3.1.0"; picture = "logo_ace3_ca.paa"; actionName = "GitHub"; action = "https://github.com/acemod/ACE3"; -description = "ACE3 - Version 3.0.1"; +description = "ACE3 - Version 3.1.0"; logo = "logo_ace3_ca.paa"; logoOver = "logo_ace3_ca.paa"; tooltip = "ACE3"; From 8d30e3fde00071bfbb1170883fd678a0c073e509 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 13 Jun 2015 23:11:52 +0200 Subject: [PATCH 041/118] Build medical extension for new version. --- ace_medical.dll | Bin 223744 -> 223744 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ace_medical.dll b/ace_medical.dll index f053346ff10de9cf16bb58534cfd776806d0bb93..1f4f71d5caad8bb3695596d89768dd284fc5bb1d 100644 GIT binary patch delta 52 zcmZp;!rO3#cY^{W)ArfTN{sDFjEvir7@6J_a~tXz=$a&(nj592ZI>)%;$8(*v0Y7` H`IZ*|zljj8 delta 52 zcmZp;!rO3#cY^{WQ>JIL5@Wj(Bja`@My5B#+y;7vx)zoxX(<*-+a*hxxK{yHY*&+K HzU2h~r9ls; From 91b54bfc3a5ec5cdc4bde8afd0304c90c727d49d Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 13 Jun 2015 23:20:01 +0200 Subject: [PATCH 042/118] Adds a back up function in sqf to assign open wounds. --- addons/medical/XEH_preInit.sqf | 3 + .../functions/fnc_handleDamage_advanced.sqf | 2 +- .../functions/fnc_handleDamage_woundsOld.sqf | 143 ++++++++++++++++++ 3 files changed, 147 insertions(+), 1 deletion(-) create mode 100644 addons/medical/functions/fnc_handleDamage_woundsOld.sqf diff --git a/addons/medical/XEH_preInit.sqf b/addons/medical/XEH_preInit.sqf index a7fdf65c1f..a932ee5c9d 100644 --- a/addons/medical/XEH_preInit.sqf +++ b/addons/medical/XEH_preInit.sqf @@ -40,6 +40,7 @@ PREP(handleDamage_caching); PREP(handleDamage_fractures); PREP(handleDamage_internalInjuries); PREP(handleDamage_wounds); +PREP(handleDamage_woundsOld); PREP(handleUnitVitals); PREP(handleKilled); PREP(handleLocal); @@ -112,6 +113,8 @@ PREP(handleCreateLitter); GVAR(injuredUnitCollection) = []; GVAR(IVBags) = []; +DFUNC(handleDamage_assignWounds) = if ("ace_medical" callExtension "version" == "") then { DFUNC(handleDamage_woundsOld) } else { DFUNC(handleDamage_wounds)}; + call FUNC(parseConfigForInjuries); GVAR(HITPOINTS) = ["HitHead", "HitBody", "HitLeftArm", "HitRightArm", "HitLeftLeg", "HitRightLeg"]; diff --git a/addons/medical/functions/fnc_handleDamage_advanced.sqf b/addons/medical/functions/fnc_handleDamage_advanced.sqf index 35e8b900fb..9da0d065ed 100644 --- a/addons/medical/functions/fnc_handleDamage_advanced.sqf +++ b/addons/medical/functions/fnc_handleDamage_advanced.sqf @@ -42,7 +42,7 @@ _unit setvariable [QGVAR(bodyPartStatus), _damageBodyParts, true]; [_unit] call FUNC(handleDamage_advancedSetDamage); _typeOfDamage = [_typeOfProjectile] call FUNC(getTypeOfDamage); -[_unit, _selectionName, _newDamage, _typeOfProjectile, _typeOfDamage] call FUNC(handleDamage_wounds); +[_unit, _selectionName, _newDamage, _typeOfProjectile, _typeOfDamage] call FUNC(handleDamage_assignWounds); // TODO Disabled until implemented fully //if (GVAR(enableAirway)) then { diff --git a/addons/medical/functions/fnc_handleDamage_woundsOld.sqf b/addons/medical/functions/fnc_handleDamage_woundsOld.sqf new file mode 100644 index 0000000000..1034ba9cae --- /dev/null +++ b/addons/medical/functions/fnc_handleDamage_woundsOld.sqf @@ -0,0 +1,143 @@ +/* + * Author: Glowbal + * Handling of the open wounds & injuries upon the handleDamage eventhandler. + * + * Arguments: + * 0: Unit That Was Hit + * 1: Name Of Hit Selection + * 2: Amount Of Damage + * 3: Shooter or source of the damage + * 4: Type of the damage done + * + * Return Value: + * None + * + * Public: No + */ + +#include "script_component.hpp" + +private ["_unit", "_selectionName", "_damage", "_typeOfProjectile", "_typeOfDamage", "_bodyPartn", "_injuryTypeInfo", "_allInjuriesForDamageType", "_allPossibleInjuries", "_highestPossibleDamage", "_highestPossibleSpot", "_minDamage", "_openWounds", "_woundID", "_toAddInjury", "_painToAdd", "_bloodLoss", "_bodyPartNToAdd", "_classType", "_damageLevels", "_foundIndex", "_i", "_injury", "_maxDamage", "_pain", "_painLevel", "_selections", "_toAddClassID", "_woundsCreated"]; +_unit = _this select 0; +_selectionName = _this select 1; +_damage = _this select 2; +_typeOfProjectile = _this select 3; +_typeOfDamage = _this select 4; + +// Convert the selectionName to a number and ensure it is a valid selection. +_bodyPartn = [_selectionName] call FUNC(selectionNameToNumber); +if (_bodyPartn < 0) exitwith {}; + +// Get the injury type information. Format: [typeDamage thresholds, selectionSpecific, woundTypes] +_injuryTypeInfo = missionNamespace getvariable [format[QGVAR(woundInjuryType_%1), _typeOfDamage],[[], false, []]]; + +// This are the available injuries for this damage type. Format [[classtype, selections, bloodloss, minimalDamage, pain], ..] +_allInjuriesForDamageType = _injuryTypeInfo select 2; +// It appears we are dealing with an unknown type of damage. + +if (count _allInjuriesForDamageType == 0) then { + // grabbing the configuration for unknown damage type + _injuryTypeInfo = missionNamespace getvariable [QGVAR(woundInjuryType_unknown),[[], false, []]]; + _allInjuriesForDamageType = _injuryTypeInfo select 2; +}; + +// find the available injuries for this damage type and damage amount +_highestPossibleSpot = -1; +_highestPossibleDamage = -1; +_allPossibleInjuries = []; +{ + _damageLevels = _x select 4; + _minDamage = _damageLevels select 0; + _maxDamage = _damageLevels select 1; + + // Check if the damage is higher as the min damage for the specific injury + if (_damage >= _minDamage && {_damage <= _maxDamage || _maxDamage < 0}) then { + //_classType = _x select 0; + _selections = _x select 1; + //_bloodLoss = _x select 2; + //_pain = _x select 3; + + // Check if the injury can be applied to the given selection name + if ("All" in _selections || _selectionName in _selections) then { + + // Find the wound which has the highest minimal damage, so we can use this later on for adding the correct injuries + if (_minDamage > _highestPossibleDamage) then { + _highestPossibleSpot = _foreachIndex; + _highestPossibleDamage = _minDamage; + }; + + // Store the valid possible injury for the damage type, damage amount and selection + _allPossibleInjuries pushback _x; + }; + }; +}foreach _allInjuriesForDamageType; + +// No possible wounds available for this damage type or damage amount. +if (_highestPossibleSpot < 0) exitwith {}; + +// Administration for open wounds and ids +_openWounds = _unit getvariable[QGVAR(openWounds), []]; +_woundID = _unit getvariable[QGVAR(lastUniqueWoundID), 1]; + +_painToAdd = 0; +_woundsCreated = []; +{ + if (_x select 0 <= _damage) exitwith { + for "_i" from 0 to (1+ floor(random(_x select 1)-1)) /* step +1 */ do { + + // Find the injury we are going to add. Format [ classID, allowdSelections, bloodloss, painOfInjury, minimalDamage] + _toAddInjury = if (random(1) >= 0.85) then {_allInjuriesForDamageType select _highestPossibleSpot} else {_allPossibleInjuries select (floor(random (count _allPossibleInjuries)));}; + _toAddClassID = _toAddInjury select 0; + _foundIndex = -1; + + _bodyPartNToAdd = if (_injuryTypeInfo select 1) then {_bodyPartn} else {floor(random(6))}; + // If the injury type is selection part specific, we will check if one of those injury types already exists and find the spot for it.. + if ((_injuryTypeInfo select 1)) then { + { + // Check if we have an id of the given class on the given bodypart already + if (_x select 1 == _toAddClassID && {_x select 2 == _bodyPartNToAdd}) exitwith { + _foundIndex = _foreachIndex; + }; + }foreach _openWounds; + }; + + _injury = []; + if (_foundIndex < 0) then { + // Create a new injury. Format [ID, classID, bodypart, percentage treated, bloodloss rate] + _injury = [_woundID, _toAddInjury select 0, _bodyPartNToAdd, 1, _toAddInjury select 2]; + + // Since it is a new injury, we will have to add it to the open wounds array to store it + _openWounds pushback _injury; + + // New injuries will also increase the wound ID + _woundID = _woundID + 1; + } else { + // We already have one of these, so we are just going to increase the number that we have of it with a new one. + _injury = _openWounds select _foundIndex; + _injury set [3, (_injury select 3) + 1]; + }; + // Store the injury so we can process it later correctly. + _woundsCreated pushback _injury; + + // Collect the pain that is caused by this injury + _painToAdd = _painToAdd + (_toAddInjury select 3); + }; + }; +}foreach (_injuryTypeInfo select 0); // foreach damage thresholds + +_unit setvariable [QGVAR(openWounds), _openWounds, !USE_WOUND_EVENT_SYNC]; + +// Only update if new wounds have been created +if (count _woundsCreated > 0) then { +// _unit setvariable [QGVAR(lastUniqueWoundID), _woundID, true]; +}; + +if (USE_WOUND_EVENT_SYNC) then { + // Broadcast the new injuries across the net in parts. One broadcast per injury. Prevents having to broadcast one massive array of injuries. + { + // ["medical_propagateWound", [_unit, _x]] call EFUNC(common,globalEvent); + }foreach _woundsCreated; +}; + +_painLevel = _unit getvariable [QGVAR(pain), 0]; +_unit setvariable [QGVAR(pain), _painLevel + _painToAdd]; From dff99c4736c0207f2ea2f73716298054e513d643 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 13 Jun 2015 20:41:57 -0500 Subject: [PATCH 043/118] Tweak HTML Size --- addons/optionsmenu/gui/pauseMenu.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/optionsmenu/gui/pauseMenu.hpp b/addons/optionsmenu/gui/pauseMenu.hpp index 5bf4ced035..d80547f2b6 100644 --- a/addons/optionsmenu/gui/pauseMenu.hpp +++ b/addons/optionsmenu/gui/pauseMenu.hpp @@ -112,7 +112,7 @@ class RscDisplayMain: RscStandardDisplay { x = "safezoneX + safezoneW - (16 *(((safezoneW / safezoneH) min 1.2) / 40))"; y = "safezoneY + (18.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25))"; w = "15 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "8.25 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + h = "4.95 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; class controls { class ACE_NewsTitle: RscText { text = CSTRING(aceNews); @@ -144,7 +144,7 @@ class RscDisplayMain: RscStandardDisplay { x = "0.5 * (((safezoneW / safezoneH) min 1.2) / 40)"; y = "2.2 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; w = "14 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "5.75 *((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + h = "2.75 *((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; shadow = 0; class H1 { From 48d8d5e076406be1903aeb32e0c7d7faaf811798 Mon Sep 17 00:00:00 2001 From: ulteq Date: Sun, 14 Jun 2015 09:38:25 +0200 Subject: [PATCH 044/118] Empty default keys for the DAGR to prevent conflicts --- addons/dagr/initKeybinds.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/dagr/initKeybinds.sqf b/addons/dagr/initKeybinds.sqf index 3f89842cfc..ce4f3cf568 100644 --- a/addons/dagr/initKeybinds.sqf +++ b/addons/dagr/initKeybinds.sqf @@ -14,7 +14,7 @@ true }, {false}, -[199, [false, true, false]], false] call cba_fnc_addKeybind; // (CTRL + Home) +[0, [false, true, false]], false] call cba_fnc_addKeybind; // (empty default key) ["ACE3 Equipment", QGVAR(ToggleKey), "Toggle DAGR", { @@ -27,4 +27,4 @@ true }, {false}, -[199, [false, false, false]], false] call cba_fnc_addKeybind; // (Home) +[0, [false, false, false]], false] call cba_fnc_addKeybind; // (empty default key) From 906e365b94ee013be0a4c60df54161dbdb95ebeb Mon Sep 17 00:00:00 2001 From: ulteq Date: Sun, 14 Jun 2015 09:59:06 +0200 Subject: [PATCH 045/118] DAGR now supports the new multiple devices framework --- addons/dagr/XEH_postInit.sqf | 2 ++ addons/dagr/functions/fnc_menuInit.sqf | 2 +- addons/dagr/functions/fnc_toggleOverlay.sqf | 4 +++ addons/dagr/initKeybinds.sqf | 29 +++++++++++++++++++++ 4 files changed, 36 insertions(+), 1 deletion(-) diff --git a/addons/dagr/XEH_postInit.sqf b/addons/dagr/XEH_postInit.sqf index 17fa744074..39f2a7ea28 100644 --- a/addons/dagr/XEH_postInit.sqf +++ b/addons/dagr/XEH_postInit.sqf @@ -1,5 +1,7 @@ #include "script_component.hpp" +if (!hasInterface) exitWith {}; + #include "initKeybinds.sqf" GVAR(outputPFH) = -1; diff --git a/addons/dagr/functions/fnc_menuInit.sqf b/addons/dagr/functions/fnc_menuInit.sqf index ae1eed9a2b..739f41df0b 100644 --- a/addons/dagr/functions/fnc_menuInit.sqf +++ b/addons/dagr/functions/fnc_menuInit.sqf @@ -69,7 +69,7 @@ GVAR(showOutOfSpace) = false; GVAR(PWR) = false; GVAR(menuRun) = true; [{ - if (!dialog || GVAR(PWR)) exitWith { + if (!dialog || GVAR(PWR) || !GVAR(menuRun)) exitWith { closeDialog 266860; GVAR(menuRun) = false; [_this select 1] call CBA_fnc_removePerFrameHandler; diff --git a/addons/dagr/functions/fnc_toggleOverlay.sqf b/addons/dagr/functions/fnc_toggleOverlay.sqf index b05cb23fe5..1fcb87d0ff 100644 --- a/addons/dagr/functions/fnc_toggleOverlay.sqf +++ b/addons/dagr/functions/fnc_toggleOverlay.sqf @@ -17,6 +17,10 @@ GVAR(run) = !GVAR(run); if (GVAR(run)) then { + if (GVAR(menuRun) && dialog) then { + GVAR(menuRun) = false; + closeDialog 0; + }; GVAR(hidden) = true; [{ EXPLODE_1_PVT(_this select 0,_vehicle); diff --git a/addons/dagr/initKeybinds.sqf b/addons/dagr/initKeybinds.sqf index ce4f3cf568..5fbee3a3b4 100644 --- a/addons/dagr/initKeybinds.sqf +++ b/addons/dagr/initKeybinds.sqf @@ -28,3 +28,32 @@ }, {false}, [0, [false, false, false]], false] call cba_fnc_addKeybind; // (empty default key) + +//Add deviceKey entry: +private ["_conditonCode", "_toggleCode", "_closeCode"]; +_conditonCode = { + ([ACE_player, "ACE_DAGR"] call EFUNC(common,hasItem)); +}; +_toggleCode = { + // Conditions: canInteract + if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {}; + + // Statement + [] call FUNC(toggleOverlay); + if (!GVAR(run)) then { + [] call FUNC(menuInit); + }; +}; +_closeCode = { + // Statement + if (GVAR(run)) then { + //If dispaly is open, close it: + [] call FUNC(toggleOverlay); + }; + if (dialog && GVAR(menuRun)) then { + //If dialog is open, close it: + GVAR(menuRun) = false; + closeDialog 0; + }; +}; +["DAGR", QUOTE(PATHTOF(UI\DAGR_Icon.paa)), _conditonCode, _toggleCode, _closeCode] call EFUNC(common,deviceKeyRegisterNew); From 8d6b7de0ad4d9b9b1045a1a44333e9db378987b5 Mon Sep 17 00:00:00 2001 From: ulteq Date: Sun, 14 Jun 2015 10:37:21 +0200 Subject: [PATCH 046/118] Fixed model.cfg and requiredAddons --- addons/tacticalladder/config.cpp | 4 +- addons/tacticalladder/data/model.cfg | 146 +++++++++++++++++++++++++++ 2 files changed, 148 insertions(+), 2 deletions(-) diff --git a/addons/tacticalladder/config.cpp b/addons/tacticalladder/config.cpp index 2e26593c12..02740639fe 100644 --- a/addons/tacticalladder/config.cpp +++ b/addons/tacticalladder/config.cpp @@ -5,8 +5,8 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_interaction"}; - author[] = {"Rocko"}; + requiredAddons[] = {"ace_apl", "ace_interaction"}; + author[] = {"Rocko", "Ruthberg"}; VERSION_CONFIG; }; }; diff --git a/addons/tacticalladder/data/model.cfg b/addons/tacticalladder/data/model.cfg index 36b9918f2e..1fc8840d4f 100644 --- a/addons/tacticalladder/data/model.cfg +++ b/addons/tacticalladder/data/model.cfg @@ -23,6 +23,152 @@ class CfgSkeletons { "step","11" }; }; + class OFP2_ManSkeleton { + isDiscrete = 0; + skeletonInherit = ""; + skeletonBones[] = { + "Pelvis","", + "Spine","Pelvis", + "Spine1","Spine", + "Spine2","Spine1", + "Spine3","Spine2", + "Camera","Pelvis", + "weapon","Spine1", + "launcher","Spine1", + //Head skeleton in hierarchy + "neck","Spine3", + "neck1","neck", + "head","neck1", + "HeadCutScene","head", + "jaw","head", + "chin","head", + "jaw_rf","head", + "jaw_rm","head", + "jaw_rs","head", + "jaw_lf","head", + "jaw_lm","head", + "jaw_ls","head", + "ear_r","head", + "ear_l","head", + "lip_lc","head", + "lip_lwlb","head", + "lip_lwlf","head", + "lip_lwm","head", + "lip_lwrf","head", + "lip_lwrb","head", + "lip_rc","head", + "lip_uprb","head", + "lip_uprf","head", + "lip_upm","head", + "lip_uplf","head", + "lip_uplb","head", + "nose_tip","head", + "nose_r","head", + "nose_l","head", + "zig_lt","head", + "zig_lm","head", + "zig_lb","head", + "zig_rt","head", + "zig_rm","head", + "zig_rb","head", + "cheek_r","head", + "cheek_l","head", + "eyebrow_lb","head", + "eyebrow_lm","head", + "eyebrow_lf","head", + "corr","head", + "eyebrow_rf","head", + "eyebrow_rm","head", + "eyebrow_rb","head", + "eye_upr","head", + "eye_lwr","head", + "eye_upl","head", + "eye_lwl","head", + "cheek_rf","head", + "cheek_rm","head", + "cheek_rb","head", + "cheek_lf","head", + "cheek_lm","head", + "cheek_lb","head", + "forehead_l","head", + "forehead_m","head", + "forehead_r","head", + "l_eye","head", + "r_eye","head", + "l_pupila","head", + "r_pupila","head", + "neck_t","head", + "neck_b","head", + "neck_r","head", + "neck_l","head", + "tongue_b","head", + "tongue_m","head", + "tongue_f","head", + //Left upper side + "LeftShoulder","Spine3", + "LeftArm","LeftShoulder", + "LeftArmRoll","LeftArm", + "LeftForeArm","LeftArmRoll", + "LeftForeArmRoll","LeftForeArm", + "LeftHand","LeftForeArmRoll", + "LeftHandRing","LeftHand", + "LeftHandRing1","LeftHandRing", + "LeftHandRing2","LeftHandRing1", + "LeftHandRing3","LeftHandRing2", + "LeftHandPinky1","LeftHandRing", + "LeftHandPinky2","LeftHandPinky1", + "LeftHandPinky3","LeftHandPinky2", + "LeftHandMiddle1","LeftHand", + "LeftHandMiddle2","LeftHandMiddle1", + "LeftHandMiddle3","LeftHandMiddle2", + "LeftHandIndex1","LeftHand", + "LeftHandIndex2","LeftHandIndex1", + "LeftHandIndex3","LeftHandIndex2", + "LeftHandThumb1","LeftHand", + "LeftHandThumb2","LeftHandThumb1", + "LeftHandThumb3","LeftHandThumb2", + //Right upper side + "RightShoulder","Spine3", + "RightArm","RightShoulder", + "RightArmRoll","RightArm", + "RightForeArm","RightArmRoll", + "RightForeArmRoll","RightForeArm", + "RightHand","RightForeArmRoll", + "RightHandRing","RightHand", + "RightHandRing1","RightHandRing", + "RightHandRing2","RightHandRing1", + "RightHandRing3","RightHandRing2", + "RightHandPinky1","RightHandRing", + "RightHandPinky2","RightHandPinky1", + "RightHandPinky3","RightHandPinky2", + "RightHandMiddle1","RightHand", + "RightHandMiddle2","RightHandMiddle1", + "RightHandMiddle3","RightHandMiddle2", + "RightHandIndex1","RightHand", + "RightHandIndex2","RightHandIndex1", + "RightHandIndex3","RightHandIndex2", + "RightHandThumb1","RightHand", + "RightHandThumb2","RightHandThumb1", + "RightHandThumb3","RightHandThumb2", + //Left lower side + "LeftUpLeg","Pelvis", + "LeftUpLegRoll","LeftUpLeg", + "LeftLeg","LeftUpLegRoll", + "LeftLegRoll","LeftLeg", + "LeftFoot","LeftLegRoll", + "LeftToeBase","LeftFoot", + //Right lower side + "RightUpLeg","Pelvis", + "RightUpLegRoll","RightUpLeg", + "RightLeg","RightUpLegRoll", + "RightLegRoll","RightLeg", + "RightFoot","RightLegRoll", + "RightToeBase","RightFoot" + }; + // location of pivot points (local axes) for hierarchical animation + //pivotsModel="ca\Anims\Characters\Data\Skeleton\SkeletonPivots.p3d"; + pivotsModel=""; + }; }; class CfgModels { From 1c5788baab1d74c563ba8307c50df13ffefe687a Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 14 Jun 2015 03:54:50 -0500 Subject: [PATCH 047/118] Medical - change hrIncrease random min/max --- .../functions/fnc_treatmentAdvanced_medicationLocal.sqf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/medical/functions/fnc_treatmentAdvanced_medicationLocal.sqf b/addons/medical/functions/fnc_treatmentAdvanced_medicationLocal.sqf index 0457e909a6..c4ba840398 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_medicationLocal.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_medicationLocal.sqf @@ -60,12 +60,12 @@ _heartRate = _target getvariable [QGVAR(heartRate), 70]; if (alive _target) then { if (_heartRate > 0) then { if (_heartRate <= 45) then { - [_target, ((_hrIncreaseLow select 0) + random((_hrIncreaseLow select 1))), (_hrIncreaseLow select 2), _hrCallback] call FUNC(addHeartRateAdjustment); + [_target, ((_hrIncreaseLow select 0) + random ((_hrIncreaseLow select 1) - (_hrIncreaseLow select 0))), (_hrIncreaseLow select 2), _hrCallback] call FUNC(addHeartRateAdjustment); } else { if (_heartRate > 120) then { - [_target, ((_hrIncreaseHigh select 0) + random((_hrIncreaseHigh select 1))), (_hrIncreaseHigh select 2), _hrCallback] call FUNC(addHeartRateAdjustment); + [_target, ((_hrIncreaseHigh select 0) + random ((_hrIncreaseHigh select 1) - (_hrIncreaseHigh select 0))), (_hrIncreaseHigh select 2), _hrCallback] call FUNC(addHeartRateAdjustment); } else { - [_target, ((_hrIncreaseNorm select 0) + random((_hrIncreaseNorm select 1))), (_hrIncreaseNorm select 2), _hrCallback] call FUNC(addHeartRateAdjustment); + [_target, ((_hrIncreaseNorm select 0) + random ((_hrIncreaseNorm select 1) - (_hrIncreaseNorm select 0))), (_hrIncreaseNorm select 2), _hrCallback] call FUNC(addHeartRateAdjustment); }; }; }; From af2e2f71fd18717bacaf0c5aff5d772e04ed2c6e Mon Sep 17 00:00:00 2001 From: ulteq Date: Sun, 14 Jun 2015 12:25:56 +0200 Subject: [PATCH 048/118] Added 'parachute' and 'camera' hitpoints to the HuntIR model: * You can now shoot the parachute to make it fall faster * And you can shoot the camera to kill the video feed --- addons/huntir/CfgVehicles.hpp | 20 ++++++++++++++ addons/huntir/XEH_preInit.sqf | 1 - addons/huntir/data/huntir.p3d | Bin 185724 -> 189908 bytes addons/huntir/data/model.cfg | 26 +++++++++++++++++++ addons/huntir/functions/fnc_cam.sqf | 4 +-- addons/huntir/functions/fnc_handleDamage.sqf | 25 ------------------ addons/huntir/functions/fnc_handleFired.sqf | 9 +++---- 7 files changed, 52 insertions(+), 33 deletions(-) create mode 100644 addons/huntir/data/model.cfg delete mode 100644 addons/huntir/functions/fnc_handleDamage.sqf diff --git a/addons/huntir/CfgVehicles.hpp b/addons/huntir/CfgVehicles.hpp index 9e24473243..93ea8505a1 100644 --- a/addons/huntir/CfgVehicles.hpp +++ b/addons/huntir/CfgVehicles.hpp @@ -29,6 +29,26 @@ class CfgVehicles { soundLandCrash[] = {"", db-30, 1 }; soundWaterCrash[] = {"", db10, 1 }; mapSize = 0; + class HitPoints { + class HitParachute { + armor = 0.0001; + material = -1; + name = "parachute"; + visual = ""; + radius = 0.2; + passThrough = 1; + explosionShielding = 0; + }; + class HitCamera { + armor = 0.001; + material = -1; + name = "camera"; + visual = ""; + radius = 0.025; + passThrough = 1; + explosionShielding = 1; + }; + }; }; class Item_Base_F; diff --git a/addons/huntir/XEH_preInit.sqf b/addons/huntir/XEH_preInit.sqf index 7737030571..0ae45c1540 100644 --- a/addons/huntir/XEH_preInit.sqf +++ b/addons/huntir/XEH_preInit.sqf @@ -3,7 +3,6 @@ ADDON = false; PREP(cam); -PREP(handleDamage); PREP(handleFired); PREP(huntir); PREP(huntirCompass); diff --git a/addons/huntir/data/huntir.p3d b/addons/huntir/data/huntir.p3d index e9b914741687a55f5453a27dcbd154efa01bdc33..a1c5b94e99207878c2f96aab06910b6dbf1ef7a8 100644 GIT binary patch delta 2826 zcmc&$T}V_x6rOurGk+k(R-^34MChe3O$(BKz%X1b#UKhzhjmNCpJly8MX-`lP?EtV zrU$8>d#Ki3T*b;=ch~i2vx0gE+D(Fd66`68B04jxR#0@F?84lcGn}9Ad~?pd^X-1> ztEtrFs>;JErLosi;ufCQF@kiSDg(qVT8=`L>vk=I=l_^QMR z1iaZHs&iTqsfO}}i1ey9>hmGowPTP^fQ!9k7PHczB!I6^C=#qxyWANgv8{AfWq(FU zq#{v`qq2xM1H!}aSt0?LYKV(r5-`*y*LV6j$)(EmI8C>AoD}{IO-_xS|9GAV7cj_(H_*Y+OlSIXu2&@(jlTbo(dyDG!9aRy5W{T1&*hz}tIYmtC2~{yE zLiC74Rc!h5kMK9@*^&L_<=(Fm@Mx(^zj$UbatE_SffLfi^9XERxo|zO7%$yf_@_@3 zRnH(rbWMZF=p8T{Cp;-`W5}g>8(%<9qO-cFtSX1$Bd-^7{^f~9qlMSquD!A7`oj43 zrT+OVyGIzi`6w=5?*CH1afJC2cPz>u9v&TG`&M|QEa7T-wawgNKhSi_)|tl`s6aAU zd^i^u|7mtEAz4NMNP;9n4(H-xS?2@{9v{g6Pht7iOE=VPo2oi>3JZm+s?gm#^jO1d OL*r{$W13ud(6>@a| delta 641 zcmca|n)}ZxZcbkxe-}nZ1_tJhoLxJ&&$-34k#YKlr%de4N(bAO4l-_6I>_{hWxBy5 zM%L*^E-?vAw>rjT3gNb$19F$bxhiLXT!G^-*=xsv+-hX5D@2>)2_`6O4V)!@5+>FJ zXT629z(#$z#KbZ^=M-lME{W&hYTd diff --git a/addons/huntir/data/model.cfg b/addons/huntir/data/model.cfg new file mode 100644 index 0000000000..de5b683706 --- /dev/null +++ b/addons/huntir/data/model.cfg @@ -0,0 +1,26 @@ +class CfgSkeletons { + class Default { + isDiscrete = 1; + skeletonInherit = ""; + skeletonBones[] = {}; + }; + class ace_huntir_skeleton: Default { + isDiscrete = 1; + skeletonInherit = "Default"; + skeletonBones[] = { + "parachute","", + "camera","", + }; + }; +}; +class CfgModels { + class Default { + sectionsInherit = ""; + sections[] = {}; + skeletonName = ""; + }; + class huntir: Default { + skeletonName = "ace_huntir_skeleton"; + sectionsInherit = "Default"; + }; +}; diff --git a/addons/huntir/functions/fnc_cam.sqf b/addons/huntir/functions/fnc_cam.sqf index 64bf9e37b8..264c0c74b6 100644 --- a/addons/huntir/functions/fnc_cam.sqf +++ b/addons/huntir/functions/fnc_cam.sqf @@ -65,12 +65,12 @@ GVAR(no_cams) sort true; [{ GVAR(nearHuntIRs) = ACE_player nearEntities ["ACE_HuntIR", HUNTIR_MAX_TRANSMISSION_RANGE]; { - if (((getPosVisual _x) select 2) > 20 && {!(_x in GVAR(no_cams))} && {damage _x < 0.5}) then { + if (((getPosVisual _x) select 2) > 20 && {!(_x in GVAR(no_cams))} && {_x getHitPointDamage "HitCamera" < 0.25}) then { GVAR(no_cams) pushBack _x; }; } forEach GVAR(nearHuntIRs); { - if (((getPosVisual _x) select 2) <= 20 || {!(_x in GVAR(nearHuntIRs))} || {damage _x >= 0.5}) then { + if (((getPosVisual _x) select 2) <= 20 || {!(_x in GVAR(nearHuntIRs))} || {_x getHitPointDamage "HitCamera" >= 0.25}) then { GVAR(no_cams) deleteAt _forEachIndex; if (_forEachIndex < GVAR(cur_cam)) then { GVAR(cur_cam) = GVAR(cur_cam) - 1; diff --git a/addons/huntir/functions/fnc_handleDamage.sqf b/addons/huntir/functions/fnc_handleDamage.sqf deleted file mode 100644 index 34772d8a66..0000000000 --- a/addons/huntir/functions/fnc_handleDamage.sqf +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Author: Ruthberg - * - * Handles huntir damage - * - * Arguments: - * 0: huntir - * 1: selectionName - * 2: damage - * 3: source - * 4: projectile - * - * Return Value: - * Nothing - * - * Return value: - * None - */ -#include "script_component.hpp" - -PARAMS_5(_huntir,_selectionName,_damage,_source,_projectile); - -systemChat format["Selection: %1; Damage: %2", _selectionName, _damage]; - -_damage diff --git a/addons/huntir/functions/fnc_handleFired.sqf b/addons/huntir/functions/fnc_handleFired.sqf index 447d5a4435..23c7df04f0 100644 --- a/addons/huntir/functions/fnc_handleFired.sqf +++ b/addons/huntir/functions/fnc_handleFired.sqf @@ -32,17 +32,16 @@ if (_ammo != "F_HuntIR") exitWith {}; _huntir = createVehicle ["ACE_HuntIR", _position, [], 0, "FLY"]; _huntir setPosATL _position; _huntir setVariable [QGVAR(startTime), ACE_time, true]; - // TODO: Edit the .p3d to allow doing the following _huntir getHit "camera"; _huntir getHit "parachute"; - //_huntir addEventHandler ["HandleDamage", {_this call FUNC(handleDamage)}]; [{ EXPLODE_1_PVT(_this select 0,_huntir); if (isNull _huntir) exitWith { [_this select 1] call CBA_fnc_removePerFrameHandler; }; - if (damage _huntir > 0) then { - private ["_velocity"]; + private ["_parachuteDamage", "_velocity"]; + _parachuteDamage = _huntir getHitPointDamage "HitParachute"; + if (_parachuteDamage > 0) then { _velocity = velocity _huntir; - _velocity set [2, -1 min -20 * sqrt(damage _huntir)]; + _velocity set [2, -1 min -20 * sqrt(_parachuteDamage)]; _huntir setVelocity _velocity; _huntir setVectorUp [0, 0, 1]; }; From 14fd5c930b05390e06e551d6fa05c7f586fd8d25 Mon Sep 17 00:00:00 2001 From: ulteq Date: Sun, 14 Jun 2015 12:54:10 +0200 Subject: [PATCH 049/118] You can no longer connect to destroyed HuntIR cameras --- addons/huntir/data/model.cfg | 26 -------------------------- addons/huntir/functions/fnc_huntir.sqf | 2 +- 2 files changed, 1 insertion(+), 27 deletions(-) delete mode 100644 addons/huntir/data/model.cfg diff --git a/addons/huntir/data/model.cfg b/addons/huntir/data/model.cfg deleted file mode 100644 index de5b683706..0000000000 --- a/addons/huntir/data/model.cfg +++ /dev/null @@ -1,26 +0,0 @@ -class CfgSkeletons { - class Default { - isDiscrete = 1; - skeletonInherit = ""; - skeletonBones[] = {}; - }; - class ace_huntir_skeleton: Default { - isDiscrete = 1; - skeletonInherit = "Default"; - skeletonBones[] = { - "parachute","", - "camera","", - }; - }; -}; -class CfgModels { - class Default { - sectionsInherit = ""; - sections[] = {}; - skeletonName = ""; - }; - class huntir: Default { - skeletonName = "ace_huntir_skeleton"; - sectionsInherit = "Default"; - }; -}; diff --git a/addons/huntir/functions/fnc_huntir.sqf b/addons/huntir/functions/fnc_huntir.sqf index 585a49a6ac..f8aed93880 100644 --- a/addons/huntir/functions/fnc_huntir.sqf +++ b/addons/huntir/functions/fnc_huntir.sqf @@ -61,7 +61,7 @@ createDialog "ace_huntir_cam_dialog_off"; if (_elapsedTime > 10) then { GVAR(state) = "noGDS"; }; - if (_elapsedTime > 5 && {count _nearestHuntIRs > 0}) then { + if (_elapsedTime > 5 && {{_x getHitPointDamage "HitCamera" < 0.25} count _nearestHuntIRs > 0}) then { GVAR(state) = "connecting"; }; }; From 76f7962dac454e2199ae38606be2bda2eb127e1f Mon Sep 17 00:00:00 2001 From: Ivan Navarro Cabello Date: Sun, 14 Jun 2015 13:52:55 +0200 Subject: [PATCH 050/118] Updated spanish stringatable Updated spanish stringatable for (Common, Medical, Optionsmenu, Tacticalladder). --- addons/common/stringtable.xml | 5 ++++- addons/medical/stringtable.xml | 8 ++++++++ addons/optionsmenu/stringtable.xml | 2 ++ addons/tacticalladder/stringtable.xml | 11 ++++++----- 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 82c709929d..7d0de1b584 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -563,12 +563,15 @@ Toggle Handheld Device + Seleccionar dispositivo de mano Close Handheld Device + Cerrar dispositivo de mano Cycle Handheld Devices + Cambiar dispositivos de mano - + \ No newline at end of file diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 01c6c94dca..a88ec4bcaf 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -2210,12 +2210,14 @@ Bandagieren entfernt Blutflecken Bandażowanie usuwa ślady krwi Obvázání odstraňuje skvrny od krve + El vendaje elimina las manchas de sangre Pain is only temporarily suppressed Schmerzen werden nur vorübergehend unterdrückt Ból jest tymczasowo zwalczany Bolest je potlačena pouze dočasně + El dolor se suprime solo temporalmente Pain Effect Type @@ -2890,9 +2892,11 @@ Remote Controlled AI + IA controlada remotamente Treat remote controlled units as AI not players? + ¿Tratar unidades remotamente controladas como IA? Disabled @@ -3219,24 +3223,28 @@ Blutflecken Plamy krwi Skvrny od krve + Manchas de sangre Bandaging removes bloodstains Bandagieren entfernt Blutflecken Bandażowanie usuwa ślady krwi Obvázání odstraňuje skvrny od krve + El vendaje elimina las manchas de sangre Pain suppression Schmerzunterdrückung Zwalczanie bólu Potlačení bolesti + Supresión del dolor Pain is only temporarily suppressed, not removed Bandagieren entfernt Blutflecken Ból jest tylko tymczasowo zwalczany, nie jest usuwany trwale Bolest je potlačena, ale jen dočastně + El dolor se suprime solo temporalmente, no se elimina. Configure the treatment settings from ACE Medical diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml index 4bbeb22cf5..cbd9d642bf 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -332,9 +332,11 @@ ACE News + Noticias ACE Show News on Main Menu + Mostrar noticias en el menú principal \ No newline at end of file diff --git a/addons/tacticalladder/stringtable.xml b/addons/tacticalladder/stringtable.xml index ef497a5c84..962cc9e6ae 100644 --- a/addons/tacticalladder/stringtable.xml +++ b/addons/tacticalladder/stringtable.xml @@ -6,7 +6,7 @@ Teleskopleiter Телескопическая лестница Drabina teleskopowa - Telescopic Ladder + Escalera telescópica Telescopic Ladder Teleskopický žebřík Telescopic Ladder @@ -17,7 +17,7 @@ Leiter aufbauen Установить лестницу Rozłóż drabinę - Deploy ladder + Despelgar escalera Deploy ladder Rozložit žebřík Deploy ladder @@ -28,7 +28,7 @@ Leiter ablegen Положить лестницу Zostaw drabinę - Drop ladder + Soltar escalera Drop ladder Položit žebřík Drop ladder @@ -39,13 +39,14 @@ Leiter einstellen Reguluj drabinę Upravit žebřík + Ajustar escalera Position ladder Leiter positionieren Перенести лестницу Postaw drabinę - Position ladder + Colocar escalera Position ladder Umístit žebřík Position ladder @@ -56,7 +57,7 @@ Leiter aufnehmen Взять лестницу Zabierz drabinę - Pickup ladder + Recoger escalera Pickup ladder Vzít žebřík Pickup ladder From 32f02b72a5fa4d2d5613ac52a58450e7698ab8e0 Mon Sep 17 00:00:00 2001 From: ulteq Date: Sun, 14 Jun 2015 13:57:38 +0200 Subject: [PATCH 051/118] Fixed missing 'HitEngine' RPT warning. --- addons/huntir/CfgVehicles.hpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/addons/huntir/CfgVehicles.hpp b/addons/huntir/CfgVehicles.hpp index 93ea8505a1..5a38fa6879 100644 --- a/addons/huntir/CfgVehicles.hpp +++ b/addons/huntir/CfgVehicles.hpp @@ -19,17 +19,26 @@ class CfgVehicles { class Parachute_02_base_F; class ACE_HuntIR: Parachute_02_base_F { - scope = 1; + author = ECSTRING(common,ACETeam); + castDriverShadow = 0; destrType = "DestructDefault"; displayName = "HuntIR"; model = PATHTOF(data\huntir.p3d); - castDriverShadow = 0; - soundEnviron[] = {"z\ace\addons\apl\sounds\padak_let", 0.316228, 1, 80}; + scope = 1; soundCrash[] = {"", db-30, 1 }; + soundEnviron[] = {"z\ace\addons\apl\sounds\padak_let", 0.316228, 1, 80}; soundLandCrash[] = {"", db-30, 1 }; soundWaterCrash[] = {"", db10, 1 }; - mapSize = 0; class HitPoints { + class HitEngine { + armor = 0; + material = -1; + name = ""; + visual = ""; + radius = 0; + passThrough = 0; + explosionShielding = 0; + }; class HitParachute { armor = 0.0001; material = -1; From 5915e24f5d2e853a8179f9d654f1e01f7e680276 Mon Sep 17 00:00:00 2001 From: AKALegman Date: Sun, 14 Jun 2015 16:09:01 +0100 Subject: [PATCH 052/118] some fixes --- addons/explosives/CfgMagazines.hpp | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/addons/explosives/CfgMagazines.hpp b/addons/explosives/CfgMagazines.hpp index ee16c1ded6..39d08917c3 100644 --- a/addons/explosives/CfgMagazines.hpp +++ b/addons/explosives/CfgMagazines.hpp @@ -97,12 +97,13 @@ class CfgMagazines { }; }; - class IEDUrbanBig_Remote_Mag: DemoCharge_Remote_Mag { - class ACE_Triggers { + class IEDUrbanBig_Remote_Mag: DemoCharge_Remote_Mag { + ACE_SetupObject = "ACE_Explosives_Place_IEDUrbanBig"; + class ACE_Triggers { SupportedTriggers[] = {"Command", "DeadmanSwitch", "Cellphone", "PressurePlate"}; class Command { FuseTime = 0.5; - ammo = "IEDUrbanBig_Command_Ammo"; + ammo = "IEDUrbanBig_Command_Ammo"; }; class DeadmanSwitch:Command {}; class Cellphone:Command {}; @@ -113,14 +114,14 @@ class CfgMagazines { pitch = 0; }; }; - }; + }; class IEDLandBig_Remote_Mag: IEDUrbanBig_Remote_Mag { ACE_SetupObject = "ACE_Explosives_Place_IEDLandBig"; class ACE_Triggers: ACE_Triggers { - class Command: Command { - ammo = "IEDLandBig_Command_Ammo"; - }; + class Command: Command { + ammo = "IEDLandBig_Command_Ammo"; + }; class PressurePlate: PressurePlate { ammo = "IEDLandBig_Range_Ammo"; }; @@ -132,7 +133,7 @@ class CfgMagazines { SupportedTriggers[] = {"Command", "DeadmanSwitch", "Cellphone", "PressurePlate"}; class Command { FuseTime = 0.5; - ammo = "IEDUrbanSmall_Command_Ammo"; + ammo = "IEDUrbanSmall_Command_Ammo"; }; class DeadmanSwitch: Command {}; class Cellphone: Command {}; @@ -147,9 +148,9 @@ class CfgMagazines { class IEDLandSmall_Remote_Mag: IEDUrbanSmall_Remote_Mag { ACE_SetupObject = "ACE_Explosives_Place_IEDLandSmall"; class ACE_Triggers: ACE_Triggers { - class Command: Command { - ammo = "IEDLandSmall_Command_Ammo"; - }; + class Command: Command { + ammo = "IEDLandSmall_Command_Ammo"; + }; class PressurePlate: PressurePlate { ammo = "IEDLandSmall_Range_Ammo"; }; From 3c775b19ba385af3a7a797775ba15845bf121015 Mon Sep 17 00:00:00 2001 From: ulteq Date: Sun, 14 Jun 2015 17:46:46 +0200 Subject: [PATCH 053/118] CUP weapon config improvement: * Adjusted magazine initSpeed values * Adjusted weapon initSpeed coefficients * Recalculated all airFriction values * Added missing ace configs to some classes --- optionals/compat_cup/CfgAmmo.hpp | 42 ++++- optionals/compat_cup/CfgMagazines.hpp | 219 ++++++++++++++++++++++++++ optionals/compat_cup/CfgWeapons.hpp | 101 +++++++++++- 3 files changed, 353 insertions(+), 9 deletions(-) diff --git a/optionals/compat_cup/CfgAmmo.hpp b/optionals/compat_cup/CfgAmmo.hpp index a3cafcfbb0..f5ba34fc7e 100644 --- a/optionals/compat_cup/CfgAmmo.hpp +++ b/optionals/compat_cup/CfgAmmo.hpp @@ -4,6 +4,7 @@ class CfgAmmo class B_762x51_Ball; class B_127x99_Ball; class CUP_B_545x39_Ball: BulletBase { + airFriction=-0.0011204; ACE_caliber=5.588; ACE_bulletLength=21.59; ACE_bulletMass=3.42792; @@ -16,6 +17,7 @@ class CfgAmmo ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class CUP_B_545x39_Ball_Tracer_Green: CUP_B_545x39_Ball { + airFriction=-0.0011204; ACE_caliber=5.588; ACE_bulletLength=21.59; ACE_bulletMass=3.22704; @@ -28,6 +30,7 @@ class CfgAmmo ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class CUP_B_545x39_Ball_Tracer_Red: BulletBase { + airFriction=-0.0011204; ACE_caliber=5.588; ACE_bulletLength=21.59; ACE_bulletMass=3.22704; @@ -40,6 +43,7 @@ class CfgAmmo ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class CUP_B_545x39_Ball_Tracer_White: BulletBase { + airFriction=-0.0011204; ACE_caliber=5.588; ACE_bulletLength=21.59; ACE_bulletMass=3.22704; @@ -52,6 +56,7 @@ class CfgAmmo ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class CUP_B_545x39_Ball_Tracer_Yellow: BulletBase { + airFriction=-0.0011204; ACE_caliber=5.588; ACE_bulletLength=21.59; ACE_bulletMass=3.22704; @@ -64,6 +69,7 @@ class CfgAmmo ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class CUP_B_762x39_Ball: BulletBase { + airFriction=-0.00150173; ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=7.9704; @@ -76,6 +82,7 @@ class CfgAmmo ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class CUP_B_762x39_Ball_Tracer_Green: BulletBase { + airFriction=-0.00150173; ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=7.5816; @@ -88,6 +95,7 @@ class CfgAmmo ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class B_762x39mm_KLT: BulletBase { + airFriction=-0.00150173; ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=7.5816; @@ -100,6 +108,7 @@ class CfgAmmo ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class CUP_B_9x18_Ball: BulletBase { + airFriction=-0.00180193; ACE_caliber=9.271; ACE_bulletLength=15.494; ACE_bulletMass=6.00048; @@ -112,6 +121,7 @@ class CfgAmmo ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; class CUP_B_9x18_Ball_Tracer_Green: BulletBase { + airFriction=-0.00180193; ACE_caliber=9.271; ACE_bulletLength=15.494; ACE_bulletMass=6.00048; @@ -124,6 +134,7 @@ class CfgAmmo ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; class CUP_B_9x18_Ball_Tracer_Red: BulletBase { + airFriction=-0.00180193; ACE_caliber=9.271; ACE_bulletLength=15.494; ACE_bulletMass=6.00048; @@ -136,6 +147,7 @@ class CfgAmmo ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; class CUP_B_9x18_Ball_Tracer_Yellow: BulletBase { + airFriction=-0.00180193; ACE_caliber=9.271; ACE_bulletLength=15.494; ACE_bulletMass=6.00048; @@ -148,6 +160,7 @@ class CfgAmmo ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; class CUP_B_9x18_Ball_White_Tracer: BulletBase { + airFriction=-0.00180193; ACE_caliber=9.271; ACE_bulletLength=15.494; ACE_bulletMass=6.00048; @@ -160,6 +173,7 @@ class CfgAmmo ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; class CUP_B_9x19_Ball: BulletBase { + airFriction=-0.00205726; ACE_caliber=9.017; ACE_bulletLength=15.494; ACE_bulletMass=8.0352; @@ -172,6 +186,7 @@ class CfgAmmo ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class CUP_B_762x51_noTracer: B_762x51_Ball { + airFriction=-0.00099036; ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=9.4608; @@ -184,6 +199,7 @@ class CfgAmmo ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class CUP_B_303_Ball: BulletBase { + airFriction=-0.00082199; ACE_caliber=7.899; ACE_bulletLength=31.166; ACE_bulletMass=11.2752; @@ -196,6 +212,7 @@ class CfgAmmo ACE_barrelLengths[]={508.0, 609.6, 660.4}; }; class CUP_B_127x107_Ball_Green_Tracer: BulletBase { + airFriction=-0.00062618; ACE_caliber=12.979; ACE_bulletLength=64.008; ACE_bulletMass=48.276; @@ -208,6 +225,7 @@ class CfgAmmo ACE_barrelLengths[]={728.98}; }; class CUP_B_127x108_Ball_Green_Tracer: BulletBase { + airFriction=-0.00062618; ACE_caliber=12.979; ACE_bulletLength=64.008; ACE_bulletMass=48.276; @@ -220,6 +238,7 @@ class CfgAmmo ACE_barrelLengths[]={728.98}; }; class CUP_B_762x54_Ball_White_Tracer: BulletBase { + airFriction=-0.00101742; ACE_caliber=7.925; ACE_bulletLength=28.956; ACE_bulletMass=9.6552; @@ -232,6 +251,7 @@ class CfgAmmo ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class CUP_B_762x54_Ball_Red_Tracer: BulletBase { + airFriction=-0.00101742; ACE_caliber=7.925; ACE_bulletLength=28.956; ACE_bulletMass=9.6552; @@ -244,6 +264,7 @@ class CfgAmmo ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class CUP_B_762x54_Ball_Green_Tracer: BulletBase { + airFriction=-0.00101742; ACE_caliber=7.925; ACE_bulletLength=28.956; ACE_bulletMass=9.6552; @@ -256,6 +277,7 @@ class CfgAmmo ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class CUP_B_762x54_Ball_Yellow_Tracer: BulletBase { + airFriction=-0.00101742; ACE_caliber=7.925; ACE_bulletLength=28.956; ACE_bulletMass=9.6552; @@ -268,6 +290,7 @@ class CfgAmmo ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class CUP_B_9x39_SP5: BulletBase { + airFriction=-0.00075274; ACE_caliber=9.246; ACE_bulletLength=31.496; ACE_bulletMass=16.2; @@ -280,6 +303,7 @@ class CfgAmmo ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class CUP_B_762x51_Tracer_Green: BulletBase { + airFriction=-0.00099036; ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=9.4608; @@ -292,6 +316,7 @@ class CfgAmmo ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class CUP_B_762x51_Tracer_Red: BulletBase { + airFriction=-0.00099036; ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=9.4608; @@ -304,6 +329,7 @@ class CfgAmmo ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class CUP_B_762x51_Tracer_Yellow: BulletBase { + airFriction=-0.00099036; ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=9.4608; @@ -316,6 +342,7 @@ class CfgAmmo ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class CUP_B_762x51_Tracer_White: BulletBase { + airFriction=-0.00099036; ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=9.4608; @@ -340,6 +367,7 @@ class CfgAmmo ACE_barrelLengths[]={728.98}; }; class CUP_B_9x18_SD: BulletBase { + airFriction=-0.00180193; ACE_caliber=9.271; ACE_bulletLength=15.494; ACE_bulletMass=6.00048; @@ -352,6 +380,7 @@ class CfgAmmo ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; class CUP_B_765x17_Ball: BulletBase { + airFriction=-0.00173452; ACE_caliber=7.938; ACE_bulletLength=15.494; ACE_bulletMass=4.212; @@ -364,6 +393,7 @@ class CfgAmmo ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class CUP_B_145x115_AP_Green_Tracer: BulletBase { + airFriction=-0.00059041; ACE_caliber=14.884; ACE_bulletLength=50.8; ACE_bulletMass=65.448; @@ -376,6 +406,7 @@ class CfgAmmo ACE_barrelLengths[]={1346.2}; }; class CUP_B_127x99_Ball_White_Tracer: B_127x99_Ball { + airFriction=-0.00057503; ACE_caliber=12.954; ACE_bulletLength=58.674; ACE_bulletMass=41.9256; @@ -388,15 +419,16 @@ class CfgAmmo ACE_barrelLengths[]={736.6}; }; class CUP_B_86x70_Ball_noTracer: BulletBase { + airFriction=-0.0005788; ACE_caliber=8.585; - ACE_bulletLength=43.18; - ACE_bulletMass=19.44; + ACE_bulletLength=39.573; + ACE_bulletMass=16.2; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; - ACE_ballisticCoefficients[]={0.381}; + ACE_ballisticCoefficients[]={0.322}; ACE_velocityBoundaries[]={}; ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; - ACE_muzzleVelocities[]={820, 826, 830}; - ACE_barrelLengths[]={609.6, 673.1, 711.2}; + ACE_muzzleVelocities[]={880, 915, 925}; + ACE_barrelLengths[]={508.0, 660.4, 711.2}; }; }; \ No newline at end of file diff --git a/optionals/compat_cup/CfgMagazines.hpp b/optionals/compat_cup/CfgMagazines.hpp index b05b0c3efd..469476734c 100644 --- a/optionals/compat_cup/CfgMagazines.hpp +++ b/optionals/compat_cup/CfgMagazines.hpp @@ -45,4 +45,223 @@ class CfgMagazines { modelSpecial = ""; mass = 0; }; + + class CA_Magazine; + class 30Rnd_556x45_Stanag; + class CUP_30Rnd_545x39_AK_M: CA_Magazine { + initSpeed = 880; + }; + class CUP_30Rnd_TE1_Green_Tracer_545x39_AK_M: CA_Magazine { + initSpeed = 880; + }; + class CUP_30Rnd_TE1_Red_Tracer_545x39_AK_M: CA_Magazine { + initSpeed = 880; + }; + class CUP_30Rnd_TE1_White_Tracer_545x39_AK_M: CA_Magazine { + initSpeed = 880; + }; + class CUP_30Rnd_TE1_Yellow_Tracer_545x39_AK_M: CA_Magazine { + initSpeed = 880; + }; + class CUP_75Rnd_TE4_LRT4_Green_Tracer_545x39_RPK_M: CA_Magazine { + initSpeed = 880; + }; + class CUP_30Rnd_762x39_AK47_M: CA_Magazine { + initSpeed = 750; + }; + class CUP_64Rnd_9x19_Bizon_M: CA_Magazine { + initSpeed = 350; + }; + class CUP_64Rnd_Green_Tracer_9x19_Bizon_M: CA_Magazine { + initSpeed = 350; + }; + class CUP_64Rnd_Red_Tracer_9x19_Bizon_M: CA_Magazine { + initSpeed = 350; + }; + class CUP_64Rnd_White_Tracer_9x19_Bizon_M: CA_Magazine { + initSpeed = 350; + }; + class CUP_64Rnd_Yellow_Tracer_9x19_Bizon_M: CA_Magazine { + initSpeed = 350; + }; + class CUP_5x_22_LR_17_HMR_M: CA_Magazine { + initSpeed = 830; + }; + class CUP_10x_303_M: CA_Magazine { + initSpeed = 765; + }; + class CUP_20Rnd_762x51_FNFAL_M: CA_Magazine { + initSpeed = 833; + }; + class CUP_5Rnd_127x108_KSVK_M: CA_Magazine { + initSpeed = 820; + }; + class CUP_100Rnd_TE4_LRT4_White_Tracer_762x51_Belt_M: CA_Magazine { + initSpeed = 833; + }; + class CUP_100Rnd_TE4_LRT4_Red_Tracer_762x51_Belt_M: CUP_100Rnd_TE4_LRT4_White_Tracer_762x51_Belt_M { + initSpeed = 833; + }; + class CUP_200Rnd_TE4_LRT4_White_Tracer_762x51_Belt_M: CA_Magazine { + initSpeed = 833; + }; + class CUP_200Rnd_TE4_LRT4_Red_Tracer_762x51_Belt_M: CA_Magazine { + initSpeed = 833; + }; + class CUP_100Rnd_TE4_LRT4_762x54_PK_Tracer_Green_M: CA_Magazine { + initSpeed = 800; + }; + class CUP_10Rnd_762x54_SVD_M: CA_Magazine { + initSpeed = 800; + }; + class CUP_10Rnd_9x39_SP5_VSS_M: CA_Magazine { + initSpeed = 300; + }; + class CUP_20Rnd_9x39_SP5_VSS_M: CA_Magazine { + initSpeed = 300; + }; + class CUP_5Rnd_127x99_as50_M: CA_Magazine { + initSpeed = 900; + }; + class CUP_20Rnd_762x51_DMR: CA_Magazine { + initSpeed = 833; + }; + class CUP_20Rnd_TE1_Yellow_Tracer_762x51_DMR: CUP_20Rnd_762x51_DMR { + initSpeed = 833; + }; + class CUP_20Rnd_TE1_Red_Tracer_762x51_DMR: CUP_20Rnd_762x51_DMR { + initSpeed = 833; + }; + class CUP_20Rnd_TE1_Green_Tracer_762x51_DMR: CUP_20Rnd_762x51_DMR { + initSpeed = 833; + }; + class CUP_20Rnd_TE1_White_Tracer_762x51_DMR: CUP_20Rnd_762x51_DMR { + initSpeed = 833; + }; + class CUP_20Rnd_762x51_B_SCAR: CA_Magazine { + initSpeed = 833; + }; + class CUP_20Rnd_TE1_Yellow_Tracer_762x51_SCAR: CUP_20Rnd_762x51_B_SCAR { + initSpeed = 833; + }; + class CUP_20Rnd_TE1_Red_Tracer_762x51_SCAR: CUP_20Rnd_762x51_B_SCAR { + initSpeed = 833; + }; + class CUP_20Rnd_TE1_Green_Tracer_762x51_SCAR: CUP_20Rnd_762x51_B_SCAR { + initSpeed = 833; + }; + class CUP_20Rnd_TE1_White_Tracer_762x51_SCAR: CUP_20Rnd_762x51_B_SCAR { + initSpeed = 833; + }; + class CUP_20Rnd_762x51_B_M110: CA_Magazine { + initSpeed = 833; + }; + class CUP_5Rnd_762x51_M24: CA_Magazine { + initSpeed = 833; + }; + class CUP_20Rnd_TE1_Yellow_Tracer_762x51_M110: CUP_20Rnd_762x51_B_M110 { + initSpeed = 833; + }; + class CUP_20Rnd_TE1_Red_Tracer_762x51_M110: CUP_20Rnd_762x51_B_M110 { + initSpeed = 833; + }; + class CUP_20Rnd_TE1_Green_Tracer_762x51_M110: CUP_20Rnd_762x51_B_M110 { + initSpeed = 833; + }; + class CUP_20Rnd_TE1_White_Tracer_762x51_M110: CUP_20Rnd_762x51_B_M110 { + initSpeed = 833; + }; + class CUP_30Rnd_556x45_G36: 30Rnd_556x45_Stanag { + initSpeed = 920; + }; + class CUP_30Rnd_TE1_Red_Tracer_556x45_G36: CUP_30Rnd_556x45_G36 { + initSpeed = 920; + }; + class CUP_30Rnd_TE1_Green_Tracer_556x45_G36: CUP_30Rnd_556x45_G36 { + initSpeed = 920; + }; + class CUP_30Rnd_TE1_Yellow_Tracer_556x45_G36: CUP_30Rnd_556x45_G36 { + initSpeed = 920; + }; + class CUP_100Rnd_556x45_BetaCMag: 30Rnd_556x45_Stanag { + initSpeed = 920; + }; + class CUP_100Rnd_TE1_Red_Tracer_556x45_BetaCMag: CUP_100Rnd_556x45_BetaCMag { + initSpeed = 920; + }; + class CUP_100Rnd_TE1_Green_Tracer_556x45_BetaCMag: CUP_100Rnd_556x45_BetaCMag { + initSpeed = 920; + }; + class CUP_100Rnd_TE1_Yellow_Tracer_556x45_BetaCMag: CUP_100Rnd_556x45_BetaCMag { + initSpeed = 920; + }; + class CUP_200Rnd_TE4_Green_Tracer_556x45_M249: CA_Magazine { + initSpeed = 920; + }; + class CUP_200Rnd_TE4_Red_Tracer_556x45_M249: CUP_200Rnd_TE4_Green_Tracer_556x45_M249 { + initSpeed = 920; + }; + class CUP_200Rnd_TE4_Yellow_Tracer_556x45_M249: CUP_200Rnd_TE4_Green_Tracer_556x45_M249 { + initSpeed = 920; + }; + class CUP_200Rnd_TE1_Red_Tracer_556x45_M249: CUP_200Rnd_TE4_Red_Tracer_556x45_M249 { + initSpeed = 920; + }; + class CUP_100Rnd_TE4_Green_Tracer_556x45_M249: CA_Magazine { + initSpeed = 920; + }; + class CUP_100Rnd_TE4_Red_Tracer_556x45_M249: CUP_100Rnd_TE4_Green_Tracer_556x45_M249 { + initSpeed = 920; + }; + class CUP_100Rnd_TE4_Yellow_Tracer_556x45_M249: CUP_100Rnd_TE4_Green_Tracer_556x45_M249 { + initSpeed = 920; + }; + class CUP_200Rnd_TE4_Green_Tracer_556x45_L110A1: CUP_200Rnd_TE4_Green_Tracer_556x45_M249 { + initSpeed = 920; + }; + class CUP_200Rnd_TE4_Red_Tracer_556x45_L110A1: CUP_200Rnd_TE4_Red_Tracer_556x45_M249 { + initSpeed = 920; + }; + class CUP_200Rnd_TE4_Yellow_Tracer_556x45_L110A1: CUP_200Rnd_TE4_Yellow_Tracer_556x45_M249 { + initSpeed = 920; + }; + class CUP_30Rnd_556x45_Stanag: CA_Magazine { + initSpeed = 920; + }; + class CUP_20Rnd_556x45_Stanag: CUP_30Rnd_556x45_Stanag { + initSpeed = 920; + }; + class CUP_10Rnd_127x99_M107: CA_Magazine { + initSpeed = 900; + }; + class CUP_10Rnd_762x51_CZ750: CA_Magazine { + initSpeed = 833; + }; + class CUP_10Rnd_762x51_CZ750_Tracer: CUP_10Rnd_762x51_CZ750 { + initSpeed = 833; + }; + class CUP_50Rnd_UK59_762x54R_Tracer: CA_Magazine { + initSpeed = 800; + }; + class CUP_8Rnd_9x18_Makarov_M: CA_Magazine { + initSpeed = 300; + }; + class CUP_8Rnd_9x18_MakarovSD_M: CUP_8Rnd_9x18_Makarov_M { + initSpeed = 300; + }; + class CUP_6Rnd_45ACP_M: CA_Magazine { + initSpeed = 250; + }; + class CUP_17Rnd_9x19_glock17: CA_Magazine { + initSpeed = 370; + }; + class CUP_5Rnd_86x70_L115A1: CA_Magazine { + initSpeed = 915; + }; + class CUP_20Rnd_B_765x17_Ball_M: CA_Magazine { + initSpeed = 290; + }; + class CUP_30Rnd_9x19_MP5: CA_Magazine { + initSpeed = 400; + }; }; \ No newline at end of file diff --git a/optionals/compat_cup/CfgWeapons.hpp b/optionals/compat_cup/CfgWeapons.hpp index e897384343..76d442ee53 100644 --- a/optionals/compat_cup/CfgWeapons.hpp +++ b/optionals/compat_cup/CfgWeapons.hpp @@ -5,175 +5,217 @@ class CfgWeapons class Rifle_Long_Base_F; class Launcher_Base_F; class CUP_hgun_Colt1911 : Pistol_Base_F { + initSpeed=-1.04; ACE_barrelTwist=406.4; ACE_barrelLength=127.0; }; class CUP_sgun_AA12 : Rifle_Base_F { + initSpeed=-1.0; ACE_barrelTwist=0.0; ACE_twistDirection=0; ACE_barrelLength=457.2; }; class CUP_arifle_AK_Base : Rifle_Base_F { + initSpeed=-0.95467; ACE_barrelTwist=240.03; ACE_barrelLength=414.02; }; class CUP_arifle_AK107_Base : CUP_arifle_AK_Base { + initSpeed=-1.0; ACE_barrelTwist=199.898; ACE_barrelLength=414.02; }; class CUP_arifle_AKS_Base : CUP_arifle_AK_Base { + initSpeed=-0.95467; ACE_barrelTwist=199.898; ACE_barrelLength=414.02; }; class CUP_arifle_AKS74U : CUP_arifle_AK_Base { + initSpeed=-0.88636; ACE_barrelTwist=160.02; ACE_barrelLength=210.82; }; class CUP_arifle_AK74; class CUP_arifle_RPK74 : CUP_arifle_AK74 { + initSpeed=-1.0; ACE_barrelTwist=195.072; ACE_barrelLength=589.28; }; class CUP_srifle_AS50 : Rifle_Long_Base_F { + initSpeed=-1.0; ACE_barrelTwist=381.0; ACE_barrelLength=736.6; }; class CUP_srifle_AWM_Base : Rifle_Long_Base_F { + initSpeed=-1.00547; ACE_barrelTwist=279.4; ACE_barrelLength=685.8; }; class CUP_smg_bizon : Rifle_Base_F { + initSpeed=-1.0; ACE_barrelTwist=240.03; ACE_barrelLength=231.14; }; class CUP_hgun_Compact : Pistol_Base_F { + initSpeed=-0.97778; ACE_barrelTwist=248.92; ACE_barrelLength=94.996; }; class CUP_srifle_CZ750 : Rifle_Long_Base_F { + initSpeed=-1.0; ACE_barrelTwist=304.8; ACE_barrelLength=660.4; }; class CUP_arifle_CZ805_Base : Rifle_Base_F { + initSpeed=-0.87283; ACE_barrelTwist=304.8; ACE_barrelLength=355.6; }; class CUP_arifle_CZ805_A1 : CUP_arifle_CZ805_Base { + initSpeed=-0.93696; ACE_barrelTwist=304.8; ACE_barrelLength=355.6; }; class CUP_arifle_CZ805_A2 : CUP_arifle_CZ805_Base { + initSpeed=-0.87283; ACE_barrelTwist=304.8; ACE_barrelLength=276.86; }; class CUP_srifle_DMR : Rifle_Base_F { + initSpeed=-1.0; ACE_barrelTwist=304.8; ACE_barrelLength=558.8; }; class CUP_hgun_Duty : Pistol_Base_F { + initSpeed=-0.97778; ACE_barrelTwist=248.92; ACE_barrelLength=94.996; }; class CUP_arifle_FNFAL : Rifle_Base_F { + initSpeed=-0.98796; ACE_barrelTwist=304.8; ACE_barrelLength=533.4; }; class CUP_arifle_G36_Base; class CUP_arifle_G36A : CUP_arifle_G36_Base { + initSpeed=-0.99357; ACE_barrelTwist=177.8; ACE_barrelLength=480; }; class CUP_arifle_G36K : CUP_arifle_G36A { + initSpeed=-0.90761; ACE_barrelTwist=177.8; ACE_barrelLength=318; }; class CUP_arifle_G36C : Rifle_Base_F { + initSpeed=-0.81522; ACE_barrelTwist=177.8; ACE_barrelLength=228; }; class CUP_arifle_MG36 : CUP_arifle_G36C { + initSpeed=-0.99457; ACE_barrelTwist=177.8; ACE_barrelLength=480; }; class CUP_hgun_Glock17 : Pistol_Base_F { + initSpeed=-0.9595; ACE_barrelTwist=248.92; ACE_barrelLength=114.046; }; class CUP_srifle_CZ550 : Rifle_Base_F { + initSpeed=-1.0; ACE_barrelTwist=304.8; ACE_barrelLength=599.999; }; class CUP_srifle_ksvk : Rifle_Base_F { + initSpeed=-1.0; ACE_barrelTwist=457.2; ACE_barrelLength=999.998; }; class CUP_lmg_L7A2 : Rifle_Long_Base_F { + initSpeed=-1.0; ACE_barrelTwist=304.8; ACE_barrelLength=629.92; }; class CUP_arifle_L85A2_Base : Rifle_Base_F { + initSpeed=-1.0; ACE_barrelTwist=177.8; ACE_barrelLength=518.16; }; class CUP_arifle_L86A2_Base: Rifle_Base_F { + initSpeed=-0.97826; ACE_barrelTwist=177.8; ACE_barrelLength=646; }; class CUP_lmg_L110A1 : Rifle_Long_Base_F { + initSpeed=-0.93044; ACE_barrelTwist=177.8; ACE_barrelLength=347.98; }; class CUP_srifle_LeeEnfield : Rifle_Base_F { + initSpeed=-1.0; ACE_barrelTwist=254.0; ACE_barrelLength=640.08; }; class CUP_hgun_M9 : Pistol_Base_F { + initSpeed=-1.0; ACE_barrelTwist=248.92; ACE_barrelLength=124.46; }; class CUP_srifle_M14 : Rifle_Base_F { + initSpeed=-0.99160; ACE_barrelTwist=304.8; ACE_barrelLength=558.8; }; class CUP_arifle_M16_Base : Rifle_Base_F { + initSpeed=-1.0; ACE_barrelTwist=355.6; ACE_barrelLength=508.0; }; class CUP_arifle_M16A4_Base; class CUP_arifle_M4_Base : CUP_arifle_M16A4_Base { + initSpeed=-0.94565; ACE_barrelTwist=177.8; ACE_barrelLength=368.3; }; class CUP_arifle_M4A1; class CUP_srifle_Mk12SPR : CUP_arifle_M4A1 { + initSpeed=-0.98696; ACE_barrelTwist=177.8; ACE_barrelLength=457.2; }; class CUP_srifle_M24_des : Rifle_Base_F { + initSpeed=-1.0; ACE_barrelTwist=285.75; ACE_barrelLength=609.6; }; class CUP_lmg_M60A4 : Rifle_Long_Base_F { + initSpeed=-0.96639; ACE_barrelTwist=304.8; ACE_barrelLength=431.8; }; class CUP_srifle_M107_Base : Rifle_Long_Base_F { + initSpeed=-1.0; ACE_barrelTwist=381.0; ACE_barrelLength=736.6; }; class CUP_srifle_M110 : Rifle_Base_F { + initSpeed=-0.98558; ACE_barrelTwist=279.4; ACE_barrelLength=508.0; }; class CUP_lmg_M240 : Rifle_Long_Base_F { + initSpeed=-1.00600; ACE_barrelTwist=304.8; ACE_barrelLength=629.92; }; class CUP_lmg_M249_para : Rifle_Long_Base_F { + initSpeed=-0.96739; ACE_barrelTwist=177.8; ACE_barrelLength=414.02; }; class CUP_lmg_M249 : Rifle_Long_Base_F { + initSpeed=-0.98696; ACE_barrelTwist=177.8; ACE_barrelLength=457.2; }; @@ -183,153 +225,204 @@ class CfgWeapons ACE_barrelLength=469.9; }; class CUP_hgun_Makarov : Pistol_Base_F { + initSpeed=-1.0; ACE_barrelTwist=240.03; ACE_barrelLength=93.472; }; class CUP_hgun_MicroUzi : Pistol_Base_F { + initSpeed=-1.0; ACE_barrelTwist=248.92; ACE_barrelLength=127.0; }; class CUP_lmg_Mk48_Base : Rifle_Long_Base_F { + initSpeed=-0.98558; ACE_barrelTwist=304.8; ACE_barrelLength=501.65; }; class CUP_smg_MP5SD6 : Rifle_Base_F { + initSpeed=-0.9375; ACE_barrelTwist=254.0; ACE_barrelLength=144.78; }; class CUP_smg_MP5A5 : CUP_smg_MP5SD6 { + initSpeed=-1.0; ACE_barrelTwist=254.0; ACE_barrelLength=226.06; - }; + }; + class CUP_smg_EVO : Rifle_Base_F { + initSpeed=-0.975; + ACE_barrelTwist=254.0; + ACE_barrelLength=195.58; + }; class CUP_hgun_PB6P9 : Pistol_Base_F { + initSpeed=-1.0; ACE_barrelTwist=240.03; ACE_barrelLength=104.14; }; class CUP_hgun_Phantom : Pistol_Base_F { + initSpeed=-1.0; ACE_barrelTwist=246.38; ACE_barrelLength=119.38; }; class CUP_lmg_PKM : Rifle_Long_Base_F { + initSpeed=-1.0; ACE_barrelTwist=240.03; ACE_barrelLength=645.16; }; class CUP_lmg_Pecheneg : CUP_lmg_PKM { + initSpeed=-1.0; ACE_barrelTwist=240.03; ACE_barrelLength=657.86; }; class CUP_hgun_TaurusTracker455 : Pistol_Base_F { + initSpeed=-0.92; ACE_barrelTwist=304.8; ACE_barrelLength=101.6; }; class CUP_arifle_Sa58_base; class CUP_arifle_Sa58P : CUP_arifle_Sa58_base { + initSpeed=-1.0; ACE_barrelTwist=240.03; ACE_barrelLength=391.16; }; class CUP_arifle_Sa58V : CUP_arifle_Sa58P { + initSpeed=-1.0; + ACE_barrelTwist=240.03; + ACE_barrelLength=391.16; + }; + class CUP_arifle_Sa58RIS1 : CUP_arifle_Sa58_base { + initSpeed=-1.0; ACE_barrelTwist=240.03; ACE_barrelLength=391.16; }; class CUP_hgun_SA61 : Pistol_Base_F { + initSpeed=-1.0; ACE_barrelTwist=406.4; ACE_barrelLength=114.3; }; class CUP_sgun_Saiga12K: Rifle_Base_F { + initSpeed=-1.0; ACE_barrelTwist=0.0; ACE_twistDirection=0; ACE_barrelLength=429.26; }; class CUP_arifle_SCAR_L_Base; class CUP_arifle_Mk16_CQC : CUP_arifle_SCAR_L_Base { + initSpeed=-0.84783; ACE_barrelTwist=177.8; ACE_barrelLength=254.0; }; class CUP_arifle_Mk16_STD : CUP_arifle_SCAR_L_Base { + initSpeed=-0.93696; ACE_barrelTwist=177.8; ACE_barrelLength=355.6; }; class CUP_arifle_Mk16_SV : CUP_arifle_SCAR_L_Base { + initSpeed=-0.98696; ACE_barrelTwist=177.8; ACE_barrelLength=457.2; }; class CUP_arifle_Mk17_Base; - class CUP_arifle_Mk17_CQC : CUP_arifle_Mk17_Base { + class CUP_arifle_Mk17_CQC : CUP_arifle_Mk17_Base { + initSpeed=-0.90144; ACE_barrelTwist=304.8; ACE_barrelLength=330.2; }; - class CUP_arifle_Mk17_STD : CUP_arifle_Mk17_Base { + class CUP_arifle_Mk17_STD : CUP_arifle_Mk17_Base { + initSpeed=-0.96154; ACE_barrelTwist=304.8; ACE_barrelLength=406.4; }; - class CUP_arifle_Mk20 : CUP_arifle_Mk17_Base { + class CUP_arifle_Mk20 : CUP_arifle_Mk17_Base { + initSpeed=-0.98558; ACE_barrelTwist=304.8; ACE_barrelLength=508.0; }; class CUP_srifle_SVD : Rifle_Base_F { + initSpeed=-1.0; ACE_barrelTwist=238.76; ACE_barrelLength=619.76; }; class CUP_lmg_UK59 : Rifle_Long_Base_F { + initSpeed=-0.9625; ACE_barrelTwist=381.0; ACE_barrelLength=551.18; }; class MGun; class CUP_DSHKM_W : MGun { + initSpeed=-1.0; ACE_barrelTwist=381.0; ACE_barrelLength=1069.34; }; class CUP_KPVT_W : MGun { + initSpeed=-1.0; ACE_barrelTwist=454.914; ACE_barrelLength=1346.2; }; class CUP_M242_W; class CUP_KPVB_W : CUP_M242_W { + initSpeed=-1.0; ACE_barrelTwist=454.914; ACE_barrelLength=1346.2; }; class MGunCore; class CUP_M134 : MGunCore { + initSpeed=-1.0; ACE_barrelTwist=304.8; ACE_barrelLength=558.8; }; class CUP_M240_veh_W : Rifle_Long_Base_F { + initSpeed=-1.0; ACE_barrelTwist=304.8; ACE_barrelLength=629.92; }; class CUP_PKT_W : MGun { + initSpeed=-1.0; ACE_barrelTwist=240.03; ACE_barrelLength=722.122; }; class CUP_srifle_VSSVintorez : Rifle_Base_F { + initSpeed=-0.93334; ACE_barrelTwist=210.82; ACE_barrelLength=200.66; }; class CUP_arifle_XM8_Base : Rifle_Base_F { + initSpeed=-1.0; ACE_barrelTwist=177.8; ACE_barrelLength=317.5; }; class CUP_arifle_XM8_Carbine : CUP_arifle_XM8_Base { + initSpeed=-0.90760; ACE_barrelTwist=177.8; ACE_barrelLength=317.5; }; class CUP_arifle_xm8_sharpshooter : CUP_arifle_XM8_Base { + initSpeed=-1.0; ACE_barrelTwist=177.8; ACE_barrelLength=508.0; }; class CUP_arifle_xm8_SAW : CUP_arifle_XM8_Base { + initSpeed=-1.0; ACE_barrelTwist=177.8; ACE_barrelLength=508.0; }; class CUP_arifle_XM8_Compact : CUP_arifle_XM8_Base { + initSpeed=-0.81522; ACE_barrelTwist=177.8; ACE_barrelLength=228.6; }; class CUP_arifle_XM8_Railed_Base : Rifle_Base_F { + initSpeed=-0.90760; ACE_barrelTwist=177.8; ACE_barrelLength=317.5; }; class CUP_arifle_XM8_Carbine_FG : CUP_arifle_XM8_Base { + initSpeed=-0.90870; + ACE_barrelTwist=177.8; + ACE_barrelLength=317.5; + }; + class CUP_arifle_XM8_Carbine_GL : CUP_arifle_XM8_Base { + initSpeed=-0.90870; ACE_barrelTwist=177.8; ACE_barrelLength=317.5; }; From f61066f11a2255eb767dc68346c6a94431f5171f Mon Sep 17 00:00:00 2001 From: jonpas Date: Mon, 15 Jun 2015 19:55:30 +0200 Subject: [PATCH 054/118] Fixed checkPBO function not executing on server --- addons/common/XEH_postInit.sqf | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 7281e02849..3796a4fdc8 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -140,6 +140,15 @@ call FUNC(checkFiles); }, 0, [false]] call cba_fnc_addPerFrameHandler; +["SettingsInitialized", { + [ + GVAR(checkPBOsAction), + GVAR(checkPBOsCheckAll), + call compile GVAR(checkPBOsWhitelist) + ] call FUNC(checkPBOs) +}] call FUNC(addEventHandler); + + /***************************************************************/ /***************************************************************/ /***************************************************************/ @@ -308,14 +317,6 @@ if(isMultiplayer && { ACE_time > 0 || isNull player } ) then { }, 0, []] call cba_fnc_addPerFrameHandler; }; -["SettingsInitialized", { - [ - GVAR(checkPBOsAction), - GVAR(checkPBOsCheckAll), - call compile GVAR(checkPBOsWhitelist) - ] call FUNC(checkPBOs) -}] call FUNC(addEventHandler); - //Device Handler: GVAR(deviceKeyHandlingArray) = []; GVAR(deviceKeyCurrentIndex) = -1; From 04c06b51ed248e1ce8803fda41b9c4b4e257b315 Mon Sep 17 00:00:00 2001 From: jonpas Date: Mon, 15 Jun 2015 20:23:16 +0200 Subject: [PATCH 055/118] Fixed #1632 - CheckPBOs kick serverCommand changed to display 46 --- addons/common/XEH_preInit.sqf | 1 - addons/common/functions/fnc_adminKick.sqf | 8 ------- addons/common/functions/fnc_checkPBOs.sqf | 26 ++++++++++++----------- 3 files changed, 14 insertions(+), 21 deletions(-) delete mode 100644 addons/common/functions/fnc_adminKick.sqf diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 3a26d1e184..72e85e4b6b 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -11,7 +11,6 @@ PREP(addCanInteractWithCondition); PREP(addLineToDebugDraw); PREP(addSetting); PREP(addToInventory); -PREP(adminKick); PREP(ambientBrightness); PREP(applyForceWalkStatus); PREP(ASLToPosition); diff --git a/addons/common/functions/fnc_adminKick.sqf b/addons/common/functions/fnc_adminKick.sqf deleted file mode 100644 index bc9afd9fcb..0000000000 --- a/addons/common/functions/fnc_adminKick.sqf +++ /dev/null @@ -1,8 +0,0 @@ -// by commy2 -#include "script_component.hpp" - -private "_name"; - -_name = name (_this select 0); - -[_name, "{if (serverCommandAvailable '#kick') then {serverCommand format['#kick %1', _this]}}"] call FUNC(execRemoteFnc); diff --git a/addons/common/functions/fnc_checkPBOs.sqf b/addons/common/functions/fnc_checkPBOs.sqf index f239074b0b..4733f1a81f 100644 --- a/addons/common/functions/fnc_checkPBOs.sqf +++ b/addons/common/functions/fnc_checkPBOs.sqf @@ -67,24 +67,26 @@ if (!isServer) then { //[_error, "{systemChat _this}"] call FUNC(execRemoteFnc); diag_log text _error; - _text = composeText [lineBreak, parseText format ["%1", _text]]; + if (_mode < 2) then { + _text = composeText [lineBreak, parseText format ["%1", _text]]; - _rscLayer = "ACE_RscErrorHint" call BIS_fnc_rscLayer; - _rscLayer cutRsc ["ACE_RscErrorHint", "PLAIN", 0, true]; + _rscLayer = "ACE_RscErrorHint" call BIS_fnc_rscLayer; + _rscLayer cutRsc ["ACE_RscErrorHint", "PLAIN", 0, true]; - disableSerialization; - _ctrlHint = uiNamespace getVariable "ACE_ctrlErrorHint"; - _ctrlHint ctrlSetStructuredText _text; + disableSerialization; + _ctrlHint = uiNamespace getVariable "ACE_ctrlErrorHint"; + _ctrlHint ctrlSetStructuredText _text; - if (_mode == 0) then { - sleep 10; - _rscLayer cutFadeOut 0.2; + if (_mode == 0) then { + sleep 10; + _rscLayer cutFadeOut 0.2; + }; }; if (_mode == 2) then { - sleep 10; - waitUntil {alive player}; - [player] call FUNC(adminKick); + waitUntil {alive player}; // To be able to show list if using checkAll + _text = composeText [parseText format ["%1", _text]]; + ["[ACE] ERROR", _text, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage); }; }; }; From c027db2e0ea39e8b6433d402937cfcc0449cca14 Mon Sep 17 00:00:00 2001 From: AKALegman Date: Mon, 15 Jun 2015 20:55:49 +0100 Subject: [PATCH 056/118] final fixes --- addons/explosives/ACE_Settings.hpp | 2 ++ addons/explosives/functions/fnc_defuseExplosive.sqf | 3 +-- addons/explosives/stringtable.xml | 8 -------- 3 files changed, 3 insertions(+), 10 deletions(-) diff --git a/addons/explosives/ACE_Settings.hpp b/addons/explosives/ACE_Settings.hpp index c91c94464d..ef6a723d5b 100644 --- a/addons/explosives/ACE_Settings.hpp +++ b/addons/explosives/ACE_Settings.hpp @@ -8,6 +8,8 @@ class ACE_Settings { typeName = "BOOL"; }; class GVAR(ExplodeOnDefuse) { + displayName = CSTRING(ExplodeOnDefuse_DisplayName); + description = CSTRING(ExplodeOnDefuse_Description); value = 1; typeName = "BOOL"; }; diff --git a/addons/explosives/functions/fnc_defuseExplosive.sqf b/addons/explosives/functions/fnc_defuseExplosive.sqf index cb60e556e9..e0c7f7c85d 100644 --- a/addons/explosives/functions/fnc_defuseExplosive.sqf +++ b/addons/explosives/functions/fnc_defuseExplosive.sqf @@ -17,8 +17,7 @@ #include "script_component.hpp" EXPLODE_2_PVT(_this,_unit,_explosive); -_explode = random 1.0; -if (GVAR(ExplodeOnDefuse) && _explode < getNumber(ConfigFile >> "CfgAmmo" >> typeOf _explosive >> "ACE_explodeOnDefuse")) exitWith { +if (GVAR(ExplodeOnDefuse) && (random 1.0) < getNumber(ConfigFile >> "CfgAmmo" >> typeOf _explosive >> "ACE_explodeOnDefuse")) exitWith { [_unit, -1, [_explosive, 1], true] call FUNC(detonateExplosive); }; diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index 2098016530..abd6d83e26 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -542,17 +542,9 @@ Explode on defusal? - - - - Enable certain explosives to explode on defusal? Default: Yes - - - - From b6b203b57f156e41c5425b2e1ea76610137b51ae Mon Sep 17 00:00:00 2001 From: Glowbal Date: Mon, 15 Jun 2015 22:30:22 +0200 Subject: [PATCH 057/118] New build of the AB extension Might fix the avx issue --- ace_advanced_ballistics.dll | Bin 207360 -> 207360 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ace_advanced_ballistics.dll b/ace_advanced_ballistics.dll index 9d3708959ce7a8f0fb478fdcfab01c4284395771..8efaf80190af8d70fefa235a61d5921b3f2ba7c6 100644 GIT binary patch delta 139 zcmZp;!qaetXM+MGbChX)vohm$Wk$yElk8?GmL_RtmhFwF7`Hc`VlvhSNpIi&mFcA@ zuNgxMgC&CrLmGn_gXQ$K+|2rDLNB?Qi!rLKuvI&Y@>#bm4vlHR`kE7MC+ zUJC|Gh7^W0Ahuvgn!c8sSszX4B{y?CnouYYv$muugD!(HgCRo*5SuVq0ZDT(X|#PN I4|BRK0GBu;xc~qF From 196f3bd86bc63bb372865ed80c1e85cc0007fff7 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 15 Jun 2015 23:59:21 -0500 Subject: [PATCH 058/118] Add concertinawire to wirecutters --- addons/logistics_wirecutter/functions/fnc_isFence.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/logistics_wirecutter/functions/fnc_isFence.sqf b/addons/logistics_wirecutter/functions/fnc_isFence.sqf index 1ab97a67af..4c247b268a 100644 --- a/addons/logistics_wirecutter/functions/fnc_isFence.sqf +++ b/addons/logistics_wirecutter/functions/fnc_isFence.sqf @@ -17,7 +17,7 @@ #include "script_component.hpp" //find is case sensitive, so keep everything lowercase -#define FENCE_TYPENAMES ["land_net_fence_4m_f", "land_net_fence_8m_f", "land_net_fenced_8m_f", "land_new_wiredfence_5m_f", "land_new_wiredfence_10m_dam_f", "land_new_wiredfence_10m_f", "land_pipe_fence_4m_f", "land_pipe_fence_4mnolc_f", "land_sportground_fence_f", "land_wired_fence_4m_f", "land_wired_fence_4md_f", "land_wired_fence_8m_f", "land_wired_fence_8md_f", "land_razorwire_f"] +#define FENCE_TYPENAMES ["land_net_fence_4m_f", "land_net_fence_8m_f", "land_net_fenced_8m_f", "land_new_wiredfence_5m_f", "land_new_wiredfence_10m_dam_f", "land_new_wiredfence_10m_f", "land_pipe_fence_4m_f", "land_pipe_fence_4mnolc_f", "land_sportground_fence_f", "land_wired_fence_4m_f", "land_wired_fence_4md_f", "land_wired_fence_8m_f", "land_wired_fence_8md_f", "land_razorwire_f", "ace_concertinawire"] #define FENCE_P3DS ["mil_wiredfence_f.p3d","wall_indfnc_3.p3d", "wall_indfnc_9.p3d", "wall_indfnc_corner.p3d", "pletivo_wired.p3d", "wall_fen1_5.p3d"] From 154cf9d0322abe95b98527e3fa7ed6437b5a65df Mon Sep 17 00:00:00 2001 From: Glowbal Date: Tue, 16 Jun 2015 08:03:11 +0200 Subject: [PATCH 059/118] strcpy instead of sprintf --- .../AdvancedBallistics.cpp | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/extensions/advanced_ballistics/AdvancedBallistics.cpp b/extensions/advanced_ballistics/AdvancedBallistics.cpp index 8d990ec0d2..e2e0f0300d 100644 --- a/extensions/advanced_ballistics/AdvancedBallistics.cpp +++ b/extensions/advanced_ballistics/AdvancedBallistics.cpp @@ -236,9 +236,9 @@ extern "C" void __stdcall RVExtension(char *output, int outputSize, const char *function) { ZERO_OUTPUT(); - + std::stringstream outputStr; if (!strcmp(function, "version")) { - int n = sprintf(output, "%s", ACE_FULL_VERSION_STR); + strncpy(output, ACE_FULL_VERSION_STR, outputSize); EXTENSION_RETURN(); } @@ -258,7 +258,11 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function) velocity = strtod(strtok_s(NULL, ":", &next_token), NULL); retard = calculateRetard(dragModel, ballisticCoefficient, velocity); - int n = sprintf(output, "%f", retard); + // int n = sprintf(output, "%f", retard); + + outputStr << retard; + strncpy(output, outputStr.str().c_str(), outputSize); + EXTENSION_RETURN(); } else if (!strcmp(mode, "atmosphericCorrection")) { double ballisticCoefficient = 1.0; @@ -274,7 +278,9 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function) atmosphereModel = strtok_s(NULL, ":", &next_token); ballisticCoefficient = calculateAtmosphericCorrection(ballisticCoefficient, temperature, pressure, humidity, atmosphereModel); - int n = sprintf(output, "%f", ballisticCoefficient); + //int n = sprintf(output, "%f", ballisticCoefficient); + outputStr << ballisticCoefficient; + strncpy(output, outputStr.str().c_str(), outputSize); EXTENSION_RETURN(); } else if (!strcmp(mode, "new")) { unsigned int index = 0; @@ -369,7 +375,7 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function) bulletDatabase[index].frames = 0.0; bulletDatabase[index].randSeed = 0; - int n = sprintf(output, "%s", ""); + strncpy(output, "", outputSize); EXTENSION_RETURN(); } else if (!strcmp(mode, "simulate")) { // simulate:0:[-0.109985,542.529,-3.98301]:[3751.57,5332.23,214.252]:[0.598153,2.38829,0]:28.6:0:0.481542:0:215.16 @@ -586,8 +592,9 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function) velocityOffset[1] += (distribution(bulletDatabase[index].randGenerator) * 0.8 - 0.4) * coef; velocityOffset[2] += (distribution(bulletDatabase[index].randGenerator) * 0.8 - 0.4) * coef; }; - - int n = sprintf(output, "_bullet setVelocity (_bulletVelocity vectorAdd [%f, %f, %f]); _bullet setPosASL (_bulletPosition vectorAdd [%f, %f, %f]);", velocityOffset[0], velocityOffset[1], velocityOffset[2], positionOffset[0], positionOffset[1], positionOffset[2]); + + outputStr << "_bullet setVelocity (_bulletVelocity vectorAdd [" << velocityOffset[0] << "," << velocityOffset[1] << "," << velocityOffset[2] << "]); _bullet setPosASL (_bulletPosition vectorAdd [[" << positionOffset[0] << "," << positionOffset[1] << "," << positionOffset[2] << "]);"; + strncpy(output, outputStr.str().c_str(), outputSize); EXTENSION_RETURN(); } else if (!strcmp(mode, "set")) { int height = 0; @@ -602,7 +609,7 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function) map->gridBuildingNums.push_back(numObjects); map->gridSurfaceIsWater.push_back(surfaceIsWater); - int n = sprintf(output, "%s", ""); + strncpy(output, outputStr.str().c_str(), outputSize); EXTENSION_RETURN(); } else if (!strcmp(mode, "init")) { int mapSize = 0; @@ -617,7 +624,8 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function) map = &mapDatabase[worldName]; if (map->gridHeights.size() == gridCells) { - int n = sprintf(output, "%s", "Terrain already initialized"); + outputStr << "Terrain already initialized"; + strncpy(output, outputStr.str().c_str(), outputSize); EXTENSION_RETURN(); } @@ -630,10 +638,9 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function) map->gridBuildingNums.reserve(gridCells); map->gridSurfaceIsWater.reserve(gridCells); - int n = sprintf(output, "%s", ""); + strncpy(output, outputStr.str().c_str(), outputSize); EXTENSION_RETURN(); } - - int n = sprintf(output, "%s", ""); + strncpy(output, outputStr.str().c_str(), outputSize); EXTENSION_RETURN(); } From e701f35b7b8bff81364db672c44f1850adb2f72e Mon Sep 17 00:00:00 2001 From: Glowbal Date: Tue, 16 Jun 2015 08:04:05 +0200 Subject: [PATCH 060/118] Build extension with strcpy instead of sprintf --- ace_advanced_ballistics.dll | Bin 207360 -> 286720 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ace_advanced_ballistics.dll b/ace_advanced_ballistics.dll index 8efaf80190af8d70fefa235a61d5921b3f2ba7c6..4121ed6ea3b553f2f6bbd661de3934e70d9eedab 100644 GIT binary patch delta 138101 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π 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 U!h0plu@H!~4o(N2w!QHG0O|Gb;Q#;t delta 61363 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 OJj+D3O2q!d`~L^^R`^u_ From 6374a39edbca76cb66278d063783473b326254ff Mon Sep 17 00:00:00 2001 From: Glowbal Date: Tue, 16 Jun 2015 17:08:39 +0200 Subject: [PATCH 061/118] Fixed extra [ --- ace_advanced_ballistics.dll | Bin 286720 -> 286720 bytes .../AdvancedBallistics.cpp | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/ace_advanced_ballistics.dll b/ace_advanced_ballistics.dll index 4121ed6ea3b553f2f6bbd661de3934e70d9eedab..dd19f1d0d4acfe7f08f0803ca6e27b57cb65a8ba 100644 GIT binary patch delta 48 zcmZoTAlPs~aDxCN^G)l9W?{y5VMfO7!i-G*OBfm2lb14WPhQIWF&iYgJzS7wr5^x= CDG*Np delta 48 zcmZoTAlPs~aDxCN^OfE8&BBcB!iU=~d$=IWN Date: Tue, 16 Jun 2015 21:57:12 +0200 Subject: [PATCH 062/118] Fixes: https://github.com/acemod/ACE3/issues/1646 --- addons/medical/stringtable.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index a88ec4bcaf..6fa58bb759 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -3241,7 +3241,7 @@ Pain is only temporarily suppressed, not removed - Bandagieren entfernt Blutflecken + Schmerzen werden nur vorübergehend unterdrückt, nicht entfernt Ból jest tylko tymczasowo zwalczany, nie jest usuwany trwale Bolest je potlačena, ale jen dočastně El dolor se suprime solo temporalmente, no se elimina. From 47ef53201a79d56a89591f29c577569dfb1051f0 Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Tue, 16 Jun 2015 22:41:04 -0700 Subject: [PATCH 063/118] Set version number to 3.1.1 --- addons/main/script_mod.hpp | 2 +- mod.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/main/script_mod.hpp b/addons/main/script_mod.hpp index d0834792c6..9fd460f4cf 100644 --- a/addons/main/script_mod.hpp +++ b/addons/main/script_mod.hpp @@ -5,7 +5,7 @@ #define MAJOR 3 #define MINOR 1 -#define PATCHLVL 0 +#define PATCHLVL 1 #define BUILD 0 #define VERSION MAJOR.MINOR.PATCHLVL.BUILD diff --git a/mod.cpp b/mod.cpp index fafb7b060e..92fd724d68 100644 --- a/mod.cpp +++ b/mod.cpp @@ -2,7 +2,7 @@ name = "Advanced Combat Environment 3.1.0"; picture = "logo_ace3_ca.paa"; actionName = "GitHub"; action = "https://github.com/acemod/ACE3"; -description = "ACE3 - Version 3.1.0"; +description = "ACE3 - Version 3.1.1"; logo = "logo_ace3_ca.paa"; logoOver = "logo_ace3_ca.paa"; tooltip = "ACE3"; From 6ee0672ba2f2190561058b34f10831a6cb75a195 Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Wed, 17 Jun 2015 07:52:30 -0700 Subject: [PATCH 064/118] Update mod.cpp and readme to version 3.1.1 #1651 --- README.md | 6 +++--- mod.cpp | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 7e1ffe1672..bb1287ac50 100644 --- a/README.md +++ b/README.md @@ -4,11 +4,11 @@

- ACE version - - + ACE download diff --git a/mod.cpp b/mod.cpp index 92fd724d68..2326f445e2 100644 --- a/mod.cpp +++ b/mod.cpp @@ -1,4 +1,4 @@ -name = "Advanced Combat Environment 3.1.0"; +name = "Advanced Combat Environment 3.1.1"; picture = "logo_ace3_ca.paa"; actionName = "GitHub"; action = "https://github.com/acemod/ACE3"; From bab33bfbe2b1aaa7ff3a42396d41834be8d26e88 Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Wed, 17 Jun 2015 08:15:19 -0700 Subject: [PATCH 065/118] Bump the build number from 0 to 1 --- addons/main/script_mod.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/main/script_mod.hpp b/addons/main/script_mod.hpp index 9fd460f4cf..95e37afacd 100644 --- a/addons/main/script_mod.hpp +++ b/addons/main/script_mod.hpp @@ -6,7 +6,7 @@ #define MAJOR 3 #define MINOR 1 #define PATCHLVL 1 -#define BUILD 0 +#define BUILD 1 #define VERSION MAJOR.MINOR.PATCHLVL.BUILD #define VERSION_AR MAJOR,MINOR,PATCHLVL,BUILD From 59a3e1a451b72a5b91503b8499bd3f8ba646358c Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 17 Jun 2015 20:42:11 +0200 Subject: [PATCH 066/118] Automated version change in make.py --- tools/make.py | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/tools/make.py b/tools/make.py index 11c2bf25b5..1268c4ab7c 100644 --- a/tools/make.py +++ b/tools/make.py @@ -51,6 +51,8 @@ import traceback import time import re +from tempfile import mkstemp + if sys.platform == "win32": import winreg @@ -71,6 +73,7 @@ prefix = "ace" pbo_name_prefix = "ace_" signature_blacklist = ["ace_server.pbo"] importantFiles = ["mod.cpp", "README.md", "AUTHORS.txt", "LICENSE", "logo_ace3_ca.paa"] +versionFiles = ["README.md", "mod.cpp"] ############################################################################### # http://akiscode.com/articles/sha-1directoryhash.shtml @@ -577,6 +580,54 @@ def get_ace_version(): return ACE_VERSION +def replace_file(filePath, oldSubstring, newSubstring): + #Create temp file + fh, absPath = mkstemp() + with open(absPath,'w') as newFile: + with open(filePath) as oldFile: + for line in oldFile: + newFile.write(line.replace(oldSubstring, newSubstring)) + newFile.close() + #Remove original file + os.remove(filePath) + #Move new file + shutil.move(absPath, filePath) + + +def set_version(): + #newVersion = ACE_VERSION[:-2] + newVersion = "3.3.0" + + print_blue("\nChecking for obsolete version numbers...") + + # Change versions in files containing version + for i in versionFiles: + try: + # Get root and file path + root = os.path.abspath(os.path.join(os.getcwd(), os.pardir)) + filePath = os.path.join(root, i) + + # Save the file contents to a variable if the file exists + if os.path.isfile(filePath): + f = open(filePath, "r+") + fileText = f.read() + f.close() + + if fileText: + # Search and save version stamp + versionFound = re.search(r"(\b[0.-9]+\b\.[0\.-9]+\b\.[0-9]+)", fileText).group(1) + # Replace version stamp if any of the new version parts is higher than the one found + if versionFound[0] < newVersion [0] or versionFound[2] < newVersion[2] or versionFound[4] < newVersion[4]: + print_green("Changing version {} to {} => {}".format(versionFound, newVersion, filePath)) + replace_file(filePath, versionFound, newVersion) + + except WindowsError as e: + # Temporary file is still "in use" by Python, pass this exception + pass + except Exception as e: + print_error("set_version error: {}".format(e)) + + def get_private_keyname(commitID,module="main"): global pbo_name_prefix @@ -904,6 +955,8 @@ See the make.cfg file for additional build options. print_error("Cannot create release directory") raise + # Update version stamp in all files that contain it + set_version(); try: #Temporarily copy optionals_root for building. They will be removed later. From d210c3b009170bdeabff1221ec5d795589931bc7 Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 17 Jun 2015 21:21:35 +0200 Subject: [PATCH 067/118] Fixed make.py release zip archive --- tools/make.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/tools/make.py b/tools/make.py index 1268c4ab7c..8d18e9488e 100644 --- a/tools/make.py +++ b/tools/make.py @@ -595,6 +595,7 @@ def replace_file(filePath, oldSubstring, newSubstring): def set_version(): + # Cut build away from version stamp #newVersion = ACE_VERSION[:-2] newVersion = "3.3.0" @@ -602,11 +603,9 @@ def set_version(): # Change versions in files containing version for i in versionFiles: - try: - # Get root and file path - root = os.path.abspath(os.path.join(os.getcwd(), os.pardir)) - filePath = os.path.join(root, i) + filePath = os.path.join(module_root_parent, i) + try: # Save the file contents to a variable if the file exists if os.path.isfile(filePath): f = open(filePath, "r+") @@ -626,6 +625,9 @@ def set_version(): pass except Exception as e: print_error("set_version error: {}".format(e)) + return False + + return True def get_private_keyname(commitID,module="main"): @@ -700,6 +702,7 @@ def version_stamp_pboprefix(module,commitID): return True + ############################################################################### @@ -736,7 +739,7 @@ def main(argv): # Default behaviors test = False # Copy to Arma 3 directory? arg_modules = False # Only build modules on command line? - make_release = False # Make zip file from the release? + make_release = True # Make zip file from the release? release_version = 0 # Version of release use_pboproject = True # Default to pboProject build tool make_target = "DEFAULT" # Which section in make.cfg to use for the build @@ -1291,23 +1294,26 @@ See the make.cfg file for additional build options. # Delete the pboproject temp files if building a release. if make_release and build_tool == "pboproject": try: - shutil.rmtree(os.path.join(module_root, release_dir, project, "temp"), True) + shutil.rmtree(os.path.join(release_dir, project, "temp"), True) except: print_error("ERROR: Could not delete pboProject temp files.") # Make release if make_release: - print_blue("\nMaking release: {}-{}.zip".format(project,release_version)) + print_blue("\nMaking release: {}_{}.zip".format(prefix, ACE_VERSION[:-2])) try: # Delete all log files - for root, dirs, files in os.walk(os.path.join(module_root, release_dir, project, "addons")): + for root, dirs, files in os.walk(os.path.join(release_dir, project, "addons")): for currentFile in files: if currentFile.lower().endswith("log"): os.remove(os.path.join(root, currentFile)) # Create a zip with the contents of release/ in it - shutil.make_archive(project + "-" + release_version, "zip", os.path.join(module_root, release_dir)) + release_zip = shutil.make_archive("{}_{}".format(prefix, ACE_VERSION[:-2]), "zip", release_dir) + # Move release zip to release/ folder + shutil.copy(release_zip, release_dir) + os.remove(release_zip) except: raise print_error("Could not make release.") From b708c5dd4edfcceccd0347eeba7d7c291e6dcc5e Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 17 Jun 2015 22:05:16 +0200 Subject: [PATCH 068/118] Fixed zipping the zip, improved zip name definition --- tools/make.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/tools/make.py b/tools/make.py index 8d18e9488e..d7d3304836 100644 --- a/tools/make.py +++ b/tools/make.py @@ -1300,7 +1300,8 @@ See the make.cfg file for additional build options. # Make release if make_release: - print_blue("\nMaking release: {}_{}.zip".format(prefix, ACE_VERSION[:-2])) + release_name = "{}_{}".format(project.lstrip("@").lower(), ACE_VERSION[:-2]) + print_blue("\nMaking release: {}.zip".format(release_name)) try: # Delete all log files @@ -1309,9 +1310,12 @@ See the make.cfg file for additional build options. if currentFile.lower().endswith("log"): os.remove(os.path.join(root, currentFile)) - # Create a zip with the contents of release/ in it - release_zip = shutil.make_archive("{}_{}".format(prefix, ACE_VERSION[:-2]), "zip", release_dir) - # Move release zip to release/ folder + # Remove old zip from release folder to prevent zipping the zip + if os.path.isfile(os.path.join(release_dir, release_name + ".zip")): + os.remove(os.path.join(release_dir, release_name + ".zip")) + # Create a zip with the contents of release folder in it + release_zip = shutil.make_archive("{}".format(release_name), "zip", release_dir) + # Move release zip to release folder shutil.copy(release_zip, release_dir) os.remove(release_zip) except: From 083d34b62b6af32278a2f80fe8c918a110ae9411 Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 18 Jun 2015 00:21:56 +0200 Subject: [PATCH 069/118] Removed redundant GVAR --- addons/sitting/functions/fnc_moduleInit.sqf | 2 -- 1 file changed, 2 deletions(-) diff --git a/addons/sitting/functions/fnc_moduleInit.sqf b/addons/sitting/functions/fnc_moduleInit.sqf index 4dbe2c5f0a..25da5be347 100644 --- a/addons/sitting/functions/fnc_moduleInit.sqf +++ b/addons/sitting/functions/fnc_moduleInit.sqf @@ -16,8 +16,6 @@ PARAMS_3(_logic,_units,_activated); if !(_activated) exitWith {}; -GVAR(Module) = true; - [_logic, QGVAR(enable), "enable"] call EFUNC(common,readSettingFromModule); diag_log text "[ACE]: Sitting Module Initialized."; From 7207aef5c219e98ebb30236ac01c9e9711eaf292 Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Wed, 17 Jun 2015 19:24:44 -0700 Subject: [PATCH 070/118] Update proper file size for 3.1.1.zip --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bb1287ac50..72b1336b57 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ alt="ACE version"> - ACE download From bb877bc54ca701351b9cbb18c834f45c67eba9b9 Mon Sep 17 00:00:00 2001 From: ulteq Date: Thu, 18 Jun 2015 11:02:04 +0200 Subject: [PATCH 071/118] Added HuntIR and tactical ladder to ACE_Box_Misc --- addons/huntir/CfgVehicles.hpp | 10 ++++++++++ addons/tacticalladder/CfgVehicles.hpp | 18 ++++++++++++++---- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/addons/huntir/CfgVehicles.hpp b/addons/huntir/CfgVehicles.hpp index 9e24473243..27994afe96 100644 --- a/addons/huntir/CfgVehicles.hpp +++ b/addons/huntir/CfgVehicles.hpp @@ -56,4 +56,14 @@ class CfgVehicles { MACRO_ADDMAGAZINE(ACE_HuntIR_M203,20); }; }; + + class Box_NATO_Support_F; + class ACE_Box_Misc: Box_NATO_Support_F { + class TransportItems { + MACRO_ADDITEM(ACE_HuntIR_monitor,5); + }; + class TransportMagazines { + MACRO_ADDMAGAZINE(ACE_HuntIR_M203,20); + }; + }; }; diff --git a/addons/tacticalladder/CfgVehicles.hpp b/addons/tacticalladder/CfgVehicles.hpp index 07b48a8a3f..d180ccae40 100644 --- a/addons/tacticalladder/CfgVehicles.hpp +++ b/addons/tacticalladder/CfgVehicles.hpp @@ -15,15 +15,25 @@ class CfgVehicles { }; class Bag_Base; - class ACE_TacticalLadder_Pack: Bag_Base { - scope = 2; - displayName = CSTRING(DisplayName); + class ACE_TacticalLadder_Pack: Bag_Base { + scope = 2; + displayName = CSTRING(DisplayName); descriptionShort = ""; model = PATHTOF(data\ace_tacticalladder_pack.p3d); picture = PATHTOF(UI\ace_tactical_ladder_pack_ca.paa); maximumLoad = 0; mass = 50; - }; + }; + + class Box_NATO_Support_F; + class ACE_Box_Misc: Box_NATO_Support_F { + class TransportBackpacks { + class _xx_ACE_TacticalLadder_Pack { + backpack = "ACE_TacticalLadder_Pack"; + count = 3; + }; + }; + }; class House; class ACE_Tactical_Ladder: House { From 5d2905ca42619c0529a8cae479f41e5e0a28c5fc Mon Sep 17 00:00:00 2001 From: ulteq Date: Thu, 18 Jun 2015 11:56:58 +0200 Subject: [PATCH 072/118] Improved config caching --- addons/hearing/functions/fnc_firedNear.sqf | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/addons/hearing/functions/fnc_firedNear.sqf b/addons/hearing/functions/fnc_firedNear.sqf index 04c16f99d4..4164f81b33 100644 --- a/addons/hearing/functions/fnc_firedNear.sqf +++ b/addons/hearing/functions/fnc_firedNear.sqf @@ -58,14 +58,18 @@ if (count _weaponMagazines == 0) then { _weaponMagazines append _muzzleMagazines; }; } forEach _muzzles; + { + _ammoType = getText(configFile >> "CfgMagazines" >> _x >> "ammo"); + _weaponMagazines set [_forEachIndex, [_x, _ammoType]]; + } forEach _weaponMagazines; missionNamespace setVariable [format[QEGVAR(common,weaponMagazines_%1),_weapon], _weaponMagazines]; }; _magazine = ""; { - _ammoType = getText(configFile >> "CfgMagazines" >> _x >> "ammo"); + EXPLODE_2_PVT(_x,_magazineType,_ammoType) if (_ammoType == _ammo) exitWith { - _magazine = _x; + _magazine = _magazineType; }; } forEach _weaponMagazines; From 873f861dc8e90445e6986c40552209cd2c254724 Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 18 Jun 2015 21:19:01 +0200 Subject: [PATCH 073/118] Improved release command line argument handling, Revamped set_version_in_files to support both types of versions dynamically, Release archive using long version, old archive removal improved --- tools/make.cfg | 4 +++ tools/make.py | 67 ++++++++++++++++++++++++++++++++++---------------- 2 files changed, 50 insertions(+), 21 deletions(-) diff --git a/tools/make.cfg b/tools/make.cfg index 5e4460ffd9..5045099e26 100644 --- a/tools/make.cfg +++ b/tools/make.cfg @@ -63,6 +63,10 @@ release_dir = P:\z\ace\release # Default: None pbo_name_prefix = ace_ +# This string will be prefixed to release archive. +# Default: None +zipPrefix = ace3 + # Which build tool will be used? Options: pboproject, addonbuilder # Default: addonbuilder build_tool = pboproject diff --git a/tools/make.py b/tools/make.py index d7d3304836..9882c99954 100644 --- a/tools/make.py +++ b/tools/make.py @@ -594,13 +594,16 @@ def replace_file(filePath, oldSubstring, newSubstring): shutil.move(absPath, filePath) -def set_version(): - # Cut build away from version stamp - #newVersion = ACE_VERSION[:-2] - newVersion = "3.3.0" +def set_version_in_files(): + newVersion = ACE_VERSION # MAJOR.MINOR.PATCH.BUILD + newVersionShort = newVersion[:-2] # MAJOR.MINOR.PATCH print_blue("\nChecking for obsolete version numbers...") + # Regex patterns + pattern = re.compile(r"(\b[0\.-9]+\b\.[0\.-9]+\b\.[0\.-9]+\b\.[0\.-9]+)") # MAJOR.MINOR.PATCH.BUILD + patternShort = re.compile(r"(\b[0\.-9]+\b\.[0\.-9]+\b\.[0\.-9]+)") # MAJOR.MINOR.PATCH + # Change versions in files containing version for i in versionFiles: filePath = os.path.join(module_root_parent, i) @@ -613,18 +616,32 @@ def set_version(): f.close() if fileText: - # Search and save version stamp - versionFound = re.search(r"(\b[0.-9]+\b\.[0\.-9]+\b\.[0-9]+)", fileText).group(1) + # Search and save version stamp, search short if long not found + versionFound = re.findall(pattern, fileText) + if not versionFound: + versionFound = re.findall(patternShort, fileText) + # Replace version stamp if any of the new version parts is higher than the one found - if versionFound[0] < newVersion [0] or versionFound[2] < newVersion[2] or versionFound[4] < newVersion[4]: - print_green("Changing version {} to {} => {}".format(versionFound, newVersion, filePath)) - replace_file(filePath, versionFound, newVersion) + if versionFound: + # First item in the list findall returns + versionFound = versionFound[0] + + # Use the same version length as the one found + if len(versionFound) == len(newVersion): + newVersionUsed = newVersion + if len(versionFound) == len(newVersionShort): + newVersionUsed = newVersionShort + + # Print change and modify the file if changed + if versionFound != newVersionUsed: + print_green("Changing version {} to {} => {}".format(versionFound, newVersionUsed, filePath)) + replace_file(filePath, versionFound, newVersionUsed) except WindowsError as e: # Temporary file is still "in use" by Python, pass this exception pass except Exception as e: - print_error("set_version error: {}".format(e)) + print_error("set_version_in_files error: {}".format(e)) return False return True @@ -739,8 +756,6 @@ def main(argv): # Default behaviors test = False # Copy to Arma 3 directory? arg_modules = False # Only build modules on command line? - make_release = True # Make zip file from the release? - release_version = 0 # Version of release use_pboproject = True # Default to pboProject build tool make_target = "DEFAULT" # Which section in make.cfg to use for the build new_key = True # Make a new key and use it to sign? @@ -792,10 +807,13 @@ See the make.cfg file for additional build options. argv.remove("test") if "release" in argv: - make_release = True + make_release_zip = True release_version = argv[argv.index("release") + 1] argv.remove(release_version) argv.remove("release") + else: + make_release_zip = False + release_version = ACE_VERSION if "target" in argv: make_target = argv[argv.index("target") + 1] @@ -846,6 +864,9 @@ See the make.cfg file for additional build options. # Project prefix (folder path) prefix = cfg.get(make_target, "prefix", fallback="") + + # Release archive prefix + zipPrefix = cfg.get(make_target, "zipPrefix", fallback=project.lstrip("@").lower()) # Should we autodetect modules on a complete build? module_autodetect = cfg.getboolean(make_target, "module_autodetect", fallback=True) @@ -903,7 +924,7 @@ See the make.cfg file for additional build options. sys.exit(1) # See if we have been given specific modules to build from command line. - if len(argv) > 1 and not make_release: + if len(argv) > 1 and not make_release_zip: arg_modules = True modules = argv[1:] @@ -959,7 +980,7 @@ See the make.cfg file for additional build options. raise # Update version stamp in all files that contain it - set_version(); + set_version_in_files(); try: #Temporarily copy optionals_root for building. They will be removed later. @@ -1292,15 +1313,17 @@ See the make.cfg file for additional build options. f.write(cache_out) # Delete the pboproject temp files if building a release. - if make_release and build_tool == "pboproject": + if make_release_zip and build_tool == "pboproject": try: shutil.rmtree(os.path.join(release_dir, project, "temp"), True) except: print_error("ERROR: Could not delete pboProject temp files.") # Make release - if make_release: - release_name = "{}_{}".format(project.lstrip("@").lower(), ACE_VERSION[:-2]) + if make_release_zip: + if not release_version: + release_version = ACE_VERSION + release_name = "{}_{}".format(zipPrefix, release_version) print_blue("\nMaking release: {}.zip".format(release_name)) try: @@ -1310,9 +1333,11 @@ See the make.cfg file for additional build options. if currentFile.lower().endswith("log"): os.remove(os.path.join(root, currentFile)) - # Remove old zip from release folder to prevent zipping the zip - if os.path.isfile(os.path.join(release_dir, release_name + ".zip")): - os.remove(os.path.join(release_dir, release_name + ".zip")) + # Remove all zip files from release folder to prevent zipping the zip + for file in os.listdir(release_dir): + if file.endswith(".zip"): + os.remove(os.path.join(release_dir, file)) + # Create a zip with the contents of release folder in it release_zip = shutil.make_archive("{}".format(release_name), "zip", release_dir) # Move release zip to release folder From 4330caea9a90d63589885c5e9e22b8f85e56cedd Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 18 Jun 2015 21:30:06 +0200 Subject: [PATCH 074/118] Removed redundant check --- tools/make.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tools/make.py b/tools/make.py index 9882c99954..a25cd9ede2 100644 --- a/tools/make.py +++ b/tools/make.py @@ -1321,8 +1321,6 @@ See the make.cfg file for additional build options. # Make release if make_release_zip: - if not release_version: - release_version = ACE_VERSION release_name = "{}_{}".format(zipPrefix, release_version) print_blue("\nMaking release: {}.zip".format(release_name)) From d7717448fa349cc146c0515ad707a87bcc32fd07 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 18 Jun 2015 17:16:53 -0500 Subject: [PATCH 075/118] #1670 - Laser pointer - pass _brightness to drawFnc --- addons/laserpointer/functions/fnc_drawLaserpoint.sqf | 4 ++-- addons/laserpointer/functions/fnc_onDraw.sqf | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/laserpointer/functions/fnc_drawLaserpoint.sqf b/addons/laserpointer/functions/fnc_drawLaserpoint.sqf index 1b12c23584..e69fc5e271 100644 --- a/addons/laserpointer/functions/fnc_drawLaserpoint.sqf +++ b/addons/laserpointer/functions/fnc_drawLaserpoint.sqf @@ -1,7 +1,7 @@ // by commy2 and esteldunedain #include "script_component.hpp" -private ["_brightness", "_p0", "_p1", "_p0Pos", "_offV1", "_offV2", "_offV3", "_camPos", "_intermediatePos", "_iteration", "_light", "_line", "_pL", "_pL2", "_pX", "_size", "_units", "_fnc_getDistanceToTerrain", "_fnc_doesIntersectWithMan"]; +private ["_p0", "_p1", "_p0Pos", "_offV1", "_offV2", "_offV3", "_camPos", "_intermediatePos", "_iteration", "_light", "_line", "_pL", "_pL2", "_pX", "_size", "_units", "_fnc_getDistanceToTerrain", "_fnc_doesIntersectWithMan"]; // init object /*if (isNil QGVAR(laserdot)) then { @@ -16,7 +16,7 @@ private ["_brightness", "_p0", "_p1", "_p0Pos", "_offV1", "_offV2", "_offV3", "_ GVAR(laserdot) = _light; };*/ -EXPLODE_3_PVT(_this,_unit,_range,_isGreen); +EXPLODE_4_PVT(_this,_unit,_range,_isGreen,_brightness); _p0Pos = _unit modelToWorldVisual (_unit selectionPosition "righthand"); diff --git a/addons/laserpointer/functions/fnc_onDraw.sqf b/addons/laserpointer/functions/fnc_onDraw.sqf index 5e5faf65c4..09663f9ecf 100644 --- a/addons/laserpointer/functions/fnc_onDraw.sqf +++ b/addons/laserpointer/functions/fnc_onDraw.sqf @@ -35,7 +35,7 @@ _brightness = 2 - call EFUNC(common,ambientBrightness); }; if (_laserID > 0 && {_x isFlashlightOn _weapon}) then { - [_x, 50, _laserID == 2 || _isIR] call FUNC(drawLaserpoint); + [_x, 50, (_laserID == 2 || _isIR), _brightness] call FUNC(drawLaserpoint); }; }; From 394bcafc4ac4444897b0ca73cffcbd2fc2a79ffe Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Thu, 18 Jun 2015 15:49:27 -0700 Subject: [PATCH 076/118] Set version to 3.1.2 --- addons/main/script_mod.hpp | 4 ++-- mod.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/main/script_mod.hpp b/addons/main/script_mod.hpp index 95e37afacd..b94cde4b31 100644 --- a/addons/main/script_mod.hpp +++ b/addons/main/script_mod.hpp @@ -5,8 +5,8 @@ #define MAJOR 3 #define MINOR 1 -#define PATCHLVL 1 -#define BUILD 1 +#define PATCHLVL 2 +#define BUILD 0 #define VERSION MAJOR.MINOR.PATCHLVL.BUILD #define VERSION_AR MAJOR,MINOR,PATCHLVL,BUILD diff --git a/mod.cpp b/mod.cpp index 2326f445e2..c078328e53 100644 --- a/mod.cpp +++ b/mod.cpp @@ -1,8 +1,8 @@ -name = "Advanced Combat Environment 3.1.1"; +name = "Advanced Combat Environment 3.1.2"; picture = "logo_ace3_ca.paa"; actionName = "GitHub"; action = "https://github.com/acemod/ACE3"; -description = "ACE3 - Version 3.1.1"; +description = "ACE3 - Version 3.1.2"; logo = "logo_ace3_ca.paa"; logoOver = "logo_ace3_ca.paa"; tooltip = "ACE3"; From e4701b7974437db6bfb86f2c0c5fb23b2a90e660 Mon Sep 17 00:00:00 2001 From: ulteq Date: Fri, 19 Jun 2015 01:03:42 +0200 Subject: [PATCH 077/118] Removed obsolete HLC compat pbos: toadie2k, thanks for transferring those configuration values. --- optionals/compat_hlc_ar15/$PBOPREFIX$ | 1 - optionals/compat_hlc_ar15/CfgWeapons.hpp | 65 ---- optionals/compat_hlc_ar15/config.cpp | 14 - .../compat_hlc_ar15/script_component.hpp | 5 - optionals/compat_hlc_wp_mp5/$PBOPREFIX$ | 1 - optionals/compat_hlc_wp_mp5/CfgWeapons.hpp | 60 ---- optionals/compat_hlc_wp_mp5/config.cpp | 14 - .../compat_hlc_wp_mp5/script_component.hpp | 5 - optionals/compat_hlcmods_ak/$PBOPREFIX$ | 1 - optionals/compat_hlcmods_ak/CfgWeapons.hpp | 76 ----- optionals/compat_hlcmods_ak/config.cpp | 14 - .../compat_hlcmods_ak/script_component.hpp | 5 - optionals/compat_hlcmods_aug/$PBOPREFIX$ | 1 - optionals/compat_hlcmods_aug/CfgWeapons.hpp | 51 --- optionals/compat_hlcmods_aug/config.cpp | 14 - .../compat_hlcmods_aug/script_component.hpp | 5 - optionals/compat_hlcmods_core/$PBOPREFIX$ | 1 - optionals/compat_hlcmods_core/CfgAmmo.hpp | 316 ------------------ optionals/compat_hlcmods_core/config.cpp | 14 - .../compat_hlcmods_core/script_component.hpp | 5 - optionals/compat_hlcmods_fal/$PBOPREFIX$ | 1 - optionals/compat_hlcmods_fal/CfgWeapons.hpp | 50 --- optionals/compat_hlcmods_fal/config.cpp | 14 - .../compat_hlcmods_fal/script_component.hpp | 5 - optionals/compat_hlcmods_g3/$PBOPREFIX$ | 1 - optionals/compat_hlcmods_g3/CfgWeapons.hpp | 45 --- optionals/compat_hlcmods_g3/config.cpp | 14 - .../compat_hlcmods_g3/script_component.hpp | 5 - optionals/compat_hlcmods_m14/$PBOPREFIX$ | 1 - optionals/compat_hlcmods_m14/CfgWeapons.hpp | 16 - optionals/compat_hlcmods_m14/config.cpp | 14 - .../compat_hlcmods_m14/script_component.hpp | 5 - optionals/compat_hlcmods_m60e4/$PBOPREFIX$ | 1 - optionals/compat_hlcmods_m60e4/CfgWeapons.hpp | 15 - optionals/compat_hlcmods_m60e4/config.cpp | 14 - .../compat_hlcmods_m60e4/script_component.hpp | 5 - 36 files changed, 874 deletions(-) delete mode 100644 optionals/compat_hlc_ar15/$PBOPREFIX$ delete mode 100644 optionals/compat_hlc_ar15/CfgWeapons.hpp delete mode 100644 optionals/compat_hlc_ar15/config.cpp delete mode 100644 optionals/compat_hlc_ar15/script_component.hpp delete mode 100644 optionals/compat_hlc_wp_mp5/$PBOPREFIX$ delete mode 100644 optionals/compat_hlc_wp_mp5/CfgWeapons.hpp delete mode 100644 optionals/compat_hlc_wp_mp5/config.cpp delete mode 100644 optionals/compat_hlc_wp_mp5/script_component.hpp delete mode 100644 optionals/compat_hlcmods_ak/$PBOPREFIX$ delete mode 100644 optionals/compat_hlcmods_ak/CfgWeapons.hpp delete mode 100644 optionals/compat_hlcmods_ak/config.cpp delete mode 100644 optionals/compat_hlcmods_ak/script_component.hpp delete mode 100644 optionals/compat_hlcmods_aug/$PBOPREFIX$ delete mode 100644 optionals/compat_hlcmods_aug/CfgWeapons.hpp delete mode 100644 optionals/compat_hlcmods_aug/config.cpp delete mode 100644 optionals/compat_hlcmods_aug/script_component.hpp delete mode 100644 optionals/compat_hlcmods_core/$PBOPREFIX$ delete mode 100644 optionals/compat_hlcmods_core/CfgAmmo.hpp delete mode 100644 optionals/compat_hlcmods_core/config.cpp delete mode 100644 optionals/compat_hlcmods_core/script_component.hpp delete mode 100644 optionals/compat_hlcmods_fal/$PBOPREFIX$ delete mode 100644 optionals/compat_hlcmods_fal/CfgWeapons.hpp delete mode 100644 optionals/compat_hlcmods_fal/config.cpp delete mode 100644 optionals/compat_hlcmods_fal/script_component.hpp delete mode 100644 optionals/compat_hlcmods_g3/$PBOPREFIX$ delete mode 100644 optionals/compat_hlcmods_g3/CfgWeapons.hpp delete mode 100644 optionals/compat_hlcmods_g3/config.cpp delete mode 100644 optionals/compat_hlcmods_g3/script_component.hpp delete mode 100644 optionals/compat_hlcmods_m14/$PBOPREFIX$ delete mode 100644 optionals/compat_hlcmods_m14/CfgWeapons.hpp delete mode 100644 optionals/compat_hlcmods_m14/config.cpp delete mode 100644 optionals/compat_hlcmods_m14/script_component.hpp delete mode 100644 optionals/compat_hlcmods_m60e4/$PBOPREFIX$ delete mode 100644 optionals/compat_hlcmods_m60e4/CfgWeapons.hpp delete mode 100644 optionals/compat_hlcmods_m60e4/config.cpp delete mode 100644 optionals/compat_hlcmods_m60e4/script_component.hpp diff --git a/optionals/compat_hlc_ar15/$PBOPREFIX$ b/optionals/compat_hlc_ar15/$PBOPREFIX$ deleted file mode 100644 index 1151a9959c..0000000000 --- a/optionals/compat_hlc_ar15/$PBOPREFIX$ +++ /dev/null @@ -1 +0,0 @@ -z\ace\addons\compat_hlc_ar15 \ No newline at end of file diff --git a/optionals/compat_hlc_ar15/CfgWeapons.hpp b/optionals/compat_hlc_ar15/CfgWeapons.hpp deleted file mode 100644 index 53928f25d4..0000000000 --- a/optionals/compat_hlc_ar15/CfgWeapons.hpp +++ /dev/null @@ -1,65 +0,0 @@ -class CfgWeapons -{ - class Rifle; - class Rifle_Base_F; - class hlc_ar15_base: Rifle_Base_F - { - ACE_barrelTwist=177.8; - ACE_barrelLength=292.1; - }; - class hlc_rifle_RU556: hlc_ar15_base - { - ACE_barrelTwist=177.8; - ACE_barrelLength=261.62; - }; - class hlc_rifle_RU5562: hlc_rifle_RU556 - { - ACE_barrelTwist=177.8; - ACE_barrelLength=261.62; - }; - class hlc_rifle_CQBR: hlc_rifle_RU556 - { - ACE_barrelTwist=177.8; - ACE_barrelLength=254.0; - }; - class hlc_rifle_M4: hlc_rifle_RU556 - { - ACE_barrelTwist=177.8; - ACE_barrelLength=368.3; - }; - class hlc_rifle_bcmjack: hlc_ar15_base - { - ACE_barrelTwist=177.8; - ACE_barrelLength=368.3; - }; - class hlc_rifle_Colt727: hlc_ar15_base - { - ACE_barrelTwist=177.8; - ACE_barrelLength=368.3; - }; - class hlc_rifle_Colt727_GL: hlc_rifle_Colt727 - { - ACE_barrelTwist=177.8; - ACE_barrelLength=368.3; - }; - class hlc_rifle_Bushmaster300: hlc_rifle_Colt727 - { - ACE_barrelTwist=203.2; - ACE_barrelLength=368.3; - }; - class hlc_rifle_vendimus: hlc_rifle_Bushmaster300 - { - ACE_barrelTwist=203.2; - ACE_barrelLength=406.4; - }; - class hlc_rifle_SAMR: hlc_rifle_RU556 - { - ACE_barrelTwist=228.6; - ACE_barrelLength=406.4; - }; - class hlc_rifle_honeybase: hlc_rifle_RU556 - { - ACE_barrelTwist=203.2; - ACE_barrelLength=152.4; - }; -}; \ No newline at end of file diff --git a/optionals/compat_hlc_ar15/config.cpp b/optionals/compat_hlc_ar15/config.cpp deleted file mode 100644 index 51e42dc040..0000000000 --- a/optionals/compat_hlc_ar15/config.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include "script_component.hpp" - -class CfgPatches { - class ADDON { - units[] = {}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"hlcweapons_ar15"}; - author[]={"Ruthberg"}; - VERSION_CONFIG; - }; -}; - -#include "CfgWeapons.hpp" diff --git a/optionals/compat_hlc_ar15/script_component.hpp b/optionals/compat_hlc_ar15/script_component.hpp deleted file mode 100644 index 3fb38b0477..0000000000 --- a/optionals/compat_hlc_ar15/script_component.hpp +++ /dev/null @@ -1,5 +0,0 @@ -#define COMPONENT hlcweapons_ar15_comp - -#include "\z\ace\addons\main\script_mod.hpp" - -#include "\z\ace\addons\main\script_macros.hpp" diff --git a/optionals/compat_hlc_wp_mp5/$PBOPREFIX$ b/optionals/compat_hlc_wp_mp5/$PBOPREFIX$ deleted file mode 100644 index 397f5e9e6b..0000000000 --- a/optionals/compat_hlc_wp_mp5/$PBOPREFIX$ +++ /dev/null @@ -1 +0,0 @@ -z\ace\addons\compat_hlc_wp_mp5 \ No newline at end of file diff --git a/optionals/compat_hlc_wp_mp5/CfgWeapons.hpp b/optionals/compat_hlc_wp_mp5/CfgWeapons.hpp deleted file mode 100644 index b9cc94818e..0000000000 --- a/optionals/compat_hlc_wp_mp5/CfgWeapons.hpp +++ /dev/null @@ -1,60 +0,0 @@ - -class CfgWeapons -{ - class Rifle_Base_F; - class hlc_MP5_base: Rifle_Base_F - { - ACE_barrelTwist=254.0; - ACE_barrelLength=228.6; - }; - class hlc_smg_mp5k_PDW: hlc_MP5_base - { - ACE_barrelTwist=254.0; - ACE_barrelLength=114.3; - }; - class hlc_smg_mp5k: hlc_smg_mp5k_PDW - { - ACE_barrelTwist=254.0; - ACE_barrelLength=114.3; - }; - class hlc_smg_mp5a2: hlc_MP5_base - { - ACE_barrelTwist=254.0; - ACE_barrelLength=228.6; - }; - class hlc_smg_MP5N: hlc_MP5_base - { - ACE_barrelTwist=254.0; - ACE_barrelLength=228.6; - }; - class hlc_smg_9mmar: hlc_smg_MP5N - { - ACE_barrelTwist=254.0; - ACE_barrelLength=228.6; - }; - class hlc_smg_mp5a4: hlc_MP5_base - { - ACE_barrelTwist=254.0; - ACE_barrelLength=228.6; - }; - class hlc_smg_mp510: hlc_smg_MP5N - { - ACE_barrelTwist=381.0; - ACE_barrelLength=228.6; - }; - class hlc_smg_mp5sd5: hlc_MP5_base - { - ACE_barrelTwist=254.0; - ACE_barrelLength=228.6; - }; - class hlc_smg_mp5a3: hlc_smg_mp5a2 - { - ACE_barrelTwist=254.0; - ACE_barrelLength=228.6; - }; - class hlc_smg_mp5sd6: hlc_smg_mp5sd5 - { - ACE_barrelTwist=254.0; - ACE_barrelLength=228.6; - }; -}; diff --git a/optionals/compat_hlc_wp_mp5/config.cpp b/optionals/compat_hlc_wp_mp5/config.cpp deleted file mode 100644 index 1f4fe78db4..0000000000 --- a/optionals/compat_hlc_wp_mp5/config.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include "script_component.hpp" - -class CfgPatches { - class ADDON { - units[] = {}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"hlcweapons_mp5"}; - author[]={"Ruthberg"}; - VERSION_CONFIG; - }; -}; - -#include "CfgWeapons.hpp" diff --git a/optionals/compat_hlc_wp_mp5/script_component.hpp b/optionals/compat_hlc_wp_mp5/script_component.hpp deleted file mode 100644 index 6b19e4912b..0000000000 --- a/optionals/compat_hlc_wp_mp5/script_component.hpp +++ /dev/null @@ -1,5 +0,0 @@ -#define COMPONENT hlcweapons_mp5_comp - -#include "\z\ace\addons\main\script_mod.hpp" - -#include "\z\ace\addons\main\script_macros.hpp" diff --git a/optionals/compat_hlcmods_ak/$PBOPREFIX$ b/optionals/compat_hlcmods_ak/$PBOPREFIX$ deleted file mode 100644 index d1d239c6d5..0000000000 --- a/optionals/compat_hlcmods_ak/$PBOPREFIX$ +++ /dev/null @@ -1 +0,0 @@ -z\ace\addons\compat_hlcmods_ak \ No newline at end of file diff --git a/optionals/compat_hlcmods_ak/CfgWeapons.hpp b/optionals/compat_hlcmods_ak/CfgWeapons.hpp deleted file mode 100644 index 5f1c838e41..0000000000 --- a/optionals/compat_hlcmods_ak/CfgWeapons.hpp +++ /dev/null @@ -1,76 +0,0 @@ -class CfgWeapons -{ - class optic_dms; - class hlc_ak_base; - class hlc_rifle_ak12; - class InventoryOpticsItem_Base_F; - class hlc_rifle_ak74: hlc_ak_base - { - ACE_barrelTwist=199.898; - ACE_barrelLength=414.02; - }; - class hlc_rifle_aku12: hlc_rifle_ak12 - { - ACE_barrelTwist=160.02; - ACE_barrelLength=210.82; - }; - class hlc_rifle_RPK12: hlc_rifle_ak12 - { - ACE_barrelLength=589.28; - }; - class hlc_rifle_aks74u: hlc_rifle_ak74 - { - ACE_barrelTwist=160.02; - ACE_barrelLength=210.82; - }; - class hlc_rifle_ak47: hlc_rifle_ak74 - { - ACE_barrelTwist=240.03; - ACE_barrelLength=414.02; - }; - class hlc_rifle_akm: hlc_rifle_ak47 - { - ACE_barrelTwist=199.898; - ACE_barrelLength=414.02; - }; - class hlc_rifle_rpk: hlc_rifle_ak47 - { - ACE_barrelTwist=240.03; - ACE_barrelLength=589.28; - }; - class hlc_rifle_rpk74n: hlc_rifle_rpk - { - ACE_barrelTwist=240.03; - ACE_barrelLength=589.28; - }; - class hlc_rifle_aek971: hlc_rifle_ak74 - { - ACE_barrelTwist=241.3; - ACE_barrelLength=431.8; - }; - class hlc_rifle_saiga12k: hlc_rifle_ak47 - { - ACE_barrelTwist=0.0; - ACE_twistDirection=0; - ACE_barrelLength=429.26; - }; - - class HLC_Optic_PSO1 : optic_dms { - ACE_ScopeAdjust_Vertical[] = { 0, 0 }; - ACE_ScopeAdjust_Horizontal[] = { -10, 10 }; - ACE_ScopeAdjust_VerticalIncrement = 0.0; - ACE_ScopeAdjust_HorizontalIncrement = 0.5; - class ItemInfo : InventoryOpticsItem_Base_F { - class OpticsModes { - class Snip { - discreteDistance[]={100, 200, 300, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000}; - discreteDistanceInitIndex=3; - }; - }; - }; - }; - class HLC_Optic_1p29 : HLC_Optic_PSO1 { - ACE_ScopeAdjust_Vertical[] = {}; - ACE_ScopeAdjust_Horizontal[] = {}; - }; -}; \ No newline at end of file diff --git a/optionals/compat_hlcmods_ak/config.cpp b/optionals/compat_hlcmods_ak/config.cpp deleted file mode 100644 index 7c8cdba2ba..0000000000 --- a/optionals/compat_hlcmods_ak/config.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include "script_component.hpp" - -class CfgPatches { - class ADDON { - units[] = {}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"hlcweapons_aks"}; - author[]={"Ruthberg"}; - VERSION_CONFIG; - }; -}; - -#include "CfgWeapons.hpp" diff --git a/optionals/compat_hlcmods_ak/script_component.hpp b/optionals/compat_hlcmods_ak/script_component.hpp deleted file mode 100644 index a970229846..0000000000 --- a/optionals/compat_hlcmods_ak/script_component.hpp +++ /dev/null @@ -1,5 +0,0 @@ -#define COMPONENT hlcweapons_aks_comp - -#include "\z\ace\addons\main\script_mod.hpp" - -#include "\z\ace\addons\main\script_macros.hpp" diff --git a/optionals/compat_hlcmods_aug/$PBOPREFIX$ b/optionals/compat_hlcmods_aug/$PBOPREFIX$ deleted file mode 100644 index 6b917cc98c..0000000000 --- a/optionals/compat_hlcmods_aug/$PBOPREFIX$ +++ /dev/null @@ -1 +0,0 @@ -z\ace\addons\compat_hlcmods_aug \ No newline at end of file diff --git a/optionals/compat_hlcmods_aug/CfgWeapons.hpp b/optionals/compat_hlcmods_aug/CfgWeapons.hpp deleted file mode 100644 index 4666605348..0000000000 --- a/optionals/compat_hlcmods_aug/CfgWeapons.hpp +++ /dev/null @@ -1,51 +0,0 @@ - -class CfgWeapons -{ - class Rifle_Base_F; - class hlc_aug_base; - class hlc_rifle_aug: hlc_aug_base - { - ACE_barrelTwist=228.6; - ACE_barrelLength=508.0; - }; - class hlc_rifle_auga1carb: hlc_rifle_aug - { - ACE_barrelTwist=228.6; - ACE_barrelLength=406.4; - }; - class hlc_rifle_aughbar: hlc_rifle_aug - { - ACE_barrelTwist=228.6; - ACE_barrelLength=609.6; - }; - class hlc_rifle_augpara: hlc_rifle_aug - { - ACE_barrelTwist=228.6; - ACE_barrelLength=419.1; - }; - class hlc_rifle_auga2: hlc_rifle_aug - { - ACE_barrelTwist=228.6; - ACE_barrelLength=508.0; - }; - class hlc_rifle_auga2para: hlc_rifle_auga2 - { - ACE_barrelTwist=228.6; - ACE_barrelLength=419.1; - }; - class hlc_rifle_auga2carb: hlc_rifle_auga2 - { - ACE_barrelTwist=228.6; - ACE_barrelLength=457.2; - }; - class hlc_rifle_auga2lsw: hlc_rifle_aughbar - { - ACE_barrelTwist=228.6; - ACE_barrelLength=609.6; - }; - class hlc_rifle_auga3: hlc_rifle_aug - { - ACE_barrelTwist=228.6; - ACE_barrelLength=457.2; - }; -}; \ No newline at end of file diff --git a/optionals/compat_hlcmods_aug/config.cpp b/optionals/compat_hlcmods_aug/config.cpp deleted file mode 100644 index 06192a6ffd..0000000000 --- a/optionals/compat_hlcmods_aug/config.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include "script_component.hpp" - -class CfgPatches { - class ADDON { - units[] = {}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"hlcweapons_AUG"}; - author[]={"Ruthberg"}; - VERSION_CONFIG; - }; -}; - -#include "CfgWeapons.hpp" diff --git a/optionals/compat_hlcmods_aug/script_component.hpp b/optionals/compat_hlcmods_aug/script_component.hpp deleted file mode 100644 index d5a6712b6b..0000000000 --- a/optionals/compat_hlcmods_aug/script_component.hpp +++ /dev/null @@ -1,5 +0,0 @@ -#define COMPONENT hlcweapons_AUG_comp - -#include "\z\ace\addons\main\script_mod.hpp" - -#include "\z\ace\addons\main\script_macros.hpp" diff --git a/optionals/compat_hlcmods_core/$PBOPREFIX$ b/optionals/compat_hlcmods_core/$PBOPREFIX$ deleted file mode 100644 index 9c9e9061e1..0000000000 --- a/optionals/compat_hlcmods_core/$PBOPREFIX$ +++ /dev/null @@ -1 +0,0 @@ -z\ace\addons\compat_hlcmods_core \ No newline at end of file diff --git a/optionals/compat_hlcmods_core/CfgAmmo.hpp b/optionals/compat_hlcmods_core/CfgAmmo.hpp deleted file mode 100644 index afe3f03973..0000000000 --- a/optionals/compat_hlcmods_core/CfgAmmo.hpp +++ /dev/null @@ -1,316 +0,0 @@ -class CfgAmmo -{ - class B_762x51_Ball; - class B_556x45_Ball; - class B_127x99_Ball; - class B_127x99_Ball_Tracer_Red; - class HLC_762x51_tracer; - class HLC_762x51_ball; - class HLC_556NATO_EPR: B_556x45_Ball - { - ACE_caliber=5.69; - ACE_bulletLength=23.012; - ACE_bulletMass=4.0176; - ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; - ACE_ballisticCoefficients[]={0.151}; - ACE_velocityBoundaries[]={}; - ACE_standardAtmosphere="ASM"; - ACE_dragModel=7; - ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900}; - ACE_barrelLengths[]={210.82, 238.76, 269.24, 299.72, 330.2, 360.68, 391.16, 419.1, 449.58, 480.06, 508.0, 609.6}; - }; - class HLC_556NATO_SOST: B_556x45_Ball - { - ACE_caliber=5.69; - ACE_bulletLength=23.012; - ACE_bulletMass=4.0176; - ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; - ACE_ballisticCoefficients[]={0.307}; - ACE_velocityBoundaries[]={}; - ACE_standardAtmosphere="ASM"; - ACE_dragModel=1; - ACE_muzzleVelocities[]={780, 886, 950}; - ACE_barrelLengths[]={254.0, 393.7, 508.0}; - }; - class HLC_556NATO_SPR: B_556x45_Ball - { - ACE_caliber=5.69; - ACE_bulletLength=23.012; - ACE_bulletMass=4.9896; - ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; - ACE_ballisticCoefficients[]={0.361}; - ACE_velocityBoundaries[]={}; - ACE_standardAtmosphere="ASM"; - ACE_dragModel=1; - ACE_muzzleVelocities[]={624, 816, 832, 838}; - ACE_barrelLengths[]={190.5, 368.3, 457.2, 508.0}; - }; - class HLC_300Blackout_Ball: B_556x45_Ball - { - ACE_caliber=7.823; - ACE_bulletLength=28.397; - ACE_bulletMass=9.5256; - ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; - ACE_ballisticCoefficients[]={0.398}; - ACE_velocityBoundaries[]={}; - ACE_standardAtmosphere="ICAO"; - ACE_dragModel=1; - ACE_muzzleVelocities[]={559, 609, 625}; - ACE_barrelLengths[]={152.4, 406.4, 508.0}; - }; - class HLC_300Blackout_SMK: HLC_300Blackout_Ball - { - ACE_caliber=7.823; - ACE_bulletLength=37.821; - ACE_bulletMass=14.256; - ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; - ACE_ballisticCoefficients[]={0.608}; - ACE_velocityBoundaries[]={}; - ACE_standardAtmosphere="ICAO"; - ACE_dragModel=1; - ACE_muzzleVelocities[]={300, 320, 340}; - ACE_barrelLengths[]={228.6, 406.4, 508.0}; - }; - class HLC_762x39_Ball: HLC_300Blackout_Ball - { - ACE_caliber=7.823; - ACE_bulletLength=28.956; - ACE_bulletMass=7.9704; - ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; - ACE_ballisticCoefficients[]={0.275}; - ACE_velocityBoundaries[]={}; - ACE_standardAtmosphere="ICAO"; - ACE_dragModel=1; - ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={254.0, 414.02, 508.0}; - }; - class HLC_762x39_Tracer: HLC_762x39_Ball - { - ACE_caliber=7.823; - ACE_bulletLength=28.956; - ACE_bulletMass=7.5816; - ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; - ACE_ballisticCoefficients[]={0.275}; - ACE_velocityBoundaries[]={}; - ACE_standardAtmosphere="ICAO"; - ACE_dragModel=1; - ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={254.0, 414.02, 508.0}; - }; - class HLC_762x51_MK316_20in: B_762x51_Ball - { - ACE_caliber=7.823; - ACE_bulletLength=31.496; - ACE_bulletMass=11.34; - ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; - ACE_ballisticCoefficients[]={0.243}; - ACE_velocityBoundaries[]={}; - ACE_standardAtmosphere="ICAO"; - ACE_dragModel=7; - ACE_muzzleVelocities[]={750, 780, 790, 794}; - ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; - }; - class HLC_762x51_BTSub: B_762x51_Ball - { - ACE_caliber=7.823; - ACE_bulletLength=34.036; - ACE_bulletMass=12.96; - ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; - ACE_ballisticCoefficients[]={0.235}; - ACE_velocityBoundaries[]={}; - ACE_standardAtmosphere="ICAO"; - ACE_dragModel=7; - ACE_muzzleVelocities[]={305, 325, 335, 340}; - ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; - }; - class HLC_762x54_ball: HLC_762x51_ball - { - ACE_caliber=7.925; - ACE_bulletLength=28.956; - ACE_bulletMass=9.8496; - ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; - ACE_ballisticCoefficients[]={0.4}; - ACE_velocityBoundaries[]={}; - ACE_standardAtmosphere="ICAO"; - ACE_dragModel=1; - ACE_muzzleVelocities[]={700, 800, 820, 833}; - ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; - }; - class HLC_762x54_tracer: HLC_762x51_tracer - { - ACE_caliber=7.925; - ACE_bulletLength=28.956; - ACE_bulletMass=9.6552; - ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; - ACE_ballisticCoefficients[]={0.395}; - ACE_velocityBoundaries[]={}; - ACE_standardAtmosphere="ICAO"; - ACE_dragModel=1; - ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; - }; - class HLC_303Brit_B: B_556x45_Ball - { - ACE_caliber=7.899; - ACE_bulletLength=31.166; - ACE_bulletMass=11.2752; - ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; - ACE_ballisticCoefficients[]={0.499, 0.493, 0.48}; - ACE_velocityBoundaries[]={671, 549}; - ACE_standardAtmosphere="ASM"; - ACE_dragModel=1; - ACE_muzzleVelocities[]={748, 761, 765}; - ACE_barrelLengths[]={508.0, 609.6, 660.4}; - }; - class HLC_792x57_Ball: HLC_303Brit_B - { - ACE_caliber=8.077; - ACE_bulletLength=28.651; - ACE_bulletMass=12.7008; - ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; - ACE_ballisticCoefficients[]={0.315}; - ACE_velocityBoundaries[]={}; - ACE_standardAtmosphere="ASM"; - ACE_dragModel=1; - ACE_muzzleVelocities[]={785, 800, 815}; - ACE_barrelLengths[]={508.0, 599.948, 660.4}; - }; - class HLC_542x42_ball: HLC_303Brit_B - { - }; - class HLC_542x42_Tracer: HLC_303Brit_B - { - }; - class FH_545x39_Ball: B_556x45_Ball - { - ACE_caliber=5.588; - ACE_bulletLength=21.59; - ACE_bulletMass=3.42792; - ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; - ACE_ballisticCoefficients[]={0.168}; - ACE_velocityBoundaries[]={}; - ACE_standardAtmosphere="ASM"; - ACE_dragModel=7; - ACE_muzzleVelocities[]={780, 880, 920}; - ACE_barrelLengths[]={254.0, 414.02, 508.0}; - }; - class FH_545x39_7u1: FH_545x39_Ball - { - ACE_bulletMass=5.184; - ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; - ACE_muzzleVelocities[]={260, 303, 320}; - ACE_barrelLengths[]={254.0, 414.02, 508.0}; - }; - class HLC_57x28mm_JHP: FH_545x39_Ball - { - ACE_caliber=5.69; - ACE_bulletLength=12.573; - ACE_bulletMass=1.8144; - ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; - ACE_ballisticCoefficients[]={0.144}; - ACE_velocityBoundaries[]={}; - ACE_standardAtmosphere="ASM"; - ACE_dragModel=1; - ACE_muzzleVelocities[]={550, 625, 720}; - ACE_barrelLengths[]={101.6, 152.4, 262.89}; - }; - class HLC_9x19_Ball: B_556x45_Ball - { - ACE_caliber=9.017; - ACE_bulletLength=15.494; - ACE_bulletMass=8.0352; - ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; - ACE_ballisticCoefficients[]={0.165}; - ACE_velocityBoundaries[]={}; - ACE_standardAtmosphere="ASM"; - ACE_dragModel=1; - ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={101.6, 127.0, 228.6}; - }; - class HLC_9x19_M882_SMG: B_556x45_Ball - { - ACE_caliber=9.017; - ACE_bulletLength=15.494; - ACE_bulletMass=8.0352; - ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; - ACE_ballisticCoefficients[]={0.165}; - ACE_velocityBoundaries[]={}; - ACE_standardAtmosphere="ASM"; - ACE_dragModel=1; - ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={101.6, 127.0, 228.6}; - }; - class HLC_9x19_GoldDot: HLC_9x19_Ball - { - ACE_muzzleVelocities[]={350, 380, 420}; - }; - class HLC_9x19_Subsonic: HLC_9x19_Ball - { - ACE_muzzleVelocities[]={300, 320, 340}; - }; - class HLC_10mm_FMJ: HLC_9x19_Ball - { - ACE_caliber=12.7; - ACE_bulletLength=19.406; - ACE_bulletMass=10.692; - ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; - ACE_ballisticCoefficients[]={0.189}; - ACE_velocityBoundaries[]={}; - ACE_standardAtmosphere="ASM"; - ACE_dragModel=1; - ACE_muzzleVelocities[]={360, 400, 430}; - ACE_barrelLengths[]={101.6, 117.094, 228.6}; - }; - class HLC_45ACP_Ball: B_556x45_Ball - { - ACE_caliber=11.481; - ACE_bulletLength=17.272; - ACE_bulletMass=14.904; - ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; - ACE_ballisticCoefficients[]={0.195}; - ACE_velocityBoundaries[]={}; - ACE_standardAtmosphere="ASM"; - ACE_dragModel=1; - ACE_muzzleVelocities[]={230, 250, 285}; - ACE_barrelLengths[]={101.6, 127.0, 228.6}; - }; - class FH_44Mag: HLC_45ACP_Ball - { - ACE_caliber=10.897; - ACE_bulletLength=20.422; - ACE_bulletMass=12.96; - ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; - ACE_ballisticCoefficients[]={0.172}; - ACE_velocityBoundaries[]={}; - ACE_standardAtmosphere="ASM"; - ACE_dragModel=1; - ACE_muzzleVelocities[]={360, 390, 420}; - ACE_barrelLengths[]={101.6, 190.5, 228.6}; - }; - class FH_50BMG_SLAP: B_127x99_Ball - { - ACE_caliber=7.823; - ACE_bulletLength=31.75; - ACE_bulletMass=22.68; - ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; - ACE_ballisticCoefficients[]={1.056}; - ACE_velocityBoundaries[]={}; - ACE_standardAtmosphere="ASM"; - ACE_dragModel=1; - ACE_muzzleVelocities[]={1204}; - ACE_barrelLengths[]={736.6}; - }; - class FH_50BMG_Raufoss: B_127x99_Ball - { - ACE_caliber=12.954; - ACE_bulletLength=60.452; - ACE_bulletMass=42.768; - ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; - ACE_ballisticCoefficients[]={0.670}; - ACE_velocityBoundaries[]={}; - ACE_standardAtmosphere="ASM"; - ACE_dragModel=1; - ACE_muzzleVelocities[]={817}; - ACE_barrelLengths[]={736.6}; - }; -}; diff --git a/optionals/compat_hlcmods_core/config.cpp b/optionals/compat_hlcmods_core/config.cpp deleted file mode 100644 index ecd780908f..0000000000 --- a/optionals/compat_hlcmods_core/config.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include "script_component.hpp" - -class CfgPatches { - class ADDON { - units[] = {}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"hlcweapons_core"}; - author[]={"Ruthberg"}; - VERSION_CONFIG; - }; -}; - -#include "CfgAmmo.hpp" diff --git a/optionals/compat_hlcmods_core/script_component.hpp b/optionals/compat_hlcmods_core/script_component.hpp deleted file mode 100644 index 444799ed4a..0000000000 --- a/optionals/compat_hlcmods_core/script_component.hpp +++ /dev/null @@ -1,5 +0,0 @@ -#define COMPONENT hlcweapons_core_comp - -#include "\z\ace\addons\main\script_mod.hpp" - -#include "\z\ace\addons\main\script_macros.hpp" diff --git a/optionals/compat_hlcmods_fal/$PBOPREFIX$ b/optionals/compat_hlcmods_fal/$PBOPREFIX$ deleted file mode 100644 index 91bbe75e96..0000000000 --- a/optionals/compat_hlcmods_fal/$PBOPREFIX$ +++ /dev/null @@ -1 +0,0 @@ -z\ace\addons\compat_hlcmods_fal \ No newline at end of file diff --git a/optionals/compat_hlcmods_fal/CfgWeapons.hpp b/optionals/compat_hlcmods_fal/CfgWeapons.hpp deleted file mode 100644 index fd826a6804..0000000000 --- a/optionals/compat_hlcmods_fal/CfgWeapons.hpp +++ /dev/null @@ -1,50 +0,0 @@ - -class CfgWeapons -{ - class hlc_fal_base; - class hlc_rifle_falosw: hlc_fal_base - { - ACE_barrelTwist=304.8; - ACE_barrelLength=330.2; - }; - class hlc_rifle_osw_GL: hlc_rifle_falosw - { - ACE_barrelTwist=304.8; - ACE_barrelLength=330.2; - }; - class hlc_rifle_SLR: hlc_fal_base - { - ACE_barrelTwist=304.8; - ACE_barrelLength=551.18; - }; - class hlc_rifle_STG58F: hlc_fal_base - { - ACE_barrelTwist=304.8; - ACE_barrelLength=533.4; - }; - class hlc_rifle_FAL5061: hlc_fal_base - { - ACE_barrelTwist=304.8; - ACE_barrelLength=457.2; - }; - class hlc_rifle_L1A1SLR: hlc_rifle_SLR - { - ACE_barrelTwist=304.8; - ACE_barrelLength=551.18; - }; - class hlc_rifle_c1A1: hlc_rifle_SLR - { - ACE_barrelTwist=304.8; - ACE_barrelLength=551.18; - }; - class hlc_rifle_LAR: hlc_rifle_FAL5061 - { - ACE_barrelTwist=304.8; - ACE_barrelLength=533.4; - }; - class hlc_rifle_SLRchopmod: hlc_rifle_FAL5061 - { - ACE_barrelTwist=304.8; - ACE_barrelLength=457.2; - }; -}; \ No newline at end of file diff --git a/optionals/compat_hlcmods_fal/config.cpp b/optionals/compat_hlcmods_fal/config.cpp deleted file mode 100644 index 5428e9871c..0000000000 --- a/optionals/compat_hlcmods_fal/config.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include "script_component.hpp" - -class CfgPatches { - class ADDON { - units[] = {}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"hlcweapons_falpocalypse"}; - author[]={"Ruthberg"}; - VERSION_CONFIG; - }; -}; - -#include "CfgWeapons.hpp" diff --git a/optionals/compat_hlcmods_fal/script_component.hpp b/optionals/compat_hlcmods_fal/script_component.hpp deleted file mode 100644 index 828722a5a4..0000000000 --- a/optionals/compat_hlcmods_fal/script_component.hpp +++ /dev/null @@ -1,5 +0,0 @@ -#define COMPONENT hlcweapons_falpocalypse_comp - -#include "\z\ace\addons\main\script_mod.hpp" - -#include "\z\ace\addons\main\script_macros.hpp" diff --git a/optionals/compat_hlcmods_g3/$PBOPREFIX$ b/optionals/compat_hlcmods_g3/$PBOPREFIX$ deleted file mode 100644 index ff5b23f6ea..0000000000 --- a/optionals/compat_hlcmods_g3/$PBOPREFIX$ +++ /dev/null @@ -1 +0,0 @@ -z\ace\addons\compat_hlcmods_g3 \ No newline at end of file diff --git a/optionals/compat_hlcmods_g3/CfgWeapons.hpp b/optionals/compat_hlcmods_g3/CfgWeapons.hpp deleted file mode 100644 index dc02124667..0000000000 --- a/optionals/compat_hlcmods_g3/CfgWeapons.hpp +++ /dev/null @@ -1,45 +0,0 @@ - -class CfgWeapons -{ - class hlc_g3_base; - class hlc_rifle_g3sg1: hlc_g3_base - { - ACE_barrelTwist=304.8; - ACE_barrelLength=449.58; - }; - class hlc_rifle_psg1: hlc_rifle_g3sg1 - { - ACE_barrelTwist=304.8; - ACE_barrelLength=650.24; - }; - class hlc_rifle_g3a3: hlc_rifle_g3sg1 - { - ACE_barrelTwist=304.8; - ACE_barrelLength=449.58; - }; - class hlc_rifle_g3a3ris: hlc_rifle_g3a3 - { - ACE_barrelTwist=304.8; - ACE_barrelLength=449.58; - }; - class hlc_rifle_g3ka4: hlc_rifle_g3a3 - { - ACE_barrelTwist=304.8; - ACE_barrelLength=314.96; - }; - class HLC_Rifle_g3ka4_GL: hlc_rifle_g3ka4 - { - ACE_barrelTwist=304.8; - ACE_barrelLength=314.96; - }; - class hlc_rifle_hk51: hlc_rifle_g3sg1 - { - ACE_barrelTwist=304.8; - ACE_barrelLength=211.074; - }; - class hlc_rifle_hk53: hlc_rifle_g3sg1 - { - ACE_barrelTwist=177.8; - ACE_barrelLength=211.074; - }; -}; \ No newline at end of file diff --git a/optionals/compat_hlcmods_g3/config.cpp b/optionals/compat_hlcmods_g3/config.cpp deleted file mode 100644 index 6b79486364..0000000000 --- a/optionals/compat_hlcmods_g3/config.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include "script_component.hpp" - -class CfgPatches { - class ADDON { - units[] = {}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"hlcweapons_g3"}; - author[]={"Ruthberg"}; - VERSION_CONFIG; - }; -}; - -#include "CfgWeapons.hpp" diff --git a/optionals/compat_hlcmods_g3/script_component.hpp b/optionals/compat_hlcmods_g3/script_component.hpp deleted file mode 100644 index 642977f87b..0000000000 --- a/optionals/compat_hlcmods_g3/script_component.hpp +++ /dev/null @@ -1,5 +0,0 @@ -#define COMPONENT hlcweapons_g3_comp - -#include "\z\ace\addons\main\script_mod.hpp" - -#include "\z\ace\addons\main\script_macros.hpp" diff --git a/optionals/compat_hlcmods_m14/$PBOPREFIX$ b/optionals/compat_hlcmods_m14/$PBOPREFIX$ deleted file mode 100644 index 9542452ad0..0000000000 --- a/optionals/compat_hlcmods_m14/$PBOPREFIX$ +++ /dev/null @@ -1 +0,0 @@ -z\ace\addons\compat_hlcmods_m14 \ No newline at end of file diff --git a/optionals/compat_hlcmods_m14/CfgWeapons.hpp b/optionals/compat_hlcmods_m14/CfgWeapons.hpp deleted file mode 100644 index 64db736003..0000000000 --- a/optionals/compat_hlcmods_m14/CfgWeapons.hpp +++ /dev/null @@ -1,16 +0,0 @@ - -class CfgWeapons -{ - class Rifle_Base_F; - class hlc_rifle_M14; - class hlc_M14_base: Rifle_Base_F - { - ACE_barrelTwist=304.8; - ACE_barrelLength=558.8; - }; - class hlc_rifle_m14sopmod: hlc_rifle_M14 - { - ACE_barrelTwist=304.8; - ACE_barrelLength=457.2; - }; -}; diff --git a/optionals/compat_hlcmods_m14/config.cpp b/optionals/compat_hlcmods_m14/config.cpp deleted file mode 100644 index cdf11a7db1..0000000000 --- a/optionals/compat_hlcmods_m14/config.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include "script_component.hpp" - -class CfgPatches { - class ADDON { - units[] = {}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"hlcweapons_m14"}; - author[]={"Ruthberg"}; - VERSION_CONFIG; - }; -}; - -#include "CfgWeapons.hpp" diff --git a/optionals/compat_hlcmods_m14/script_component.hpp b/optionals/compat_hlcmods_m14/script_component.hpp deleted file mode 100644 index a29b751195..0000000000 --- a/optionals/compat_hlcmods_m14/script_component.hpp +++ /dev/null @@ -1,5 +0,0 @@ -#define COMPONENT hlcweapons_m14_comp - -#include "\z\ace\addons\main\script_mod.hpp" - -#include "\z\ace\addons\main\script_macros.hpp" diff --git a/optionals/compat_hlcmods_m60e4/$PBOPREFIX$ b/optionals/compat_hlcmods_m60e4/$PBOPREFIX$ deleted file mode 100644 index 73c943fe8f..0000000000 --- a/optionals/compat_hlcmods_m60e4/$PBOPREFIX$ +++ /dev/null @@ -1 +0,0 @@ -z\ace\addons\compat_hlcmods_m60e4 \ No newline at end of file diff --git a/optionals/compat_hlcmods_m60e4/CfgWeapons.hpp b/optionals/compat_hlcmods_m60e4/CfgWeapons.hpp deleted file mode 100644 index 50b4ffbc80..0000000000 --- a/optionals/compat_hlcmods_m60e4/CfgWeapons.hpp +++ /dev/null @@ -1,15 +0,0 @@ - -class CfgWeapons -{ - class hlc_M60e4_base; - class hlc_lmg_M60E4: hlc_M60e4_base - { - ACE_barrelTwist=304.8; - ACE_barrelLength=431.8; - }; - class hlc_lmg_m60: hlc_M60e4_base - { - ACE_barrelTwist=304.8; - ACE_barrelLength=558.8; - }; -}; diff --git a/optionals/compat_hlcmods_m60e4/config.cpp b/optionals/compat_hlcmods_m60e4/config.cpp deleted file mode 100644 index 1df3a97a20..0000000000 --- a/optionals/compat_hlcmods_m60e4/config.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include "script_component.hpp" - -class CfgPatches { - class ADDON { - units[] = {}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"hlcweapons_m60e4"}; - author[]={"Ruthberg"}; - VERSION_CONFIG; - }; -}; - -#include "CfgWeapons.hpp" diff --git a/optionals/compat_hlcmods_m60e4/script_component.hpp b/optionals/compat_hlcmods_m60e4/script_component.hpp deleted file mode 100644 index 4a5a9c03b0..0000000000 --- a/optionals/compat_hlcmods_m60e4/script_component.hpp +++ /dev/null @@ -1,5 +0,0 @@ -#define COMPONENT hlc_m60e4_comp - -#include "\z\ace\addons\main\script_mod.hpp" - -#include "\z\ace\addons\main\script_macros.hpp" From c0cdcbab62acf2c705cab98cc52b5939d69f81d2 Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Thu, 18 Jun 2015 17:43:12 -0700 Subject: [PATCH 078/118] fixing missing backup files for config.cpp and $pboprefix$ in $NOBIN$ situations #1682 --- tools/make.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/make.py b/tools/make.py index 11c2bf25b5..b6146a8d9f 100644 --- a/tools/make.py +++ b/tools/make.py @@ -1079,16 +1079,16 @@ See the make.cfg file for additional build options. if build_tool == "pboproject": try: nobinFilePath = os.path.join(work_drive, prefix, module, "$NOBIN$") + backup_config(module) if (not os.path.isfile(nobinFilePath)): - backup_config(module) convert_config(module) version_stamp_pboprefix(module,commit_id) if os.path.isfile(nobinFilePath): print_green("$NOBIN$ Found. Proceeding with non-binarizing!") - cmd = [makepboTool, "-P","-A","-L","-N","-G", os.path.join(work_drive, prefix, module),os.path.join(module_root, release_dir, project,"addons")] + cmd = [makepboTool, "-P","-A","-L","-G","-X=*.backup", os.path.join(work_drive, prefix, module),os.path.join(module_root, release_dir, project,"addons")] else: if check_external: @@ -1222,7 +1222,7 @@ See the make.cfg file for additional build options. except Exception as e: print_yellow("Cancel or some error detected: {}".format(e)) - + finally: copy_important_files(module_root_parent,os.path.join(release_dir, project)) From 474e69430912d546be262d9dea2448e1eba0f8b7 Mon Sep 17 00:00:00 2001 From: ulteq Date: Fri, 19 Jun 2015 11:49:38 +0200 Subject: [PATCH 079/118] Enable interaction with explosives while swimming --- addons/explosives/CfgVehicles.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/explosives/CfgVehicles.hpp b/addons/explosives/CfgVehicles.hpp index 204c6aca73..4ede0654fa 100644 --- a/addons/explosives/CfgVehicles.hpp +++ b/addons/explosives/CfgVehicles.hpp @@ -103,7 +103,7 @@ class CfgVehicles { statement = ""; insertChildren = QUOTE([ARR_3(_target getVariable QUOTE(QGVAR(class)),_target,_player)] call FUNC(addTriggerActions);); showDisabled = 0; - exceptions[] = {}; + exceptions[] = {"isNotSwimming"}; priority = 5; icon = QUOTE(PATHTOF(UI\Explosives_Menu_ca.paa)); }; @@ -114,7 +114,7 @@ class CfgVehicles { condition = "true"; statement = QUOTE([ARR_2(_player,_target getVariable QUOTE(QGVAR(class)))] call EFUNC(common,addToInventory);deleteVehicle _target;); showDisabled = 0; - exceptions[] = {}; + exceptions[] = {"isNotSwimming"}; priority = 5; icon = "\A3\ui_f\data\IGUI\Cfg\Actions\Obsolete\ui_action_takemine_ca.paa"; }; From 2c64abb816bc43480d6c22fbc27ba0176d8e5dbe Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 20 Jun 2015 20:17:27 -0500 Subject: [PATCH 080/118] #1704 - Add missing AnimationSources --- addons/ballistics/CfgVehicles.hpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/addons/ballistics/CfgVehicles.hpp b/addons/ballistics/CfgVehicles.hpp index 622dd7d0d1..bb50dcdc2e 100644 --- a/addons/ballistics/CfgVehicles.hpp +++ b/addons/ballistics/CfgVehicles.hpp @@ -225,5 +225,27 @@ class CfgVehicles { MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_API_Mag,4); MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_AMAX_Mag,4); }; + class AnimationSources { + class Ammo_source { + source = "user"; + animPeriod = 1; + initPhase = 0; + }; + class AmmoOrd_source { + source = "user"; + animPeriod = 1; + initPhase = 1; + }; + class Grenades_source { + source = "user"; + animPeriod = 1; + initPhase = 1; + }; + class Support_source { + source = "user"; + animPeriod = 1; + initPhase = 1; + }; + }; }; }; From 10602f10c6d0fbbfdfef38e1398557851404ccb1 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 21 Jun 2015 04:19:12 +0200 Subject: [PATCH 081/118] Fixed BFT ACE_Settings, Fixed Map Module Initialized diag_log --- addons/map/XEH_postInitClient.sqf | 10 ++++++++-- addons/map/functions/fnc_blueForceTrackingModule.sqf | 4 ---- addons/map/functions/fnc_moduleMap.sqf | 4 +++- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/addons/map/XEH_postInitClient.sqf b/addons/map/XEH_postInitClient.sqf index baca42a510..255c71ec9e 100644 --- a/addons/map/XEH_postInitClient.sqf +++ b/addons/map/XEH_postInitClient.sqf @@ -1,6 +1,5 @@ #include "script_component.hpp" -ADDON = false; LOG(MSG_INIT); // Calculate the maximum zoom allowed for this map @@ -19,4 +18,11 @@ call FUNC(determineZoom); ((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["Draw", {[] call FUNC(updateMapEffects);}]; }; -ADDON = true; +[ +["SettingsInitialized", { + // Start Blue Force Tracking if Enabled + if (GVAR(BFT_Enabled)) then { + GVAR(BFT_markers) = []; + [FUNC(blueForceTrackingUpdate), GVAR(BFT_Interval), []] call CBA_fnc_addPerFrameHandler; + }; +}] call EFUNC(common,addEventHandler); diff --git a/addons/map/functions/fnc_blueForceTrackingModule.sqf b/addons/map/functions/fnc_blueForceTrackingModule.sqf index c156c9527d..44af71fbbd 100644 --- a/addons/map/functions/fnc_blueForceTrackingModule.sqf +++ b/addons/map/functions/fnc_blueForceTrackingModule.sqf @@ -24,7 +24,3 @@ GVAR(BFT_Enabled) = true; diag_log text "[ACE]: Blue Force Tracking Module initialized."; TRACE_2("[ACE]: Blue Force Tracking Module initialized.",GVAR(BFT_Interval), GVAR(BFT_HideAiGroups)); - -//start BFT: -GVAR(BFT_markers) = []; -[FUNC(blueForceTrackingUpdate), GVAR(BFT_Interval), []] call CBA_fnc_addPerFrameHandler; diff --git a/addons/map/functions/fnc_moduleMap.sqf b/addons/map/functions/fnc_moduleMap.sqf index 4bcdb69269..523b58131b 100644 --- a/addons/map/functions/fnc_moduleMap.sqf +++ b/addons/map/functions/fnc_moduleMap.sqf @@ -10,6 +10,8 @@ */ #include "script_component.hpp" +if !(hasInterface) exitWith {}; + PARAMS_3(_logic,_units,_activated); if !(_activated) exitWith {}; @@ -19,4 +21,4 @@ if !(_activated) exitWith {}; [_logic, QGVAR(mapLimitZoom), "MapLimitZoom" ] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(mapShowCursorCoordinates), "MapShowCursorCoordinates"] call EFUNC(common,readSettingFromModule); -diag_log text "[ACE]: Interaction Module Initialized."; +diag_log text "[ACE]: Map Module Initialized."; From 4f35e10afad1ffff1f2b6c4271bc6d397f69af18 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 21 Jun 2015 04:46:55 +0200 Subject: [PATCH 082/118] Changed BFT_Enabled to module option for proper ACE_Settings handling --- addons/map/CfgVehicles.hpp | 6 ++++++ addons/map/XEH_postInitClient.sqf | 1 - addons/map/functions/fnc_blueForceTrackingModule.sqf | 4 ++-- addons/map/stringtable.xml | 6 ++++++ 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/addons/map/CfgVehicles.hpp b/addons/map/CfgVehicles.hpp index 88e6fffc1a..d1b7e38dba 100644 --- a/addons/map/CfgVehicles.hpp +++ b/addons/map/CfgVehicles.hpp @@ -49,6 +49,12 @@ class CfgVehicles { isGlobal = 1; icon = PATHTOF(UI\Icon_Module_BFTracking_ca.paa); class Arguments { + class Enabled { + displayName = CSTRING(BFT_Enabled_DisplayName); + description = CSTRING(BFT_Enabled_Description); + typeName = "BOOL"; + defaultValue = 0; + }; class Interval { displayName = CSTRING(BFT_Interval_DisplayName); description = CSTRING(BFT_Interval_Description); diff --git a/addons/map/XEH_postInitClient.sqf b/addons/map/XEH_postInitClient.sqf index 255c71ec9e..c06993bded 100644 --- a/addons/map/XEH_postInitClient.sqf +++ b/addons/map/XEH_postInitClient.sqf @@ -18,7 +18,6 @@ call FUNC(determineZoom); ((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["Draw", {[] call FUNC(updateMapEffects);}]; }; -[ ["SettingsInitialized", { // Start Blue Force Tracking if Enabled if (GVAR(BFT_Enabled)) then { diff --git a/addons/map/functions/fnc_blueForceTrackingModule.sqf b/addons/map/functions/fnc_blueForceTrackingModule.sqf index 44af71fbbd..bab776c9ab 100644 --- a/addons/map/functions/fnc_blueForceTrackingModule.sqf +++ b/addons/map/functions/fnc_blueForceTrackingModule.sqf @@ -18,9 +18,9 @@ PARAMS_3(_logic,_units,_activated); if !(_activated) exitWith {}; -GVAR(BFT_Enabled) = true; +[_logic, QGVAR(BFT_Enabled), "Enabled"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(BFT_Interval), "Interval"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(BFT_HideAiGroups), "HideAiGroups"] call EFUNC(common,readSettingFromModule); diag_log text "[ACE]: Blue Force Tracking Module initialized."; -TRACE_2("[ACE]: Blue Force Tracking Module initialized.",GVAR(BFT_Interval), GVAR(BFT_HideAiGroups)); +TRACE_2("[ACE]: Blue Force Tracking Module initialized.", GVAR(BFT_Interval), GVAR(BFT_HideAiGroups)); diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml index 7d5a9dda5a..255ef400fe 100644 --- a/addons/map/stringtable.xml +++ b/addons/map/stringtable.xml @@ -77,6 +77,12 @@ Blue Force Tracking Blue Force Tracking + + Enable + + + Enable Blue Force Tracking. Default: No + Interval Interwał From f0adf256a8db5f88af119499ad5ea0dd95040582 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 21 Jun 2015 12:25:16 -0500 Subject: [PATCH 083/118] #573 - mdagr use ambientBrightness --- addons/microdagr/functions/fnc_showApplicationPage.sqf | 6 +----- addons/microdagr/functions/fnc_updateDisplay.sqf | 6 +++++- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/addons/microdagr/functions/fnc_showApplicationPage.sqf b/addons/microdagr/functions/fnc_showApplicationPage.sqf index 5ab054732c..3c042fdff3 100644 --- a/addons/microdagr/functions/fnc_showApplicationPage.sqf +++ b/addons/microdagr/functions/fnc_showApplicationPage.sqf @@ -15,7 +15,7 @@ */ #include "script_component.hpp" -private ["_display", "_daylight", "_theMap", "_mapSize"]; +private ["_display", "_theMap", "_mapSize"]; disableSerialization; @@ -27,10 +27,6 @@ if (GVAR(currentShowMode) == DISPLAY_MODE_DIALOG) then { }; if (isNull _display) exitWith {ERROR("No Display");}; -//Fade "shell" at night -_daylight = 0.05 max (((1 - overcast)/2 + ((1 - cos (daytime * 360/24)) / 4)) * (linearConversion [0, 1, sunOrMoon, (0.25 * moonIntensity), 1])); -(_display displayCtrl IDC_MICRODAGRSHELL) ctrlSetTextColor [_daylight, _daylight, _daylight, 1]; - //TopBar (_display displayCtrl IDC_RANGEFINDERCONNECTEDICON) ctrlShow (GVAR(currentWaypoint) == -2); diff --git a/addons/microdagr/functions/fnc_updateDisplay.sqf b/addons/microdagr/functions/fnc_updateDisplay.sqf index aa3a7c9379..7e2a1ad53e 100644 --- a/addons/microdagr/functions/fnc_updateDisplay.sqf +++ b/addons/microdagr/functions/fnc_updateDisplay.sqf @@ -15,7 +15,7 @@ */ #include "script_component.hpp" -private ["_display", "_waypoints", "_posString", "_eastingText", "_northingText", "_numASL", "_aboveSeaLevelText", "_compassAngleText", "_targetPosName", "_targetPosLocationASL", "_bearingText", "_rangeText", "_targetName", "_bearing", "_2dDistanceKm", "_SpeedText", "_playerPos2d", "_wpListBox", "_currentIndex", "_wpName", "_wpPos", "_settingListBox", "_yearString", "_monthSring", "_dayString"]; +private ["_display", "_waypoints", "_posString", "_eastingText", "_northingText", "_numASL", "_aboveSeaLevelText", "_compassAngleText", "_targetPosName", "_targetPosLocationASL", "_bearingText", "_rangeText", "_targetName", "_bearing", "_2dDistanceKm", "_SpeedText", "_playerPos2d", "_wpListBox", "_currentIndex", "_wpName", "_wpPos", "_settingListBox", "_yearString", "_monthSring", "_dayString", "_daylight"]; disableSerialization; _display = displayNull; @@ -26,6 +26,10 @@ if (GVAR(currentShowMode) == DISPLAY_MODE_DIALOG) then { }; if (isNull _display) exitWith {ERROR("No Display");}; +//Fade "shell" at night +_daylight = [] call EFUNC(common,ambientBrightness); +(_display displayCtrl IDC_MICRODAGRSHELL) ctrlSetTextColor [_daylight, _daylight, _daylight, 1]; + (_display displayCtrl IDC_CLOCKTEXT) ctrlSetText ([daytime, "HH:MM"] call bis_fnc_timeToString); _waypoints = [] call FUNC(deviceGetWaypoints); From ce2a617c7b0bae6f861bbab8ff66c75fab35abc8 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 21 Jun 2015 13:00:51 -0500 Subject: [PATCH 084/118] #1709 - Remove ACE_Comanche_Test from zeus --- addons/missileguidance/CfgVehicles.hpp | 1 + addons/missileguidance/config.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/missileguidance/CfgVehicles.hpp b/addons/missileguidance/CfgVehicles.hpp index 0d9ef54d07..5069556078 100644 --- a/addons/missileguidance/CfgVehicles.hpp +++ b/addons/missileguidance/CfgVehicles.hpp @@ -20,6 +20,7 @@ class CfgVehicles { class ACE_Comanche_Test : B_Heli_Attack_01_F { scope = 1; + scopeCurator = 0; displayName = "ACE_Comanche_Test"; author = "ACE Team"; class Library { diff --git a/addons/missileguidance/config.cpp b/addons/missileguidance/config.cpp index 42b849b902..591a4f1c5e 100644 --- a/addons/missileguidance/config.cpp +++ b/addons/missileguidance/config.cpp @@ -2,7 +2,7 @@ class CfgPatches { class ADDON { - units[] = {}; + units[] = {"ACE_Comanche_Test"}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_laser"}; From a7d94895550ae0a20a48ae032308cc6d3c7211f5 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 21 Jun 2015 21:08:37 +0200 Subject: [PATCH 085/118] Fixed map module init, Prevented BFT execution on Headless, Changed BFT Enabled string --- addons/map/XEH_postInitClient.sqf | 3 +++ addons/map/functions/fnc_moduleMap.sqf | 2 +- addons/map/stringtable.xml | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/addons/map/XEH_postInitClient.sqf b/addons/map/XEH_postInitClient.sqf index c06993bded..8c46744088 100644 --- a/addons/map/XEH_postInitClient.sqf +++ b/addons/map/XEH_postInitClient.sqf @@ -18,6 +18,9 @@ call FUNC(determineZoom); ((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["Draw", {[] call FUNC(updateMapEffects);}]; }; +// Client only from here +if !(hasInterface) exitWith {}; + ["SettingsInitialized", { // Start Blue Force Tracking if Enabled if (GVAR(BFT_Enabled)) then { diff --git a/addons/map/functions/fnc_moduleMap.sqf b/addons/map/functions/fnc_moduleMap.sqf index 523b58131b..514d2af034 100644 --- a/addons/map/functions/fnc_moduleMap.sqf +++ b/addons/map/functions/fnc_moduleMap.sqf @@ -10,7 +10,7 @@ */ #include "script_component.hpp" -if !(hasInterface) exitWith {}; +if !(isServer) exitWith {}; PARAMS_3(_logic,_units,_activated); diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml index 255ef400fe..930baf7835 100644 --- a/addons/map/stringtable.xml +++ b/addons/map/stringtable.xml @@ -78,7 +78,7 @@ Blue Force Tracking - Enable + BFT Enable Enable Blue Force Tracking. Default: No From 2e50261bd381e90a6c47b7556e4c407b9988e9c4 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 21 Jun 2015 21:10:50 +0200 Subject: [PATCH 086/118] Exit entire map Client XEH on Headless --- addons/map/XEH_postInitClient.sqf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/map/XEH_postInitClient.sqf b/addons/map/XEH_postInitClient.sqf index 8c46744088..a3f377544b 100644 --- a/addons/map/XEH_postInitClient.sqf +++ b/addons/map/XEH_postInitClient.sqf @@ -1,5 +1,8 @@ #include "script_component.hpp" +// Exit on Headless as well +if !(hasInterface) exitWith {}; + LOG(MSG_INIT); // Calculate the maximum zoom allowed for this map @@ -18,9 +21,6 @@ call FUNC(determineZoom); ((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["Draw", {[] call FUNC(updateMapEffects);}]; }; -// Client only from here -if !(hasInterface) exitWith {}; - ["SettingsInitialized", { // Start Blue Force Tracking if Enabled if (GVAR(BFT_Enabled)) then { From 91dc9f5f18d7a51ae1eddc3fe8ad8298f2be2df6 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 21 Jun 2015 21:58:19 +0200 Subject: [PATCH 087/118] Added version argument to run version update, default will stash and restore changes to keep git work dir clean --- tools/make.py | 54 +++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 48 insertions(+), 6 deletions(-) diff --git a/tools/make.py b/tools/make.py index 9e902adc86..8eb8950c7f 100644 --- a/tools/make.py +++ b/tools/make.py @@ -598,8 +598,6 @@ def set_version_in_files(): newVersion = ACE_VERSION # MAJOR.MINOR.PATCH.BUILD newVersionShort = newVersion[:-2] # MAJOR.MINOR.PATCH - print_blue("\nChecking for obsolete version numbers...") - # Regex patterns pattern = re.compile(r"(\b[0\.-9]+\b\.[0\.-9]+\b\.[0\.-9]+\b\.[0\.-9]+)") # MAJOR.MINOR.PATCH.BUILD patternShort = re.compile(r"(\b[0\.-9]+\b\.[0\.-9]+\b\.[0\.-9]+)") # MAJOR.MINOR.PATCH @@ -634,7 +632,7 @@ def set_version_in_files(): # Print change and modify the file if changed if versionFound != newVersionUsed: - print_green("Changing version {} to {} => {}".format(versionFound, newVersionUsed, filePath)) + print_green("Changing version {} => {} in {}".format(versionFound, newVersionUsed, filePath)) replace_file(filePath, versionFound, newVersionUsed) except WindowsError as e: @@ -642,11 +640,40 @@ def set_version_in_files(): pass except Exception as e: print_error("set_version_in_files error: {}".format(e)) - return False + raise return True +def stash_version_files_for_building(): + try: + for file in versionFiles: + filePath = os.path.join(module_root_parent, file) + stashPath = os.path.join(release_dir, file) + print("Temporarily stashing {} => {}.bak for version update".format(filePath, stashPath)) + shutil.copy(filePath, "{}.bak".format(stashPath)) + except: + print_error("Stashing version files failed") + raise + + # Set version + set_version_in_files() + return True + + +def restore_version_files(): + try: + for file in versionFiles: + filePath = os.path.join(module_root_parent, file) + stashPath = os.path.join(release_dir, file) + print("Restoring {}".format(filePath)) + shutil.move("{}.bak".format(stashPath), filePath) + except: + print_error("Restoring version files failed") + raise + return True + + def get_private_keyname(commitID,module="main"): global pbo_name_prefix @@ -836,6 +863,12 @@ See the make.cfg file for additional build options. check_external = True else: check_external = False + + if "version" in argv: + argv.remove("version") + version_update = True + else: + version_update = False print_yellow("\nCheck external references is set to {}".format(str(check_external))) @@ -980,10 +1013,17 @@ See the make.cfg file for additional build options. raise # Update version stamp in all files that contain it - set_version_in_files(); + # Update version only for release if full update not requested (backup and restore files) + print_blue("\nChecking for obsolete version numbers...") + if not version_update: + stash_version_files_for_building() + else: + # Set version + set_version_in_files(); + print("Version in files has been changed, make sure you commit and push the updates!") try: - #Temporarily copy optionals_root for building. They will be removed later. + # Temporarily copy optionals_root for building. They will be removed later. optionals_modules = [] optional_files = [] copy_optionals_for_building(optionals_modules,optional_files) @@ -1304,6 +1344,8 @@ See the make.cfg file for additional build options. finally: copy_important_files(module_root_parent,os.path.join(release_dir, project)) cleanup_optionals(optionals_modules) + if not version_update: + restore_version_files() # Done building all modules! From e3e415c727530e71ff74addc88c21685317bc4fb Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sun, 21 Jun 2015 23:46:23 +0100 Subject: [PATCH 088/118] Added readme --- addons/zeus/README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 addons/zeus/README.md diff --git a/addons/zeus/README.md b/addons/zeus/README.md new file mode 100644 index 0000000000..52dcda3adf --- /dev/null +++ b/addons/zeus/README.md @@ -0,0 +1,10 @@ +ace_zeus +========== + +Provides control over various aspects of zeus. + +## Maintainers + +The people responsible for merging changes to this component or answering potential questions. + +- [SilentSpike] (http://github.com/SilentSpike) From 398f1c768f617768c9971608e6754ff8fef385fd Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Mon, 22 Jun 2015 00:17:29 +0100 Subject: [PATCH 089/118] Fix the module on dedicated servers --- addons/zeus/functions/fnc_bi_moduleCurator.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/zeus/functions/fnc_bi_moduleCurator.sqf b/addons/zeus/functions/fnc_bi_moduleCurator.sqf index 2d41a725cb..a36d8dd458 100644 --- a/addons/zeus/functions/fnc_bi_moduleCurator.sqf +++ b/addons/zeus/functions/fnc_bi_moduleCurator.sqf @@ -113,7 +113,7 @@ if (_activated) then { if (_name == "") then {_name = localize "STR_A3_curator";}; //--- Wait until mission starts - waituntil {ACE_time > 0}; + waituntil {time > 0}; // NOTE: DO NOT CHANGE TO ACE_TIME, IT BREAKS THE MODULE //--- Refresh addon list, so it's broadcasted to clients _addons = curatoraddons _logic; From 93f6c48acff1e472329d6f3363b9e2bc30144bce Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Mon, 22 Jun 2015 00:33:18 +0100 Subject: [PATCH 090/118] Moved myself --- AUTHORS.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AUTHORS.txt b/AUTHORS.txt index 41d51268a6..737bfb590b 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -18,6 +18,7 @@ Kieran NouberNou PabstMirror Ruthberg +SilentSpike tpM ViperMaul VKing @@ -89,7 +90,6 @@ Raspu86 Riccardo Petricca Robert Boklahánics ruPaladin -SilentSpike simon84 Sniperwolf572 SzwedzikPL From 27a4ecd7473efc47679ae8ea11a83070659384df Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Mon, 22 Jun 2015 00:43:39 +0100 Subject: [PATCH 091/118] Expanded readme --- addons/zeus/README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/addons/zeus/README.md b/addons/zeus/README.md index 52dcda3adf..b99edb66bb 100644 --- a/addons/zeus/README.md +++ b/addons/zeus/README.md @@ -1,7 +1,12 @@ ace_zeus ========== -Provides control over various aspects of zeus. +Provides control over various aspects of zeus: +- Ascension messages +- Eagle +- Wind sounds +- Ordnance radio messages +- Mine markers ## Maintainers From 922e88d31e72551af0977f0cfb6eb7ba7ec9696d Mon Sep 17 00:00:00 2001 From: jonpas Date: Mon, 22 Jun 2015 15:25:10 +0200 Subject: [PATCH 092/118] Fixed handcuffing not breaking sitting animation --- addons/sitting/XEH_clientInit.sqf | 3 +++ addons/sitting/functions/fnc_handleInterrupt.sqf | 4 +--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/addons/sitting/XEH_clientInit.sqf b/addons/sitting/XEH_clientInit.sqf index 7c0bb9edc1..e2bf1b23c1 100644 --- a/addons/sitting/XEH_clientInit.sqf +++ b/addons/sitting/XEH_clientInit.sqf @@ -1,5 +1,8 @@ #include "script_component.hpp" +// Exit on Headless +if !(hasInterface) exitWith {}; + // Add interaction menu exception ["isNotSitting", {!((_this select 0) getVariable [QGVAR(isSitting), false])}] call EFUNC(common,addCanInteractWithCondition); diff --git a/addons/sitting/functions/fnc_handleInterrupt.sqf b/addons/sitting/functions/fnc_handleInterrupt.sqf index 96a8da42df..8127e924ef 100644 --- a/addons/sitting/functions/fnc_handleInterrupt.sqf +++ b/addons/sitting/functions/fnc_handleInterrupt.sqf @@ -18,7 +18,5 @@ PARAMS_1(_player); if (_player getVariable [QGVAR(isSitting), false]) then { - _player setVariable [QGVAR(isSitting), nil]; - GVAR(seat) setVariable [QGVAR(seatOccupied), nil, true]; - GVAR(seat) = nil; + [_player] call FUNC(stand); }; From ec5cc606c369e87d5a42bf51b1ea7f2d97ebcd3d Mon Sep 17 00:00:00 2001 From: jonpas Date: Mon, 22 Jun 2015 19:24:10 +0200 Subject: [PATCH 093/118] Fixed CheckPBOs Whitelist default value in module --- addons/common/CfgVehicles.hpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/addons/common/CfgVehicles.hpp b/addons/common/CfgVehicles.hpp index 380e9c3274..b5a62213ec 100644 --- a/addons/common/CfgVehicles.hpp +++ b/addons/common/CfgVehicles.hpp @@ -67,9 +67,7 @@ class CfgVehicles { displayName = CSTRING(CheckPBO_Whitelist_DisplayName); description = CSTRING(CheckPBO_Whitelist_Description); typeName = "STRING"; - class values { - default = "[]"; - }; + defaultValue = "[]"; }; }; class ModuleDescription: ModuleDescription { From 293fa4f16b79f4de34453a8e2c70e342919786a2 Mon Sep 17 00:00:00 2001 From: jonpas Date: Mon, 22 Jun 2015 19:28:48 +0200 Subject: [PATCH 094/118] Coding standards applied to common/CfgVehicles.hpp --- addons/common/CfgVehicles.hpp | 193 +++++++++++++++++----------------- 1 file changed, 95 insertions(+), 98 deletions(-) diff --git a/addons/common/CfgVehicles.hpp b/addons/common/CfgVehicles.hpp index b5a62213ec..767822f4ea 100644 --- a/addons/common/CfgVehicles.hpp +++ b/addons/common/CfgVehicles.hpp @@ -1,110 +1,109 @@ class CfgVehicles { - /*class Man; - class CAManBase: Man { - // @todo - class UserActions { - class ACE_Fire { - displayName = ""; - priority = -99; - available = 1; - radius = 2.5; - radiusView = 0; - position = ""; - showWindow = 0; - showIn3D = 0; - onlyForPlayer = 1; - shortcut = "DefaultAction"; - condition = QUOTE(call GVAR(UserActionFireCondition)); - statement = QUOTE(call GVAR(UserActionFire)); - userActionID = 100; - }; - }; - };*/ + /*class Man; + class CAManBase: Man { + // @todo + class UserActions { + class ACE_Fire { + displayName = ""; + priority = -99; + available = 1; + radius = 2.5; + radiusView = 0; + position = ""; + showWindow = 0; + showIn3D = 0; + onlyForPlayer = 1; + shortcut = "DefaultAction"; + condition = QUOTE(call GVAR(UserActionFireCondition)); + statement = QUOTE(call GVAR(UserActionFire)); + userActionID = 100; + }; + }; + };*/ - // += needs a non inherited entry in that class, otherwise it simply overwrites - //#include + // += needs a non inherited entry in that class, otherwise it simply overwrites + //#include class Logic; class Module_F: Logic { class ModuleDescription; }; class ACE_Module: Module_F {}; class ACE_ModuleCheckPBOs: ACE_Module { - author = CSTRING(ACETeam); - category = "ACE"; - displayName = CSTRING(CheckPBO_DisplayName); - function = QFUNC(moduleCheckPBOs); - scope = 2; - isGlobal = 1; - icon = QUOTE(PATHTOF(UI\Icon_Module_CheckPBO_ca.paa)); - class Arguments { - class Action { - displayName = CSTRING(CheckPBO_Action_DisplayName); - description = CSTRING(CheckPBO_Action_Description); - typeName = "NUMBER"; - class values { - class WarnOnce { - default = 1; - name = CSTRING(CheckPBO_Action_WarnOnce); - value = 0; - }; - class Warn { - name = CSTRING(CheckPBO_Action_WarnPerm); - value = 1; - }; - class Kick { - name = CSTRING(CheckPBO_Action_Kick); - value = 2; - }; + author = CSTRING(ACETeam); + category = "ACE"; + displayName = CSTRING(CheckPBO_DisplayName); + function = QFUNC(moduleCheckPBOs); + scope = 2; + isGlobal = 1; + icon = QUOTE(PATHTOF(UI\Icon_Module_CheckPBO_ca.paa)); + class Arguments { + class Action { + displayName = CSTRING(CheckPBO_Action_DisplayName); + description = CSTRING(CheckPBO_Action_Description); + typeName = "NUMBER"; + class values { + class WarnOnce { + default = 1; + name = CSTRING(CheckPBO_Action_WarnOnce); + value = 0; + }; + class Warn { + name = CSTRING(CheckPBO_Action_WarnPerm); + value = 1; + }; + class Kick { + name = CSTRING(CheckPBO_Action_Kick); + value = 2; + }; + }; + }; + class CheckAll { + displayName = CSTRING(CheckPBO_CheckAll_DisplayName); + description = CSTRING(CheckPBO_CheckAll_Description); + typeName = "BOOL"; + defaultValue = 0; + }; + class Whitelist { + displayName = CSTRING(CheckPBO_Whitelist_DisplayName); + description = CSTRING(CheckPBO_Whitelist_Description); + typeName = "STRING"; + defaultValue = "[]"; + }; + }; + class ModuleDescription: ModuleDescription { + description = CSTRING(CheckPBO_Description); }; - }; - class CheckAll { - displayName = CSTRING(CheckPBO_CheckAll_DisplayName); - description = CSTRING(CheckPBO_CheckAll_Description); - typeName = "BOOL"; - defaultValue = 0; - }; - class Whitelist { - displayName = CSTRING(CheckPBO_Whitelist_DisplayName); - description = CSTRING(CheckPBO_Whitelist_Description); - typeName = "STRING"; - defaultValue = "[]"; - }; }; - class ModuleDescription: ModuleDescription { - description = CSTRING(CheckPBO_Description); - }; - }; - class ACE_ModuleLSDVehicles: ACE_Module { - author = CSTRING(ACETeam); - category = "ACE"; - displayName = CSTRING(LSDVehicles_DisplayName); - function = "ACE_Common_fnc_moduleLSDVehicles"; - scope = 2; - icon = QUOTE(PATHTOF(UI\Icon_Module_LSD_ca.paa)); - isGlobal = 1; - class Arguments { + class ACE_ModuleLSDVehicles: ACE_Module { + author = CSTRING(ACETeam); + category = "ACE"; + displayName = CSTRING(LSDVehicles_DisplayName); + function = "ACE_Common_fnc_moduleLSDVehicles"; + scope = 2; + icon = QUOTE(PATHTOF(UI\Icon_Module_LSD_ca.paa)); + isGlobal = 1; + class Arguments {}; + class ModuleDescription: ModuleDescription { + description = CSTRING(LSDVehicles_Description); + sync[] = {"AnyVehicle"}; + }; }; - class ModuleDescription: ModuleDescription { - description = CSTRING(LSDVehicles_Description); - sync[] = {"AnyVehicle"}; + + class Box_NATO_Support_F; + class ACE_Box_Misc: Box_NATO_Support_F { + author = CSTRING(ACETeam); + displayName = CSTRING(MiscItems); + transportMaxWeapons = 9001; + transportMaxMagazines = 9001; + transportMaxItems = 9001; + maximumload = 9001; + + class TransportWeapons {}; + class TransportMagazines {}; + class TransportItems {}; + class TransportBackpacks {}; }; - }; - - class Box_NATO_Support_F; - class ACE_Box_Misc: Box_NATO_Support_F { - author = CSTRING(ACETeam); - displayName = CSTRING(MiscItems); - transportMaxWeapons = 9001; - transportMaxMagazines = 9001; - transportMaxItems = 9001; - maximumload = 9001; - - class TransportWeapons {}; - class TransportMagazines {}; - class TransportItems {}; - class TransportBackpacks {}; - }; class Item_Base_F; class ACE_bananaItem: Item_Base_F { @@ -113,10 +112,8 @@ class CfgVehicles { displayName = CSTRING(bananaDisplayName); author = CSTRING(ACETeam); vehicleClass = "Items"; - class TransportItems - { - class ACE_banana - { + class TransportItems { + class ACE_banana { name = "ACE_banana"; count = 1; }; From 5e38ba9b2087c643e3f0dc17afebda524a9d1fda Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Wed, 24 Jun 2015 17:09:43 +0100 Subject: [PATCH 095/118] Correcting some spacing --- addons/flashsuppressors/config.cpp | 14 +++++++------- addons/noradio/config.cpp | 18 +++++++++--------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/addons/flashsuppressors/config.cpp b/addons/flashsuppressors/config.cpp index 10b9622d17..b8e0c1e120 100644 --- a/addons/flashsuppressors/config.cpp +++ b/addons/flashsuppressors/config.cpp @@ -4,13 +4,13 @@ class CfgPatches { class ADDON { units[] = {}; weapons[] = { - "ACE_muzzle_mzls_H", - "ACE_muzzle_mzls_B", - "ACE_muzzle_mzls_L", - "ACE_muzzle_mzls_smg_01", - "ACE_muzzle_mzls_smg_02", - "ACE_muzzle_mzls_338", - "ACE_muzzle_mzls_93mmg" + "ACE_muzzle_mzls_H", + "ACE_muzzle_mzls_B", + "ACE_muzzle_mzls_L", + "ACE_muzzle_mzls_smg_01", + "ACE_muzzle_mzls_smg_02", + "ACE_muzzle_mzls_338", + "ACE_muzzle_mzls_93mmg" }; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; diff --git a/addons/noradio/config.cpp b/addons/noradio/config.cpp index 5709806d8f..86697535f8 100644 --- a/addons/noradio/config.cpp +++ b/addons/noradio/config.cpp @@ -1,15 +1,15 @@ #include "script_component.hpp" class CfgPatches { - class ADDON { - units[] = {}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_common"}; - author[] = {"commy2"}; - authorUrl = "https://github.com/commy2/"; - VERSION_CONFIG; - }; + class ADDON { + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_common"}; + author[] = {"commy2"}; + authorUrl = "https://github.com/commy2/"; + VERSION_CONFIG; + }; }; #include "CfgEventhandlers.hpp" From c76972f0c255425b2b31d5271d249e84b9638e93 Mon Sep 17 00:00:00 2001 From: Fadi Date: Thu, 25 Jun 2015 09:17:36 -0500 Subject: [PATCH 096/118] Enabling ACE reloading on the RHS RPG-7 --- optionals/compat_rhs_afrf3/CfgWeapons.hpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/optionals/compat_rhs_afrf3/CfgWeapons.hpp b/optionals/compat_rhs_afrf3/CfgWeapons.hpp index bf5020dfc2..4c3e2e425e 100644 --- a/optionals/compat_rhs_afrf3/CfgWeapons.hpp +++ b/optionals/compat_rhs_afrf3/CfgWeapons.hpp @@ -65,4 +65,8 @@ class CfgWeapons ACE_ScopeAdjust_VerticalIncrement = 0.0; ACE_ScopeAdjust_HorizontalIncrement = 0.5; }; + class Launcher_Base_F; + class rhs_weap_rpg7: Launcher_Base_F { + ace_reloadlaunchers_enabled = 1; + }; }; \ No newline at end of file From 1234d8dd49cf7e31670660072f45ff3357064ffa Mon Sep 17 00:00:00 2001 From: Fadi Date: Thu, 25 Jun 2015 09:19:36 -0500 Subject: [PATCH 097/118] Setting ACE_isBelt for RHS magazine classes --- optionals/compat_rhs_afrf3/CfgMagazines.hpp | 17 +++++++++++ optionals/compat_rhs_usf3/CfgMagazines.hpp | 31 +++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 optionals/compat_rhs_afrf3/CfgMagazines.hpp create mode 100644 optionals/compat_rhs_usf3/CfgMagazines.hpp diff --git a/optionals/compat_rhs_afrf3/CfgMagazines.hpp b/optionals/compat_rhs_afrf3/CfgMagazines.hpp new file mode 100644 index 0000000000..6acd70844a --- /dev/null +++ b/optionals/compat_rhs_afrf3/CfgMagazines.hpp @@ -0,0 +1,17 @@ +class cfgMagazines { + class VehicleMagazine; + class rhs_30Rnd_545x39_AK; + + class rhs_100Rnd_762x54mmR: rhs_30Rnd_545x39_AK { + ace_isbelt = 1; + }; + class rhs_100Rnd_762x54mmR_green: rhs_100Rnd_762x54mmR { + ace_isbelt = 1; + }; + class rhs_mag_127x108mm_50 : VehicleMagazine { + ace_isbelt = 1; + }; + class rhs_mag_127x108mm_150 : rhs_mag_127x108mm_50 { + ace_isbelt = 0; + }; +}; \ No newline at end of file diff --git a/optionals/compat_rhs_usf3/CfgMagazines.hpp b/optionals/compat_rhs_usf3/CfgMagazines.hpp new file mode 100644 index 0000000000..f067cd6eee --- /dev/null +++ b/optionals/compat_rhs_usf3/CfgMagazines.hpp @@ -0,0 +1,31 @@ +class cfgMagazines { + class CA_Magazine; + class VehicleMagazine; + class rhs_mag_30Rnd_556x45_M855A1_Stanag; + class rhs_mag_30Rnd_556x45_M200_Stanag; + + class rhsusf_100Rnd_556x45_soft_pouch: rhs_mag_30Rnd_556x45_M855A1_Stanag { + ace_isbelt = 1; + }; + class rhsusf_100Rnd_556x45_M200_soft_pouch: rhs_mag_30Rnd_556x45_M200_Stanag { + ace_isbelt = 1; + }; + class rhsusf_200Rnd_556x45_soft_pouch: rhsusf_100Rnd_556x45_soft_pouch { + ace_isbelt = 1; + }; + class rhsusf_100Rnd_762x51: CA_Magazine { + ace_isbelt = 1; + }; + class rhsusf_100Rnd_762x51_m80a1epr: rhsusf_100Rnd_762x51 { + ace_isbelt = 1; + }; + class rhsusf_100Rnd_762x51_m993: rhsusf_100Rnd_762x51 { + ace_isbelt = 1; + }; + class rhs_mag_100rnd_127x99_mag: VehicleMagazine { + ace_isbelt = 1; + }; + class RHS_48Rnd_40mm_MK19: VehicleMagazine { + ace_isbelt = 1; + }; +}; \ No newline at end of file From d96a421717af034fe5d7813d5b2b3837ab97ceb8 Mon Sep 17 00:00:00 2001 From: Fadi Date: Thu, 25 Jun 2015 09:20:16 -0500 Subject: [PATCH 098/118] Disabling ACE FCS on RHS vehicles to prevent conflict with their own hardcoded vehicle FCS --- optionals/compat_rhs_afrf3/CfgVehicles.hpp | 156 +++++++++++++++++++++ optionals/compat_rhs_afrf3/config.cpp | 2 + optionals/compat_rhs_usf3/CfgVehicles.hpp | 32 +++++ optionals/compat_rhs_usf3/config.cpp | 2 + 4 files changed, 192 insertions(+) create mode 100644 optionals/compat_rhs_afrf3/CfgVehicles.hpp create mode 100644 optionals/compat_rhs_usf3/CfgVehicles.hpp diff --git a/optionals/compat_rhs_afrf3/CfgVehicles.hpp b/optionals/compat_rhs_afrf3/CfgVehicles.hpp new file mode 100644 index 0000000000..e9c71f4da7 --- /dev/null +++ b/optionals/compat_rhs_afrf3/CfgVehicles.hpp @@ -0,0 +1,156 @@ +class cfgVehicles { + class LandVehicle; + class Tank: LandVehicle { + class NewTurret; + }; + class Tank_F: Tank { + class Turrets { + class MainTurret: NewTurret { + class Turrets { + class CommanderOptics; + }; + }; + }; + }; + class Car; + class Car_F: Car { + class ViewPilot; + class NewTurret; + }; + class Wheeled_APC_F: Car_F { + class NewTurret; + class Turrets { + class MainTurret: NewTurret + { + class ViewOptics; + }; + }; + class CommanderOptics; + }; + class rhs_bmd_base: Tank_F { + class Turrets: Turrets { + class CommanderOptics: NewTurret { + ace_fcs_Enabled = 0; + }; + class MainTurret: MainTurret { + ace_fcs_Enabled = 0; + }; + class GPMGTurret1: NewTurret { + ace_fcs_Enabled = 0; + }; + }; + }; + class rhs_bmp1tank_base: Tank_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + ace_fcs_Enabled = 0; + }; + class Com_BMP1: NewTurret { + ace_fcs_Enabled = 0; + }; + }; + }; + class rhs_bmp_base: rhs_bmp1tank_base {}; + class rhs_bmp1_vdv: rhs_bmp_base {}; + class rhs_bmp2e_vdv : rhs_bmp1_vdv { + class Turrets: Turrets { + class MainTurret: MainTurret { + class Turrets: Turrets { + class CommanderOptics : CommanderOptics { + ace_fcs_Enabled = 0; + }; + }; + }; + }; + }; + class rhs_bmp3tank_base: Tank_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + ace_fcs_Enabled = 0; + class Turrets: Turrets { + class CommanderOptics: CommanderOptics { + ace_fcs_Enabled = 0; + }; + }; + }; + class GPMGTurret1: NewTurret { + ace_fcs_Enabled = 0; + }; + }; + }; + class rhs_btr_base: Wheeled_APC_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + ace_fcs_Enabled = 0; + }; + class CommanderOptics: CommanderOptics { + ace_fcs_Enabled = 0; + }; + }; + }; + class rhs_a3spruttank_base: Tank_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + ace_fcs_Enabled = 0; + class Turrets: Turrets { + class CommanderOptics: CommanderOptics + { + ace_fcs_Enabled = 0; + }; + }; + }; + class GPMGTurret1: NewTurret { + ace_fcs_Enabled = 0; + }; + }; + }; + class rhs_a3t72tank_base: Tank_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + ace_fcs_Enabled = 0; + class Turrets: Turrets { + class CommanderOptics: CommanderOptics { + ace_fcs_Enabled = 0; + }; + class CommanderMG: CommanderOptics { + ace_fcs_Enabled = 0; + }; + }; + }; + }; + }; + class rhs_t72bd_tv: rhs_a3t72tank_base {}; + class rhs_t90_tv: rhs_t72bd_tv { + class Turrets: Turrets { + class MainTurret: MainTurret { + ace_fcs_Enabled = 0; + class Turrets: Turrets { + class CommanderOptics: CommanderOptics { + ace_fcs_Enabled = 0; + }; + }; + }; + }; + }; + class rhs_tank_base: Tank_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + ace_fcs_Enabled = 0; + class Turrets: Turrets { + class CommanderOptics: CommanderOptics { + ace_fcs_Enabled = 0; + }; + class CommanderMG: CommanderOptics { + ace_fcs_Enabled = 0; + }; + }; + }; + }; + }; + + class rhs_infantry_msv_base; + class rhs_pilot_base : rhs_infantry_msv_base + { + ace_gforcecoef = 0.55; + }; +}; \ No newline at end of file diff --git a/optionals/compat_rhs_afrf3/config.cpp b/optionals/compat_rhs_afrf3/config.cpp index 8b7f9d5ca4..5e88ad2830 100644 --- a/optionals/compat_rhs_afrf3/config.cpp +++ b/optionals/compat_rhs_afrf3/config.cpp @@ -12,4 +12,6 @@ class CfgPatches { }; #include "CfgAmmo.hpp" +#include "CfgMagazines.hpp" #include "CfgWeapons.hpp" +#include "CfgVehicles.hpp" \ No newline at end of file diff --git a/optionals/compat_rhs_usf3/CfgVehicles.hpp b/optionals/compat_rhs_usf3/CfgVehicles.hpp new file mode 100644 index 0000000000..2be7a8076e --- /dev/null +++ b/optionals/compat_rhs_usf3/CfgVehicles.hpp @@ -0,0 +1,32 @@ +class cfgVehicles { + class LandVehicle; + class Tank: LandVehicle { + class NewTurret; + }; + class Tank_F: Tank { + class Turrets { + class MainTurret: NewTurret { + class Turrets { + class CommanderOptics; + }; + }; + }; + }; + + class MBT_01_base_F: Tank_F {}; + class rhsusf_m1a1tank_base: MBT_01_base_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + ace_fcs_Enabled = 0; + class Turrets: Turrets { + class CommanderOptics: CommanderOptics { + ace_fcs_Enabled = 0; + }; + class Loader: CommanderOptics { + ace_fcs_Enabled = 0; + }; + }; + }; + }; + }; +}; \ No newline at end of file diff --git a/optionals/compat_rhs_usf3/config.cpp b/optionals/compat_rhs_usf3/config.cpp index bc4d264697..9a13565ccf 100644 --- a/optionals/compat_rhs_usf3/config.cpp +++ b/optionals/compat_rhs_usf3/config.cpp @@ -12,4 +12,6 @@ class CfgPatches { }; #include "CfgAmmo.hpp" +#include "CfgMagazines.hpp" #include "CfgWeapons.hpp" +#include "CfgVehicles.hpp" \ No newline at end of file From bd8620207de2192c7970364e3cb790663423ee8e Mon Sep 17 00:00:00 2001 From: Josuan Albin Date: Thu, 25 Jun 2015 20:59:00 +0200 Subject: [PATCH 099/118] documentation pass 7 --- documentation/feature/attach.md | 4 +- documentation/feature/captives.md | 13 +- documentation/feature/concertina_wire.md | 22 ++ documentation/feature/dagr.md | 14 ++ documentation/feature/disarming.md | 2 +- documentation/feature/dragging.md | 4 +- documentation/feature/explosives.md | 6 +- documentation/feature/fonts.md | 20 ++ documentation/feature/hearing.md | 2 +- documentation/feature/huntIR.md | 42 ++++ documentation/feature/logistics_uavbattery.md | 2 +- documentation/feature/logistics_wirecutter.md | 2 +- documentation/feature/magazinerepack.md | 2 +- documentation/feature/maptools.md | 2 +- documentation/feature/mk6mortar.md | 2 +- documentation/feature/mx2a.md | 14 ++ documentation/feature/overheating.md | 4 +- documentation/feature/reloadlaunchers.md | 2 +- documentation/feature/respawn.md | 2 +- documentation/feature/sandbags.md | 24 ++ documentation/feature/spotting_scope.md | 21 ++ documentation/feature/tacticallader.md | 14 ++ documentation/feature/tripod.md | 24 ++ documentation/feature/ui.md | 15 ++ documentation/feature/yardage450.md | 22 ++ documentation/missionmaker/classnames.md | 73 +++++- documentation/missionmaker/modules.md | 215 +++++++++++++----- 27 files changed, 485 insertions(+), 84 deletions(-) create mode 100644 documentation/feature/concertina_wire.md create mode 100644 documentation/feature/dagr.md create mode 100644 documentation/feature/fonts.md create mode 100644 documentation/feature/huntIR.md create mode 100644 documentation/feature/mx2a.md create mode 100644 documentation/feature/sandbags.md create mode 100644 documentation/feature/spotting_scope.md create mode 100644 documentation/feature/tacticallader.md create mode 100644 documentation/feature/tripod.md create mode 100644 documentation/feature/ui.md create mode 100644 documentation/feature/yardage450.md diff --git a/documentation/feature/attach.md b/documentation/feature/attach.md index 6cbfc640ee..a248f8657f 100644 --- a/documentation/feature/attach.md +++ b/documentation/feature/attach.md @@ -17,14 +17,14 @@ Adds an attachable IR strobe, which is only visible using night vision devices a ## 2. Usage ### 2.1 Attaching to yourself -- Use Self Interact CTRL+Left Windows (ACE3 default key bind `Self Interaction Key`). +- Use Self Interact CTRL+⊞ Win (ACE3 default). - Select `Equipment`. - Select `Attach item`. - Select which item you want to attach. - Repeat the process to detach. ### 2.2 Attaching to a vehicle -- Interact with the vehicle Left Windows (ACE3 default key bind `Interact Key`). +- Interact with the vehicle ⊞ Win (ACE3 default). - Select `Attach item`. - Select your item and follow the instructions on the screen. - Repeat the process to detach. diff --git a/documentation/feature/captives.md b/documentation/feature/captives.md index db0481dad7..33b7ec3739 100644 --- a/documentation/feature/captives.md +++ b/documentation/feature/captives.md @@ -24,20 +24,23 @@ Allows players to surrender. It renders the unit unable to move and with the han ### 2.1 Taking a unit into captivity - You need `Cable Tie`. -- Approach the unit and Interact Left Windows (ACE3 default key bind `Interact Key`). +- Approach the unit and Interact ⊞ win (ACE3 default). - The interaction is located around the hands in the form of a handcuffs icon. - Repeat to release. ### 2.2 Escorting a captive -- Interact with the captive Left Windows. +- Interact with the captive ⊞ win. - Select the `Escort prisoner` option. -- To stop escorting, use the mousewheel and select `Release` or use Self Interaction CTRL+Left Windows and select `Release`. +- To stop escorting, use the mousewheel and select `Release` or use Self Interaction CTRL+⊞ win and select `Release`. ### 2.3 Loading and unloading a captive into/from a vehicle - Escort the captive. - Approach the vehicle you wish to load the captive unit into. -- Interact with the vehicle Left Windows and select `Load captive`. -- Interact with the vehicle to unload. +- Interact with the vehicle ⊞ win and select `Load captive`. +- To unload the captive interact with the vehicle ⊞ win +- Select `Passengers`. +- Select the captive. +- Select `Unload captive`. ## 3. Dependencies diff --git a/documentation/feature/concertina_wire.md b/documentation/feature/concertina_wire.md new file mode 100644 index 0000000000..0c0cdb3ab6 --- /dev/null +++ b/documentation/feature/concertina_wire.md @@ -0,0 +1,22 @@ +--- +layout: wiki +title: concertina wire +description: +group: feature +parent: wiki +--- + +## 1. Overview + +A concertina wire is a type of barbed wire formed in large coils that can be expanded to form obstacles, in ACE3 any vehicle making contact with it get it's tires destroyed. + +## 2. Usage + +### 2.1 Deploying the concertina wire +- Approach the concertina coil and select ⊞ Win (ACE3 default) +- Select `Deploy concertina wire`. +- Follow the instructions on screen. + +## 3. Dependencies + +`ace_apl` , `ace_interaction` diff --git a/documentation/feature/dagr.md b/documentation/feature/dagr.md new file mode 100644 index 0000000000..63a182d1b6 --- /dev/null +++ b/documentation/feature/dagr.md @@ -0,0 +1,14 @@ +--- +layout: wiki +title: Dagr +group: feature +parent: wiki +--- + +## 1. Overview + +Adds the defense Advanced GPS Receiver. + +## 3. Dependencies + +`ace_weather` \ No newline at end of file diff --git a/documentation/feature/disarming.md b/documentation/feature/disarming.md index 84613587b3..02b8dc2163 100644 --- a/documentation/feature/disarming.md +++ b/documentation/feature/disarming.md @@ -14,7 +14,7 @@ You can search the inventory and disarm captured or unconscious units. ## 2. Usage ### 2.1 Searching and disarming -- Interact with the captured or unconscious unit Left Windows (ACE3 default key bind `Interaction Key`). +- Interact with the captured or unconscious unit ⊞ Win (ACE3 default key bind `Interaction Key`). - Select `Open inventory`. - Drag & Drop the items you wish to remove from the unit. diff --git a/documentation/feature/dragging.md b/documentation/feature/dragging.md index 7c0cbd201c..e3fdf0b6fe 100644 --- a/documentation/feature/dragging.md +++ b/documentation/feature/dragging.md @@ -14,9 +14,9 @@ This adds the option to drag or carry units or objects. ### 2.1 Dragging / Carrying units and objects - You can only drag or carry an unconscious unit. -- Interact with the unit or object Left Windows (ACE3 default key bind `Interact Key`). +- Interact with the unit or object ⊞ Win (ACE3 default key bind `Interact Key`). - Select `Drag` or `Carry`. -- To release, use the mouse wheel and select `Release` or use Self Interaction CTRL+Left Windows and select `Release`. +- To release, use the mouse wheel and select `Release` or use Self Interaction CTRL+⊞ Win and select `Release`. ## 3. Dependencies diff --git a/documentation/feature/explosives.md b/documentation/feature/explosives.md index 3aae12a56d..a88b9ae1b4 100644 --- a/documentation/feature/explosives.md +++ b/documentation/feature/explosives.md @@ -20,18 +20,18 @@ Enables attaching explosives to vehicles. ## 2. Usage ### 2.1 Placing explosives -- Use self interaction CTRL+Left Windows (ACE3 default key bind `Self Interaction Key`). +- Use self interaction CTRL+⊞ Win (ACE3 default key bind `Self Interaction Key`). - Select `Explosives`. - Choose your explosive type and follow the instructions on the screen. ### 2.2 Arming and detonating explosives -- Interact with the explosive Left Windows (ACE3 default key bind `Interact Key`). +- Interact with the explosive ⊞ Win (ACE3 default key bind `Interact Key`). - Choose the arming method. - For clackers use Self Interaction `Explosives` → `Detonate` and choose the corresponding Firing Device. ### 2.3 Defusing explosives - A `Defusal Kit` is required. -- Interact with the explosive Left Windows. +- Interact with the explosive ⊞ Win. - Select `Disarm`. - You are safe to pick it up after the action has completed. diff --git a/documentation/feature/fonts.md b/documentation/feature/fonts.md new file mode 100644 index 0000000000..8767b33f28 --- /dev/null +++ b/documentation/feature/fonts.md @@ -0,0 +1,20 @@ +--- +layout: wiki +title: Fonts +group: feature +parent: wiki +--- + +## 1. Overview + +### 1.1 Sub-feature 1 +Short description of sub-feature 1. + +### 1.2 Sub-feature 2 +Short description of sub-feature 2. + +## 2. Usage + +## 3. Dependencies + +`ace_something` \ No newline at end of file diff --git a/documentation/feature/hearing.md b/documentation/feature/hearing.md index ba19ed154f..5389f0c3d5 100644 --- a/documentation/feature/hearing.md +++ b/documentation/feature/hearing.md @@ -19,7 +19,7 @@ missile launchers will be equipped with those, but remember to put them in. ### 2.1 Equipping earplugs - For this you need the `Earplugs` item. -- Press the self interaction key CTRL + Left Windows (ACE3 default key bind `Self Interaction Key`). +- Press the self interaction key CTRL + ⊞ Win (ACE3 default key bind `Self Interaction Key`). - Select `Equipment`. - Select `Earplugs in`. - Same method to remove them but the option is `Earplugs out`. diff --git a/documentation/feature/huntIR.md b/documentation/feature/huntIR.md new file mode 100644 index 0000000000..10f8248b66 --- /dev/null +++ b/documentation/feature/huntIR.md @@ -0,0 +1,42 @@ +--- +layout: wiki +title: HuntIR +group: feature +parent: wiki +--- + +## 1. Overview + +### 1.1 The HuntIR +The **H**igh altitude **U**nit **N**avigated **T**actical **I**maging **R**ound (HuntIR) is designed to be fired from a grenade launcher, after being fired in the air the in built parachute will be deployed and the IR CMOS camera will activate, providing a video stream until it touches the ground or get shot down. + +## 2. Usage +NOTE: the HuntIR round doesn't work with modded weapons without a compatibility fix made either by the ACE3 team or the mod team. + +### 2.1 Using the HuntIR +- To be able to connect to the IR CMOS camera you'll need a `HuntIR monitor`. +- Fire the HuntIR round as high as possible over the area you want to observe. +- Open the `HuntIR monitor`. + - To open the `HuntIR monitor` self interact CTRL + ⊞ Win (ACE3 default) + - Select `equipment`. + - Select `Activate HuntIR monitor`. +- You now have control of the IR CMOS camera to close the monitor press ESC or ⊞ Win + +### 2.2 IR CMOS camera controls + +Shortcut | Action +------------ | ------------- +A | Lower zoom level +D | Increase zoom level +N | Toggle NV and TI modes +S | Next camera +W | Previous camera + | Rotate camera anticlockwise +| Rotate camera clockwise + | Raise camera + | Lower camera +R | Reset camera + +## 3. Dependencies + +`ace_common` \ No newline at end of file diff --git a/documentation/feature/logistics_uavbattery.md b/documentation/feature/logistics_uavbattery.md index 0b371c9f65..2920d4b7a4 100644 --- a/documentation/feature/logistics_uavbattery.md +++ b/documentation/feature/logistics_uavbattery.md @@ -15,7 +15,7 @@ Adds an item `ACE_UAVBattery` that allows refuelling / recharging of the "Darter ### 2.1 Recharging the darter - For this you need a `UAV battery` and the UAV needs to be a quad-copter. -- Interact with the UAV Left Windows (ACE3 default key bind `Interact Key`) +- Interact with the UAV ⊞ Win (ACE3 default key bind `Interact Key`) - Select `Recharge` ## 3. Dependencies diff --git a/documentation/feature/logistics_wirecutter.md b/documentation/feature/logistics_wirecutter.md index cb27b7d9da..077e3b48cb 100644 --- a/documentation/feature/logistics_wirecutter.md +++ b/documentation/feature/logistics_wirecutter.md @@ -16,7 +16,7 @@ Adds an item `ACE_wirecutter` that allows cutting of fences in Arma 3 and AllInA ### 2.1 Using the wirecutter - For this you need a `Wirecutter`. - Approach the fence you want to cut. -- Press the interaction key Left Windows (ACE3 default key bind `Interaction Key`). +- Press the interaction key ⊞ Win (ACE3 default key bind `Interaction Key`). - Find the interaction point and select `Cut Fence` (the only option). ## 3. Dependencies diff --git a/documentation/feature/magazinerepack.md b/documentation/feature/magazinerepack.md index 8a493afa56..191f12d2b7 100644 --- a/documentation/feature/magazinerepack.md +++ b/documentation/feature/magazinerepack.md @@ -15,7 +15,7 @@ Adds the ability to repack magazines of the same type. ### 2.1 Repacking - For this you need multiple half empty mags of the same type. -- Press the self interaction button CTRL + Left Windows (ACE3 default key bind `Self Interaction Key`). +- Press the self interaction button CTRL + ⊞ Win (ACE3 default key bind `Self Interaction Key`). - Select `Repack magazines`. - Select the type of magazines you want to repack. diff --git a/documentation/feature/maptools.md b/documentation/feature/maptools.md index 8ebb97097a..a67412343f 100644 --- a/documentation/feature/maptools.md +++ b/documentation/feature/maptools.md @@ -22,7 +22,7 @@ If you are equipped with a vanilla GPS it will be shown on the map. (You don't n ### 2.1 Using map tools - For this you need to have `Map Tools`. - Open the map M (Arma 3 default key bind `Map`). -- Press the self interaction key CTRL + Left Windows (ACE3 default key bind `Self Interaction Key`). +- Press the self interaction key CTRL + ⊞ Win (ACE3 default key bind `Self Interaction Key`). - Select `Map tools`. - Select the type of tools you want to use. - Note that you can drag the Roamer (map tool) around with LMB and rotate it with CTRL + LMB. diff --git a/documentation/feature/mk6mortar.md b/documentation/feature/mk6mortar.md index 05ecf97bbf..eb4b22caaf 100644 --- a/documentation/feature/mk6mortar.md +++ b/documentation/feature/mk6mortar.md @@ -18,7 +18,7 @@ ACE3 adds wind deflection for shells as well as a rangetable to accurately take ### 2.2 Working with the rangetable - To open the table: - - Self interact CTRL + Left Windows + - Self interact CTRL + ⊞ Win - Select `equipment`. - Select `Open 82mm Rangetable`. diff --git a/documentation/feature/mx2a.md b/documentation/feature/mx2a.md new file mode 100644 index 0000000000..892991d3b7 --- /dev/null +++ b/documentation/feature/mx2a.md @@ -0,0 +1,14 @@ +--- +layout: wiki +title: MX-2A +group: feature +parent: wiki +--- + +## 1. Overview + +Adds the MX-2A thermal imaging device. + +## 3. Dependencies + +`ace_apl` \ No newline at end of file diff --git a/documentation/feature/overheating.md b/documentation/feature/overheating.md index a02064caa7..dcbc4c1939 100644 --- a/documentation/feature/overheating.md +++ b/documentation/feature/overheating.md @@ -25,12 +25,12 @@ Adds the ability to changes barrels on machine guns to compensate for those effe ### 2.2 Swapping barrels - For this you need a `Spare barrel` and a compatible weapon. -- Press self interaction CTRL + Left Windows (ACE3 default key bind `Self Interaction Key`). +- Press self interaction CTRL + ⊞ Win (ACE3 default key bind `Self Interaction Key`). - Select `Equipment`. - Select `Swap barrel`. ### 2.3 Checking your barrel temperature -- Press self interaction CTRL + Left Windows. +- Press self interaction CTRL + ⊞ Win. - Select `Equipment`. - Select `Check weapon temperature`. diff --git a/documentation/feature/reloadlaunchers.md b/documentation/feature/reloadlaunchers.md index eb697b81bc..773814a73e 100644 --- a/documentation/feature/reloadlaunchers.md +++ b/documentation/feature/reloadlaunchers.md @@ -13,7 +13,7 @@ Add the ability to reload someone else's launcher. ### 2. Usage ### 2.1 Reloading someone else's launcher -- Press the interaction key Left Windows and aim at your buddy's launcher. +- Press the interaction key ⊞ Win and aim at your buddy's launcher. - Select `reload launcher`. - Select the type of ammo. diff --git a/documentation/feature/respawn.md b/documentation/feature/respawn.md index 114a59b88e..753784b52b 100644 --- a/documentation/feature/respawn.md +++ b/documentation/feature/respawn.md @@ -23,7 +23,7 @@ Adds rallypoints to all 3 sides to enable teleportation from base spawn to FOB's ### 2.1 Using rallypoints - For this to work pre-emptive preparations need to be made by the mission maker. - Approach the rallypoint flagpole -- Use the interaction key Left Windows (ACE3 default key bind `Interaction key`). +- Use the interaction key ⊞ Win (ACE3 default key bind `Interaction key`). - Select teleport to (base / rallypoint). diff --git a/documentation/feature/sandbags.md b/documentation/feature/sandbags.md new file mode 100644 index 0000000000..5e0011b755 --- /dev/null +++ b/documentation/feature/sandbags.md @@ -0,0 +1,24 @@ +--- +layout: wiki +title: Sandbags +group: feature +parent: wiki +--- + +## 1. Overview + +Adds stackable sandbags able to block bullets, shrapnel and small explosions. +Note that those sandbags are affected by physics, a rocket will send them flying. + +## 2. Usage + +### 2.1 Placing the sandbags +- You'll need at least one `sandbag (empty)`. +- You need to be over a grass area / sand area to be able to fill the sandbag. +- Self interact CTRL+⊞ Win (ACE3 default). +- Select `Deploy sandbag`. +- Follow the instruction on screen. + +## 3. Dependencies + +`ace_interaction` \ No newline at end of file diff --git a/documentation/feature/spotting_scope.md b/documentation/feature/spotting_scope.md new file mode 100644 index 0000000000..f1e73e5f3b --- /dev/null +++ b/documentation/feature/spotting_scope.md @@ -0,0 +1,21 @@ +--- +layout: wiki +title: Spotting scope +group: feature +parent: wiki +--- + +## 1. Overview + +Adds a deployable spotting scope. + +## 2. Usage + +### 2.1 Deploying the spotting scope +- Self interact CTRL+⊞ Win (ACE3 default). +- Select `Equipment`. +- Select `place spotting scope` (note that the scope will be at your feet). + +## 3. Dependencies + +`ace_apl` , `ace_interaction` \ No newline at end of file diff --git a/documentation/feature/tacticallader.md b/documentation/feature/tacticallader.md new file mode 100644 index 0000000000..6133f415a2 --- /dev/null +++ b/documentation/feature/tacticallader.md @@ -0,0 +1,14 @@ +--- +layout: wiki +title: Tactical ladder +group: feature +parent: wiki +--- + +## 1. Overview + +Adds a packable tactical ladder. + +## 3. Dependencies + +`ace_apl` , `ace_interaction` \ No newline at end of file diff --git a/documentation/feature/tripod.md b/documentation/feature/tripod.md new file mode 100644 index 0000000000..ec9bdb79e0 --- /dev/null +++ b/documentation/feature/tripod.md @@ -0,0 +1,24 @@ +--- +layout: wiki +title: Tripod +group: feature +parent: wiki +--- + +## 1. Overview + +Adds a packable tripod deployable on the field. It features a flat part to deploy your weapon on and adjustable legs. + +## 2. Usage + +### 2.1 deploying the tripod +- Note that you need a `SSW kit` in your inventory. +- Self interact CTRL+⊞ Win. +- Select `Equipment` +- Select `Place SSWT kit`. + +To adjust or pick up the tripod just interact with it ⊞ Win and select the desired action. + +## 3. Dependencies + +`ace_interaction` \ No newline at end of file diff --git a/documentation/feature/ui.md b/documentation/feature/ui.md new file mode 100644 index 0000000000..eb7cf3ff58 --- /dev/null +++ b/documentation/feature/ui.md @@ -0,0 +1,15 @@ +--- +layout: wiki +title: UI +group: feature +parent: wiki +--- + +## 1. Overview + +Changes the chat contrast on the map to allow easier reading. + + +## 3. Dependencies + +`ace_common` \ No newline at end of file diff --git a/documentation/feature/yardage450.md b/documentation/feature/yardage450.md new file mode 100644 index 0000000000..66c4a2d4e3 --- /dev/null +++ b/documentation/feature/yardage450.md @@ -0,0 +1,22 @@ +--- +layout: wiki +title: Yardage 450 +group: feature +parent: wiki +--- + +## 1. Overview + +Adds the Bushnell Yardage Pro Sport 450 Laser Rangefinder. + +## 2. Usage + +### 2.1 How to use the Yardage 450 +- Bring it up like any other binocular +- Tap R once to activate the device. +- Sight the target and Hold R until `TARGET AQCUIRED` appears on top of the screen. +- The range in meters should now appear at the bottom of the screen. + +## 3. Dependencies + +`ace_apl` , `ace_laser` \ No newline at end of file diff --git a/documentation/missionmaker/classnames.md b/documentation/missionmaker/classnames.md index ad8956f749..9ea0d5b556 100644 --- a/documentation/missionmaker/classnames.md +++ b/documentation/missionmaker/classnames.md @@ -77,6 +77,21 @@ classname | in game name | type | --------- | --------- | --------- ACE_Banana | banana | ACE_ItemCore | +### Concertina_wire +`added in 3.1.1` + +classname | in game name | type | +--------- | --------- | --------- +ACE_ConcertinaWireCoil | Concertina Wire Coil | ThingX | +ACE_ConcertinaWire | Concertina Wire | deployed concertina wire | + +### Dagr +`added in 3.1.1` + +classname | in game name | type | +--------- | --------- | --------- +ACE_DAGR | DAGR | ACE_ItemCore | + ### Disposable `added in 3.0.0.3` @@ -106,13 +121,22 @@ ACE_HandFlare_Green | M127A1 Hand Held Signal (Green) | Grenade | ACE_HandFlare_Yellow | M127A1 Hand Held Signal (Yellow) | Grenade | ACE_M84 | M84 Stun Grenade | Grenade | -### hearing +### Hearing `added in 3.0.0.3` classname | in game name | type | --------- | --------- | --------- ACE_EarPlugs | Earplugs | ACE_ItemCore | +### HuntIR +`added in 3.1.1` + +classname | in game name | type | +--------- | --------- | --------- +ACE_HuntIR_monitor | HuntIR monitor | ACE_ItemCore | +ACE_HuntIR_M203 | HuntIR Round | Grenade shell | +ACE_HuntIR_Box | HuntIR Transport Box | ammo box | + ### Kestrel `added in 3.0.0.3` @@ -187,6 +211,14 @@ classname | in game name | type | --------- | --------- | --------- ACE_RangeTable_82mm | 82mm Rangetable | ACE_ItemCore | +### M2XA +`added in 3.1.1` + +classname | in game name | type | +--------- | --------- | --------- +ACE_MX2A | MX-2A | Binocular | + + ### Nightvision `added in 3.0.0.3` @@ -254,3 +286,42 @@ ACE_key_west | Vehicle Key: West | ACE_ItemCore | ACE_key_east | Vehicle Key: East | ACE_ItemCore | ACE_key_indp | Vehicle Key: Independent | ACE_ItemCore | ACE_key_civ | Vehicle Key: Civilian | ACE_ItemCore | + +### Sandbag +`added in 3.1.1` + +classname | in game name | type | +--------- | --------- | --------- +ACE_Sandbag_empty | Sandbag (empty) | ACE_ItemCore | +ACE_SandbagObject | Sandbag | ThingX | + +### Spotting scope +`added in 3.1.1` + +classname | in game name | type | +--------- | --------- | --------- +ACE_SpottingScope | Spotting Scope | ACE_ItemCore | +ACE_SpottingScopeObject | Spotting Scope (placed) | StaticATWeapon | + +### Tactical ladder +`added in 3.1.1` + +classname | in game name | type | +--------- | --------- | --------- +ACE_TacticalLadder_Pack | Telescopic Ladder | Backpack | +ACE_Tactical_Ladder | Telescopic Ladder (placed) | house | + +### Tripod +`added in 3.1.1` + +classname | in game name | type | +--------- | --------- | --------- +ACE_Tripod | SSWT Kit | ACE_ItemCore | +ACE_TripodObject | SSWT Kit (placed) | ThingX | + +### Yardage 450 +`added in 3.1.1` + +classname | in game name | type | +--------- | --------- | --------- +ACE_Yardage450 | Yardage 450 | Binocular | \ No newline at end of file diff --git a/documentation/missionmaker/modules.md b/documentation/missionmaker/modules.md index 2402078bb5..5708a16379 100644 --- a/documentation/missionmaker/modules.md +++ b/documentation/missionmaker/modules.md @@ -18,29 +18,39 @@ This module allows enabling and configuring advanced ballistic simulations. 1. **Advanced Ballistics (Boolean)**
Enables advanced ballistics.
`Default value: No` + 2. **Enabled For Snipers (Boolean)**
Enables advanced ballistics for non local snipers (when using high power optics).
`Default value: Yes` + 3. **Enabled For Group Members (Boolean)**
Enables advanced ballistics for non local group members.
`Default value: No` + 4. **Enabled For Everyone (Boolean)**
Enables advanced ballistics for all non local players (enabling this feature may degrade performance during heavy firefights in multiplayer).
`Default value: No` + 5. **Disabled In FullAuto Mode (Boolean)**
Disables the advanced ballistics during full auto fire.
`Default value: No` + 6. **Enable Ammo Temperature Simulation (Boolean)**
Muzzle velocity varies with ammo temperature.
`Default value: Yes` + 7. **Enable Barrel Length Simulation (Boolean)**
Muzzle velocity varies with barrel length.
`Default value: Yes` + 8. **Enable Bullet Trace Effect (Boolean)**
Enables a bullet trace effect to high caliber bullets (only visible when looking through high power optics).
+`default value: Yes ` + 9. **Simulation Interval (Number)**
Defines the interval between every calculation step.
`Default value: 0.00` + 10. **Simulation Radius (Number)**
Defines the radius around the player (in meters) at which advanced ballistics are applied to projectiles.
`Default value: 3000` @@ -68,7 +78,23 @@ How often the markers should be refreshed (in seconds).
Hide markers for "AI only" groups.
`Default value: No` -### 1.4 Check PBOs +### 1.4 Captives settings +*Part of: ace_captives* + +Controls the settings for cable ties and surrendering. +Very useful if you don't want your players to be able to restrict each others. + +**Settings:** + +1. **Can handcuff own side (Boolean)**
+Determine if you are able to handcuff your own side or not.
+`Default value: Yes` + +2. **Allow surrendering (Boolean)**
+Determine if you are able to surrender or not when your weapon is holstered.
+`Default value: Yes` + +### 1.5 Check PBOs *Part of: ace_common* If you are worried that players haven't updated ACE3 or other mods to the version you're using on the server, you can place the "Check PBOs" module on your map. You can choose one of three posible actions that are being executed when a player joins that has a wrong version of ACE3 or an other mod: @@ -107,7 +133,7 @@ Example 3: @JSRS + @Blastcore-A3:
``` -### 1.5 Explosive System +### 1.6 Explosive System *Part of: ace_explosive* The "Explosive System" module lets you tweak the settings for the new explosive system that ACE3 introduces. @@ -117,18 +143,19 @@ The "Explosive System" module lets you tweak the settings for the new explosive 1. **Require specialists? (Boolean)**
Require explosive specialists to disable explosives.
`Default value: No` + 2. **Punish non-specialists? (Boolean)**
Increase the time it takes to complete actions for non-specialists.
`Default value: Yes` -### 1.6 Friendly Fire Messages +### 1.7 Friendly Fire Messages *Part of: ace_respawn* The "Friendly Fire Messages" module triggers a message when a player kills a friendly or civilian unit. This module isn't needed on servers with a low difficulty setting. -### 1.7 Hearing +### 1.8 Hearing *Part of: ace_hearing* Placing this modules allows you to disable combat deafness usually triggerd by loud explosions or heavy weapons in a players proximity. @@ -140,7 +167,7 @@ Enable combat deafness?
`Default value: Yes` -### 1.8 Interaction System +### 1.9 Interaction System *Part of: ace_interaction* This module allows you to tweak if players should be able to use team management functions (e.g. "switch group", "become leader"). @@ -151,13 +178,13 @@ This module allows you to tweak if players should be able to use team management Should players be allowed to use the Team Management Menu?.
`Default value: Yes` -### 1.9 Make Unit Surrender +### 1.10 Make Unit Surrender *Part of: ace_captives* Syncing units to that module sets them in the captive state with their arms behind their back. Usefull for e.g. hostage rescue missions. -### 1.10 Map +### 1.11 Map *Part of: ace_map* ACE3 introdcues a bit more realism for the vanilla Arma 3 map and how it behaves. Some of these settings can be toggled by this module. @@ -167,18 +194,21 @@ ACE3 introdcues a bit more realism for the vanilla Arma 3 map and how it behaves 1. **Map illumination? (Boolean)**
Calculate dynamic map illumination based on light conditions?.
`Default value: Yes` + 2. **Map shake? (Boolean)**
Make map shake when walking?.
`Default value: Yes` + 3. **Limit map zoom? (Boolean)**
Limit the amount of zoom available for the map?.
`Default value: No` + 4. **Show cursor coordinates? (Boolean)**
Show the grid coordinates on the mouse pointer?.
`Default value: No` -### 1.11 MicroDAGR Map Fill +### 1.12 MicroDAGR Map Fill *Part of: ace_microdagr* Controls how much data is filled on the microDAGR items. Less data restricts the map view to show less on the minimap. @@ -190,7 +220,7 @@ How much map data is filled on MicroDAGR's.
`Default value: "Full Satellite + Buildings"` -### 1.12 MK6 Settings +### 1.13 MK6 Settings *Part of: ace_mk6mortar* ACE3 now includes the first iteration of getting a less arcady point and click mortar experience. @@ -201,35 +231,44 @@ Placing this modules allows you to enable the increased realism in game. 1. **Air Resistance (Boolean)**
For Player Shots, Model Air Resistance and Wind Effects.
`Default value: Yes` + 2. **Allow MK6 Computer (Boolean)**
Show the Computer and Rangefinder (these **NEED** to be removed if you enable air resistance).
`Default value: No` + 3. **Allow MK6 Compass (Boolean)**
Show the MK6 Digital Compass.
`Default value: Yes` -### 1.13 Name Tags +### 1.14 Name Tags *Part of: ace_nametags* This module allows you to tweak the settings for player names tags. **Settings:** -1. **Player Names View Distance (Number)**
+1. **Show player names (Option)**
+Let you choose when nametags appears.
+`Default value: "Do Not Force"` + +2. **Player Names View Distance (Number)**
Distance (in meters) at which player names are shown.
`Default value: 5` -2. **Show name tags for AI? (Option)**
+ +3. **Show name tags for AI? (Option)**
Show the name and rank tags for friendly AI units, or by default allows players to choose it on their own.
`Default value: "Do Not Force"` -3. **Show crew info? (Option)**
+ +4. **Show crew info? (Option)**
Show vehicle crew info, or by default allows players to choose it on their own.
`Default value: "Do Not Force"` -4. **Show for Vehicles? (Boolean)**
+ +5. **Show for Vehicles? (Boolean)**
Show cursor NameTag for vehicle commander (only if client has name tags enabled).
`Default value: No` -### 1.14 Rallypoint System +### 1.15 Rallypoint System *Part of: ace_respawn* This module enables Mission Makers to specificly enable units to move a rallypoint. Every unit that is synced with that module is able to move a rallypoint. @@ -242,7 +281,7 @@ This module enables Mission Makers to specificly enable units to move a rallypoi To enable JIP players to move rally points have a look at [ACE3 Rallypoints](./mission-tools.html#1.-ace-rallypoints). -### 1.15 Respawn System +### 1.16 Respawn System *Part of: ace_respawn* The "Respawn System" module enables players to respawn with the gear they had before dying and to remove bodies of players after a configurable interval (in seconds). @@ -254,7 +293,7 @@ Respawn with the gear a player had just before his death.
`Default value: No` -### 1.16 SwitchUnits System +### 1.17 SwitchUnits System *Part of: ace_switchunits* The [SwitchUnits System](./mission-tools.html#2.-ace-switchunits) enables players to control certain AI units on the map. @@ -264,33 +303,38 @@ The [SwitchUnits System](./mission-tools.html#2.-ace-switchunits) enables player 1. **Switch To West? (Boolean)**
Allow switching to west units?
`Default value: No` + 2. **Switch To East? (Boolean)**
Allow switching to east units?
`Default value: No` + 3. **Switch To Independent? (Boolean)**
Allow switching to independent units?
`Default value: No` + 4. **Switch To Civilian? (Boolean)**
Allow switching to civilian units?
`Default value: No` + 5. **Enable Safe Zone? (Boolean)**
Enable a safe zone around enemy units? Players can't switch to units inside of the safe zone.
`Default value: Yes` + 6. **Safe Zone Radius (Number)**
The safe zone around players from a different team (in meters)
`Default value: 200` -### 1.17 Vehicle Lock +### 1.18 Vehicle Lock *Part of: ace_vehiclelock* These modules allow you to lock and unlock vehicles and their inventory using a key. Players don't receive a key automatically; for key names, see [Classnames Wiki](http://ace3mod.com/wiki/missionmaker/classnames.html#vehicle-lock). -#### 1.17.1 Vehicle Key Assign +#### 1.18.1 Vehicle Key Assign Sync with vehicles and players. Will handout custom keys to players for every synced vehicle. Only valid for objects present at mission start. Example: `[bob, car1, true] call ACE_VehicleLock_fnc_addKeyForVehicle;` - will add a key to bob and program it to work only on car1 -#### 1.17.2.1 Vehicle Lock Setup +#### 1.18.2.1 Vehicle Lock Setup Settings for lockpick strength and initial vehicle lock state. Removes ambiguous lock states. **Settings:** @@ -298,19 +342,21 @@ Settings for lockpick strength and initial vehicle lock state. Removes ambiguous 1. **Lock Vehicle Inventory? (Boolean)**
Locks the inventory of locked vehicles
`Default value: No` + 2. **Vehicle Starting Lock State (Option)**
Set lock state for all vehicles (removes ambiguous lock states)
`Default value: "As Is"` + 3. **Default Lockpick Strength (Number)**
Default Time to lockpick (in seconds)
`Default value: 10` -#### 1.17.2.2 Vehicle setVariables +#### 1.18.2.2 Vehicle setVariables * `ACE_VehicleLock_lockSide` - SIDE: overrides a vehicle's side, allowing locking and unlocking using a different side's key. For example: Unlocking INDEP vehicles with a BLUFOR key. * `ACE_vehicleLock_lockpickStrength` - NUMBER: seconds, determines how long lockpicking with take, overrides the value set in the module for a specific vehicle of the mission maker's choice. -### 1.18 View Distance Limiter +### 1.19 View Distance Limiter *Part of: ace_viewdistance* This module allows disabling the ACE3 View Distance feature as well as setting a view distance limit. @@ -320,12 +366,13 @@ This module allows disabling the ACE3 View Distance feature as well as setting a 1. **Enable ACE viewdistance (Boolean)**
Enables ACE viewdistance
`Default value: Yes` + 2. **View Distance Limit (Number)**
Sets the limit for how high clients can raise their view distance (<= 10000) `Default value: 10000` -### 1.19 Weather +### 1.20 Weather *Part of: ace_weather* This module allows you to customize the weather settings. @@ -344,6 +391,7 @@ Enables sever side weather propagation.

Note:

This is responsible for synchronizing weather between all clients. Disabling it is not recommended.

+ 2. **ACE3 Weather (Boolean)**
Overrides the default weather with ACE3 weather (map based).
`Default value: Yes` @@ -351,21 +399,25 @@ Overrides the default weather with ACE3 weather (map based).
Note:

This can be disabled without affecting the weather propagation above. Useful if you prefer changing weather settings manually.

+ 3. **Sync Rain (Boolean)**
Synchronizes rain.
`Default value: Yes` -3. **Sync Wind (Boolean)**
+ +4. **Sync Wind (Boolean)**
Synchronizes wind.
`Default value: Yes` -3. **Sync Misc (Boolean)**
+ +5. **Sync Misc (Boolean)**
Synchronizes lightnings, rainbow, fog, ...
`Default value: Yes` -4. **Update Interval (Number)**
+ +6. **Update Interval (Number)**
Defines the interval (seconds) between weather updates.
`Default value: 60` -### 1.20 Wind Deflection +### 1.21 Wind Deflection *Part of: ace_winddeflection* This module allows you to define when wind deflection is active. @@ -385,18 +437,47 @@ This module allows you to define when wind deflection is active. 1. **Wind Deflection (Boolean)**
Enables wind deflection.
`Default value: Yes` + 2. **Vehicle Enabled (Boolean)**
Enables wind deflection for static/vehicle gunners.
`Default value: Yes` + 3. **Simulation Interval (Number)**
Defines the interval between every calculation step.
`Default value: 0.05` + 4. **Simulation Radius (Number)**
Defines the radius around the player (in meters) at which projectiles are wind deflected.
`Default value: 3000` +### 1.22 Zeus Settings +*part of: ace_zeus* -### 1.21 LSD Vehicles +This module provides control over vanilla aspects of Zeus. + +**Settings:** + +1. **Ascension Messages (Option)**
+Display global popup messages when a player is assigned as Zeus
+`Default value: No` + +2. **Zeus Eagle (Boolean)**
+Spawn an eagle that follows the Zeus camera
+`Default value: No` + +3. **Wind Sounds (Boolean)**
+Play wind sounds when Zeus remote controls a unit
+`Default value: No` + +4. **Ordnance Warning (Boolean)**
+Play a radio warning when Zeus uses ordnance
+`Default value: No` + +5. **Reveal Mines (Scalar)**
+Reveal mines to allies and/or place map markers
+`Default value: Disabled` + +### 1.23 LSD Vehicles *Part of: ace_core* And then there's the "LSD Vehicles" module … it does 'something' to all vehicles synced to that module. @@ -404,7 +485,6 @@ And then there's the "LSD Vehicles" module … it does 'something' to all v - ## 2. ACE3 Medical *Part of: ace_medical* @@ -417,37 +497,52 @@ This module allows to tweak all the medical settings used in ACE3 1. **Medical Level (Option)**
What is the medical simulation level?
`Default value: "Basic"` + 2. **Medics setting (Option)**
What is the level of detail preferred for medics?
`Default value: "Normal"` + 3. **Enable Litter (Boolean)**
Enable litter being created upon treatment.
-`Default value: "Normal"` +`Default value: "Yes"` + 4. **Life time of litter objects (Number)**
How long should litter objects stay? In seconds. -1 is forever.
`Default value: 1800` + 5. **Enable Screams (Boolean)**
Enable screaming by injured units.
`Default value: Yes` + 6. **Player Damage (Number)**
What is the damage a player can take before being killed?
`Default value: 1` + 7. **AI Damage (Number)**
What is the damage an AI can take before being killed?
`Default value: 1` + 8. **AI Unconsciousness (Option)**
Allow AI to go unconscious.
`Default value: "50/50"` -9. **Prevent instant death (Boolean)**
+ +9. **Remote controlled AI (Boolean)**
+Treats remote controlled units as AI not players ? +`Default value: Yes` + +10. **Prevent instant death (Boolean)**
Have a unit move to unconscious instead of death.
`Default value: No` -10. **Bleeding coefficient (Number)**
+ +11. **Bleeding coefficient (Number)**
Coefficient to modify the bleeding speed.
`Default value: 1` -11. **Pain coefficient (Number)**
+ +12. **Pain coefficient (Number)**
Coefficient to modify the pain intensity.
`Default value: 1` -12. **Pain coefficient (Boolean)**
+ +13. **Sync status (Boolean)**
Keep unit status synced. Recommended on.
`Default value: Yes` @@ -461,31 +556,46 @@ This module allows you to change the default Advanced Medical Settings, when [2. 1. **Enabled for (Option)**
Select what units the advanced medical system will be enabled for.
`Default value: "Players only"` + 2. **Enable Advanced wounds (Boolean)**
Allow reopening of bandaged wounds?
`Default value: No` + 3. **Vehicle Crashes (Boolean)**
Do units take damage from a vehicle crash?
`Default value: Yes` + 4. **Allow PAK (Option)**
Who can use the PAK for full heal?
`Default value: "Medics only"` + 5. **Remove PAK on use (Boolean)**
Should PAK be removed on usage?
`Default value: Yes` + 6. **Locations PAK (Option)**
Where can the personal aid kit be used?
`Default value: "Vehicles & facility"` + 7. **Allow Surgical kit (Option)**
Who can use the surgical kit?
`Default value: "Medics only"` + 8. **Remove Surgical kit (Boolean)**
Should Surgical kit be removed on usage?
`Default value: Yes` + 9. **Locations Surgical kit (Option)**
Where can the Surgical kit be used?
`Default value: "Vehicles & facility"` +10. **Bloodstains (Boolean)**
+Bandaging removes bloodstains. +`Default value: No` + +11. **Pain supression (Boolean)**
+Pain is only temporarly supressed not removed. +`Default value: Yes` ### 2.3 Revive Settings @@ -496,9 +606,11 @@ This modules allows a mission maker to limit the amount of revives for units in 1. **Enable Revive (Option)**
Enable a basic revive system
`Default value: "disable"` + 2. **Max Revive time (Number)**
Max amount of seconds a unit can spend in revive state
`Default value: 120` + 3. **Max Revive lives (Number)**
Max amount of lives a unit. 0 or -1 is disabled.
`Default value: -1` @@ -513,6 +625,7 @@ Using this module you can define which unit class is defined as a medic / doctor 1. **List (String)**
List of unit names that will be classified as medic, separated by commas.
`Default value: ""` + 2. **Is Medic (Boolean)**
Medics allow for more advanced treatment in case of Advanced Medic roles enabled
`Default value: "Regular medic"` @@ -538,6 +651,7 @@ Defines an object as a medical facility. This allows for more advanced treatment 1. **List (String)**
List of vehicles that will be classified as medical vehicle, separated by commas.
`Default value: ""` + 2. **Is Medical Vehicle (Boolean)**
Whether or not the objects in the list will be a medical vehicle.
`Default value: Yes` @@ -559,46 +673,27 @@ This module randomizes the time when the sound file is played and the position w 1. **Sounds (String)**
Class names of the ambiance sounds played. Separated by ','. (Example: `radio_track_01, electricity_loop`).
`Default value: ""` + 2. **Minimal Distance (Number)**
Used for calculating a random position and sets the minimal distance between the players and the played sound file(s) (in meters)
`Default value: 400` + 3. **Maximum Distance (Number)**
Used for calculating a random position and sets the maximum distance between the players and the played sound file(s) (in meters)
`Default value: 900` + 4. **Minimal Delay (Number)**
Minimal delay (in seconds) between sounds played
`Default value: 10` + 5. **Maximum Delay (Number)**
Maximum delay (in seconds) between sounds played
`Default value: 10` + 6. **Follow Players (Boolean)**
Follow players. If set to false, loop will play sounds only nearby logic position.
`Default value: No` + 7. **Volume (Number)**
The volume of the sounds played
-`Default value: 1` - - -## 4. ACE3 Zeus -*Part of: ace_zeus* - -### 4.1 Zeus Settings -This module provides control over vanilla aspects of Zeus. - -**Settings:** - -1. **Ascension Messages (Option)**
-Display global popup messages when a player is assigned as Zeus
-`Default value: No` -2. **Zeus Eagle (Boolean)**
-Spawn an eagle that follows the Zeus camera
-`Default value: No` -3. **Wind Sounds (Boolean)**
-Play wind sounds when Zeus remote controls a unit
-`Default value: No` -4. **Ordnance Warning (Boolean)**
-Play a radio warning when Zeus uses ordnance
-`Default value: No` -5. **Reveal Mines (Scalar)**
-Reveal mines to allies and/or place map markers
-`Default value: Disabled` +`Default value: 1` \ No newline at end of file From 9c62008a249825e951275e0b91b3062b07d54c94 Mon Sep 17 00:00:00 2001 From: Josuan Albin Date: Fri, 26 Jun 2015 15:14:14 +0200 Subject: [PATCH 100/118] doc pass 7 typos --- documentation/feature/dagr.md | 2 +- documentation/feature/huntIR.md | 4 ++-- documentation/feature/spotting_scope.md | 2 +- documentation/feature/tripod.md | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/documentation/feature/dagr.md b/documentation/feature/dagr.md index 63a182d1b6..e4b350295c 100644 --- a/documentation/feature/dagr.md +++ b/documentation/feature/dagr.md @@ -7,7 +7,7 @@ parent: wiki ## 1. Overview -Adds the defense Advanced GPS Receiver. +Adds the Defense Advanced GPS Receiver. ## 3. Dependencies diff --git a/documentation/feature/huntIR.md b/documentation/feature/huntIR.md index 10f8248b66..e4e690dac3 100644 --- a/documentation/feature/huntIR.md +++ b/documentation/feature/huntIR.md @@ -8,7 +8,7 @@ parent: wiki ## 1. Overview ### 1.1 The HuntIR -The **H**igh altitude **U**nit **N**avigated **T**actical **I**maging **R**ound (HuntIR) is designed to be fired from a grenade launcher, after being fired in the air the in built parachute will be deployed and the IR CMOS camera will activate, providing a video stream until it touches the ground or get shot down. +The **H**igh altitude **U**nit **N**avigated **T**actical **I**maging **R**ound (HuntIR) is designed to be fired from a grenade launcher. After being fired in the air the in built parachute will be deployed and the IR CMOS camera will activate, providing a video stream until it touches the ground or get shot down. ## 2. Usage NOTE: the HuntIR round doesn't work with modded weapons without a compatibility fix made either by the ACE3 team or the mod team. @@ -18,7 +18,7 @@ NOTE: the HuntIR round doesn't work with modded weapons without a compatibility - Fire the HuntIR round as high as possible over the area you want to observe. - Open the `HuntIR monitor`. - To open the `HuntIR monitor` self interact CTRL + ⊞ Win (ACE3 default) - - Select `equipment`. + - Select `Equipment`. - Select `Activate HuntIR monitor`. - You now have control of the IR CMOS camera to close the monitor press ESC or ⊞ Win diff --git a/documentation/feature/spotting_scope.md b/documentation/feature/spotting_scope.md index f1e73e5f3b..ead45d540f 100644 --- a/documentation/feature/spotting_scope.md +++ b/documentation/feature/spotting_scope.md @@ -14,7 +14,7 @@ Adds a deployable spotting scope. ### 2.1 Deploying the spotting scope - Self interact CTRL+⊞ Win (ACE3 default). - Select `Equipment`. -- Select `place spotting scope` (note that the scope will be at your feet). +- Select `Place spotting scope` (note that the scope will be at your feet). ## 3. Dependencies diff --git a/documentation/feature/tripod.md b/documentation/feature/tripod.md index ec9bdb79e0..4f57dc05a7 100644 --- a/documentation/feature/tripod.md +++ b/documentation/feature/tripod.md @@ -12,7 +12,7 @@ Adds a packable tripod deployable on the field. It features a flat part to deplo ## 2. Usage ### 2.1 deploying the tripod -- Note that you need a `SSW kit` in your inventory. +- Note that you need a `SSWT kit` in your inventory. - Self interact CTRL+⊞ Win. - Select `Equipment` - Select `Place SSWT kit`. From 3d0d972b1addc6532b43b54f1f7cfa244a02ed2a Mon Sep 17 00:00:00 2001 From: Josuan Albin Date: Fri, 26 Jun 2015 17:14:54 +0200 Subject: [PATCH 101/118] tacticallader and fonts doc updated --- documentation/feature/fonts.md | 10 ++-------- documentation/feature/tacticallader.md | 9 ++++++++- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/documentation/feature/fonts.md b/documentation/feature/fonts.md index 8767b33f28..6c6e0a09a9 100644 --- a/documentation/feature/fonts.md +++ b/documentation/feature/fonts.md @@ -7,14 +7,8 @@ parent: wiki ## 1. Overview -### 1.1 Sub-feature 1 -Short description of sub-feature 1. - -### 1.2 Sub-feature 2 -Short description of sub-feature 2. - -## 2. Usage +this module adds a font that will be used in the future, characters with equal widths to make it easy to structure correctly. ## 3. Dependencies -`ace_something` \ No newline at end of file +`ace_main` \ No newline at end of file diff --git a/documentation/feature/tacticallader.md b/documentation/feature/tacticallader.md index 6133f415a2..030ec0f033 100644 --- a/documentation/feature/tacticallader.md +++ b/documentation/feature/tacticallader.md @@ -7,7 +7,14 @@ parent: wiki ## 1. Overview -Adds a packable tactical ladder. +Adds a deployable ladder with adjustable heigh that you can transport on your back. + +## 2. Usage + +### 2.1 Deploying the ladder +- Self interact CTRL+⊞ Win (ACE3 default). +- Select `Deploy ladder`. +- You can adjust it's position and heigh by interacting with it ⊞ Win (ACE3 default) and following the instructions on screen. ## 3. Dependencies From 5b83942798928422a48708390cc94581e13e345c Mon Sep 17 00:00:00 2001 From: Josuan Albin Date: Fri, 26 Jun 2015 18:19:25 +0200 Subject: [PATCH 102/118] doc pass 7 typos 2 --- documentation/feature/fonts.md | 3 ++- documentation/feature/tacticallader.md | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/documentation/feature/fonts.md b/documentation/feature/fonts.md index 6c6e0a09a9..bf40e5ed2d 100644 --- a/documentation/feature/fonts.md +++ b/documentation/feature/fonts.md @@ -7,7 +7,8 @@ parent: wiki ## 1. Overview -this module adds a font that will be used in the future, characters with equal widths to make it easy to structure correctly. +This module adds a font that will be used in the future, characters with equal widths to make it easy to structure correctly. This is **NOT** present in 3.1.1 because of a bug even if it's present in the sources. + ## 3. Dependencies diff --git a/documentation/feature/tacticallader.md b/documentation/feature/tacticallader.md index 030ec0f033..f992236db6 100644 --- a/documentation/feature/tacticallader.md +++ b/documentation/feature/tacticallader.md @@ -7,14 +7,14 @@ parent: wiki ## 1. Overview -Adds a deployable ladder with adjustable heigh that you can transport on your back. +Adds a deployable ladder with adjustable height that you can transport on your back. ## 2. Usage ### 2.1 Deploying the ladder - Self interact CTRL+⊞ Win (ACE3 default). - Select `Deploy ladder`. -- You can adjust it's position and heigh by interacting with it ⊞ Win (ACE3 default) and following the instructions on screen. +- You can adjust it's position and height by interacting with it ⊞ Win (ACE3 default) and following the instructions on screen. ## 3. Dependencies From c8c1f76e7d01eaff14e97916cd66b10d4cf23709 Mon Sep 17 00:00:00 2001 From: jonpas Date: Fri, 26 Jun 2015 21:31:48 +0200 Subject: [PATCH 103/118] Macro usage, privates fix --- addons/sitting/functions/fnc_sit.sqf | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/addons/sitting/functions/fnc_sit.sqf b/addons/sitting/functions/fnc_sit.sqf index 44d548dce7..1944cb2190 100644 --- a/addons/sitting/functions/fnc_sit.sqf +++ b/addons/sitting/functions/fnc_sit.sqf @@ -16,7 +16,7 @@ */ #include "script_component.hpp" -private ["_configFile", "_sitDirection", "_sitPosition", "_seatRotation", "_sitDirectionVisual"]; +private ["_configFile", "_sitDirection", "_sitPosition", "_sitRotation", "_sitDirectionVisual"]; PARAMS_2(_seat,_player); @@ -46,23 +46,18 @@ _seat setVariable [QGVAR(seatOccupied), true, true]; // To prevent multiple peop // Add rotation control PFH _sitDirectionVisual = getDirVisual _player; // Needed for precision and issues with using above directly [{ - private ["_args", "_player", "_sitDirectionVisual", "_sitRotation", "_currentDirection"]; - _args = _this select 0; - _player = _args select 0; - _sitDirectionVisual = _args select 1; - _sitRotation = _args select 2; + EXPLODE_3_PVT(_this select 0,_player,_sitDirectionVisual,_sitRotation); - // Remove PFH if not sitting anymore + // Remove PFH if not sitting any more if !(_player getVariable [QGVAR(isSitting), false]) exitWith { [_this select 1] call cba_fnc_removePerFrameHandler; }; // Set direction to boundary when passing it - _currentDirection = getDir _player; - if (_currentDirection > _sitDirectionVisual + _sitRotation) exitWith { + if (getDir _player > _sitDirectionVisual + _sitRotation) exitWith { _player setDir (_sitDirectionVisual + _sitRotation); }; - if (_currentDirection < _sitDirectionVisual - _sitRotation) exitWith { + if (getDir _player < _sitDirectionVisual - _sitRotation) exitWith { _player setDir (_sitDirectionVisual - _sitRotation); }; }, 0, [_player, _sitDirectionVisual, _sitRotation]] call cba_fnc_addPerFrameHandler; From f4a51d57ef1453e35c11881012b7b69e862f1bfa Mon Sep 17 00:00:00 2001 From: ToasterBR Date: Sat, 27 Jun 2015 15:48:39 -0300 Subject: [PATCH 104/118] Translation to Brazilian Portuguese (PT-BR) Made all remaining translations, including new ones like the sitting module, for example. --- addons/advanced_ballistics/stringtable.xml | 24 +++++ addons/ballistics/stringtable.xml | 1 + addons/captives/stringtable.xml | 8 ++ addons/common/stringtable.xml | 16 ++++ addons/concertina_wire/stringtable.xml | 4 + addons/explosives/stringtable.xml | 10 +- addons/frag/stringtable.xml | 10 ++ addons/hearing/stringtable.xml | 4 + addons/huntir/stringtable.xml | 16 ++++ addons/interact_menu/stringtable.xml | 4 + addons/interaction/stringtable.xml | 4 + addons/map/stringtable.xml | 18 ++++ addons/medical/stringtable.xml | 104 ++++++++++++++++++++- addons/microdagr/stringtable.xml | 7 ++ addons/missileguidance/stringtable.xml | 3 + addons/missionmodules/stringtable.xml | 17 ++++ addons/mk6mortar/stringtable.xml | 8 ++ addons/mx2a/stringtable.xml | 2 + addons/nametags/stringtable.xml | 27 ++++++ addons/optionsmenu/stringtable.xml | 15 +++ addons/rangecard/stringtable.xml | 7 ++ addons/respawn/stringtable.xml | 12 +++ addons/sandbag/stringtable.xml | 12 +++ addons/sitting/stringtable.xml | 5 + addons/spottingscope/stringtable.xml | 3 + addons/switchunits/stringtable.xml | 16 +++- addons/tacticalladder/stringtable.xml | 6 ++ addons/tripod/stringtable.xml | 6 ++ addons/vehiclelock/stringtable.xml | 13 +++ addons/viewdistance/stringtable.xml | 25 +++++ addons/weather/stringtable.xml | 14 +++ addons/winddeflection/stringtable.xml | 10 ++ addons/yardage450/stringtable.xml | 3 + addons/zeus/stringtable.xml | 21 ++++- 34 files changed, 450 insertions(+), 5 deletions(-) diff --git a/addons/advanced_ballistics/stringtable.xml b/addons/advanced_ballistics/stringtable.xml index eed6e20be3..8ba88dee2b 100644 --- a/addons/advanced_ballistics/stringtable.xml +++ b/addons/advanced_ballistics/stringtable.xml @@ -31,6 +31,7 @@ Balística avanzada Erweiterte Ballistik Pokročilá balistika + Balística avançada
Advanced Ballistics @@ -38,6 +39,7 @@ Balística avanzada Erweiterte Ballistik Pokročilá balistika + Balística avançada Enables advanced ballistics @@ -45,6 +47,7 @@ Activa la balística avanzada Aktiviert die erweiterte Ballistik Aktivuje pokročilou balistiku + Ativa balística avançada Enabled For Snipers @@ -52,6 +55,7 @@ Akt. dla snajperów Für Scharfschützen aktiviert Povoleno pro odstřelovače + Ativar para caçadores Enables advanced ballistics for non local snipers (when using high power optics) @@ -59,6 +63,7 @@ Aktywuje zaawansowaną balistykę dla nielokalnych snajperów (kiedy używają optyki) Aktiviert die erweiterte Ballistik für nicht lokale Scharfschützen (bei Benutzung von Optiken mit starker Vergrößerung) Aktivuje pokročilou balistiku pro nelokální odstřelovače (když používá výkonnou optiku) + Ativa balística avançada para caçadores não locais (quando usando miras telescópicas) Enabled For Group Members @@ -66,6 +71,7 @@ Akt. dla czł. grupy Für Gruppenmitglieder aktiviert Povoleno pro členy skupiny + Ativada para membros do grupo Enables advanced ballistics for non local group members @@ -73,6 +79,7 @@ Aktywuje zaawansowaną balistykę dla nielokalnych członków grupy Aktiviert die erweiterte Ballistik für nicht lokale Gruppenmitglieder Aktivuje pokročilou balistiku pro nelokální členy skupiny + Ativa balística avançada para membros de grupo não locais Enabled For Everyone @@ -80,6 +87,7 @@ Akt. dla wszystkich Für jeden aktiviert Povoleno pro všechny + Ativada para todos Enables advanced ballistics for all non local players (enabling this may degrade performance during heavy firefights in multiplayer) @@ -87,6 +95,7 @@ Aktywuje zaawansowaną balistykę dla wszystkich nielokalnych graczy (aktywacja tej opcji może spodowować spory spadek wydajności podczas ciężkiej wymiany ognia) Aktiviert die erweiterte Ballistik für alle nicht lokalen Spieler (das Aktivieren dieser Funktion kann zur Beeinträchtigung des Spielerlebnisses im Multiplayer führen) Aktivovat pokročilou balistiku pro všechny nelokální hráče (aktivace této možnosti způsobuje pokles snímu za sekundu během těžké přestřelky v multiplayeru) + Ativa balística avançada para todos os jogadores não locais (ativando isso pode degradar a performance durante troca de tiros intensas no multiplayer) Always Enabled For Group Members @@ -94,6 +103,7 @@ Siempre activada para miembros de grupo Für Gruppenmitglieder immer aktiviert Vždy povoleno pro členy skupiny + Sempre ativada para membros do grupo Always enables advanced ballistics when a group member fires @@ -101,6 +111,7 @@ Activada la balística avanzada siempre cuando miembros de grupo disparan Aktiviert die erweiterte Ballistik immer, wenn ein Gruppenmitglied schießt Aktivuje pokročilou balistiku pro členy skupiny + Sempre ative balística avançada quando um membro do grupo disparar Disabled In FullAuto Mode @@ -108,6 +119,7 @@ Desactivada en modo automático Beim vollautomatischen Feuern deaktiviert Zakázáno v automatickém režimu střelby + Desabilitar no modo automático Disables the advanced ballistics during full auto fire @@ -115,6 +127,7 @@ Desactivada la balística avanzada durante el fuego automático Deaktiviert die erweiterte Ballistik beim vollautomatischen Feuern Zákáže pokročilou balistiku během střelby v režimu automat + Desabilitar a balística avançada durante fogo automático Enable Ammo Temperature Simulation @@ -122,6 +135,7 @@ Activar simulación de temperatura de munición Simulation der Munitionstemperatur aktivieren Povolit simulaci teploty munice + Ativar simulação de temperatura de munição Muzzle velocity varies with ammo temperature @@ -129,6 +143,7 @@ La velocidad de salida varía con la temperatura de la munición Munitionstemperatur hat Einfluss auf die Mündungsgeschwindigkeit Úsťová rychlost je závislá na teplotě munice + A velocidade de saída varia com a temperatura da munição Enable Barrel Length Simulation @@ -136,6 +151,7 @@ Habilitar la simulación de longitud del cañón Simulation der Lauflänge aktivieren Povolit simulaci délky hlavně + Ativar a simulação de comprimento do cano Muzzle velocity varies with barrel length @@ -143,6 +159,7 @@ La velocidad de salidal varía con la longitud del cañón Lauflänge beeinflusst Mündungsgeschwindigkeit Úsťová rychlost je závislá na délce hlavně + A velocidade de saída caria com o comprimento do cano Enable Bullet Trace Effect @@ -150,6 +167,7 @@ Activar el efecto trazador de la bala Geschossspureffekt aktivieren Povolit efekt trasírek + Ativa efeito traçante de projétil Enables a bullet trace effect to high caliber bullets (only visible when looking through high power optics) @@ -157,6 +175,7 @@ Activa el efecto trazador de la balas de gran calibre (solo visible cuando se mira a través de una mira telescópica) Aktiviere Geschossspureffekt für hohe Kaliber (bei Benutzung von Optiken mit starker Vergrößerung) Aktivuje efekt trasírek z vysokokaliberních zbraní (viditelné pouze skrze výkonnou optiku) + Ativa o efeito traçante de projétil para projéteis de alto calibre (somente visível quando observado por miras telescópicas) Simulation Interval @@ -164,6 +183,7 @@ Intervalo de simulación Simulationsintervall Interval simulace + Intervalo da simulação Defines the interval between every calculation step @@ -171,6 +191,7 @@ Define el intervalo entre cada cálculo Legt das Intervall zwischen den Berechnungsschritten fest Určuje interval mezi každým výpočtem + Define o intervalo entre cada cálculo Simulation Radius @@ -178,6 +199,7 @@ Radio de simulación Simulationsradius Rozsah simulace + Raio de simulação Defines the radius around the player (in meters) at which advanced ballistics are applied to projectiles @@ -185,11 +207,13 @@ Define el radio alrededor del jugador (en metros) en el cual se aplica la balística avanzada a los proyectiles Gibt den Radius (in Metern) um den Spieler an, bei dem die erweiterte Ballistik auf Geschosse angewendet wird Určuje oblast kolem hráče (v metrech), kde je pokročilá balistika použita na projektil + Define o raio ao redor do jogador (em metros) onde a balística avançada será aplicada aos projéteis Moduł ten pozwala aktywować zaawansowaną balistykę biorącą przy obliczeniach trajektorii lotu pocisku pod uwagę takie rzeczy jak temperatura powietrza, ciśnienie atmosferyczne, wilgotność powietrza, siły Coriolisa i Eotvosa, grawitację a także broń z jakiej wykonywany jest strzał oraz rodzaj amunicji. Wszystko to sprowadza się na bardzo dokładne odwzorowanie balistyki. Tento modul umožňuje aktivovat pokročilou balistiku, která vypočítává trajektorii kulky a bere do úvahy věci jako je teplota vzduchu, atmosférický tlak, vlhkost vzduchu, gravitaci, typ munice a zbraň, ze které je náboj vystřelen. To vše přispívá k velmi přesné balistice. + Este módulo permite que você ative cálculos de balística avançada, fazendo a trajetória do projétil levar em consideração coisas como temperatura do ar, pressão atmosférica, umidade, força de Coriolis, a gravidade, o modelo da arma no qual o disparo é realizado e o tipo de munição. Tudo isso acrescenta-se a um balística muito precisa. \ No newline at end of file diff --git a/addons/ballistics/stringtable.xml b/addons/ballistics/stringtable.xml index 171d7936b8..db44078980 100644 --- a/addons/ballistics/stringtable.xml +++ b/addons/ballistics/stringtable.xml @@ -1598,6 +1598,7 @@ [ACE] Caja de suministros de munición [ACE] Munitionskiste [ACE] Bedna s municí + [ACE] Caixa com suprimentos de munição \ No newline at end of file diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml index 19ab9050a3..a65daba683 100644 --- a/addons/captives/stringtable.xml +++ b/addons/captives/stringtable.xml @@ -163,6 +163,7 @@ Hacer que la unidad se rinda Einheit kapitulieren lassen Vzdávající se jednotka + Fazer unidade se render Sync a unit to make them surrender.<br />Source: ace_captives @@ -170,42 +171,49 @@ Sincroniza una unidad para hacer que se rinda.<br />Fuente: ace_captives Einheit synchronisieren, um sie kapitulieren zu lassen.<br />Quelle: ace_captives Synchronizuj s jednotkou, která se má vzdát.<br />Zdroj: ace_captives + Sincroniza uma unidade para fazer com que ela se renda. <br/>Fonte: ace_captives Captives Settings Ustawienia więźniów Ajustes de prisioneros Nastavení zajatce + Ajustes de prisioneiros Controls settings for surrender and cable ties Moduł ten kontroluje ustawienia kapitulacji oraz opasek zaciskowych Ajustes de control para rendición y precintos Toto kontroluje nastavení kapitulace a pout + Controla as configurações de rendição e abraçadeiras Can handcuff own side Skuwanie sojuszników Se puede esposar el bando propio Může spoutat spolubojovníky + Pode algemar o próprio lado Can players cabletie units on their own side Czy gracze mogą skuwać sojuszników? Pueden los jugadores esposar unidades en su propio bando Mohou hráči spoutat jednotky na své straně + Os jogadores podem algemar unidades do seu lado Allow surrendering Pozwól kapitulować Permitir rendición Povolit vzdávání + Permite rendição Players can surrender after holstering their weapon Gracze mogą skapitulować po schowaniu swojej broni do kabury Los jugadores pueden rendirse después de enfundar su arma Hráč se může vzdát poté, co si skryje zbraň + Jogadores podem se render depois de guardar sua arma \ No newline at end of file diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 7d0de1b584..353f3dea5e 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -476,6 +476,7 @@ Comprobar PBOs Überprüfe PBOs Zkontrolovat PBO + Verificar PBOs @@ -483,6 +484,7 @@ Este módulo verifica la integridad de los addons con los que iniciamos el simulador Dieses Modul überprüft ob jeder Spieler die richtigen PBO-Dateien hat. Zjistit addon který je v souladu se serverem + Este módulo verifica a integridade dos addons quando iniciamos a simulação Action @@ -490,6 +492,7 @@ Acción Aktion Akce + Ação What to do with people who do not have the right PBOs? @@ -497,6 +500,7 @@ ¿Qué hacer con la gente que no tiene correctamente los PBOs? Was soll mit Leuten passieren, die nicht die richtigen PBOs haben? Co udělat s lidmi, co nemají správné addony? + O que fazer com pessoas que não tem os PBOs corretos? Warn once @@ -504,6 +508,7 @@ Avisar una vez Einmal verwarnen Upozornit jednou + Avisar uma vez Warn (permanent) @@ -511,6 +516,7 @@ Avisar (permanente) Immer verwarnen Upozornit (permanentně) + Avisar (permanente) Kick @@ -518,6 +524,7 @@ Expulsar Kicken Vyhodit + Chutar Check all addons @@ -525,6 +532,7 @@ Comprobar todos los addons Alle Addons überprüfen Zkontrolovat všechny addony + Verificar todos addons Check all addons instead of only those of ACE? @@ -532,6 +540,7 @@ Comprobar todos los addons en vez de solo los del ACE Alle Addons anstatt nur ACE überprüfen? Zkontrolovat všechny addony namísto jen těch od ACE? + Verificar todos addons invés de só os do ACE? Whitelist @@ -539,6 +548,7 @@ Lista blanca Whitelist Seznam povolených + Lista branca What addons are allowed regardless? @@ -546,6 +556,7 @@ Qué addons están permitidos igualmente Welche Addons werden dennoch erlaubt? Jaké addony jsou povoleny? + Quais addons são permitidos de qualquer maneira? LSD Vehicles @@ -553,6 +564,7 @@ Vehículos LSD LSD-Fahrzeuge LSD vozidla + Veículos LSD Adds LSD effect to synchronized vehicle @@ -560,18 +572,22 @@ Añade el efecto LSD al vehículo sincronizado Fügt einen LSD-Effekt zum synchronisierten Fahrzeug hinzu Přidá LSD efekt pro synchronizované vozidla + Adiciona efeito LSD ao veículo sincronizado Toggle Handheld Device Seleccionar dispositivo de mano + Ativa dispositivo de mão Close Handheld Device Cerrar dispositivo de mano + Fecha dispositivo de mão Cycle Handheld Devices Cambiar dispositivos de mano + Troca dispositivos de mão \ No newline at end of file diff --git a/addons/concertina_wire/stringtable.xml b/addons/concertina_wire/stringtable.xml index 0583a9448d..4400866e87 100644 --- a/addons/concertina_wire/stringtable.xml +++ b/addons/concertina_wire/stringtable.xml @@ -11,6 +11,7 @@ Ostnatý drát Concertina wire Concertina wire + Arame farpado Concertina Wire Coil @@ -22,6 +23,7 @@ Smyčka ostnatého drátu Concertina wire coil Concertina wire coil + Bobina de arame farpado Dismount Concertina Wire @@ -33,6 +35,7 @@ Svinout ostnatý drát Dismount Concertina wire Dismount Concertina wire + Desmontar arame farpado Deploy Concertina Wire @@ -44,6 +47,7 @@ Rozvinout ostnatý drát Deploy Concertina wire Deploy Concertina wire + Colocar arame farpado \ No newline at end of file diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index abd6d83e26..3227da5dff 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -511,6 +511,7 @@ Sistema de explosivos Sprengstoffsystem Systém výbušnin + Sistema de explosivos Require specialists? @@ -518,6 +519,7 @@ ¿Requiere especialista? Benötigt Sprengstoffexperten? Vyžadovat specialistu? + Requer especialista? Require explosive specialists to disable explosives? Default: No @@ -525,6 +527,7 @@ Requiere especialista en explosivos para desactivar explosivos?. Por defecto: No Benötige Sprengstoffexperte um Sprengladungen zu entschärfen? Standard: Nein Vyžadovat specialistu na zneškodnění výbušniny? Výchozí: Ne + Requer especialista em explosivos para desativar explosivos? Padrão: Não Punish non-specialists? @@ -532,6 +535,7 @@ ¿Penalizar a los no especialistas? Bestrafe Nicht-Sprengstoffexperten? Potrestat, pokud není specialista? + Punir não especialistas? Increase the time it takes to complete actions for non-specialists? Default: Yes @@ -539,18 +543,22 @@ Aumenta el tiempo que lleva completar acciones para los no especialstas?. Por defecto: Si Entschärfungszeit für Nicht-Sprengstoffexperten erhöhen? Standard: Ja Zvýšit čas potřebný k dokončení akce pokud není specialista? Výchozí: Ano + Aumentar o tempo necessário para completar ações por não especialistas? Padrão: Sim Explode on defusal? + Explosão no desarmamento? Enable certain explosives to explode on defusal? Default: Yes + Ativa certos explosivos para detonar no desarmamento? Padrão: Sim Moduł ten pozwala dostosować opcje związane z ładunkami wybuchowymi, ich podkładaniem oraz rozbrajaniem. Dieses Modul erlaubt die Einstellungen für Sprengstoffe zu verändern. Tento modul umoňuje přizpůsobit nastavení týkajících se výbušnin. + Este módulo permite personalizar as definições relacionadas a explosivos. - + \ No newline at end of file diff --git a/addons/frag/stringtable.xml b/addons/frag/stringtable.xml index fb25760e94..9fdb89ba87 100644 --- a/addons/frag/stringtable.xml +++ b/addons/frag/stringtable.xml @@ -7,6 +7,7 @@ Simulación de fragmentación Splittersimulation Simulace fragmentace + Simulação de fragmentação Enable the ACE Fragmentation Simulation @@ -14,6 +15,7 @@ Aktywuje symulację fragmentacji ACE Aktiviere die ACE-Splittersimulation Povolit ACE simulaci fragmentace + Ativa a simulação de fragmentação do ACE Spalling Simulation @@ -21,6 +23,7 @@ Symulacja odprysków Explosionssimulation Simulace úlomků + Simulação de estilhaços Enable the ACE Spalling Simulation @@ -28,6 +31,7 @@ Aktywuje symulację odprysków ACE Aktiviere ACE-Explosionssimulation Povolit ACE simulaci úlomků + Ativa a simulação de estilhaços do ACE Maximum Projectiles Tracked @@ -35,6 +39,7 @@ Maks. liczba śledzonych pocisków Maximalzahl der verfolgten Projektile Maximální počet sledovaných projektilů + Máximo de projéteis rastreados This setting controls the maximum amount of projectiles the fragmentation and spalling system will track at any given time. If more projectiles are fired, they will not be tracked. Lower this setting if you do not want FPS drops at high-count projectile scenarios ( >200 rounds in the air at once) @@ -42,6 +47,7 @@ To ustawienie kontroluje maksymalną ilość pocisków, jakie fragmentacja i odpryski symulują w danym momencie. Jeżeli więcej pocisków będzie wystrzelonych, wtedy nie będą one śledzone. Zmniejsz tą opcję jeżeli nie chcesz odczuwać spadków FPS podczas ciężkiej wymiany ognia (więcej niż 200 pocisków w powietrzu na raz). Diese Einstellung steuert die maximale Anzahl an Projektilen, die das Splitter- und Explosionssystem gleichzeitig verfolgen wird. Wenn mehr Projektile abgefeuert werden, werden sie nicht verfolgt werden. Diese Einstellung zu verringern, kann FPS-Einbrüche bei Szenarien mit vielen Projektilen verhindern (>200 Objekte gleichzeitig in der Luft) Toto nastavení kontroluje maximální množství projektilů z fragmentace a úlomků, která jsou sledována v dané době. Pokud je vystřeleno více projektilů, tak nebudou sledovány. Snižte toto nastavení pokud si nepřejete propady FPS v situacích, kde je velké množství projektilů ( >200 nábojů najednou ve vzduchu) + Esta definição controla a quantidade máxima de projéteis que o sistema de fragmentação e estilhaçamento irá acompanhar em qualquer momento. Se mais projéteis são disparados, eles não serão rastreados. Diminua essa configuração se você não quiser que o FPS caia em cenários com alta contagem de projéteis (> 200 projéteis no ar ao mesmo tempo) Maximum Projectiles Per Frame @@ -49,6 +55,7 @@ Maximale Anzahl an Projektilen pro Frame Maks. liczba pocisków na klatkę Maximální počet projektilů ze jeden snímek + Projéteis máximos por quadro The number of spall track calculations to perform in any given frame. This helps spread the FPS impact of tracking spall rounds across multiple frames, limiting its impact even further. @@ -56,12 +63,14 @@ Gibt die Anzahl der Explosionverfolgungsberechnungen an, die gleichzeitig ausgeführt werden. Das kann dabei helfen den FPS-Einfluss abzuschwächen, wenn Teile über mehrere Frames hinweg verfolgt werden. El número de cálculos de esquirlas que se hará en cualquier cuadro. Esto ayuda a dispersar el impacto en FPS del seguimiento de esquirlas de balas a través de múltiples cuadros, lo que limita aún más su impacto. Počet úlomků v daném snímku. Toto pomáhá rozšířit FPS dopad sledovaného úlomku napříč více snímky, omezuje jeho vliv ještě více. + O número de cálculos por estilhaço rastreado para executar em qualquer quadro. Isso ajuda a distribuir o impacto no FPS do rastreamento de estilhaço em vários quadros, o que limita o seu impacto ainda mais. (SP Only) Frag/Spall Debug Tracing (Solo SP) Seguimiento de depuración de Fragmentación/Astillamiento (Tylko SP) Wizualny debug odł./odpr. (Pouze SP) Debug sledování Frag/Úlomků + (Somente SP) Depuração de fragmentação e estilhaços traçantes (SP Only) Requires a mission/editor restart. Enables visual tracing of fragmentation and spalling rounds in SP game mode only. @@ -69,6 +78,7 @@ (Tylko SP) Wymaga restartu misji/edytora. Aktywuje wizualne śledzenie odłamków oraz odprysków w trybie gry Single Player. (nur SP) Splitter-/Explosions-Debugging (Pouze SP) Vyžaduje restart mise/editoru. Aktivuje vizuální stopování fragmentace a úlomů pouze v režimu jednoho hráče. + (Somente SP) Requer um reinício de missão / editor. Habilita o rastreamento visual de projéteis de fragmentação e estilhaçamento apenas no modo de jogo SP. \ No newline at end of file diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index 35b847c5d1..dbd063b752 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -115,6 +115,7 @@ Audición Gehör Sluch + Audição Enable combat deafness? @@ -122,6 +123,7 @@ ¿Habilitar sordera de combate? Aktiviere Taubheit im Gefecht? Povolit ztrátu sluchu? + Ativar surdez em combate? Enable combat deafness? @@ -129,12 +131,14 @@ Habilita la sordera de combate Aktiviere Taubheit im Gefecht? Povolit ztrátu sluchu? + Ativar surdez em combate? Głuchota bojowa pojawia się w momentach, kiedy stoimy w pobliżu broni wielkokalibrowej bez ochrony słuchu, lub np. podczas ostrzału artyleryjskiego. Moduł ten pozwala na włączenie lub wyłączenie tego efektu. Dieses Modul aktiviert/deaktiviert die Taubheit im Gefecht. Wenn aktiviert, können Spieler ohne Gehörschutz taub werden, wenn eine Waffe in ihrer Nähe abgefeuert wird oder eine Explosion stattfindet. Ztráta sluchu je možná ve chvíly, kdy se v bezprostřední blízkosti střílí z velkorážní zbraně nebo při bombardování a osoba je bez ochrany sluchu (např. špunty). Tento modul umožňuje tuto věc povolit nebo zakázat. + Este módulo ativa / desativa surdez em combate. Quando ativado, os jogadores podem ficar surdos quando uma arma é disparada ao seu redor ou uma explosão ocorre sem proteção auditiva. \ No newline at end of file diff --git a/addons/huntir/stringtable.xml b/addons/huntir/stringtable.xml index 45c6b19392..79f9a778e1 100644 --- a/addons/huntir/stringtable.xml +++ b/addons/huntir/stringtable.xml @@ -11,6 +11,7 @@ Skrzynia HuntIR HuntIR Transport Box HuntIR Transport Box + Caixa de transporte do HuntIR HuntIR Round @@ -22,6 +23,7 @@ Nabój HuntIR Munition HuntIR HuntIR lövedék + Cartucho HuntIR HuntIR monitor @@ -33,6 +35,7 @@ Odbiornik HuntIR Ecran HuntIR HuntIR monitor + Monitor HuntIR Activate HuntIR monitor @@ -44,6 +47,7 @@ Włącz odbiornik HuntIR Allumer écran HuntIR HuntIR monitor aktiválása + Ativar monitor do HuntIR Camera: @@ -55,6 +59,7 @@ Kamera: Caméra: Kamera: + Câmera: Altitude: @@ -66,6 +71,7 @@ Wysokość: Altitude: Magasság: + Altitude: Recording Time: @@ -77,6 +83,7 @@ Czas nagrywania: Temps d'enregistrement: Felvételi idő: + Tempo de gravação: Press ESC to quit camera @@ -88,6 +95,7 @@ Wciśnij ESC by wyjść z widoku kamery Appuyer sur ESC pour quitter camera Nyomj ESC-ket a kamerából való kilépéshez + Pressione ESC para sair da câmera Help @@ -99,6 +107,7 @@ Pomoc Aide Súgó + Ajuda A/D - Cycle zoom @@ -110,6 +119,7 @@ A/D - powiększenie A/D - Changement zoom A/D - Nagyítás + A/D - Troca zoom W/S - Select camera @@ -121,6 +131,7 @@ W/S - wybór kamery W/S - Sélectionner caméra W/S - Kamera váltás + W/S - Seleciona câmera Left/Right - Rotate camera @@ -132,6 +143,7 @@ Lewo/Prawo - obrót kamery w poziomie Gauche/Droite - Rotation caméra Jobb/Bal - Kamera forgatás + Esquerda/Direita - Rotaciona câmera Up/Down - Elevate/lower camera @@ -143,6 +155,7 @@ Góra/Dół - obrót kamery w pionie Haut/Bas - Monter/descendre caméra Fel/Le - Kamera döntése/süllyesztése + Acima/Abaixo - Eleva/Abaixa a câmera N - Cycle IT modes @@ -154,6 +167,7 @@ N - wybór trybu IT N - Changement de modes IT N - Hőkép módok + N - Troca modo IT R - Reset camera @@ -165,6 +179,7 @@ R - resetuj kamerę R - Reset caméra R - Kamera visszaállítása + R - Redefine a câmera Esc - Exit help @@ -176,6 +191,7 @@ Esc - wyjście z ekranu Pomocy Esc - Sortir de l'aide Exit - Kilépés a súgóból + Esc - Sai do Ajuda \ No newline at end of file diff --git a/addons/interact_menu/stringtable.xml b/addons/interact_menu/stringtable.xml index 6737729092..eb89c9ae53 100644 --- a/addons/interact_menu/stringtable.xml +++ b/addons/interact_menu/stringtable.xml @@ -222,24 +222,28 @@ Tło menu interakcji Fondo del menú de interacción Pozadí menu interakce + Fundo do menu de interação Blur the background while the interaction menu is open. Rozmywa lub przyciemnia tło na czas otwarcia menu interakcji Desenfocar el fondo mientras el menú de interacción está abierto. Rozmazat obraz pokud je interakční menu otevřené. + Desfocar o fundo enquanto o menu de interação está aberto. Blur screen Rozmycie ekranu Pantalla de desenfoque Rozmazaný obraz + Desfoque de tela Black Przyciemnienie ekranu Negra Černý obraz + Preto \ No newline at end of file diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index c1a9d463e9..78ec7bcac3 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -799,6 +799,7 @@ Sistema de interacción Interaktionssystem Systém interakce + Sistema de interação Enable Team Management @@ -806,6 +807,7 @@ Habilitar gestión de equipos Aktiviere Gruppenverwaltung Povolit správu týmu + Habilitar gestão de equipes Should players be allowed to use the Team Management Menu? Default: Yes @@ -813,12 +815,14 @@ ¿Deben tener permitido los jugadores el uso del menu de gestión de equipos? Por defecto: Si Sollen Spieler das Gruppenverwaltungsmenü verwenden dürfen? Standard: Ja Mohou hráči použít menu správy týmu? Výchozí: Ano + Devem os jogadores ter permissão de usar o menu de gestão de equipes? Padrão: Sim Na zarządzanie drużyną składa się: przydział kolorów dla członków drużyny, przejmowanie dowodzenia, dołączanie/opuszczanie drużyn. Die Gruppenverwaltung erlaubt die Zuweisung von Farben für Einheiten, die Kommandierung und das Beitreten/Verlassen einer Gruppe. Správa týmu se skládá z: přidělení barev pro členy týmu, převzetí velení, připojení/odpojení. + O módulo de gestão de equipe é composto por: a atribuição de cores para os membros da equipe, comando das equipes, juntando-se / deixando equipes. \ No newline at end of file diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml index 930baf7835..8e3ae52da5 100644 --- a/addons/map/stringtable.xml +++ b/addons/map/stringtable.xml @@ -7,6 +7,7 @@ Mapa Karte Mapa + Mapa Map illumination? @@ -14,6 +15,7 @@ ¿Iluminación de mapa? Kartenausleuchtung Osvětlení mapy + Iluminação do mapa? Calculate dynamic map illumination based on light conditions? @@ -21,6 +23,7 @@ Calcula la iluminación dinámica del mapa basandose en las condiciones de luz Berechne die Kartenauslichtung anhand des Umgebungslichts? Vypočítat dynamické osvětlení mapy na základně světelných podmínek? + Calcular a iluminação dinâmica do mapa de acordo com as condições de luz? Map shake? @@ -28,6 +31,7 @@ ¿Temblor de mapa? Kamerawackeln Třesení mapy? + Tremor de mapa? Make map shake when walking? @@ -35,6 +39,7 @@ Hace que el mapa tiemble cuando caminas Kamerawackeln beim Gehen? Umožnit třesení mapy za pochodu? + Tremer o mapa enquanto caminha? Limit map zoom? @@ -42,6 +47,7 @@ ¿Limitar el zoom de mapa? Kartenzoom einschränken Omezit přiblížení mapy? + Limitar zoom do mapa? Limit the amount of zoom available for the map? @@ -49,6 +55,7 @@ Limita la cantidad de zoom disponible para el mapa Zoomstufe der Karte einschränken? Omezit stupeň přiblížení pro mapu? + Limitar a quantidade de zoom disponível para o mapa? Show cursor coordinates? @@ -56,6 +63,7 @@ ¿Mostrar coordenadas de cursor? Zeige Cursor-Koordinaten? Zobrazit souřadnice u kurzoru? + Mostrar coordenadas no cursor? Show the grid coordinates on the mouse pointer? @@ -63,12 +71,14 @@ Muestra las coordenadas de la cuadricula en el puntero del ratón Gitter-Koordinaten auf dem Mauszeiger anzeigen? Zobrazit souřadnice u kurzoru v mapě? + Mostrar as coordenadas de grade no ponteiro do mouse? Moduł ten pozwala dostosować opcje widoku ekranu mapy. Dieses Modul erweitert die Kartenfunktionen. Tento modul umožňuje přizpůsobit mapu s obrazem. + Este módulo permite que você personalize a tela de mapa. Blue Force Tracking @@ -76,12 +86,15 @@ Seguimiento de fuerzas amigas Blue Force Tracking Blue Force Tracking + Rastreio de forças azuis BFT Enable + RFA ativo Enable Blue Force Tracking. Default: No + Ativa Rastreio de Forças Azuis. Padrão: Não Interval @@ -89,6 +102,7 @@ Intervalo Intervall Interval + Intervalo How often the markers should be refreshed (in seconds) @@ -96,6 +110,7 @@ Frecuencia de actualización de los marcadores (en segundos) Wie oft sollen die Markierungen aktualisiert werden (in Sekunden) Jak často budou značky aktualizovány (v sekundách) + Frequência em que os marcadores devem ser atualizados (em segundos) Hide AI groups? @@ -103,6 +118,7 @@ ¿Ocultar grupos de IA? KI-Gruppen verstecken? Skrýt AI skupiny? + Esconder grupos de IA? Hide markers for 'AI only' groups? @@ -110,12 +126,14 @@ Oculta las marcas de grupos 'solo IA' Verstecke Marker für "nur KI"-Gruppen? Skrýt značky pouze pro AI skupiny? + Esconder marcadores que pertencem ao grupo de IA? Pozwala śledzić na mapie pozycje sojuszniczych jednostek za pomocą markerów BFT. Dieses Modul ermöglicht es verbündete Einheiten mit dem BFT auf der Karte zu verfolgen. Umožňuje sledovat přátelské jednokty na mapě v rámci BFT. + Permite que você acompanhe as posições no mapa das unidades aliadas com marcadores RFA. \ No newline at end of file diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 6fa58bb759..e2fee86715 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -1592,6 +1592,7 @@ Nada Keine Žádný + Nada Weak @@ -2211,6 +2212,7 @@ Bandażowanie usuwa ślady krwi Obvázání odstraňuje skvrny od krve El vendaje elimina las manchas de sangre + Bandagem remove manchas de sangue Pain is only temporarily suppressed @@ -2218,6 +2220,7 @@ Ból jest tymczasowo zwalczany Bolest je potlačena pouze dočasně El dolor se suprime solo temporalmente + Dor é suprimida somente temporáriamente Pain Effect Type @@ -2730,6 +2733,7 @@ Médico ACE ACE-Medicsystem ACE Zdravotnické + ACE Médico Medical Settings [ACE] @@ -2738,6 +2742,7 @@ Ajustes médicos [ACE] Medizinische Einstellungen [ACE] Lékařské nastavení [ACE] + Ajustes médicos [ACE] Medical Level @@ -2746,6 +2751,7 @@ Nivel médico Medizinisches Level Úroveň medického + Nível médico What is the medical simulation level? @@ -2754,6 +2760,7 @@ ¿Cuál es el nivel de simulación médica? Wie hoch soll das medizinische Simulationslevel sein? Jaká je úroveň lékařské simulace? + Qual o nível de simulação médica? Basic @@ -2762,6 +2769,7 @@ Básico Standard Základní + Básica Advanced @@ -2770,6 +2778,7 @@ Avanzado Erweitert Pokročilé + Avançada Medics setting @@ -2778,6 +2787,7 @@ Configuración médica Medizinische Einstellungen Úroveň zdravotníků + Configuração médica What is the level of detail prefered for medics? @@ -2785,6 +2795,7 @@ Jaki jest poziom detali medycznych wyświetlanych dla medyków? ¿Cuál es el nivel de detalle preferido para los médicos? Jaká úroveň detailů je preferována pro zdravotníky? + Qual o nível de detalhe preferido para os médicos? Disable medics @@ -2793,6 +2804,7 @@ Desactivar médicos Sanitäter deaktivieren Zakázat zdravotníky + Desativar médicos Enable Litter @@ -2801,6 +2813,7 @@ Activar restos médicos Abfälle aktivieren Povolit odpadky + Ativar lixo médico Enable litter being created upon treatment @@ -2809,6 +2822,7 @@ Activar los restos médicos que se crean en el tratamiento Aktiviere Abfälle, wenn eine Behandlung durchgeführt wurde Vytváří odpad zdravotnického materiálu pří léčení + Ativar lixo ser criado após tratamento Life time of litter objects @@ -2817,6 +2831,7 @@ Tiempo de vida de los restos médicos Dauer des angezeigten Abfalls Životnost pro odpadky + Tempo de vida dos objetos do lixo How long should litter objects stay? In seconds. -1 is forever. @@ -2825,6 +2840,7 @@ ¿Por cuánto tiempo deben permanecer los restos médicos? En segundos. -1 es para siempre. Wie lange sollen Abfälle am Boden liegen (in Sekunden)? -1 ist für immer. Za jak dlouho začnou odpadky mizet? V sekundách. -1 navždy. + Quanto tempo os objetos do lixo devem ficar? Em segundos. -1 é para sempre. Enable Screams @@ -2833,6 +2849,7 @@ Activar gritos Schreie aktivieren Povolit křik + Ativar gritos Enable screaming by injuried units @@ -2841,6 +2858,7 @@ Activar gritos para unidades heridas Aktiviere Schreie bei verletzten Einheiten Povolit křičení zraněných jednotek + Ativa gritos para unidades feridas Player Damage @@ -2849,6 +2867,7 @@ Daño de jugador Spielerschaden Poškození hráče + Dano do jogador What is the damage a player can take before being killed? @@ -2857,6 +2876,7 @@ ¿Cuál es el daño que un jugador puede sufrir antes de morir? Wie viel Schaden kann ein Spieler erleiden, bevor er getötet wird? Jaké poškození může hráč dostat než bude zabit? + Qal é o dano que um jogador pode sofrer antes de morrer? AI Damage @@ -2865,6 +2885,7 @@ Daño IA KI-Schaden Poškození AI + Dano da IA What is the damage an AI can take before being killed? @@ -2873,6 +2894,7 @@ ¿Cuál es el daño que la IA puede sufrir antes de morir? Wie viel Schaden kann eine KI erleiden, bis sie getötet wird? Jaké poškození může AI dostat než bude zabito? + Qual é o dano que uma IA pode sofrer antes de morrer? AI Unconsciousness @@ -2881,6 +2903,7 @@ Inconsciencia IA KI-Bewusstlosigkeit Bezvědomí AI + Inconsciência da IA Allow AI to go unconscious @@ -2889,30 +2912,35 @@ Permita a la IA caer inconsciente KI kann bewusstlos werden Umožňuje AI upadnout do bezvědomí + Permite IA ficar inconsciente Remote Controlled AI IA controlada remotamente + IA controlada remotamente Treat remote controlled units as AI not players? ¿Tratar unidades remotamente controladas como IA? + Tratar unidades remotamente controladas como IA? Disabled Отключено Wyłączone - Activado + Desactivado Deaktiviert Zakázáno + Desativado Enabled Включено Włączone - Desactivado + Activado Aktiviert Povoleno + Ativado Prevent instant death @@ -2921,6 +2949,7 @@ Prevenir muerte instantánea Verhindere direkten Tod Zabránit okamžité smrti + Previnir morte instantânea Have a unit move to unconscious instead of death @@ -2929,6 +2958,7 @@ Mover una unidad a inconsciente en vez de a muerta Lässt eine Einheit bewusstlos werden anstatt zu sterben Jednotka upadne do bezvědomí namísto smrti + Fazer a unidade ficar inconsciente invés de morrer Bleeding coefficient @@ -2937,6 +2967,7 @@ Coeficiente de sangrado Verblutungsmultiplikator Koeficient krvácení + Coeficiente de sangramento Coefficient to modify the bleeding speed @@ -2945,6 +2976,7 @@ Coeficiente para modificar la velocidad de sangrado Multiplikator um die Verblutungsgeschwindigkeit zu verändern Koeficient rychlosti krvácení + Coeficiente para modificar a velocidade do sangramento Pain coefficient @@ -2953,6 +2985,7 @@ Coeficiente de dolor Schmerzmultiplikator Koeficient bolesti + Coeficiente de dor Coefficient to modify the pain intensity @@ -2961,6 +2994,7 @@ Coeficiente para modificar la intensidad del dolor Multiplikator um den Schmerzintensität zu verändern Koeficient intenzity bolesti + Coeficiente para modificar a instensidade de dor Sync status @@ -2969,6 +3003,7 @@ Sincronizador estado Status synchronisieren Synchronizovat status + Sincronizar estado Keep unit status synced. Recommended on. @@ -2977,6 +3012,7 @@ Mantener el estado de la unidad sincronizado. Recomendado activado Status der Einheit synchron halten. Sollte aktiviert bleiben. Udržuje status jednotky synchronizovaný. Doporučeno zapnout. + Mater o estado da unidade sincronizado. Recomendado ativado. Provides a medical system for both players and AI. @@ -2985,6 +3021,7 @@ Proporciona un sistema médico para jugadores e IA. Aktiviert ein medizinisches System für Spieler und KI. Poskytuje zdravotní systém pro hráče a AI. + Proporciona o sistema médico para os jogadores e a IA. Advanced Medical Settings [ACE] @@ -2993,6 +3030,7 @@ Ajustes médicos avanzados [ACE] Erweiterte medizinische Einstellungen [ACE] Pokročilé zdravotnické nastavení [ACE] + Ajustes médicos avançados [ACE] Enabled for @@ -3001,6 +3039,7 @@ Hablitado para Aktiviert für Povoleno pro + Habilitado para Select what units the advanced medical system will be enabled for @@ -3009,6 +3048,7 @@ Seleccione para qué unidades será habilitado el sistema médico avanzado Wähle aus welche Einheiten das erweiterte medizinische System haben Vyberte, pro jaké jednotky bude pokročilý zdravotní systém povolen + Selecione quais unidades o sistema médico avançado será habilitado Players only @@ -3017,6 +3057,7 @@ Solo jugadores Nur Spieler Pouze hráči + Somente jogadores Players and AI @@ -3025,6 +3066,7 @@ Jugadors e IA Spieler und KI Hráči a AI + Jogadores e IA Enable Advanced wounds @@ -3033,6 +3075,7 @@ Activa heridas avanzadas Aktiviere erweiterte Wunden Povolit pokročilé zranění + Ativar ferimentos avançados Allow reopening of bandaged wounds? @@ -3041,6 +3084,7 @@ Permitir la reapertura de las heridas vendadas? Erlaube das Öffnen von bandagierten Wunden? Umožnit znovuotevření zavázané rány? + Permitr reabertura de ferimentos enfaixados? Vehicle Crashes @@ -3049,6 +3093,7 @@ Accidentes de vehículos Fahrzeugunfälle Poškození z kolize + Batidas de veículos Do units take damage from a vehicle crash? @@ -3057,6 +3102,7 @@ ¿Las unidades reciben daño de un accidente de tráfico? Bekommen Einheiten von Fahrzeugunfällen Schaden? Dostane jednotka poškození při autonehodě? + As unidades recebem dano de uma batida de veículo? Allow PAK @@ -3065,6 +3111,7 @@ Permitir EPA Erlaube Erstehilfekasten Povolit osobní lékárničky + Permitir Kit de Primeiros Socorros Who can use the PAK for full heal? @@ -3073,6 +3120,7 @@ ¿Quién puede utilizar el EPA para una cura completa? Wer kann den Erstehilfekasten für eine Endheilung verwenden? Kdo může použít osobní lékárničku pro plné vyléčení? + Quem pode usar o KPS para cura completa? Anyone @@ -3081,6 +3129,7 @@ Nadie Jeder Kdokoliv + Qualquer um Medics only @@ -3089,6 +3138,7 @@ Solo médicos Nur Sanitäter Pouze zdravotník + Somente médicos Doctors only @@ -3097,6 +3147,7 @@ Solo doctores Nur Ärzte Pouze doktor + Somente doutores Remove PAK on use @@ -3105,6 +3156,7 @@ Eliminar EPA después del uso Entferne Erstehilfekasten bei Verwendung Odebrat osobní lékárničku po použití + Remover o KPS depois do uso Should PAK be removed on usage? @@ -3113,6 +3165,7 @@ El EPA será eliminado después de usarlo Sollen Erstehilfekästen bei Verwendung entfernt werden? Má se osobní lékárnička odstranit po použití? + Deve o KPS ser removido depois do uso? Locations PAK @@ -3121,6 +3174,7 @@ Ubicacions del EPA Orte für Erstehilfekasten Lokace osobní lékárničky + Localizações do KPS Where can the personal aid kit be used? @@ -3129,6 +3183,7 @@ ¿Dónde se puede utilizar el equipo de primeros auxilios? Wo kann der Erstehilfekasten verwendet werden? Kde může být osobní lékárnička použita? + Onde o kit de primeiros socorros pode ser utilizado? Anywhere @@ -3137,6 +3192,7 @@ Donde sea Überall Kdekoliv + Qualquer lugar Medical vehicles @@ -3145,6 +3201,7 @@ Vehiculos médicos Medizinische Fahrzeuge Zdravotnická vozidla + Veículos médcos Medical facility @@ -3153,6 +3210,7 @@ Centro médico Medizinische Einrichtungen Zdravotnické zařízení + Instalação médica Vehicles & facility @@ -3161,6 +3219,7 @@ Vehículos y centros Fahrzeuge & Einrichtungen Vozidla a zařízení + Veículos e instalações Disabled @@ -3169,6 +3228,7 @@ Desactivado Deaktiviert Zakázáno + Desativado Allow Surgical kit (Adv) @@ -3177,6 +3237,7 @@ Permitir equipo quirúrgico (Avanzado) Erlaube Operationskasten Povolit chirurgickou soupravu (Pokr.) + Permite kit cirúrgico (avançado) Who can use the surgical kit? @@ -3185,6 +3246,7 @@ ¿Quién puede utilizar el equipo quirúrgico? Wer kann den Operationskasten verwenden? Kdo může použít chirurgickou soupravu? + Quem pode usar o kit cirúrgico? Remove Surgical kit (Adv) @@ -3193,6 +3255,7 @@ Eliminar equipo quirúrgico (Avanzado) Enrtferne Operationskasten (erweitert) Odebrat chirurgickou soupravu (Pokr.) + Remover kit cirúrgico (avançado) Should Surgical kit be removed on usage? @@ -3201,6 +3264,7 @@ Eliminar el equipo quirúrgico después del uso Entferne Operationskästen bei Verwendung? Odebrat chirurgickou soupravu po použití? + Deve o kit cirúrgico ser removido após o uso? Locations Surgical kit (Adv) @@ -3209,6 +3273,7 @@ Ubicaciones del equipo quirúrgico (Avanzado) Orte für Operationskästen (erweitert) Lokace chirurgické soupravy (Pokr.) + Localizações do kit cirúrgico (avançado) Where can the Surgical kit be used? @@ -3217,6 +3282,7 @@ Dónde se puede utilizar el equipo quirúrgico Wo kann der Operationskasten verwendet werden? Kde může být použita chirurgická souprava? + Onde o kit cirúrgico pode ser utilizado? Bloodstains @@ -3224,6 +3290,7 @@ Plamy krwi Skvrny od krve Manchas de sangre + Manchas de sangue Bandaging removes bloodstains @@ -3231,6 +3298,7 @@ Bandażowanie usuwa ślady krwi Obvázání odstraňuje skvrny od krve El vendaje elimina las manchas de sangre + Bandagem remove manchas de sangue Pain suppression @@ -3238,6 +3306,7 @@ Zwalczanie bólu Potlačení bolesti Supresión del dolor + Supressão de dor Pain is only temporarily suppressed, not removed @@ -3245,6 +3314,7 @@ Ból jest tylko tymczasowo zwalczany, nie jest usuwany trwale Bolest je potlačena, ale jen dočastně El dolor se suprime solo temporalmente, no se elimina. + Dor é somente temporáriamente suprimida, não removida Configure the treatment settings from ACE Medical @@ -3253,6 +3323,7 @@ Configure las opciones de tratamiento del ACE Médico Behandlungseinstellungen vom ACE-Medical konfigurieren Konfigurace nastavení léčby ze zdravotnické systému ACE + Configure as opções de tratamento do ACE Médico Revive Settings [ACE] @@ -3261,6 +3332,7 @@ Sistema de resucitado [ACE] Wiederbelebungseinstellungen [ACE] Nastavení oživení [ACE] + Sistema de reavivamento [ACE] Enable Revive @@ -3269,6 +3341,7 @@ Habilitar resucitado Erlaube Wiederbelebung Povolit oživení + Habilitar reavivamento Enable a basic revive system @@ -3277,6 +3350,7 @@ Habilitar un sistema básico de resucitado Aktiviere Standard-Wiederbelebungssystem Povolit základní systém oživení + Habilitar um sistema básico de reavivamento Max Revive time @@ -3285,6 +3359,7 @@ Tiempo máximo de resucitado Maximale Wiederbelebungszeit Maximální čas pro oživení + Tempo máximo de reavivamento Max amount of seconds a unit can spend in revive state @@ -3293,6 +3368,7 @@ Cantidad máxima de segundos que una unidad puede gastar en estado de resucitación Maximale Zeitspanne in Sekunden die eine Einheit im Wiederbelebungszustand verbringen kann Maximální doba v agónii v sekundách + Quantidade máxima de segundos que uma unidade pode gastar em um estado de reavivamento Max Revive lives @@ -3301,6 +3377,7 @@ Vidas máximas de resucitado Maximale Leben bei Wiederbelebung Maximální počet oživení + Vidas máximas do reavivado Max amount of lives a unit. 0 or -1 is disabled. @@ -3309,6 +3386,7 @@ Cantidad máxima de vidas por unidad. 0 o -1 es desactivado. Maximale Anzahl von Leben einer Einheit. 0 or -1 bedeutet deaktiviert. Maximální počet životu pro jednotku. 0 nebo -1 je zakázáno. + Quantidade máxima de vidas por unidade. 0 ou -1 é desativado. Provides a medical system for both players and AI. @@ -3317,6 +3395,7 @@ Proporciona un sistema médico para jugadores e IA. Aktiviert das Medicsystem für Spieler und KI. Poskytuje zdravotní systém pro hráče a AI. + Proporciona um sistema médico para jogadores e IA. Set Medic Class [ACE] @@ -3325,6 +3404,7 @@ Establecer case médica [ACE] Setze Sanitäterklassen [ACE] Určit třídu medika [ACE] + Definir classe médica [ACE] List @@ -3333,6 +3413,7 @@ Lista Liste Seznam + Lista List of unit names that will be classified as medic, separated by commas. @@ -3341,6 +3422,7 @@ Lista de los nombres de las unidades que se clasifican como médico, separados por comas. Liste von Namen, die als Sanitäter verwendet werden. Wird durch Kommas getrennt. Seznam osob které budou klasifikovány jako zdravotník, oddělené čárkami. + Lista dos nomes das unidades que se classificam como médicos, separados por vírgulas. Is Medic @@ -3349,6 +3431,7 @@ Es médico Ist Sanitäter Je zdravotník + É médico @@ -3356,6 +3439,7 @@ Dieses Modul legt fest welche Einheit ein Sanitäter ist. Tento modul určuje, která jednotka je zdravotník. + Este módulo determina qual unidade é um paramédico. None @@ -3364,6 +3448,7 @@ Nada Keine Žádný + Nada Regular medic @@ -3372,6 +3457,7 @@ Médico regular Normaler Sanitäter Řadový zdravotník + Médico regular Doctor (Only Advanced Medics) @@ -3380,6 +3466,7 @@ Doctor (Solo medicina avanzada) Arzt (nur erweiterte Sanitäter) Doktor (Pouze pokročilý zdravotníci) + Doutor (Somente médicos avançados) Assigns the ACE medic class to a unit @@ -3388,6 +3475,7 @@ Asigna la clase médico ACE a una unidad Weise die ACE-Sanitäterklasse einer Einheit zu Přiřadí ACE třídu zdravotníka do jednotky + Atribui a classe médica do ACE a uma unidade Set Medical Vehicle [ACE] @@ -3396,6 +3484,7 @@ Establecer vehículos médicos [ACE] Setze medizinisches Fahrzeug [ACE] Určit zdravotnické vozidlo [ACE] + Definir veículo médico [ACE] List @@ -3404,6 +3493,7 @@ Lista Liste Seznam + Lista List of vehicles that will be classified as medical vehicle, separated by commas. @@ -3412,6 +3502,7 @@ Lista de los vehículos que se clasifican como vehículo médicos, separados por comas. Liste ovn Fahrzeugen, die als medizinische Fahrzeuge verwendet werden. Wird durch Kommas getrennt. Seznam vozidel které budou klasifikovány jako zdravotnická vozidla, oddělené čárkami. + Lista de veículos que serão classificados como veículos médicos, separados por vírgulas. Is Medical Vehicle @@ -3420,6 +3511,7 @@ Es vehículo médico Ist medizinisches Fahrzeug Je zdravotnické vozidlo + É um veículo médico Whatever or not the objects in the list will be a medical vehicle. @@ -3428,6 +3520,7 @@ Cualquiera de la lista o fuera de ella será un vehículo médico. Leg fest ob das Objekt in der Liste ein medizinisches Fahrzeug ist. Ať už jsou nebo nejsou objekty v seznamu budou zdravotnická vozidla. + Se serão ou não os objetos dessa lista veículos médicos. Assigns the ACE medic class to a unit @@ -3436,6 +3529,7 @@ Asigna la clase médico ACE a una unidad Weist die ACE-Sanitäterklasse einer Einheit zu Přiřadí ACE třídu zdravotníka do jednotky + Atribui a classe médica ACE a uma unidade Set Medical Facility [ACE] @@ -3444,6 +3538,7 @@ Establece el centro médico [ACE] Setze medizinische Einrichtung [ACE] Určit zdravotnické zařízení [ACE] + Definir instalação médica [ACE] Is Medical Facility @@ -3452,6 +3547,7 @@ Es centro médico Ist eine medizinische Einrichtung Je zdravotnické zařízení + É uma instalação médica Registers an object as a medical facility @@ -3460,6 +3556,7 @@ Registra un objeto como un centro médico Definiert ein Objekt als medizinische Einrichtung Registruje objekt jako zdravotnické zařízení + Registra um objeto como instalacão médica Defines an object as a medical facility. This allows for more advanced treatments. Can be used on buildings and vehicles. @@ -3468,6 +3565,7 @@ Define un objeto como un centro médico. Esto permite tratamientos más avanzados. Se puede utilizar en edificios y vehículos. Definiert ein Objekt als medizinische Einrichtung. Das ermöglicht weitere Behandlungen. Kann bei Gebäuden und Fahrzeugen verwendet werden. Definuje objekt jako zdravotnické zařízení. To umožňuje více pokročilé léčení. Může být použito na budovy nebo na vozidla. + Define um objeto como instalação médica. Isso permite tratamentos mais avançados. Pode ser utilizado em edifícios e veículos. [ACE] Medical Supply Crate (Basic) @@ -3476,6 +3574,7 @@ [ACE] Caja de suministros médicos (Básica) [ACE] Medizinische Kiste (standard) [ACE] Zdravotnické zásoby (základní) + [ACE] Caixa com suprimentos médicos [ACE] Medical Supply Crate (Advanced) @@ -3484,6 +3583,7 @@ [ACE] Caja de suministros médicos (Avanzada) [ACE] Medizinische Kiste (erweitert) [ACE] Zdravotnické zásoby (pokročilé) + [ACE] Caixa com suprimentos médicos (Avançados) Yes diff --git a/addons/microdagr/stringtable.xml b/addons/microdagr/stringtable.xml index 4a933fc993..7d3ac64af5 100644 --- a/addons/microdagr/stringtable.xml +++ b/addons/microdagr/stringtable.xml @@ -306,12 +306,14 @@ Wypełnienie mapy MicroDAGR Relleno del mapa MicroDAGR MicroDAGR - Vyplnění mapy + Preenchimento de mapa do MicroDAGR MicroDAGR Map Fill Wypełnienie mapy MicroDAGR Relleno del mapa MicroDAGR MicroDAGR - Vyplnění mapy + Preenchimento de mapa do MicroDAGR How much map data is filled on MicroDAGR's @@ -319,6 +321,7 @@ Cuanta información está disponible en el mapa del MicroDAG Wie viel Daten auf einem MicroDAGR zu sehen sind Kolik informací je načteno do MicroDAGR? + Quanta informação é preenchida no mapa do MicroDAGR Full Satellite + Buildings @@ -326,6 +329,7 @@ Satelite completo + Edificios Satellitenbild + Gebäude Satelit + Budovy + Satélite completo + Edifícios Topographical + Roads @@ -333,6 +337,7 @@ Topografico + Carreteras Topografisch + Straßen Topografické + Cesty + Topográfico + Estradas None (Cannot use map view) @@ -340,6 +345,7 @@ Nada (No se puede el mapa) Keine (kann keine Kartenansicht verwenden) Žádný (Nelze použít zobrazení mapy) + Nada (Não pode usar a tela de mapa) Controls how much data is filled on the microDAGR items. Less data restricts the map view to show less on the minimap.<br />Source: microDAGR.pbo @@ -347,6 +353,7 @@ Controla la cantidad de información disponible en el microDAGR. Menos datos limitan la vista del mapa a mostrar menos en el minimapa.<br />Fuente: microDAGR.pbo Steuert wie viel Daten auf dem microDAGR zu sehen ist. Weniger Daten schränken die Kartenansicht ein, um mehr auf der Minimap zu sehen.<br />Quelle: microDAGR.pbo Tento modul umožňuje kontrolovat, kolik informací je obsaženo v MicroDAGR. Menší množství dat omezené zobrazením mapy ukazují méně věcí na minimapě.<br />Zdroj: microDAGR.pbo + Controla quantos dados são preenchidos nos itens microDAGR. Menos dados restringe a visualização de mapa para mostrar menos informações no minimapa<br/>Fonte: MicroDAGR.pbo \ No newline at end of file diff --git a/addons/missileguidance/stringtable.xml b/addons/missileguidance/stringtable.xml index 4c18c2f4c7..2845767f15 100644 --- a/addons/missileguidance/stringtable.xml +++ b/addons/missileguidance/stringtable.xml @@ -103,6 +103,7 @@ Desactivado Aus Vypnout + Desligado Player Only @@ -110,6 +111,7 @@ Solo jugador Nur Spieler Pouze hráči + Somente jogador Player and AI @@ -117,6 +119,7 @@ Jugador e IA Spieler und KI Hráči a AI + Jogador e IA \ No newline at end of file diff --git a/addons/missionmodules/stringtable.xml b/addons/missionmodules/stringtable.xml index 2cdd0ba8a6..b99285850d 100644 --- a/addons/missionmodules/stringtable.xml +++ b/addons/missionmodules/stringtable.xml @@ -7,6 +7,7 @@ Módulo de misiones ACE ACE-Missionsmodule ACE Moduly mise + Módulo de missões ACE Ambiance Sounds [ACE] @@ -14,6 +15,7 @@ [ACE] Sonidos ambiente Umgebungsgeräusche [ACE] Zvuky prostředí [ACE] + [ACE] Sons ambientes Sounds @@ -21,6 +23,7 @@ Sonidos Sounds Zvuky + Sons Class names of the ambiance sounds to be played. Seperated by ',' @@ -28,6 +31,7 @@ Class names de los sonidos ambiente que se reproducirán. Separados por ',' Klassennamen der Umgebungsgeräusche, die abgespielt werden sollen. Getrennt durch "," Class names zvuků prostředí, které budou přehrány. Oddělené ',' + Nomes de classe dos sons de ambiente para serem reproduzidos. Separados por "," Minimal Distance @@ -35,6 +39,7 @@ Distancia mínima Mindestabstand Minimální vzdálenost + Distância mínima Used for calculating a random position and sets the minimal distance between the players and the played sound file(s) @@ -42,6 +47,7 @@ Usado para calcular una posición aleatoria y establecer la distancia mínima entre los jugadores y los ficheros de sonido reproducidos Wird verwendet, um eine zufällige Position zu bestimmen und setzt den Mindestabstand zwischen Spielern und der/den abzuspielenden Sounddatei(en) fest Používá se pro výpočet náhodné pozice a určuje minimální vzdálenost mezi hráči a přehrávaným zvukem. + Usada para calcular uma posição aleatória e definir a distância mínima entre os jogadores e os arquivos de sons que estão sendo reproduzidos. Maximum Distance @@ -49,6 +55,7 @@ Distancia máxima Maximalabstand Maximální vzdálenost + Distância máxima Used for calculating a random position and sets the maximum distance between the players and the played sound file(s) @@ -56,6 +63,7 @@ Usado para calcular una posición aleatoria y establecer la distancia máxima entre los jugadores y los ficheros de sonido reproducidos Wird verwendet, um eine zufällige Position zu bestimmen und setzt den Maximalabstand zwischen Spielern und der/den abzuspielenden Sounddatei(en) fest Používá se pro výpočet náhodné pozice a určuje maximální vzdálenost mezi hráči a přehrávaným zvukem. + Usado para calcular uma posição aleatória e definir uma distância máxima entre os jogadores e os arquivos de sons que estão sendo reproduzidos. Minimal Delay @@ -63,6 +71,7 @@ Retraso mínimo Minimale Verzögerung Minimální prodleva + Atraso mínimo Minimal delay between sounds played @@ -70,6 +79,7 @@ Retraso mínimo entre los sonidos reproducidos Minimale Verzögerung zwischen abzuspielenden Sounds Minimální prodleva mezi přehrávanými zvuky + Atraso mínimo entre os sons reproduzidos Maximum Delay @@ -77,6 +87,7 @@ Retraso máximo Maximale Verzögerung Maximální prodleva + Atraso máximo Maximum delay between sounds played @@ -84,6 +95,7 @@ Retraso máximo entre los sonidos reproducidos Maximale Verzögerung zwischen abzuspielenden Sounds Maximální prodleva mezi přehrávanými zvuky + Atraso máximo entre os sons reproduzidos Follow Players @@ -91,6 +103,7 @@ Seguir jugadores Spielern folgen Následovat hráče + Seguir jogadores Follow players. If set to false, loop will play sounds only nearby logic position. @@ -98,6 +111,7 @@ Seguir jugadores. Si esta desabilitado (false), se reproducirán sonidos en bucle solo cerca de la posición lógica. Spielern folgen. Wenn auf falsch gesetzt, werden Sounds nur in der Nähe des Logikmoduls abgespielt. Následuj hráče. Pokud je FALSE, smyčka zvuku bude přehrávána na nejbližší pozici logiki. + Segue os jogadores. Se esta desabilitado (falso), o loop reproduzirá os sons somente perto de sua posição lógica. Volume @@ -105,6 +119,7 @@ Volumen Lautstärke Hlasitost + Volume The volume of the sounds played @@ -112,6 +127,7 @@ Volumen de los sonidos reproducidos Lautstärke der abzuspielenden Sounds Hlasitost přehrávaného zvuku + O volume em que os sons serão reproduzidos Ambiance sounds loop (synced across MP) @@ -119,6 +135,7 @@ Bucle de sonidos ambiente (sincronizados en MP) Umgebungsgeräusch-Schleife (im MP synchronisiert) Smyčka okkolního zvuku (synchronizováno v MP) + Loop de sons ambientes (sincronizados através do MP) \ No newline at end of file diff --git a/addons/mk6mortar/stringtable.xml b/addons/mk6mortar/stringtable.xml index e3a80bdee7..26ab485db2 100644 --- a/addons/mk6mortar/stringtable.xml +++ b/addons/mk6mortar/stringtable.xml @@ -55,6 +55,7 @@ Ajustes MK6 MK6-Einstellungen MK6 - Nastavení + Ajustes do MK6 Air Resistance @@ -62,6 +63,7 @@ Resistencia al aire Luftwiderstand Odpor vzduchu + Resistência do Ar For Player Shots, Model Air Resistance and Wind Effects @@ -69,6 +71,7 @@ Para disparos del jugador, modelo de resistencia al aire y efectos de viento Für Spielerschüsse, Luftwiderstand und Windeffekte Pro hráčovu střelbu, Model odporu vzduchu a povětrných podmínek + Para disparos do jogador, modelo de resistência de ar e efeitos de vento Allow MK6 Computer @@ -76,6 +79,7 @@ Habilitar ordenador del MK6 Erlaube MK6-Computer MK6 - Povolit počítač + Permitir computador do MK6 Show the Computer and Rangefinder (these NEED to be removed if you enable air resistance) @@ -83,6 +87,7 @@ Muestra el ordenador y el medidor de distancia (DEBEN ser quitados si se activa la resistecia al aire) Zeige den Computer und den Entfernungsmesser an (diese MÜSSEN entfernt werden, wenn der Luftwiderstand aktiviert ist) Zobrazit počítač a dálkoměr (toto MUSÍ být odstraněno pokud je zapnut odpor vzduchu) + Mostra o computador e o medidor de distância (estes DEVEM ser removidos se você habilitar resistência do ar) Allow MK6 Compass @@ -90,6 +95,7 @@ Habilitar brujula del MK6 Erlaube MK6-Kompass MK6 - Povolit kompas + Permitir bússula do MK6 Show the MK6 Digital Compass @@ -97,12 +103,14 @@ Muestra la brujula digital en el MK6 Zeige MK6-Digitaler-Kompass MK6 - Zobrazit digitální kompas + Mostra a bússula digital do MK6 Moduł ten pozwala dostosować ustawienia moździerza MK6. Dieses Modul erlaubt das Einstellen des MK6-Mörsers. Tento modul umožňuje nastavení minometu MK6. + Este módulo permite que você ajuste o morteiro MK6. \ No newline at end of file diff --git a/addons/mx2a/stringtable.xml b/addons/mx2a/stringtable.xml index 951a606a7a..88d6bef6b5 100644 --- a/addons/mx2a/stringtable.xml +++ b/addons/mx2a/stringtable.xml @@ -6,6 +6,7 @@ MX-2A MX-2A MX-2A + MX-2A Thermal imaging device @@ -13,6 +14,7 @@ Monokular termowizyjny Dispositivo de imagen térmica Termální dalekohled + Dispositivo de imagem térmica \ No newline at end of file diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml index 2d2fb1a26c..8571b4c537 100644 --- a/addons/nametags/stringtable.xml +++ b/addons/nametags/stringtable.xml @@ -115,6 +115,7 @@ Etiquetas de nombre Namensanzeigen Jmenovky + Etiquetas de nome Player Names View Dist. @@ -122,6 +123,7 @@ Distancia de vision para nombres de jugadores Spielernamen-Distanz Vzdálenost zobrazení jména hráčů + Distância de visão dos nomes dos jogadores Distance in meters at which player names are shown. Default: 5 @@ -129,6 +131,7 @@ Distancia en metros a la que se muestran los nombres de los jugadores. Por defecto: 5 Distanz in Metern bei der Spielernamen angezeigt werden. Standard: 5 Vzdálenost v metrech pro zobrazení jména. Výchozí: 5 + Distância em metros que os nomes dos jogadores são mostrados. Padrão: 5 Show name tags for AI? @@ -136,6 +139,7 @@ ¿Mostrar nombres para la IA? Zeige Namensanzeigen für KI? Zobrazit jmenovky pro AI? + Mostrar nomes para IA? Show the name and rank tags for friendly AI units? Default: Do not force @@ -143,6 +147,7 @@ Muestra etiquetas de nombre y rango para las unidades IA amigas? Por defecto: No forzar Zeige den Namen und Rang für freundliche KI-Einheiten? Standard: nicht erwzingen Zobrazit jména a hodnosti pro spřátelené AI jednotky? Výchozí: Nevynucovat + Mostra o nome e patente para unidades IA aliadas? Padrão: Não forçar Do Not Force @@ -150,6 +155,7 @@ No forzar Nicht erzwingen Nevynucovat + Não forçar Force Hide @@ -157,6 +163,7 @@ Ocultar forzado Verstecken erzwingen Vynuceno skrýt + Ocultar forçado Force Show @@ -164,6 +171,7 @@ Mostrar forzado Anzeigen erzwingen Vynuceno zobrazit + Mostrar forçado Show crew info? @@ -171,6 +179,7 @@ ¿Mostrar información de la tripulación? Zeige Besatzungsinfo? Zobrazit informace o posádce? + Mostrar informação de tripulação? Show vehicle crew info, or by default allows players to choose it on their own. Default: Do Not Force @@ -178,6 +187,7 @@ Muestra información de la tripulación, o por defecto permite a los jugadores elegirlo. Por defecto: No forzar Zeige Fahrzeugbesatzungsinfo oder erlaube Spielern es auszuwählen. Standard: nicht erzwingen. Zobrazit informace o posádce, nebo nechat aby si hráč vybral sám. Výchozí: Nevynucovat + Mostrar informações de tripulação ou por padrão permitir a escolha dos jogadores. Padrão: Não forçar. Show for Vehicles @@ -185,6 +195,7 @@ Mostrar para vehiculos Zeige bei Fahrzeugen Zobrazit pro vozidla + Mostrar para veículos Show cursor NameTag for vehicle commander (only if client has name tags enabled)Default: No @@ -192,6 +203,7 @@ Muestra etiquetas de nombre en el cursor para el comandante del vehiculo (solo si el cliente tiene las etiquetas de nombre activadas) Por defecto: No Zeige Maus-Namensanzeigen für Fahrzeugkommandanten (nur wenn der Client Namensanzeigen aktiviert hat). Standard: Nein Zobrazit jmenovky pro velitele vozidla (pouze pokud má klient jmenovky povolené). Výchozí: Ne + Mostrar o nome no cursor para o comandante do veículo (somente se o cliente tiver etiquetas de nomes ativada). Padrão: Não This module allows you to customize settings and range of Name Tags. @@ -199,6 +211,7 @@ Dieses Modul erlaubt die Einstellungen der Anzeigenamen zu verändern. Este módulo permite personalizar la configuración y la distancia de las Etiquetas de nombre. Tento modul umožňuje si přizpůsobit nastavení a vzdálenost jmenovky. + Este módulo permite que você personalize as configurações e distâncias de etiquetas de nome. Disabled @@ -206,6 +219,7 @@ Desactivado Deaktiviert Zakázáno + Desativado Enabled @@ -213,6 +227,7 @@ Activado Aktiviert Povoleno + Ativado Only on Cursor @@ -220,6 +235,7 @@ Solo cursor Nur bei Maus Pouze na kurzor + Somente no cursor Only on Keypress @@ -227,6 +243,7 @@ Solo al pulsar tecla Nur bei Tastendruck Pouze na klávesu + Somente em tecla ativada Only on Cursor and Keypress @@ -234,24 +251,28 @@ En cursor y al pulsar tecla Nur Maus und Tastendruck Pouze na kurzor a klávesu + Somente em cursor ou tecla ativada Force Show Only on Cursor Wymuś pod kursorem Forzar mostrar solo en el cursor Vynuceno zobrazit pouze na kurzor + Forçar mostrar somente no cursor Force Show Only on Keypress Wymuś po wciśnięciu klawisza Forzar mostrar solo al pulsar tecla Vynuceno zobrazit pouze na klávesu + Forçar somente mostrar em tecla ativada Force Show Only on Cursor and Keypress Wymuś pod kursorem i po wciśnięciu klawisza Forzar mostrar en el cursor y al pulsar tecla Vynuceno zobrazit pouze na kurzor a klávesu + Forçar mostrar somente em cursor e tecla ativada Use Nametag settings @@ -259,6 +280,7 @@ Usar ajustes de etiquetas de nombre Verwende Namenanzeigen Použít nastavení jmenovky + Usar ajustes de etiquetas de nome Always Show All @@ -266,30 +288,35 @@ Mostrar siempre todo Immer alle zeigen Vždy zobrazit vše + Sempre mostrar tudo Show player names and set their activation. Default: Enabled Opcja ta pozwala dostosować sposób wyświetlania imion nad głowami graczy. Opcja "Tylko po wciśnięciu klawisza" wyświetla imiona tylko przytrzymania klawisza "Modyfikator" dostępnego w menu ustawień addonów -> ACE3. Mostrar nombres de los jugadores y establecer su activación. Predeterminado: Habilitado Zobrazit jména hráčů a nastavit jejich aktivaci. Výchozí: Povoleno + Mostrar os nomes dos jogadores e definir sua ativação. Padrão: Ativado Effect of sound waves above the heads of speaking players after holding the PTT key. This option works with TFAR and ACRE2. Opcja ta pozwala dostosować sposób wyświetlania efektu fal dźwiękowych nad głowami mówiących graczy, wyświetlanych po przytrzymaniu klawisza PTT. Opcja ta współpracuje z TFAR oraz ACRE2. Efecto de ondas sonoras encima de las cabezas de los jugadores que hablan después de mantener la tecla PTT. Esta opción funciona con TFAR y ACRE2. Efekt zvukových vln nad hlavami hráčů když mluví skrz PTT klávesu. Tato volba funguje s TFAR a ACRE2. + Efeito de ondas sonoras acima das cabeças dos jogadores que falam depois mantendo pressionada a tecla PTT. Esta opção funciona com TFAR e ACRE2. Nametags Size Rozmiar imion Tamaño de las Etiquetas de nombre Velikost jmenovky + Tamanho das etiquetas de nome Text and Icon Size Scaling Skalowanie tekstu oraz ikon Escala del texto y el icono Velikost textu a ikon + Escala de tamanho dos ícones e textos \ No newline at end of file diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml index cbd9d642bf..7b4d88f61f 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -247,6 +247,7 @@ [ACE] Permitir exportar configuración Erlaube Config-Export [ACE] Povolit export natavení [ACE] + [ACE] Permitir exportação de configurações Allow @@ -254,6 +255,7 @@ Permitir Erlaube Povolit + Permitir Allow export of all settings to a server config formatted. @@ -261,6 +263,7 @@ Permitir la exportación de todos los ajustes de configuración a un servidor con formato. Erlaube alle Einstellungen in einer Server-Config zu exportieren. Povolit exportovat všechna nastavení do formátu server configu. + Permitir exportação de todas as configurações para uma configuração formatada de servidor. When allowed, you have access to the settings modification and export in SP. Clicking export will place the formated config on your clipboard. @@ -268,6 +271,7 @@ Cuando esta permitido, se tiene acceso a los ajustes de modificación y exportación en SP. Pulsar en exportar copiara la configuración al portapapeles. Wenn erlaubt, können die Einstellungsmodifikationen angezeigt und im SP exportiert werden. Wenn auf "Exportieren" geklickt wird, wird eine formatierte Config-Datei in der Zwischenablage abgespeichert. Pokud je povoleno, budete mít přístup k modifikaci nastavení a exportování v SP. Kliknutím na export umístníte formátovaný config do vaší schránky. + Quando permitido, você tem acesso à modificação de definições e exportação em SP. Clicando em exportação colocará a configuração formatada em sua área de transferência. Hide @@ -275,6 +279,7 @@ Ocultar Verstecken Skrýt + Ocultar Top right, downwards @@ -282,6 +287,7 @@ Arriba a la derecha, hacia abajo Open rechts, nach unten Vpravo nahoře, dolů + Superior direito, para baixo Top right, to the left @@ -289,6 +295,7 @@ Arriba a la derecha, hacia la izquierda Von rechts nach links Vpravo nahoře, do leva + Superior direito, à esquerda Top left, downwards @@ -296,6 +303,7 @@ Arriba a la izquierda, hacia abajo Von links, nach unten Vlevo nahoře, dolů + Superior esquerdo, para baixo Top left, to the right @@ -303,6 +311,7 @@ Arriba a la izquierda, hacia la derecha Oben links nach rechts Vlevo nahoře, do prava + Superior esquerdo, para a direita Top @@ -310,6 +319,7 @@ Arriba Oben Nahoře + Acima Bottom @@ -317,26 +327,31 @@ Abajo Unten Dole + Abaixo Debug To Clipboard Debuguj do schowka Depurar al portapapeles Debug do schránky + Depuração para área de transferência Sends debug information to RPT and clipboard. Wysyła informacje o debugowaniu do RPT oraz schowka. Envía información de depuración al RPT y el portapapeles. Pošle debug informace do RPT a schránky. + Envia informação de depuração para RPT e área de transferência. ACE News Noticias ACE + Notícias do ACE Show News on Main Menu Mostrar noticias en el menú principal + Mostrar notícias no menu principal \ No newline at end of file diff --git a/addons/rangecard/stringtable.xml b/addons/rangecard/stringtable.xml index 535059456e..cf013f2ae3 100644 --- a/addons/rangecard/stringtable.xml +++ b/addons/rangecard/stringtable.xml @@ -6,42 +6,49 @@ Tabela balistyczna Tarjeta de distancias Vzdálenostní tabulka + Tabela de distâncias 50 METER increments -- MRAD/MRAD (reticle/turrets) Co 50 metrów - MRAD/MRAD (siatka/pokrętło) Incrementos de 50 METROS -- MRAD/MRAD (retícula/torretas) Přidat 50 METRŮ -- MRAD/MRAD (síťka/věže) + Incrementos de 50 METROS - MRAD/MRAD (retícula/torres) Open Range Card Otwórz tabelę balistyczną Abrir tarjeta de distancias Otevřít vzdálenostní tabulku + Abrir tabela de distâncias Open Range Card Copy Otwórz kopię tabeli balistycznej Abrir copia de tarjeta de distancias Otevřít kopii vzdálenostní tabulky + Abrir cópia da tabela de distâncias Open Range Card Otwórz tabelę balistyczną Abrir tarjeta de distancias Otevřít vzdálenostní tabulku + Abrir tabela de distäncias Open Range Card Copy Otwórz kopię tabeli balistycznej Abrir copia de tarjeta de distancias Otevřít kopii vzdálenostní tabulky + Abrir cópia da tabela de distâncias Copy Range Card Skopiuj tabelę balistyczną Copiar tarjeta de distancias Kopírovat vzdálenostní tabulku + Copiar tabela de distäncias \ No newline at end of file diff --git a/addons/respawn/stringtable.xml b/addons/respawn/stringtable.xml index 40bb04f53a..4b649173f0 100644 --- a/addons/respawn/stringtable.xml +++ b/addons/respawn/stringtable.xml @@ -151,6 +151,7 @@ Sistema de reaparición Respawn-System Systém znovuzrození + Sistema de Renascimento Save Gear? @@ -158,6 +159,7 @@ ¿Guardar equipo? Ausrüstung speichern? Uložit výbavu? + Salvar equipamento? Respawn with the gear a soldier had just before his death? @@ -165,6 +167,7 @@ Reaparece con el equipo que el soldado tenía justo antes de morir Mit der Ausrüstung, die ein Soldat vor seinem Tod hatte, respawnen? Znovuubjevit s výbavou kterou měl voják před smrtí? + Renascer com o equipamento que um soldado tinha antes de sua morte? Remove bodies? @@ -172,6 +175,7 @@ ¿Eliminar cuerpos? Körper entfernen? Odstranit těla? + Remover corpos? Remove player bodies after disconnect? @@ -179,12 +183,14 @@ Elimina los cuerpos de los jugadores cuando se desconecten Entferne Spielerkörper nach dem Trennen einer Verbindung? Odstranit hráčova těla po odpojení? + Remover corpos dos jogadores depois de desconectar? Moduł ten pozwala dostosować ustawienia odrodzenia (respawnu). Dieses Modul erlaubt es die Respawn-Einstellungen anzupassen. Tento modul umožňuje nastavení znovuzrození (spawn). + Este módulo permite que você personalize as configurações do renascimento (Spawn). Friendly Fire Messages @@ -192,11 +198,13 @@ Mensajes de fuego amigo Freundbeschuss-Nachrichten Upozornění na přátelskou střelbu + Mensagens de fogo amigo Użycie tego modułu na misji spowoduje wyświetlenie wiadomości na czacie w przypadku, kiedy zostanie popełniony friendly fire - wyświetlona zostanie wtedy wiadomość kto kogo zabił. Zobrazí zprávu v chatu v případě, když budete střílet na vlastní jednotky. Ve zprávě se zobrazí kdo na koho střílel, popř. kdo koho zabil. + Usando este módulo em uma missão para exibir mensagens chat, no caso de quando você faz um fogo amigo - então a mensagem será exibida mostrando quem matou quem. Rallypoint System @@ -204,11 +212,13 @@ Sistema de punto de reunión Rallypoint-System Systém shromáždění + Sistema de ponto de encontro Moduł ten pozwala zastosować na misji "punkt zbiórki", do którego można szybko przeteleportować się z "bazy". Wymaga postawienia odpowiednich obiektów na mapie - bazy oraz flagi. Obydwa dostępne są w kategorii Puste -> ACE Odrodzenie. Tento modul umožňuje určit místo shromaždiště, kam se mohou jednokty rychle teleportovat ze "základny". Toto vyžaduje vhodné objekty v mapě - základna a vlajka. Oba dva můžete najít v kategorii Prázdné -> ACE Oživení. + Este módulo permite que você aplique em uma missão "pontos de encontro", que pode rapidamente se teletransportar para a "base". Ele requer colocar objetos apropriados no mapa - base e bandeiras. Ambos estão disponíveis na categoria em branco -> ACE Revival. Move Rallypoint @@ -216,6 +226,7 @@ Mover punto de reunión Bewege Rallypoint Přesun na shromaždiště + Mover para ponto de encontro ACE Respawn @@ -223,6 +234,7 @@ Reaparición ACE ACE-Respawn ACE Znovuzrození + ACE Respawn \ No newline at end of file diff --git a/addons/sandbag/stringtable.xml b/addons/sandbag/stringtable.xml index 034a6bfdbb..70dde0da56 100644 --- a/addons/sandbag/stringtable.xml +++ b/addons/sandbag/stringtable.xml @@ -11,6 +11,7 @@ Pytel s pískem Sacco di Sabbia Homokzsák + Saco de Areia Sandbag (empty) @@ -22,6 +23,7 @@ Pytel na písek (prázdný) Sacco di Sabbia (Vuoto) Homokzsák (üres) + Saco de Areia (vazio) Cannot build here @@ -33,6 +35,7 @@ Zde nelze postavit Impossibile costruire qui Nem teheted ide + Não pode contruir aqui Pick up Sandbag @@ -44,6 +47,7 @@ Zvednout pytel Prendi Sacco di Sabbia Homokzsák felvétele + Pegar saco de areia Carry Sandbag @@ -55,6 +59,7 @@ Nést pytel Trasporta Sacco di Sabbia Homokzsák cipelése + Carregar saco de areia End Carrying @@ -66,6 +71,7 @@ Položit Fine Trasporto Cipelés abbahagyása + Parar de carregar Drop Sandbag @@ -77,6 +83,7 @@ Odložit pytel Lascia Sacco di Sabbia Homokzsák eldobása + Derrubar saco de areia Confirm Deployment @@ -88,6 +95,7 @@ Potvrdit Položení Conferma Posizionamento Lerak + Confirmar implantação Cancel Deployment @@ -99,6 +107,7 @@ Zrušit Položení Cancella Posizionamento Visszavonás + Cancelar implantação Deploy Sandbag @@ -110,6 +119,7 @@ Umístit pytel Posiziona Sacco di Sabbia Homokzsák lerakása + Implantar saco de areia Sandbag Box @@ -121,6 +131,7 @@ Bedna na pytle s pískem Contenitore Sacchi di Sabbia Homokzsákos láda + Caixa de saco de areia Here is no sand @@ -132,6 +143,7 @@ Tady není písek Qui non cè Sabbia Itt nincs homok + Aqui não tem areia + Modifier, rotates diff --git a/addons/sitting/stringtable.xml b/addons/sitting/stringtable.xml index 16eb84c59f..5565da1e11 100644 --- a/addons/sitting/stringtable.xml +++ b/addons/sitting/stringtable.xml @@ -4,19 +4,24 @@ Sit Down Usiądź + Sentar Stand Up Wstań + Levantar Enable Sitting + Habilitar opção para sentar Sitting + Sentado This module allows you to disable the ability to sit on chairs and toilets. + Este módulo permite que você desabilite a capacidade de sentar-se em cadeiras e banheiros. \ No newline at end of file diff --git a/addons/spottingscope/stringtable.xml b/addons/spottingscope/stringtable.xml index 7fc7fdee58..8c5425dc2b 100644 --- a/addons/spottingscope/stringtable.xml +++ b/addons/spottingscope/stringtable.xml @@ -11,6 +11,7 @@ Zaměřovací Dalekohled Spotting Scope Megfigyelő távcső + Luneta de observador Pick up Spotting Scope @@ -22,6 +23,7 @@ Zvednout Zaměřovací dalekohled Raccogli spottingscope Mefgigy. távcső felvétele + Pegar luneta de observador Place Spotting Scope @@ -33,6 +35,7 @@ Položit Zaměřovací dalekohled Posiziona spottingscope Megfigy. távcső elhelyezése + Colocar luneta de observador \ No newline at end of file diff --git a/addons/switchunits/stringtable.xml b/addons/switchunits/stringtable.xml index 4656504545..b392b09ca7 100644 --- a/addons/switchunits/stringtable.xml +++ b/addons/switchunits/stringtable.xml @@ -23,7 +23,7 @@ Cette unité est trop proche des ennemis Ez az egység túl közel van az ellenséghez. Questa unità è troppo vicina al nemico. - Essa unidade está muito perta do inimigo. + Essa unidade está muito perto do inimigo. SwitchUnits System @@ -31,6 +31,7 @@ Sistema de cambio de unidad Einheiten-Switch-System? Systém výměny stran + Sistema de troca de unidades Switch to West? @@ -38,6 +39,7 @@ ¿Cambiar a Oeste? Nach BLUFOR wechseln? Přesunout k BLUFOR? + Trocar para Oeste? Allow switching to west units? @@ -45,6 +47,7 @@ ¿Permitir cambios a unidades del Oeste? Erlaube das Wechseln zu BLUFOR-Einheiten? Povolit přesun k BLUFOR? + Permitir troca de unidades para o Oeste? Switch to East? @@ -52,6 +55,7 @@ ¿Cambiar a Este? Nach OPFOR wechseln? Přesunout k OPFOR? + Trocar para Leste? Allow switching to east units? @@ -59,6 +63,7 @@ ¿Permitir cambios a unidades del Este? Erlaube das Wechseln zu OPFOR-Einheiten? Povolit přesun k OPFOR? + Permitir troca de unidades para o Leste? Switch to Independent? @@ -66,6 +71,7 @@ ¿Cambiar a Independiente? Nach INDFOR wechseln? Přesunout k INDFOR? + Trocar para Indenpendente Allow switching to independent units? @@ -73,6 +79,7 @@ ¿Permitir cambios a unidades Independientes? Erlaube das Wechseln zu INDFOR-Einheiten? Povolit přesun k INDFOR? + Permitir troca de unidades para o Indenpendente? Switch to Civilian? @@ -80,6 +87,7 @@ ¿Cambiar a Civil? Nach CIVILIAN wechseln? Přesunout k CIVILISTŮM? + Trocar para Civis? Allow switching to civilian units? @@ -87,6 +95,7 @@ ¿Permitir cambios a unidades Civiles Erlaube das Wechseln zu CIVILIAN-Einheiten? Povolit přesun k CIVILISTŮM? + Permitir troca de unidades para o Civil? Enable Safe Zone? @@ -94,6 +103,7 @@ ¿Habilitar zona segura? Aktiviere Sicherheitszone? Povolit bezpečné oblasti? + Habilitar zona segura? Enable a safe zone around enemy units? Players can't switch to units inside of the safe zone. @@ -101,6 +111,7 @@ Habilita una zona segura alrededor de las unidades enemigas. Los jugadores no pueden cambiar de unidad dentro de la zona segura. Aktiviere eine Sicherheitszone um feindliche Einheiten? Spieler können nicht zu Einheiten in der Sicherheitszone wechseln. Povolit bezpečnou zónu kolem nepřátelských jednotek? Hráči se nemohou změnit strany/jednotky uvnitř bezpečné zóny. + Habilitar uma zona segur ao redor das unidades inimigas? Jogadores não conseguirão trocar para unidades dentro dessa zona segura. Safe Zone Radius @@ -108,6 +119,7 @@ Radio de la zona segura Sicherheitszonenradius Oblast bezpečné zóny + Raio da zona segura The safe zone around players from a different team. Default: 200 @@ -115,11 +127,13 @@ La zona segura alrededor de los jugadores de distintos equipos. Por defecto: 200 Die Sicherheitszone um Spieler von einem anderen Team. Standard: 200 Bezpečná zóna kolem hráče z jiných týmu. Výchozí: 200 + A zona segura ao redor dos jogadores de diferentes equipes. Padrão: 200 Tento modul umožňuje přepínání mazi dostupnými stranami. + Este módulo permite mudar o lado à disposição dos jogadores. \ No newline at end of file diff --git a/addons/tacticalladder/stringtable.xml b/addons/tacticalladder/stringtable.xml index 962cc9e6ae..4342ac5408 100644 --- a/addons/tacticalladder/stringtable.xml +++ b/addons/tacticalladder/stringtable.xml @@ -11,6 +11,7 @@ Teleskopický žebřík Telescopic Ladder Telescopic Ladder + Escada telescópica Deploy ladder @@ -22,6 +23,7 @@ Rozložit žebřík Deploy ladder Deploy ladder + Implantar escada Drop ladder @@ -33,6 +35,7 @@ Položit žebřík Drop ladder Drop ladder + Derrubar escada Adjust ladder @@ -40,6 +43,7 @@ Reguluj drabinę Upravit žebřík Ajustar escalera + Ajustar escada Position ladder @@ -51,6 +55,7 @@ Umístit žebřík Position ladder Position ladder + Posicionar escada Pickup ladder @@ -62,6 +67,7 @@ Vzít žebřík Pickup ladder Pickup ladder + Pegar escada \ No newline at end of file diff --git a/addons/tripod/stringtable.xml b/addons/tripod/stringtable.xml index baf20b9854..254af3295f 100644 --- a/addons/tripod/stringtable.xml +++ b/addons/tripod/stringtable.xml @@ -11,6 +11,7 @@ SSWT souprava SSWT Kit SSWT Kit + Kit SSWT Place SSWT Kit @@ -22,30 +23,35 @@ Rozlož souprava SSWT Place SSWT Kit Place SSWT Kit + Colocar kit SSWT Pick up SSWT Kit Podnieś trójnóg snajperski Coger equipo SSWT Zvednout SSWT soupravu + Pegar kit SSWT Adjust SSWT Kit Reguluj trójnóg snajperski Ajustar equipo SSWT Regulovat SSWT soupravu + Ajustar kit SSWT Done Gotowe Hecho Hotovo + Feito + Modifier, adjust + Modyfikator, regulacja + Modificador, ajuste + Modifikátor, regulace + + Modificador, ajuste \ No newline at end of file diff --git a/addons/vehiclelock/stringtable.xml b/addons/vehiclelock/stringtable.xml index 23d8b380b9..89a64faf8a 100644 --- a/addons/vehiclelock/stringtable.xml +++ b/addons/vehiclelock/stringtable.xml @@ -139,6 +139,7 @@ Configuración del cierre del vehiculo Fahrzeugsperreinstellungen Nastavení zámku vozidla + Configuração de fechadura do veículo Lock Vehicle Inventory @@ -146,6 +147,7 @@ Bloquear inventario del vehículo Sperre Fahrzeuginventar Inventář zamčeného vozidla + Bloquear inventário do veículo Locks the inventory of locked vehicles @@ -153,6 +155,7 @@ Bloquea el inventario de los vehículos cerrados Sperrt das Inventar von gesperrten Fahrzeugen Zamknout inventář u zamčených vozidel + Bloqueia o inventário de veículos fechados Vehicle Starting Lock State @@ -160,6 +163,7 @@ Estado inicial del cierre en vehículos Fahrzeuge spawnen gesperrt Počáteční stav zámku vozidla + Estado inicial da fechadura dos veículos Set lock state for all vehicles (removes ambiguous lock states) @@ -167,6 +171,7 @@ Establece el estado de cierre para todos los vehículos (elimina estados de cierre ambiguos) Setze Sperrstatus für alle Fahrzeuge (entfernt unklare Sperrzustände) Nastavit stav zámku u všech vozidel (odstraňuje nejednoznačné stavy zámků) + Definir estados de fechadura para todos os veículos (remove estados de fechadura ambíguos) As Is @@ -174,6 +179,7 @@ Está Unverändert Jak je + Como está Locked @@ -181,6 +187,7 @@ Cerrado Gesperrt Zamčeno + Fechado Unlocked @@ -188,6 +195,7 @@ Abierto Offen Odemčeno + Aberto Default Lockpick Strength @@ -195,6 +203,7 @@ Durabilidad de la ganzua por defecto Standard-Pick-Stärke Výchozí síla páčidla + Durabilidade padrão da chave micha Default Time to lockpick (in seconds). Default: 10 @@ -202,6 +211,7 @@ Tiempo por defecto para forzar cerradura (en segundos). Por defecto: 10 Standardzeit um ein Schloss zu knacken (in Sekunden). Standard: 10 Čas k vypáčení zámku (v sekundách). Výchozí: 10 + Tempo padrão para forçar a fechadura (em segundos). Padrão: 10 Settings for lockpick strength and initial vehicle lock state. Removes ambiguous lock states.<br />Source: vehiclelock.pbo @@ -209,6 +219,7 @@ Ajustes de la durabilidad de la ganzua y el estado inicial del cierre de los vehículos. Elimina estados de cierre ambiguos.<br />Fuente: vehiclelock.pbo Einstellungen für Pick-Stärke und anfänglichen Fahrzeugsperrzustand. Entfernt unklare Sperrzustände.<br />Quelle: vehiclelock.pbo Nastavení síly vypáčení a počáteční stav zámku vozidla. Odstraňuje nejednoznačné stavy zámků.<br />Zdroj: vehiclelock.pbo + Definições para a durabilidade da chave micha e estado inicial da fechadura do veículo. Remove estados de fechadura ambíguas <br /> Fonte: Vehiclelock.pbo Vehicle Key Assign @@ -216,6 +227,7 @@ Asignacion de la llave del vehículo Fahrzeugschlüsselzuweisung Přidělení klíče k vozidlu + Atribuição de chave de veículo Sync with vehicles and players. Will handout custom keys to players for every synced vehicle. Only valid for objects present at mission start.<br />Source: vehiclelock.pbo @@ -223,6 +235,7 @@ Sincronizar con vehiculos y jugadores. Distribuirá llaves personalizadas a los jugadores para todos los vehículos sincronizados. Solo valido para objetos presentes al inicio de la mision.<br />Fuente: vehiclelock.pbo Synchronisiere mit Fahrzeugen und Spielern. Wird eigene Schlüssel an Spieler für jedes synchronisierte Fahrzeuge aushändigen. Nur gültig für am Missionsstart existierende Fahrzeuge.<br />Quelle: vehiclelock.pbo Synchronizuj s vozidly a hráči. Hráč dostane klíč ke každému synchonizovanému vozidlu. Platné pouze pro objekty přítomné na začátku mise.<br />Zdroj: vehiclelock.pbo + Sincronizar com veículos e jogadores. Irá distribuir chaves personalizadas para os jogadores para cada veículo sincronizado. Só é válido para objetos presentes no início da missão <br /> Fonte: vehiclelock.pbo \ No newline at end of file diff --git a/addons/viewdistance/stringtable.xml b/addons/viewdistance/stringtable.xml index 9cb7fcde2e..b8de5321c2 100644 --- a/addons/viewdistance/stringtable.xml +++ b/addons/viewdistance/stringtable.xml @@ -6,150 +6,175 @@ Ogranicznik zasięgu widzenia Limitador de distancia de visión Omezovač dohlednosti + Limitador de distância de visão Allows limiting maximum view distance that can be set by players. Pozwala ustawić maksymalny limit zasięgu widzenia. Permite limitar la distancia máxima de visión que se puede establecer por los jugadores. Umožňuje určit maximální dohlednost, kterou si může hráč nastavit + Permite limitar a distância máxima de visão que pode ser definida pelos jogadores. Enable ACE viewdistance Wł. zasięg widzenia ACE Habilitar distancia de visión ACE Povolit ACE dohlednost + Habilitar distância de visão ACE Enables ACE viewdistance Aktywuje możliwość zmiany zasięgu widzenia w menu ustawień ACE Habilita la distancia de visión ACE Povolit ACE dohlednost + Habilita a distância de visão ACE View Distance Limit Limit zas. widzenia Limite de distancia de visión Limit dohlednosti + Limite da distância de visão Sets the limit for how high clients can raise their view distance (up to 10000) Ustawia maksymalny limit zasięgu widzenia jaki mogą ustawić gracze (do 10000) Establece el límite de cuan alta pueden aumentar los clientes la distancia de visión (hasta 10.000) Stanoví limit jak daleko si může client zvýšit dohlednost (do 10000) + Estabelecer um limite de quão alto os clientes podem aumentar sua distância de visão (até 10000) Limit for client's view distance set here and can overridden by module Limit zasięgu widzenia jest ustawiany tutaj i może zostać nadpisany poprzez moduł Establecer aqui el límite para la distancia de visión de los clientes. Puede ser anulado por módulo Limit dohlednoti pro klienty se nastavuje zde a může být potlačeno pomocí modulu. + Permite limitar a distância de visão máxima que pode ser definida por jogadores. Pode ser substituído por módulo. Client View Distance (On Foot) Zasięg widzenia (piechota) Distancia de visión del cliente (A pie) Dohlednost (Pěšák) + Distância de visão do cliente (A pé) Changes in game view distance when the player is on foot. Zmienia zasięg widzenia kiedy gracz porusza się na piechotę. Cambia en juego la distancia de visión cuando el jugador va a pie. Změna dohlednosti pro hráče pokud jde po svých. + Muda a distância de visão do jogador dentro do jogo quando ele está a pé. Client View Distance (Land Vehicle) Zasięg widzenia (pojazdy naziemne) Distancia de visión del cliente (Vehículo terrestre) Dohlednost (Pozemní technika) + Distância de visão do cliente (Veículo terrestre) Changes in game view distance when the player is in a land vehicle. Zmienia zasięg widzenia kiedy gracz porusza się pojazdami naziemnymi. Cambia en juego la distancia de visión cuando el jugador va en un vehículo terrestre. Změna dohlednosti pro hráče pokud je v pozemní technice. + Muda a distância de visão do jogador dentro do jogo quando ele está dentro de um veículo terrestre. Client View Distance (Air Vehicle) Zasięg widzenia (pojazdy lotnicze) Distancia de visión del cliente (Vehículo aéreo) Dohlednost (Vzdušná technika) + Distância de visão do cliente (Veículo aéreo) Changes in game view distance when the player is in an air vehicle. Zmienia zasięg widzenia kiedy gracz porusza się pojazdami lotniczymi. Cambia en juego la distancia de visión cuando el jugador va en un vehículo aéreo. Změna dohlednosti pro hráče pokud je ve vzdušné technice. + Muda a distância de visão do jogador dentro do jogo quando ele está dentro de um veículo aéreo. Dynamic Object View Distance Dynamiczny zasięg rysowania obiektów Distancia de visión dinámica de objetos Dynamická dohlednost objektů + Distância de visão dinâmica dos objetos Sets the object view distance as a coefficient of the view distance. Zmienia zasięg rysowania obiektów jako mnożnik zasięgu widzenia. Establece la distancia de visión de objetos como un coeficiente de la distancia de visión. Nastaví objekt dohlednosti jako koeficient dohlednosti. + Estabelece a distância de visão dos objetos com um coeficiente da distância de visão. Off Wyłącz Apagada Vypnout + Desligado Very Low Bardzo niski Muy baja Velmi málo + Muito baixo Low Niski Baja Málo + Baixo Medium Średni Media Středně + Médio High Wysoki Alta Hodně + Alto Very High Bardzo wysoki Muy alta Velmi hodně + Muito alto View Distance: Zasięg widzenia: Distancia de visión: Dohlednost: + Distância de visão: Object View Distance is Zasięg widzenia obiektów wynosi La distancia de visión de objetos es: Dohlednost objektů je + Distância de visão do objeto é That option is invalid! The limit is Ta opcja jest nieprawidłowa! Limit wynosi Esta opción no es valida! El limite es Tato volba je neplatná! Limit je + Essa opção é inválida. O limte é Video Settings Ustawienia wideo Ajustes de vídeo Nastavení videa + Ajustes de vídeo \ No newline at end of file diff --git a/addons/weather/stringtable.xml b/addons/weather/stringtable.xml index 54069425a4..69e2d4a792 100644 --- a/addons/weather/stringtable.xml +++ b/addons/weather/stringtable.xml @@ -19,6 +19,7 @@ Clima Wetter Počasí + Clima Multiplayer synchronized ACE weather module @@ -26,6 +27,7 @@ Modulo climático del ACE sincronizado en multijugador ACE-Wettermodul (synchron im Multiplayer) Synchronizovat ACE počasí v multiplayeru + Módulo climático ACE para sincronismo multiplayer Weather propagation @@ -33,6 +35,7 @@ Propagación del clima Wetterübertragung Změny počasí + Propagação do clima Enables server side weather propagation @@ -40,6 +43,7 @@ Permite al servidor controlar la propagación del clima Aktiviere serverseitige Wetterübertragung Aktivuje změny počasí na straně serveru + Ativa propagação de clima via server ACE Weather @@ -47,6 +51,7 @@ Clima ACE ACE-Wetter ACE počasí + Clima ACE Overrides the default weather (editor, mission settings) with ACE weather (map based) @@ -54,6 +59,7 @@ Sobreescribe el sistema climático por defecto (editor, ajustes de mision) con clima del ACE (basado en el mapa) Überschreibt das Standardwetter (Editor, Missionseinstellungen) mit dem ACE-Wetter (kartenbasiert) Přepíše výchozí počasí (editor, nastavení mise) s ACE počasím (podle mapy) + Sobreescreve o clima padrão (editor, ajustes de missão) pelo sistema de clima ACE (baseado por mapa) Sync Rain @@ -61,6 +67,7 @@ Sincronizar lluvia Regen synchronisieren Synchronizuj déšť + Sincronizar chuva Synchronizes rain @@ -68,6 +75,7 @@ Sincroniza la lluvia Synchronisiert den Regen Synchronizace deště + Sincroniza a chuva Sync Wind @@ -75,6 +83,7 @@ Sincronizar viento Wind synchronisieren Synchronizuj vítr + Sincronizar vento Synchronizes wind @@ -82,6 +91,7 @@ Sincroniza el viento Synchronisiert den Wind Synchronizace větru + Sincroniza o vento Sync Misc @@ -89,6 +99,7 @@ Sincronizar otros Sonstiges synchronisieren Synchronizuj různé + Sincronizar outros Synchronizes lightnings, rainbow, fog, ... @@ -96,6 +107,7 @@ Sincroniza relampagos, arcoiris, niebla ... Synchronisiert Blitze, Regenbögen, Nebel, ... Synchronizace blesků, duhy, mlhy, ... + Sincroniza relâmpagos, arco-íris, neblina... Update Interval @@ -103,6 +115,7 @@ Intervalo de actualización Aktualisierungsintervall Interval aktualizace + Intervalo de atualização Defines the interval (seconds) between weather updates @@ -110,6 +123,7 @@ Defina el intervalo (en segundos) entre actualizacions de clima Definiert das Intervall (in Sekunden) zwischen Wetteraktualisierungen Určit interval (v sekundách) mezi aktualizacemi počasí + Defina o intervalo (em segundos) entre as atualizações de clima \ No newline at end of file diff --git a/addons/winddeflection/stringtable.xml b/addons/winddeflection/stringtable.xml index a361681e59..036456e35e 100644 --- a/addons/winddeflection/stringtable.xml +++ b/addons/winddeflection/stringtable.xml @@ -66,6 +66,7 @@ Wpływ wiatru Desviación por viento Účinky větru + Desvio de vento Wind Deflection @@ -73,6 +74,7 @@ Desviación por viento Windablenkung Účinky větru + Desvio de vento Enables wind deflection @@ -80,6 +82,7 @@ Activa la desviación por viento Aktiviert Windablenkung Umožňit vliv větru + Ativa o desvio de vento Vehicle Enabled @@ -87,6 +90,7 @@ Habilitada en vehículos Fahrzeuge aktiviert Vozidla povolena + Ativado em veículos Enables wind deflection for static/vehicle gunners @@ -94,6 +98,7 @@ Habilita la desviación por viento para artilleros estaticos/de vehículos Aktiviere Windablenkung für statische oder Fahrzeugschützen Umožnit vliv větru pro střelce z vozidla/statiky + Ativa o desvio de vento para atiradores de estáticas e veículos Simulation Interval @@ -101,6 +106,7 @@ Intervalo de simulación Simulationsintervall Interval simulace + Intervalo de simulação Defines the interval between every calculation step @@ -108,6 +114,7 @@ Define el intervalo entre cada calculo Definiert das Intervall zwischen jedem Berechnungsschritt Určuje interval mezi každým výpočtem + Define o intervalo entre cada cálculo Simulation Radius @@ -115,6 +122,7 @@ Radio de simulación Simulationsradius Oblast simulace + Radio da Simulação Defines the radius around the player (in meters) at which projectiles are wind deflected @@ -122,6 +130,7 @@ Define el radio alrededor del jugador (en metros) en el cual los proyectiles son desviados por el viento Gibt den Radius (in Metern) um den Spieler an, in dem Projektile vom Wind beeinflusst werden Definuje oblast kolem hráče (v metrech) v které je projektil ovlivněn větrem + Define o raio ao redor do jogador (em metros) em qual os projéteis são desviados pelo vento Wind influence on projectiles trajectory @@ -129,6 +138,7 @@ Influencia del viento en la trayectoria de proyectiles Windeinfluss auf die Geschossbahnen Vítr ovlivňuje trajektorii projektilu + Influência do vento na trajetória dos projéteis \ No newline at end of file diff --git a/addons/yardage450/stringtable.xml b/addons/yardage450/stringtable.xml index c7cb16b83b..971b3a4889 100644 --- a/addons/yardage450/stringtable.xml +++ b/addons/yardage450/stringtable.xml @@ -6,6 +6,7 @@ Yardage 450 Yardage 450 Yardage 450 + Yardage 450 Laser Rangefinder @@ -13,6 +14,7 @@ Dalmierz laserowy Telémetro láser Laserový dálkoměr + Medidor de Distância a laser Yardage 450 - Power Button @@ -20,6 +22,7 @@ Yardage 450 - Przycisk zasilania Yardage 450 - Botón de encendido Yardage 450 - Tlačítko napájení + Yardage 450 - Botão de energia \ No newline at end of file diff --git a/addons/zeus/stringtable.xml b/addons/zeus/stringtable.xml index 8ddde63cc8..80d08a3275 100644 --- a/addons/zeus/stringtable.xml +++ b/addons/zeus/stringtable.xml @@ -6,102 +6,119 @@ Ustawienia Zeusa Ajustes Zeus Nastavení Zeuse + Ajustes do Zeus Provides control over various aspects of Zeus. Pozwala kontrolować różne aspekty Zeusa. Proporciona control sobre diversos aspectos de Zeus. Poskytuje kontrolu na různými aspekty Zeuse. + Proporciona controle sobre diversos aspectos do Zeus. Ascension Messages Wiad. o nowym Zeusie Mensajes de ascensión Zpráva o novém Zeusovi + Mensagens de ascensão Display global popup messages when a player is assigned as Zeus. Wyświetlaj globalną wiadomość kiedy gracz zostanie przydzielony jako Zeus Mostrar mensajes emergentes globales cuando a un jugador se le asigna como Zeus. Zobrazit globální zprávu když je hráč přiřazen jako Zeus. + Mostra uma mensagem popup quando um jogador é atribuido ao Zeus. Zeus Eagle Orzeł Zeusa Águila Zeus Orel Zeuse + Águia do Zeus Spawn an eagle that follows the Zeus camera. Spawnuj orła, który podąrza za kamerą Zeusa. Generar un águila que sigue la cámara Zeus. Vytvoří orla, který následuje kameru Zeuse. + Cria uma águia que segue a câmera do Zeus Wind Sounds Dźwięki wiatru Sonidos de viento Zvuky větru + Sons de vento Play wind sounds when Zeus remote controls a unit. Odtwarzaj dźwięki wiatru kiedy Zeus zdalnie kontroluje jednostkę. Reproduce sonidos de viento cuando Zeus controle remotamente una unidad. Přehrát varování (vítr) když Zeus převezmě kontrolu nad jednotkou. + Reproduz sons de vento quando uma unidade é remotamente controlada pelo Zeus. Ordnance Warning Ostrz. o ostrzale arty. Advertencia de artefactos explosivos Varování před dělostřelectvem + Aviso de explosivos Play a radio warning when Zeus uses ordnance. Odtwarzaj wiadomość radiową kiedy Zeus używa artylerii. Reproduce un aviso de radio cuando Zeus utiliza artefactos explosivos. Přehrát varování (rádio) když Zeus použije dělostřelectvo. + Reproduz uma aviso via rádio quando o Zeus usa um explosivo. Reveal Mines Pokazuj miny Revelar minas Odhalit miny + Revelar minas Reveal mines to allies and place map markers. Pokazuj znaczniki min dla sojuszników i twórz markery na mapie w miejscu min. Revelar minas a aliados y establecer marcadores de mapa. Odhalí miny pro spojence a umístnit jejich značku na mapu. + Revelar minas para aliados e colocar marcadores no mapa. Reveal to Allies Pokaż dla sojuszników Revelar a aliados Odhalit pro spojence + Revelar para aliados Allies + Map Markers Sojusznicy + markery na mapie Aliados + Marcas de mapa Spojenci + Značky na mapě + Aliados + Marcadores no mapa Toggle Captive Przełącz więźnia Alternar cautivo Přepnout - Vězeň + Alternar prisioneiro Toggle Surrender Przełącz kapitulację Alternar rendición Přepnout - Vzdávání + Alternar rendição Toggle Unconscious Przełącz nieprzytomność Alternar inconsciencia Přepnout - Bezvědomí + Alternar inconsciência Unit must be alive @@ -132,13 +149,14 @@ Jednostka nie może być więźniem La unidad no debe estar cautiva Jednotka nemí být vězeň + Unidade não pode ser prisioneira Place on a unit Rien sous le curseur Es wurde nichts ausgewählt Nada bajo el ratón - Nada debaixo do mouse + Coloque em uma unidade Umístni na jednotku Nie ma nic pod kursorem Ничего не выделено @@ -150,6 +168,7 @@ Wymaga addonu, który nie jest obecny Requiere un addon que no está presente Vyžaduje addon, který není přítomen + Requer um addon que não está presente \ No newline at end of file From 0e7c6a8e19a08296f5ba1c010457f673a1ed5590 Mon Sep 17 00:00:00 2001 From: Simon AM Date: Sun, 28 Jun 2015 10:18:53 +0200 Subject: [PATCH 105/118] Set Viewdistance to start on settingsInitialized --- addons/viewdistance/XEH_postInit.sqf | 51 +++++++++++++++------------- 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/addons/viewdistance/XEH_postInit.sqf b/addons/viewdistance/XEH_postInit.sqf index c49a197c26..da4227516c 100644 --- a/addons/viewdistance/XEH_postInit.sqf +++ b/addons/viewdistance/XEH_postInit.sqf @@ -2,28 +2,33 @@ if (!hasInterface) exitWith {}; -// Force the view distance down to the limit. -if (GVAR(enabled) && {viewDistance > GVAR(limitViewDistance)}) then { - setViewDistance GVAR(limitViewDistance); -}; - -// Adapt view distance when the player is created or changed according to whether client is on foot or vehicle. -["playerChanged",{ - [false] call FUNC(adaptViewDistance); -}] call ace_common_fnc_addEventHandler; - -// Set the EH which waits for any of the view distance settings to be changed, so that the effect is show immediately -["SettingChanged",{ - if ((_this select 0 == QGVAR(viewDistanceOnFoot)) || - (_this select 0 == QGVAR(viewDistanceLandVehicle)) || - (_this select 0 == QGVAR(viewDistanceAirVehicle)) || - (_this select 0 == QGVAR(objectViewDistanceCoeff))) then { - - [true] call FUNC(adaptViewDistance); +["SettingsInitialized", { + // if not enabled, then bugger off. + if !(GVAR(enabled) exitWith {}; + + // Force the view distance down to the limit. + if (viewDistance > GVAR(limitViewDistance)) then { + setViewDistance GVAR(limitViewDistance); }; -}] call ace_common_fnc_addEventHandler; + + // Adapt view distance when the player is created or changed according to whether client is on foot or vehicle. + ["playerChanged",{ + [false] call FUNC(adaptViewDistance); + }] call EFUNC(common,addEventHandler); + + // Set the EH which waits for any of the view distance settings to be changed, so that the effect is show immediately + ["SettingChanged",{ + if ((_this select 0 == QGVAR(viewDistanceOnFoot)) || + (_this select 0 == QGVAR(viewDistanceLandVehicle)) || + (_this select 0 == QGVAR(viewDistanceAirVehicle)) || + (_this select 0 == QGVAR(objectViewDistanceCoeff))) then { -// Set the EH which waits for a vehicle change to automatically swap to On Foot/In Land Vehicle/In Air Vehicle -["playerVehicleChanged",{ - [false] call FUNC(adaptViewDistance) -}] call ace_common_fnc_addEventHandler; \ No newline at end of file + [true] call FUNC(adaptViewDistance); + }; + }] call EFUNC(common,addEventHandler); + + // Set the EH which waits for a vehicle change to automatically swap between On Foot/In Land Vehicle/In Air Vehicle + ["playerVehicleChanged",{ + [false] call FUNC(adaptViewDistance) + }] call EFUNC(common,addEventHandler); +}] call EFUNC(common,addEventHandler);] \ No newline at end of file From 8bdf243ab93b0a96f2e38ff8e536ae6c95dde37b Mon Sep 17 00:00:00 2001 From: Simon AM Date: Sun, 28 Jun 2015 10:19:21 +0200 Subject: [PATCH 106/118] Removed extra ] --- addons/viewdistance/XEH_postInit.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/viewdistance/XEH_postInit.sqf b/addons/viewdistance/XEH_postInit.sqf index da4227516c..66619a7589 100644 --- a/addons/viewdistance/XEH_postInit.sqf +++ b/addons/viewdistance/XEH_postInit.sqf @@ -31,4 +31,4 @@ if (!hasInterface) exitWith {}; ["playerVehicleChanged",{ [false] call FUNC(adaptViewDistance) }] call EFUNC(common,addEventHandler); -}] call EFUNC(common,addEventHandler);] \ No newline at end of file +}] call EFUNC(common,addEventHandler); \ No newline at end of file From 9e6ce52fb6c0017c048c97fbf70fa90fbbe59145 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 28 Jun 2015 21:25:01 +0200 Subject: [PATCH 107/118] Added check to addEarplugs if earplugs are used --- addons/hearing/functions/fnc_addEarPlugs.sqf | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/addons/hearing/functions/fnc_addEarPlugs.sqf b/addons/hearing/functions/fnc_addEarPlugs.sqf index 455de07fd9..8e4c5eafef 100644 --- a/addons/hearing/functions/fnc_addEarPlugs.sqf +++ b/addons/hearing/functions/fnc_addEarPlugs.sqf @@ -15,9 +15,12 @@ */ #include "script_component.hpp" -private ["_unit", "_launcher"]; +PARAMS_1(_unit); -_unit = _this select 0; +// Exit if soldier has earplugs already in (persistence scenarios) +if (FUNC(hasEarPlugsIn)) exitWith {}; + +private ["_launcher"]; // add earplugs if the soldier has a rocket launcher _launcher = secondaryWeapon _unit; From 475e4673ebf40856106cf7f52724786668219601 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 28 Jun 2015 22:28:26 +0200 Subject: [PATCH 108/118] Fixed typo --- addons/hearing/functions/fnc_addEarPlugs.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/hearing/functions/fnc_addEarPlugs.sqf b/addons/hearing/functions/fnc_addEarPlugs.sqf index 8e4c5eafef..07d35c3c6d 100644 --- a/addons/hearing/functions/fnc_addEarPlugs.sqf +++ b/addons/hearing/functions/fnc_addEarPlugs.sqf @@ -18,7 +18,7 @@ PARAMS_1(_unit); // Exit if soldier has earplugs already in (persistence scenarios) -if (FUNC(hasEarPlugsIn)) exitWith {}; +if ([_unit] call FUNC(hasEarPlugsIn)) exitWith {}; private ["_launcher"]; From 75e322e6ae25ab4c31dad1fa0d9f5ab4963f8c90 Mon Sep 17 00:00:00 2001 From: naizarak Date: Mon, 29 Jun 2015 12:23:32 -0700 Subject: [PATCH 109/118] Update fnc_addEarPlugs.sqf Do not automatically add earplugs to units if combat deafness is disabled. --- addons/hearing/functions/fnc_addEarPlugs.sqf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/hearing/functions/fnc_addEarPlugs.sqf b/addons/hearing/functions/fnc_addEarPlugs.sqf index 455de07fd9..5938bf3eb9 100644 --- a/addons/hearing/functions/fnc_addEarPlugs.sqf +++ b/addons/hearing/functions/fnc_addEarPlugs.sqf @@ -15,6 +15,8 @@ */ #include "script_component.hpp" +if (!GVAR(enableCombatDeafness)) exitWith {}; + private ["_unit", "_launcher"]; _unit = _this select 0; From 71609c70e667610fb752bf478e716a3d34825451 Mon Sep 17 00:00:00 2001 From: jonpas Date: Mon, 29 Jun 2015 22:21:07 +0200 Subject: [PATCH 110/118] Properly moved PNGs and shortened folder tree of extras/assets/icons, Added Thumbs.db to .gitignore --- .gitignore | 1 + .../Icon_Actions => Icon_Actions_png}/disarm.png | Bin .../icons/{ => Icon_Actions_png}/icon_microDAGR.png | Bin .../Icon_Module_Ambient_Sounds_ca.png | Bin .../Icon_Module_BFTracking_ca.png | Bin .../Icon_Module_CheckPBO_ca.png | Bin .../Icon_Module_Explosives_ca.png | Bin .../Icon_Module_FriendlyFire_ca.png | Bin .../Icon_Module_Hearing_ca.png | Bin .../Icon_Module_Interaction_ca.png | Bin .../Icon_Module_LSD_ca.png | Bin .../Icon_Module_Make_Unit_Surrender_ca.png | Bin .../Icon_Module_Map_ca.png | Bin .../Icon_Module_Medical_ca.png | Bin .../Icon_Module_NameTags_ca.png | Bin .../Icon_Module_Rallypoint_ca.png | Bin .../Icon_Module_Repair_ca.png | Bin .../Icon_Module_Respawn_ca.png | Bin .../Icon_Module_Sitting_ca.png} | Bin .../Icon_Module_SwitchUnits_ca.png | Bin .../Icon_Module_VehicleKey_ca.png | Bin .../Icon_Module_VehicleLock_ca.png | Bin .../Icon_Module_Wind_ca.png | Bin .../Icon_Module_Zeus_Captive_ca.png | Bin .../Icon_Module_Zeus_Settings_ca.png | Bin .../Icon_Module_Zeus_Surrender_ca.png | Bin .../Icon_Module_Zeus_Unconscious_ca.png | Bin .../Icon_Module_microDAGR_ca.png | Bin .../{png => Icon_Module_png}/Icon_Module_mk6_ca.png | Bin 29 files changed, 1 insertion(+) rename extras/assets/icons/{png/Icon_Actions => Icon_Actions_png}/disarm.png (100%) rename extras/assets/icons/{ => Icon_Actions_png}/icon_microDAGR.png (100%) rename extras/assets/icons/{png/Icon_Module => Icon_Module_png}/Icon_Module_Ambient_Sounds_ca.png (100%) rename extras/assets/icons/{png/Icon_Module => Icon_Module_png}/Icon_Module_BFTracking_ca.png (100%) rename extras/assets/icons/{png/Icon_Module => Icon_Module_png}/Icon_Module_CheckPBO_ca.png (100%) rename extras/assets/icons/{png/Icon_Module => Icon_Module_png}/Icon_Module_Explosives_ca.png (100%) rename extras/assets/icons/{png/Icon_Module => Icon_Module_png}/Icon_Module_FriendlyFire_ca.png (100%) rename extras/assets/icons/{png/Icon_Module => Icon_Module_png}/Icon_Module_Hearing_ca.png (100%) rename extras/assets/icons/{png/Icon_Module => Icon_Module_png}/Icon_Module_Interaction_ca.png (100%) rename extras/assets/icons/{png/Icon_Module => Icon_Module_png}/Icon_Module_LSD_ca.png (100%) rename extras/assets/icons/{png/Icon_Module => Icon_Module_png}/Icon_Module_Make_Unit_Surrender_ca.png (100%) rename extras/assets/icons/{png/Icon_Module => Icon_Module_png}/Icon_Module_Map_ca.png (100%) rename extras/assets/icons/{png/Icon_Module => Icon_Module_png}/Icon_Module_Medical_ca.png (100%) rename extras/assets/icons/{png/Icon_Module => Icon_Module_png}/Icon_Module_NameTags_ca.png (100%) rename extras/assets/icons/{png/Icon_Module => Icon_Module_png}/Icon_Module_Rallypoint_ca.png (100%) rename extras/assets/icons/{png/Icon_Module => Icon_Module_png}/Icon_Module_Repair_ca.png (100%) rename extras/assets/icons/{png/Icon_Module => Icon_Module_png}/Icon_Module_Respawn_ca.png (100%) rename extras/assets/icons/{png/Icon_Module/Icons_Module_Sitting_ca.png => Icon_Module_png/Icon_Module_Sitting_ca.png} (100%) rename extras/assets/icons/{png/Icon_Module => Icon_Module_png}/Icon_Module_SwitchUnits_ca.png (100%) rename extras/assets/icons/{png/Icon_Module => Icon_Module_png}/Icon_Module_VehicleKey_ca.png (100%) rename extras/assets/icons/{png/Icon_Module => Icon_Module_png}/Icon_Module_VehicleLock_ca.png (100%) rename extras/assets/icons/{png/Icon_Module => Icon_Module_png}/Icon_Module_Wind_ca.png (100%) rename extras/assets/icons/{png/Icon_Module => Icon_Module_png}/Icon_Module_Zeus_Captive_ca.png (100%) rename extras/assets/icons/{png/Icon_Module => Icon_Module_png}/Icon_Module_Zeus_Settings_ca.png (100%) rename extras/assets/icons/{png/Icon_Module => Icon_Module_png}/Icon_Module_Zeus_Surrender_ca.png (100%) rename extras/assets/icons/{png/Icon_Module => Icon_Module_png}/Icon_Module_Zeus_Unconscious_ca.png (100%) rename extras/assets/icons/{png/Icon_Module => Icon_Module_png}/Icon_Module_microDAGR_ca.png (100%) rename extras/assets/icons/{png => Icon_Module_png}/Icon_Module_mk6_ca.png (100%) diff --git a/.gitignore b/.gitignore index f05646fb8a..f312ddb55e 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ texHeaders.bin *.swp *.swo *.biprivatekey +Thumbs.db diff --git a/extras/assets/icons/png/Icon_Actions/disarm.png b/extras/assets/icons/Icon_Actions_png/disarm.png similarity index 100% rename from extras/assets/icons/png/Icon_Actions/disarm.png rename to extras/assets/icons/Icon_Actions_png/disarm.png diff --git a/extras/assets/icons/icon_microDAGR.png b/extras/assets/icons/Icon_Actions_png/icon_microDAGR.png similarity index 100% rename from extras/assets/icons/icon_microDAGR.png rename to extras/assets/icons/Icon_Actions_png/icon_microDAGR.png diff --git a/extras/assets/icons/png/Icon_Module/Icon_Module_Ambient_Sounds_ca.png b/extras/assets/icons/Icon_Module_png/Icon_Module_Ambient_Sounds_ca.png similarity index 100% rename from extras/assets/icons/png/Icon_Module/Icon_Module_Ambient_Sounds_ca.png rename to extras/assets/icons/Icon_Module_png/Icon_Module_Ambient_Sounds_ca.png diff --git a/extras/assets/icons/png/Icon_Module/Icon_Module_BFTracking_ca.png b/extras/assets/icons/Icon_Module_png/Icon_Module_BFTracking_ca.png similarity index 100% rename from extras/assets/icons/png/Icon_Module/Icon_Module_BFTracking_ca.png rename to extras/assets/icons/Icon_Module_png/Icon_Module_BFTracking_ca.png diff --git a/extras/assets/icons/png/Icon_Module/Icon_Module_CheckPBO_ca.png b/extras/assets/icons/Icon_Module_png/Icon_Module_CheckPBO_ca.png similarity index 100% rename from extras/assets/icons/png/Icon_Module/Icon_Module_CheckPBO_ca.png rename to extras/assets/icons/Icon_Module_png/Icon_Module_CheckPBO_ca.png diff --git a/extras/assets/icons/png/Icon_Module/Icon_Module_Explosives_ca.png b/extras/assets/icons/Icon_Module_png/Icon_Module_Explosives_ca.png similarity index 100% rename from extras/assets/icons/png/Icon_Module/Icon_Module_Explosives_ca.png rename to extras/assets/icons/Icon_Module_png/Icon_Module_Explosives_ca.png diff --git a/extras/assets/icons/png/Icon_Module/Icon_Module_FriendlyFire_ca.png b/extras/assets/icons/Icon_Module_png/Icon_Module_FriendlyFire_ca.png similarity index 100% rename from extras/assets/icons/png/Icon_Module/Icon_Module_FriendlyFire_ca.png rename to extras/assets/icons/Icon_Module_png/Icon_Module_FriendlyFire_ca.png diff --git a/extras/assets/icons/png/Icon_Module/Icon_Module_Hearing_ca.png b/extras/assets/icons/Icon_Module_png/Icon_Module_Hearing_ca.png similarity index 100% rename from extras/assets/icons/png/Icon_Module/Icon_Module_Hearing_ca.png rename to extras/assets/icons/Icon_Module_png/Icon_Module_Hearing_ca.png diff --git a/extras/assets/icons/png/Icon_Module/Icon_Module_Interaction_ca.png b/extras/assets/icons/Icon_Module_png/Icon_Module_Interaction_ca.png similarity index 100% rename from extras/assets/icons/png/Icon_Module/Icon_Module_Interaction_ca.png rename to extras/assets/icons/Icon_Module_png/Icon_Module_Interaction_ca.png diff --git a/extras/assets/icons/png/Icon_Module/Icon_Module_LSD_ca.png b/extras/assets/icons/Icon_Module_png/Icon_Module_LSD_ca.png similarity index 100% rename from extras/assets/icons/png/Icon_Module/Icon_Module_LSD_ca.png rename to extras/assets/icons/Icon_Module_png/Icon_Module_LSD_ca.png diff --git a/extras/assets/icons/png/Icon_Module/Icon_Module_Make_Unit_Surrender_ca.png b/extras/assets/icons/Icon_Module_png/Icon_Module_Make_Unit_Surrender_ca.png similarity index 100% rename from extras/assets/icons/png/Icon_Module/Icon_Module_Make_Unit_Surrender_ca.png rename to extras/assets/icons/Icon_Module_png/Icon_Module_Make_Unit_Surrender_ca.png diff --git a/extras/assets/icons/png/Icon_Module/Icon_Module_Map_ca.png b/extras/assets/icons/Icon_Module_png/Icon_Module_Map_ca.png similarity index 100% rename from extras/assets/icons/png/Icon_Module/Icon_Module_Map_ca.png rename to extras/assets/icons/Icon_Module_png/Icon_Module_Map_ca.png diff --git a/extras/assets/icons/png/Icon_Module/Icon_Module_Medical_ca.png b/extras/assets/icons/Icon_Module_png/Icon_Module_Medical_ca.png similarity index 100% rename from extras/assets/icons/png/Icon_Module/Icon_Module_Medical_ca.png rename to extras/assets/icons/Icon_Module_png/Icon_Module_Medical_ca.png diff --git a/extras/assets/icons/png/Icon_Module/Icon_Module_NameTags_ca.png b/extras/assets/icons/Icon_Module_png/Icon_Module_NameTags_ca.png similarity index 100% rename from extras/assets/icons/png/Icon_Module/Icon_Module_NameTags_ca.png rename to extras/assets/icons/Icon_Module_png/Icon_Module_NameTags_ca.png diff --git a/extras/assets/icons/png/Icon_Module/Icon_Module_Rallypoint_ca.png b/extras/assets/icons/Icon_Module_png/Icon_Module_Rallypoint_ca.png similarity index 100% rename from extras/assets/icons/png/Icon_Module/Icon_Module_Rallypoint_ca.png rename to extras/assets/icons/Icon_Module_png/Icon_Module_Rallypoint_ca.png diff --git a/extras/assets/icons/png/Icon_Module/Icon_Module_Repair_ca.png b/extras/assets/icons/Icon_Module_png/Icon_Module_Repair_ca.png similarity index 100% rename from extras/assets/icons/png/Icon_Module/Icon_Module_Repair_ca.png rename to extras/assets/icons/Icon_Module_png/Icon_Module_Repair_ca.png diff --git a/extras/assets/icons/png/Icon_Module/Icon_Module_Respawn_ca.png b/extras/assets/icons/Icon_Module_png/Icon_Module_Respawn_ca.png similarity index 100% rename from extras/assets/icons/png/Icon_Module/Icon_Module_Respawn_ca.png rename to extras/assets/icons/Icon_Module_png/Icon_Module_Respawn_ca.png diff --git a/extras/assets/icons/png/Icon_Module/Icons_Module_Sitting_ca.png b/extras/assets/icons/Icon_Module_png/Icon_Module_Sitting_ca.png similarity index 100% rename from extras/assets/icons/png/Icon_Module/Icons_Module_Sitting_ca.png rename to extras/assets/icons/Icon_Module_png/Icon_Module_Sitting_ca.png diff --git a/extras/assets/icons/png/Icon_Module/Icon_Module_SwitchUnits_ca.png b/extras/assets/icons/Icon_Module_png/Icon_Module_SwitchUnits_ca.png similarity index 100% rename from extras/assets/icons/png/Icon_Module/Icon_Module_SwitchUnits_ca.png rename to extras/assets/icons/Icon_Module_png/Icon_Module_SwitchUnits_ca.png diff --git a/extras/assets/icons/png/Icon_Module/Icon_Module_VehicleKey_ca.png b/extras/assets/icons/Icon_Module_png/Icon_Module_VehicleKey_ca.png similarity index 100% rename from extras/assets/icons/png/Icon_Module/Icon_Module_VehicleKey_ca.png rename to extras/assets/icons/Icon_Module_png/Icon_Module_VehicleKey_ca.png diff --git a/extras/assets/icons/png/Icon_Module/Icon_Module_VehicleLock_ca.png b/extras/assets/icons/Icon_Module_png/Icon_Module_VehicleLock_ca.png similarity index 100% rename from extras/assets/icons/png/Icon_Module/Icon_Module_VehicleLock_ca.png rename to extras/assets/icons/Icon_Module_png/Icon_Module_VehicleLock_ca.png diff --git a/extras/assets/icons/png/Icon_Module/Icon_Module_Wind_ca.png b/extras/assets/icons/Icon_Module_png/Icon_Module_Wind_ca.png similarity index 100% rename from extras/assets/icons/png/Icon_Module/Icon_Module_Wind_ca.png rename to extras/assets/icons/Icon_Module_png/Icon_Module_Wind_ca.png diff --git a/extras/assets/icons/png/Icon_Module/Icon_Module_Zeus_Captive_ca.png b/extras/assets/icons/Icon_Module_png/Icon_Module_Zeus_Captive_ca.png similarity index 100% rename from extras/assets/icons/png/Icon_Module/Icon_Module_Zeus_Captive_ca.png rename to extras/assets/icons/Icon_Module_png/Icon_Module_Zeus_Captive_ca.png diff --git a/extras/assets/icons/png/Icon_Module/Icon_Module_Zeus_Settings_ca.png b/extras/assets/icons/Icon_Module_png/Icon_Module_Zeus_Settings_ca.png similarity index 100% rename from extras/assets/icons/png/Icon_Module/Icon_Module_Zeus_Settings_ca.png rename to extras/assets/icons/Icon_Module_png/Icon_Module_Zeus_Settings_ca.png diff --git a/extras/assets/icons/png/Icon_Module/Icon_Module_Zeus_Surrender_ca.png b/extras/assets/icons/Icon_Module_png/Icon_Module_Zeus_Surrender_ca.png similarity index 100% rename from extras/assets/icons/png/Icon_Module/Icon_Module_Zeus_Surrender_ca.png rename to extras/assets/icons/Icon_Module_png/Icon_Module_Zeus_Surrender_ca.png diff --git a/extras/assets/icons/png/Icon_Module/Icon_Module_Zeus_Unconscious_ca.png b/extras/assets/icons/Icon_Module_png/Icon_Module_Zeus_Unconscious_ca.png similarity index 100% rename from extras/assets/icons/png/Icon_Module/Icon_Module_Zeus_Unconscious_ca.png rename to extras/assets/icons/Icon_Module_png/Icon_Module_Zeus_Unconscious_ca.png diff --git a/extras/assets/icons/png/Icon_Module/Icon_Module_microDAGR_ca.png b/extras/assets/icons/Icon_Module_png/Icon_Module_microDAGR_ca.png similarity index 100% rename from extras/assets/icons/png/Icon_Module/Icon_Module_microDAGR_ca.png rename to extras/assets/icons/Icon_Module_png/Icon_Module_microDAGR_ca.png diff --git a/extras/assets/icons/png/Icon_Module_mk6_ca.png b/extras/assets/icons/Icon_Module_png/Icon_Module_mk6_ca.png similarity index 100% rename from extras/assets/icons/png/Icon_Module_mk6_ca.png rename to extras/assets/icons/Icon_Module_png/Icon_Module_mk6_ca.png From c58ff8d31d17e66051e0f772a7a9fe7ae507cdbb Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 1 Jul 2015 00:13:55 -0500 Subject: [PATCH 111/118] #1736 - Allow moving map while shake effect active --- addons/map/XEH_postInitClient.sqf | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/addons/map/XEH_postInitClient.sqf b/addons/map/XEH_postInitClient.sqf index a3f377544b..52c904b1ce 100644 --- a/addons/map/XEH_postInitClient.sqf +++ b/addons/map/XEH_postInitClient.sqf @@ -18,7 +18,30 @@ call FUNC(determineZoom); GVAR(lastStillTime) = ACE_time; GVAR(isShaking) = false; + //Allow panning the lastStillPosition while mapShake is active + GVAR(rightMouseButtonLastPos) = []; ((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["Draw", {[] call FUNC(updateMapEffects);}]; + ((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["MouseMoving", { + if (GVAR(isShaking) && {(count GVAR(rightMouseButtonLastPos)) == 2}) then { + private["_lastPos", "_newPos"]; + _lastPos = (_this select 0) ctrlMapScreenToWorld GVAR(rightMouseButtonLastPos); + _newPos = (_this select 0) ctrlMapScreenToWorld (_this select [1,2]); + GVAR(lastStillPosition) set [0, (GVAR(lastStillPosition) select 0) + (_lastPos select 0) - (_newPos select 0)]; + GVAR(lastStillPosition) set [1, (GVAR(lastStillPosition) select 1) + (_lastPos select 1) - (_newPos select 1)]; + GVAR(rightMouseButtonLastPos) = _this select [1,2]; + TRACE_3("Mouse Move",_lastPos,_newPos,GVAR(rightMouseButtonLastPos)); + }; + }]; + ((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["MouseButtonDown", { + if ((_this select 1) == 1) then { + GVAR(rightMouseButtonLastPos) = _this select [2,2]; + }; + }]; + ((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["MouseButtonUp", { + if ((_this select 1) == 1) then { + GVAR(rightMouseButtonLastPos) = []; + }; + }]; }; ["SettingsInitialized", { From 9c2009217b28fb9d20e46f98e57ad70fc1484365 Mon Sep 17 00:00:00 2001 From: Fadi Date: Wed, 1 Jul 2015 00:34:49 -0500 Subject: [PATCH 112/118] Correcting RHS class inheritence for ace_isbelt --- optionals/compat_rhs_afrf3/CfgMagazines.hpp | 8 ++++---- optionals/compat_rhs_usf3/CfgMagazines.hpp | 11 +---------- 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/optionals/compat_rhs_afrf3/CfgMagazines.hpp b/optionals/compat_rhs_afrf3/CfgMagazines.hpp index 6acd70844a..0e19056ae0 100644 --- a/optionals/compat_rhs_afrf3/CfgMagazines.hpp +++ b/optionals/compat_rhs_afrf3/CfgMagazines.hpp @@ -5,13 +5,13 @@ class cfgMagazines { class rhs_100Rnd_762x54mmR: rhs_30Rnd_545x39_AK { ace_isbelt = 1; }; - class rhs_100Rnd_762x54mmR_green: rhs_100Rnd_762x54mmR { + class rhs_mag_127x108mm_50: VehicleMagazine { ace_isbelt = 1; }; - class rhs_mag_127x108mm_50 : VehicleMagazine { - ace_isbelt = 1; + class rhs_mag_127x108mm_150: rhs_mag_127x108mm_50 { + ace_isbelt = 0; }; - class rhs_mag_127x108mm_150 : rhs_mag_127x108mm_50 { + class rhs_mag_127x108mm_1470 : rhs_mag_127x108mm_50 { ace_isbelt = 0; }; }; \ No newline at end of file diff --git a/optionals/compat_rhs_usf3/CfgMagazines.hpp b/optionals/compat_rhs_usf3/CfgMagazines.hpp index f067cd6eee..e067d1f293 100644 --- a/optionals/compat_rhs_usf3/CfgMagazines.hpp +++ b/optionals/compat_rhs_usf3/CfgMagazines.hpp @@ -10,16 +10,7 @@ class cfgMagazines { class rhsusf_100Rnd_556x45_M200_soft_pouch: rhs_mag_30Rnd_556x45_M200_Stanag { ace_isbelt = 1; }; - class rhsusf_200Rnd_556x45_soft_pouch: rhsusf_100Rnd_556x45_soft_pouch { - ace_isbelt = 1; - }; - class rhsusf_100Rnd_762x51: CA_Magazine { - ace_isbelt = 1; - }; - class rhsusf_100Rnd_762x51_m80a1epr: rhsusf_100Rnd_762x51 { - ace_isbelt = 1; - }; - class rhsusf_100Rnd_762x51_m993: rhsusf_100Rnd_762x51 { + class rhsusf_50Rnd_762x51: CA_Magazine { ace_isbelt = 1; }; class rhs_mag_100rnd_127x99_mag: VehicleMagazine { From acc8a08d529ba88ff62ea89ea288f586a9098d05 Mon Sep 17 00:00:00 2001 From: Fadi Date: Wed, 1 Jul 2015 00:36:46 -0500 Subject: [PATCH 113/118] Cleaning up unnessecary spaces --- optionals/compat_rhs_afrf3/CfgMagazines.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/optionals/compat_rhs_afrf3/CfgMagazines.hpp b/optionals/compat_rhs_afrf3/CfgMagazines.hpp index 0e19056ae0..92444a380b 100644 --- a/optionals/compat_rhs_afrf3/CfgMagazines.hpp +++ b/optionals/compat_rhs_afrf3/CfgMagazines.hpp @@ -8,7 +8,7 @@ class cfgMagazines { class rhs_mag_127x108mm_50: VehicleMagazine { ace_isbelt = 1; }; - class rhs_mag_127x108mm_150: rhs_mag_127x108mm_50 { + class rhs_mag_127x108mm_150: rhs_mag_127x108mm_50 { ace_isbelt = 0; }; class rhs_mag_127x108mm_1470 : rhs_mag_127x108mm_50 { From 7eb26c8710b4d3469b57bf1020666b1c9c6b7866 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 1 Jul 2015 01:27:06 -0500 Subject: [PATCH 114/118] #1699 - Rally point object names --- addons/respawn/CfgAddons.hpp | 2 +- addons/respawn/config.cpp | 2 +- addons/respawn/functions/fnc_moveRallypoint.sqf | 6 ++++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/addons/respawn/CfgAddons.hpp b/addons/respawn/CfgAddons.hpp index 2793ac09da..111613615e 100644 --- a/addons/respawn/CfgAddons.hpp +++ b/addons/respawn/CfgAddons.hpp @@ -1,5 +1,5 @@ class CfgAddons { class GVAR(Rallypoints) { - list[] = { "ACE_Rallypoint_West", "ACE_Rallypoint_East", "ACE_Rallypoint_Independent", "ACE_RallypointExit_West", "ACE_RallypointExit_East", "ACE_RallypointExit_Independent" }; + list[] = {"ACE_Rallypoint_West", "ACE_Rallypoint_East", "ACE_Rallypoint_Independent", "ACE_Rallypoint_West_Base", "ACE_Rallypoint_East_Base", "ACE_Rallypoint_Independent_Base"}; }; }; diff --git a/addons/respawn/config.cpp b/addons/respawn/config.cpp index daed5e2ab0..4a23d1f650 100644 --- a/addons/respawn/config.cpp +++ b/addons/respawn/config.cpp @@ -3,7 +3,7 @@ class CfgPatches { class ADDON { units[] = {}; - weapons[] = { "ACE_Rallypoint_West", "ACE_Rallypoint_East", "ACE_Rallypoint_Independent", "ACE_RallypointExit_West", "ACE_RallypointExit_East", "ACE_RallypointExit_Independent" }; + weapons[] = {"ACE_Rallypoint_West", "ACE_Rallypoint_East", "ACE_Rallypoint_Independent", "ACE_Rallypoint_West_Base", "ACE_Rallypoint_East_Base", "ACE_Rallypoint_Independent_Base"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = { "ace_common" }; author[] = { "bux578", "commy2" }; diff --git a/addons/respawn/functions/fnc_moveRallypoint.sqf b/addons/respawn/functions/fnc_moveRallypoint.sqf index 5a0472cf5b..d512c23886 100644 --- a/addons/respawn/functions/fnc_moveRallypoint.sqf +++ b/addons/respawn/functions/fnc_moveRallypoint.sqf @@ -26,10 +26,12 @@ private ["_rallypoint", "_position"]; _rallypoint = [ objNull, missionNamespace getVariable ["ACE_Rallypoint_West", objNull], - missionNamespace getVariable ["ACE_RallypointExit_East", objNull], - missionNamespace getVariable ["ACE_RallypointExit_Independent", objNull] + missionNamespace getVariable ["ACE_Rallypoint_East", objNull], + missionNamespace getVariable ["ACE_Rallypoint_Independent", objNull] ] select ([west, east, independent] find _side) + 1; +TRACE_3("moving rally",_unit, _rallypoint, (typeOf _rallypoint)); + if (isNull _rallypoint) exitWith {}; _position = getPosATL _unit; From 57f88fe77a3053ddf1c78c1519efeafba75f0a46 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 1 Jul 2015 01:53:15 -0500 Subject: [PATCH 115/118] Ace_modules - Pass synced objects to functions --- addons/modules/XEH_postInit.sqf | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/addons/modules/XEH_postInit.sqf b/addons/modules/XEH_postInit.sqf index f7b652ab44..62d16f42ce 100644 --- a/addons/modules/XEH_postInit.sqf +++ b/addons/modules/XEH_postInit.sqf @@ -26,12 +26,8 @@ _function = missionNamespace getvariable _function; }; - if (_isGlobal) then { - [_logic, [], true] call _function; - } else { - if (isServer) then { - [_logic, [], true] call _function; - }; + if (_isGlobal || isServer) then { + [_logic, (synchronizedObjects _logic), true] call _function; }; if !(_isPersistent) then { From 319e50a9cc20214fe0911e040effd2ab5aff3c82 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 1 Jul 2015 12:39:49 -0500 Subject: [PATCH 116/118] Viewdistance - Fix `Error Missing )` --- addons/viewdistance/XEH_postInit.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/viewdistance/XEH_postInit.sqf b/addons/viewdistance/XEH_postInit.sqf index 66619a7589..865e5527e5 100644 --- a/addons/viewdistance/XEH_postInit.sqf +++ b/addons/viewdistance/XEH_postInit.sqf @@ -4,7 +4,7 @@ if (!hasInterface) exitWith {}; ["SettingsInitialized", { // if not enabled, then bugger off. - if !(GVAR(enabled) exitWith {}; + if !(GVAR(enabled)) exitWith {}; // Force the view distance down to the limit. if (viewDistance > GVAR(limitViewDistance)) then { From d1187ad82ebbf3b71942b52262d04b7fe7b8eef8 Mon Sep 17 00:00:00 2001 From: Josuan Albin Date: Tue, 30 Jun 2015 16:04:00 +0200 Subject: [PATCH 117/118] Documentation pass 8 - Finished: MicroDAGR doc, note that the images can't be viewed properly on GitHub. - Coding guidelines are more readable now, added the STRING family of macros to it. - How to enable dragging / carrying added to dragging / carrying framework with a BIG disclaimer that the functions are not public and may change. - Shortcut updated to fit the convention established in the shortcut page. --- .../development/coding-guidelines.md | 137 ++++++++++------- documentation/feature/advanced_ballistics.md | 2 +- documentation/feature/aircraft.md | 2 +- documentation/feature/attach.md | 4 +- documentation/feature/captives.md | 2 +- documentation/feature/concertina_wire.md | 2 +- documentation/feature/disarming.md | 2 +- documentation/feature/dragging.md | 4 +- documentation/feature/explosives.md | 6 +- documentation/feature/fcs.md | 6 +- documentation/feature/hearing.md | 2 +- documentation/feature/huntIR.md | 4 +- documentation/feature/javelin.md | 4 +- documentation/feature/logistics_uavbattery.md | 2 +- documentation/feature/logistics_wirecutter.md | 2 +- documentation/feature/magazinerepack.md | 2 +- documentation/feature/maptools.md | 4 +- documentation/feature/microdagr.md | 142 ++++++++++++++++-- documentation/feature/missileguidance.md | 4 +- documentation/feature/mk6mortar.md | 4 +- documentation/feature/modules.md | 14 ++ documentation/feature/overheating.md | 4 +- documentation/feature/rangecard.md | 2 +- documentation/feature/reload.md | 2 +- documentation/feature/reloadlaunchers.md | 2 +- documentation/feature/respawn.md | 2 +- documentation/feature/safemode.md | 4 +- documentation/feature/sandbags.md | 2 +- documentation/feature/scopes.md | 16 +- documentation/feature/spotting_scope.md | 2 +- documentation/feature/tacticallader.md | 4 +- documentation/feature/tripod.md | 6 +- documentation/feature/vector.md | 22 +-- documentation/feature/vehicles.md | 4 + documentation/framework/carry-drag.md | 68 +++++++++ 35 files changed, 365 insertions(+), 126 deletions(-) create mode 100644 documentation/feature/modules.md diff --git a/documentation/development/coding-guidelines.md b/documentation/development/coding-guidelines.md index 89f0d91342..1ab53046ec 100644 --- a/documentation/development/coding-guidelines.md +++ b/documentation/development/coding-guidelines.md @@ -107,12 +107,12 @@ Every function should have a header of the following format: * Arguments: * 0: The first argument * 1: The second argument - * + * * Return Value: * The return value * * Example: - * _bool = ["something", player] call ace_common_fnc_imanexample + * ["something", player] call ace_common_fnc_imanexample * * Public: [Yes/No] */ @@ -124,33 +124,39 @@ Every function should have a header of the following format: ### 4.1 Module/PBO specific Macro Usage The family of `GVAR` macro's define global variable strings or constants for use within a module. Please use these to make sure we follow naming conventions across all modules and also prevent duplicate/overwriting between variables in different modules. The macro family expands as follows, for the example of the module 'balls': -* `GVAR(face)` is `ace_balls_face` -* `QGVAR(face)` is `"ace_balls_face"` -* `EGVAR(balls,face)` is `ace_balls_face` -* `EGVAR(leg,face)` is `ace_leg_face` -* `QEGVAR(leg,face)` is `"ace_leg_face"` - + +| Macros | is the same as | +| -------|---------| +| `GVAR(face)` | ace_balls_face | +|`QGVAR(face)` | ace_balls_face | +| `EGVAR(balls,face)` | ace_balls_face | +| `EGVAR(leg,face)` | ace_leg_face | +| `QEGVAR(leg,face)` | ace_leg_face | There also exists the FUNC family of Macros: -* `FUNC(face)` is `ace_balls_fnc_face` or the call trace wrapper for that function. -* `EFUNC(balls,face)` is `ace_balls_fnc_face` or the call trace wrapper for that function. -* `EFUNC(leg,face)` is `ace_leg_fnc_face` or the call trace wrapper for that function. -* `DFUNC(face)` is `ace_balls_fnc_face` and will ALWAYS be the function global variable. -* `DEFUNC(leg,face)` is `ace_leg_fnc_face` and will ALWAYS be the function global variable. -* `QFUNC(face)` is `"ace_balls_fnc_face"` -* `QEFUNC(leg,face)` is `"ace_leg_fnc_face"` +| Macros | is the same as | +| -------|---------| +|`FUNC(face)` | ace_balls_fnc_face or the call trace wrapper for that function.| +|`EFUNC(balls,face)` | ace_balls_fnc_face or the call trace wrapper for that function.| +|`EFUNC(leg,face) `| ace_leg_fnc_face or the call trace wrapper for that function.| +|`DFUNC(face)` | ace_balls_fnc_face and will ALWAYS be the function global variable.| +|`DEFUNC(leg,face)` | ace_leg_fnc_face and will ALWAYS be the function global variable.| +|`QFUNC(face)` | ace_balls_fnc_face | +|`QEFUNC(leg,face)` |ace_leg_fnc_face| The `FUNC` and `EFUNC` macros should NOT be used inside `QUOTE` macros if the intention is to get the function name or assumed to be the function variable due to call tracing (see below). If you need to 100% always be sure that you are getting the function name or variable use the `DFUNC` or `DEFUNC` macros. For example `QUOTE(FUNC(face)) == "ace_balls_fnc_face"` would be an illegal use of `FUNC` inside `QUOTE`. Using `FUNC` or `EFUNC` inside a `QUOTE` macro is fine if the intention is for it to be executed as a function. -#### 4.1.1 FUNC Macros, Call Tracing, and Non-ACE/Anonymous Functions +#### 4.1.1 FUNC Macros, Call Tracing, and Non-ACE3 /Anonymous Functions -ACE implements a basic call tracing system that can dump the call stack on errors or wherever you want. To do this the `FUNC` macros in debug mode will expand out to include metadata about the call including line numbers and files. This functionality is automatic with the use of calls via `FUNC` and `EFUNC`, but any calls to other functions need to use the following macros: +ACE3 implements a basic call tracing system that can dump the call stack on errors or wherever you want. To do this the `FUNC` macros in debug mode will expand out to include metadata about the call including line numbers and files. This functionality is automatic with the use of calls via `FUNC` and `EFUNC`, but any calls to other functions need to use the following macros: -* `CALLSTACK(functionName)` example: `[] call CALLSTACK(cba_fnc_someFunction)` -* `CALLSTACK_NAMED(function,functionName)` example: `[] call CALLSTACK_NAMED(_anonymousFunction,'My anonymous function!')` +| Macro | example | +| -------|---------| +|`CALLSTACK(functionName)` | `[] call CALLSTACK(cba_fnc_someFunction)` | +|`CALLSTACK_NAMED(function,functionName)` | `[] call CALLSTACK_NAMED(_anonymousFunction,'My anonymous function!')`| These macros will call these functions with the appropriate wrappers and enable call logging into them (but to no further calls inside obviously). @@ -162,44 +168,64 @@ These macros will call these functions with the appropriate wrappers and enable #### 4.2.1 setVariable, getVariable family macros -* `GETVAR(player,MyVarName,false)` - `player getVariable ["MyVarName", false]` -* `GETMVAR(MyVarName,objNull)` - `missionNamespace getVariable ["MyVarName", objNull]` -* `GETUVAR(MyVarName,displayNull)` - `uiNamespace getVariable ["MyVarName", displayNull]` -* `SETVAR(player,MyVarName,127)` - `player setVariable ["MyVarName", 127]` -* `SETPVAR(player,MyVarName,127)` - `player setVariable ["MyVarName", 127, true]` -* `SETMVAR(MyVarName,player)` - `missionNamespace setVariable ["MyVarName", player]` -* `SETUVAR(MyVarName,_control)` - `uiNamespace setVariable ["MyVarName", _control]` +| Macro | is the same as | +| -------|---------| +|`GETVAR(player,MyVarName,false)` | player getVariable ["MyVarName", false]| +|`GETMVAR(MyVarName,objNull)` | missionNamespace getVariable ["MyVarName", objNull]| +|`GETUVAR(MyVarName,displayNull)` | uiNamespace getVariable ["MyVarName", displayNull]| +|`SETVAR(player,MyVarName,127)` | player setVariable ["MyVarName", 127] SETPVAR(player,MyVarName,127) player setVariable ["MyVarName", 127, true] | +|`SETMVAR(MyVarName,player)` | missionNamespace setVariable ["MyVarName", player] | +|`SETUVAR(MyVarName,_control)` | uiNamespace setVariable ["MyVarName", _control] | + +#### 4.2.2 STRING family macros + +Note that you need the strings in module stringtable.xml in the correct format +`STR_ACE__`
+Example:
+`STR_Balls_Banana`
+ +Script strings: + +| Macro | is the same as | +| -------|---------| +| `LSTRING(banana)` | "STR_ACE_balls_banana"| +| `ELSTRING(balls,banana)` | "STR_ACE_balls_banana"| + + +Config Strings (require `$` as first character): + +| Macro | is the same as | +| -------|---------| +| `CSTRING(banana)` | "$STR_ACE_balls_banana" | +| `ECSTRING(balls,banana)` | "$STR_ACE_balls_banana" | ## 5. Event Handlers -Event handlers in ACE are implemented through our event system. They should be used to trigger or allow triggering of specific functionality. +Event handlers in ACE3 are implemented through our event system. They should be used to trigger or allow triggering of specific functionality. The commands are listed below. -* `[eventName, eventCodeBlock] call ace_common_fnc_addEventHandler` adds an event handler with the event name and returns the event handler id. -* `[eventName, args] call ace_common_fnc_globalEvent` calls an event with the listed args on all machines, the local machine, and the server. -* `[eventName, args] call ace_common_fnc_serverEvent` calls an event just on the server computer (dedicated or self-hosted). -* `[eventName, targetObject(s), args] call ace_common_fnc_targetEvent` calls an event just on the targeted object or list of objects. -* `[eventName, args] call ace_common_fnc_localEvent` calls an event just on the local machine, useful for inter-module events. +| Even Handler | use | +| -------|---------| +|`[eventName, eventCodeBlock] call ace_common_fnc_addEventHandler` | adds an event handler with the event name and returns the event handler id.| +| `[eventName, args] call ace_common_fnc_globalEvent` | calls an event with the listed args on all machines, the local machine, and the server. | +|`[eventName, args] call ace_common_fnc_serverEvent` | calls an event just on the server computer (dedicated or self-hosted).| +| `[eventName, targetObject(s), args] call ace_common_fnc_targetEvent` | calls an event just on the targeted object or list of objects.| +|`[eventName, args] call ace_common_fnc_localEvent` | calls an event just on the local machine, useful for inter-module events.| Events can be removed or cleared with the following commands. -* `[eventName, eventHandlerId] call ace_common_fnc_removeEventHandler` will remove a specific event handler of the event name, using the ID returned from `ace_common_fnc_addEventHandler`. -* `[eventName] call ace_common_fnc_removeAllEventHandlers` will remove all event handlers for that type of event. +| Even Handler | use | +| -------|---------| +|`[eventName, eventHandlerId] call ace_common_fnc_removeEventHandler` | will remove a specific event handler of the event name, using the ID returned from `ace_common_fnc_addEventHandler`.| +|`[eventName] call ace_common_fnc_removeAllEventHandlers` | will remove all event handlers for that type of event.| -More information on the [ACE Events System](https://github.com/KoffeinFlummi/ACE3/wiki/ACE-Events-System) page. +More information on the [ACE3 Events System](https://github.com/KoffeinFlummi/ACE3/wiki/ACE-Events-System) page. ## 6. Hashes -Hashes are a variable type that store key value pairs. They are not implemented natively in SQF, so there are a number of macros and functions for their usage in ACE. If you are unfamiliar with the idea, they are similar in function to `setVariable`/`getVariable` but do not require an object to use. +Hashes are a variable type that store key value pairs. They are not implemented natively in SQF, so there are a number of macros and functions for their usage in ACE3. If you are unfamiliar with the idea, they are similar in function to `setVariable`/`getVariable` but do not require an object to use. The following example is a simple usage using our macros which will be explained further below. @@ -217,11 +243,13 @@ if(HASH_HASKEY(_hash, "key")) then { A description of the above macros is below. -* `HASHCREATE` is used to create an empty hash. -* `HASH_SET(hash, key, val)` will set the hash key to that value, a key can be anything, even objects. -* `HASH_GET(hash, key)` will return the value of that key (or nil if it doesn't exist). -* `HASH_HASKEY(hash, key)` will return true/false if that key exists in the hash. -* `HASH_REM(hash, key)` will remove that hash key. +| Macro | use | +| -------|---------| +|`HASHCREATE` | used to create an empty hash.| +| `HASH_SET(hash, key, val)` | will set the hash key to that value, a key can be anything, even objects. | +|`HASH_GET(hash, key)` | will return the value of that key (or nil if it doesn't exist). | +| `HASH_HASKEY(hash, key)` | will return true/false if that key exists in the hash. | +| `HASH_REM(hash, key)` | will remove that hash key.| ### 6.1 Hashlists @@ -256,11 +284,14 @@ HASH_SET(_anotherHash, "anotherKey", "another value"); As you can see above working with hashlists are fairly simple, a more in depth explanation of the macros is below. -* `HASHLIST_CREATELIST(keys)` creates a new hashlist with the default keys, pass [] for no default keys. -* `HASHLIST_CREATEHASH(hashlist)` returns a blank hash template from a hashlist. -* `HASHLIST_PUSH(hashList, hash)` pushes a new hash onto the end of the list. -* `HASHLIST_SELECT(hashlist, index)` returns the hash at that index in the list. -* `HASHLIST_SET(hashlist, index, hash)` sets a specific index to that hash. + +| Macro | use | +| -------|---------| +|`HASHLIST_CREATELIST(keys)` | creates a new hashlist with the default keys, pass [] for no default keys.| +|`HASHLIST_CREATEHASH(hashlist)` | returns a blank hash template from a hashlist.| +|`HASHLIST_PUSH(hashList, hash)` | pushes a new hash onto the end of the list.| +|`HASHLIST_SELECT(hashlist, index)` | returns the hash at that index in the list. | +|`HASHLIST_SET(hashlist, index, hash)` | sets a specific index to that hash.| #### 6.1.1 A note on pass by reference and hashes diff --git a/documentation/feature/advanced_ballistics.md b/documentation/feature/advanced_ballistics.md index 70123a0320..1f38a9d18e 100644 --- a/documentation/feature/advanced_ballistics.md +++ b/documentation/feature/advanced_ballistics.md @@ -25,7 +25,7 @@ The Advanced Ballistics module improves internal and external ballistics. ## 2. Usage ### 2.1 Protractor -Press Ctrl+Shift+K while using a compatible weapon to toggle the protractor. The red line indicates the current inclination angle in degrees. The protractor will disappear if you lower or holster your weapon. +Press Ctrl+⇧ Shift+K while using a compatible weapon to toggle the protractor. The red line indicates the current inclination angle in degrees. The protractor will disappear if you lower or holster your weapon. ## 3. Dependencies `ace_ballistics`, `ace_weather`, `ace_modules` diff --git a/documentation/feature/aircraft.md b/documentation/feature/aircraft.md index 25f4e52cad..ead653641d 100644 --- a/documentation/feature/aircraft.md +++ b/documentation/feature/aircraft.md @@ -35,7 +35,7 @@ Adds a HUD to the AH-9 based on the Comanche's HUD. ## 2. Usage ### 2.1 Switching flare modes -Press CTRL+C to switch between flare firing modes (Arma 3 default key bind `countermeasure mode`) +Press Ctrl+C to switch between flare firing modes (Arma 3 default key bind `countermeasure mode`) ## 3. Dependencies diff --git a/documentation/feature/attach.md b/documentation/feature/attach.md index a248f8657f..fcf7f2ef77 100644 --- a/documentation/feature/attach.md +++ b/documentation/feature/attach.md @@ -17,14 +17,14 @@ Adds an attachable IR strobe, which is only visible using night vision devices a ## 2. Usage ### 2.1 Attaching to yourself -- Use Self Interact CTRL+⊞ Win (ACE3 default). +- Use Self Interact Ctrl+⊞ Win (ACE3 default). - Select `Equipment`. - Select `Attach item`. - Select which item you want to attach. - Repeat the process to detach. ### 2.2 Attaching to a vehicle -- Interact with the vehicle ⊞ Win (ACE3 default). +- Interact with the vehicle ⊞ Win (ACE3 default). - Select `Attach item`. - Select your item and follow the instructions on the screen. - Repeat the process to detach. diff --git a/documentation/feature/captives.md b/documentation/feature/captives.md index 33b7ec3739..6ff4623016 100644 --- a/documentation/feature/captives.md +++ b/documentation/feature/captives.md @@ -31,7 +31,7 @@ Allows players to surrender. It renders the unit unable to move and with the han ### 2.2 Escorting a captive - Interact with the captive ⊞ win. - Select the `Escort prisoner` option. -- To stop escorting, use the mousewheel and select `Release` or use Self Interaction CTRL+⊞ win and select `Release`. +- To stop escorting, use the mousewheel and select `Release` or use Self Interaction Ctrl+⊞ win and select `Release`. ### 2.3 Loading and unloading a captive into/from a vehicle - Escort the captive. diff --git a/documentation/feature/concertina_wire.md b/documentation/feature/concertina_wire.md index 0c0cdb3ab6..8fd8a58eb6 100644 --- a/documentation/feature/concertina_wire.md +++ b/documentation/feature/concertina_wire.md @@ -13,7 +13,7 @@ A concertina wire is a type of barbed wire formed in large coils that can be exp ## 2. Usage ### 2.1 Deploying the concertina wire -- Approach the concertina coil and select ⊞ Win (ACE3 default) +- Approach the concertina coil and select ⊞ Win (ACE3 default) - Select `Deploy concertina wire`. - Follow the instructions on screen. diff --git a/documentation/feature/disarming.md b/documentation/feature/disarming.md index 02b8dc2163..f635b94901 100644 --- a/documentation/feature/disarming.md +++ b/documentation/feature/disarming.md @@ -14,7 +14,7 @@ You can search the inventory and disarm captured or unconscious units. ## 2. Usage ### 2.1 Searching and disarming -- Interact with the captured or unconscious unit ⊞ Win (ACE3 default key bind `Interaction Key`). +- Interact with the captured or unconscious unit ⊞ Win (ACE3 default key bind `Interaction Key`). - Select `Open inventory`. - Drag & Drop the items you wish to remove from the unit. diff --git a/documentation/feature/dragging.md b/documentation/feature/dragging.md index e3fdf0b6fe..d23935034d 100644 --- a/documentation/feature/dragging.md +++ b/documentation/feature/dragging.md @@ -14,9 +14,9 @@ This adds the option to drag or carry units or objects. ### 2.1 Dragging / Carrying units and objects - You can only drag or carry an unconscious unit. -- Interact with the unit or object ⊞ Win (ACE3 default key bind `Interact Key`). +- Interact with the unit or object ⊞ Win (ACE3 default key bind `Interact Key`). - Select `Drag` or `Carry`. -- To release, use the mouse wheel and select `Release` or use Self Interaction CTRL+⊞ Win and select `Release`. +- To release, use the mouse wheel and select `Release` or use Self Interaction Ctrl+⊞ Win and select `Release`. ## 3. Dependencies diff --git a/documentation/feature/explosives.md b/documentation/feature/explosives.md index a88b9ae1b4..071252ffc0 100644 --- a/documentation/feature/explosives.md +++ b/documentation/feature/explosives.md @@ -20,18 +20,18 @@ Enables attaching explosives to vehicles. ## 2. Usage ### 2.1 Placing explosives -- Use self interaction CTRL+⊞ Win (ACE3 default key bind `Self Interaction Key`). +- Use self interaction Ctrl+⊞ Win (ACE3 default key bind `Self Interaction Key`). - Select `Explosives`. - Choose your explosive type and follow the instructions on the screen. ### 2.2 Arming and detonating explosives -- Interact with the explosive ⊞ Win (ACE3 default key bind `Interact Key`). +- Interact with the explosive ⊞ Win (ACE3 default key bind `Interact Key`). - Choose the arming method. - For clackers use Self Interaction `Explosives` → `Detonate` and choose the corresponding Firing Device. ### 2.3 Defusing explosives - A `Defusal Kit` is required. -- Interact with the explosive ⊞ Win. +- Interact with the explosive ⊞ Win. - Select `Disarm`. - You are safe to pick it up after the action has completed. diff --git a/documentation/feature/fcs.md b/documentation/feature/fcs.md index b66cad8522..713fba4dcf 100644 --- a/documentation/feature/fcs.md +++ b/documentation/feature/fcs.md @@ -21,13 +21,13 @@ Anti air cannons can now use airburst ammunition. It will explode on the FCS' ze ### 2.1 Engaging moving targets - Place the crosshair on the enemy vehicle. -- Press and hold TAB (ACE 3 default key bind `Lock Target [Hold]`) and follow the target for about 2 seconds. -- Release TAB. +- Press and hold Tab ↹ (ACE 3 default key bind `Lock Target [Hold]`) and follow the target for about 2 seconds. +- Release Tab ↹. - The optic is now adjusted sideways to ensure a hit. ### 2.2 Ranging stationary targets - Place the crosshair on the object to range. -- Tap TAB +- Tap Tab ↹ - The optic is now adjusted. *NOTE: GBU guidance is **DISABLED** as of ACE3 3.0.1* diff --git a/documentation/feature/hearing.md b/documentation/feature/hearing.md index 5389f0c3d5..5c3c7e3960 100644 --- a/documentation/feature/hearing.md +++ b/documentation/feature/hearing.md @@ -19,7 +19,7 @@ missile launchers will be equipped with those, but remember to put them in. ### 2.1 Equipping earplugs - For this you need the `Earplugs` item. -- Press the self interaction key CTRL + ⊞ Win (ACE3 default key bind `Self Interaction Key`). +- Press the self interaction key Ctrl + ⊞ Win (ACE3 default key bind `Self Interaction Key`). - Select `Equipment`. - Select `Earplugs in`. - Same method to remove them but the option is `Earplugs out`. diff --git a/documentation/feature/huntIR.md b/documentation/feature/huntIR.md index e4e690dac3..205b812e33 100644 --- a/documentation/feature/huntIR.md +++ b/documentation/feature/huntIR.md @@ -17,10 +17,10 @@ NOTE: the HuntIR round doesn't work with modded weapons without a compatibility - To be able to connect to the IR CMOS camera you'll need a `HuntIR monitor`. - Fire the HuntIR round as high as possible over the area you want to observe. - Open the `HuntIR monitor`. - - To open the `HuntIR monitor` self interact CTRL + ⊞ Win (ACE3 default) + - To open the `HuntIR monitor` self interact Ctrl + ⊞ Win (ACE3 default) - Select `Equipment`. - Select `Activate HuntIR monitor`. -- You now have control of the IR CMOS camera to close the monitor press ESC or ⊞ Win +- You now have control of the IR CMOS camera to close the monitor press ESC or ⊞ Win ### 2.2 IR CMOS camera controls diff --git a/documentation/feature/javelin.md b/documentation/feature/javelin.md index 8cf59c0a08..a4187a0b82 100644 --- a/documentation/feature/javelin.md +++ b/documentation/feature/javelin.md @@ -20,12 +20,12 @@ The Titan / Javelin now posses the ability to be used in top down attack or dire - For this feature you need to have a compatible launcher. - Fully zoom in with the launcher. - Switch to thermals N (Arma 3 default key bind `Night vision`). -- While keeping your aim steadily on target press and hold TAB (ACE3 default key bind `Lock Target [Hold]`). +- While keeping your aim steadily on target press and hold Tab ↹ (ACE3 default key bind `Lock Target [Hold]`). - When the sound changes and a cross appears on the screen the target is locked and you're able to fire. ### 2.2 Switching fire mode - For this feature you need to have a compatible launcher. -- When aiming with your launcher press CTRL + TAB. +- When aiming with your launcher press Ctrl + Tab ↹. - On the right side of the screen (for most launchers) you should see that `TOP`is now illumiated in green which means that your missile will be fired in top down mode. ## 3. Dependencies diff --git a/documentation/feature/logistics_uavbattery.md b/documentation/feature/logistics_uavbattery.md index 2920d4b7a4..367d161340 100644 --- a/documentation/feature/logistics_uavbattery.md +++ b/documentation/feature/logistics_uavbattery.md @@ -15,7 +15,7 @@ Adds an item `ACE_UAVBattery` that allows refuelling / recharging of the "Darter ### 2.1 Recharging the darter - For this you need a `UAV battery` and the UAV needs to be a quad-copter. -- Interact with the UAV ⊞ Win (ACE3 default key bind `Interact Key`) +- Interact with the UAV ⊞ Win (ACE3 default key bind `Interact Key`) - Select `Recharge` ## 3. Dependencies diff --git a/documentation/feature/logistics_wirecutter.md b/documentation/feature/logistics_wirecutter.md index 077e3b48cb..71eb6ac62f 100644 --- a/documentation/feature/logistics_wirecutter.md +++ b/documentation/feature/logistics_wirecutter.md @@ -16,7 +16,7 @@ Adds an item `ACE_wirecutter` that allows cutting of fences in Arma 3 and AllInA ### 2.1 Using the wirecutter - For this you need a `Wirecutter`. - Approach the fence you want to cut. -- Press the interaction key ⊞ Win (ACE3 default key bind `Interaction Key`). +- Press the interaction key ⊞ Win (ACE3 default key bind `Interaction Key`). - Find the interaction point and select `Cut Fence` (the only option). ## 3. Dependencies diff --git a/documentation/feature/magazinerepack.md b/documentation/feature/magazinerepack.md index 191f12d2b7..304f3e7f96 100644 --- a/documentation/feature/magazinerepack.md +++ b/documentation/feature/magazinerepack.md @@ -15,7 +15,7 @@ Adds the ability to repack magazines of the same type. ### 2.1 Repacking - For this you need multiple half empty mags of the same type. -- Press the self interaction button CTRL + ⊞ Win (ACE3 default key bind `Self Interaction Key`). +- Press the self interaction button Ctrl + ⊞ Win (ACE3 default key bind `Self Interaction Key`). - Select `Repack magazines`. - Select the type of magazines you want to repack. diff --git a/documentation/feature/maptools.md b/documentation/feature/maptools.md index a67412343f..1618721c82 100644 --- a/documentation/feature/maptools.md +++ b/documentation/feature/maptools.md @@ -22,10 +22,10 @@ If you are equipped with a vanilla GPS it will be shown on the map. (You don't n ### 2.1 Using map tools - For this you need to have `Map Tools`. - Open the map M (Arma 3 default key bind `Map`). -- Press the self interaction key CTRL + ⊞ Win (ACE3 default key bind `Self Interaction Key`). +- Press the self interaction key Ctrl + ⊞ Win (ACE3 default key bind `Self Interaction Key`). - Select `Map tools`. - Select the type of tools you want to use. -- Note that you can drag the Roamer (map tool) around with LMB and rotate it with CTRL + LMB. +- Note that you can drag the Roamer (map tool) around with LMB and rotate it with Ctrl + LMB. ### 2.2 Drawing lines - To draw lines `Map Tools` are not required. diff --git a/documentation/feature/microdagr.md b/documentation/feature/microdagr.md index 3ff9562293..2ed13875f2 100644 --- a/documentation/feature/microdagr.md +++ b/documentation/feature/microdagr.md @@ -1,26 +1,148 @@ --- layout: wiki title: MicroDAGR -description: +description: A GPS device and much more ! group: feature parent: wiki --- -## Overview +For an easier time reading don't forget that you can view all chapters on the right side of the page by clicking on Show/hide under table of content. -### Sub-feature 1 -Short description of sub-feature 1. +## 1. Overview -### Sub-feature 2 -Short description of sub-feature 2. +"Military operations rely on the position, +navigation and timing (PNT) data that GPS +can provide. In combat, the accuracy of +PNT data can mean the difference between +life and death. Non-military GPS receivers +simply aren’t good enough when lives are +on the line" (Extracted from the real life manual) + +that's where the MicroDAGR comes in, here's a list of it's features (in arma 3) : + +- Compass and headings. +- Date and hour synced to the mission. +- Elevation (above or below sea level) +- Current speed. +- GPS with topographic and satellite view. +- Creating, naming, deleting waypoints. +- Friendly identification (BLUFOR tracker need to be on) +- The MicroDAGR is also able to connect to your vector to retrieve data from it. + +## 2. Usage + +Please note that the numbers in 2.1 are going to be referred to as `1` `2` etc when explaining how to use the MicroDAGR + +### 2.1 Bringing the MicroDAGR + +- Self interact Ctrl+⊞ Win. +- Select `Equipment`. +- Select `configure MicroDAGR`. + +### 2.2 The MicroDAGR interface + + + +number | function | +------ | ----------------------------------------------------- | +`1` | Options menu and hour display. +`2` | Grid position `e` is west to east `n` is south to north. +`3` | Elevation above sea level in meters. +`4` & `11` | Compass heading. +`5` & `10` | Current speed. +`6` | Date (mission). +`7` | Main menu button. +`8` | Compass menu button. +`9` | Map menu button. +`12` | Compass +`13` | Player heading (your eyes). +`14` | Center the map on your position. +`15` | Map zoom. +`16` | Map dezoom +`17` | Your position. +`18` | Waypoint creation menu +`19` | Waypoint editing menu. +`20` | Connection menu. +`21` | Settings menu. + +### 2.3 Waypoints +#### 2.3.1 Adding waypoints +- There's three ways of adding a waypoint. + +- First way: Using the waypoint creation menu. + - Find the position you want to mark on the map. + - Get it's map grid. + - The grid is composed of 6 digits. + - The first three digits are read west to east. (Top of the map screen). + - The last three are read south to north. (Left side of the map screen). + - Go to the options menu (Click in `1` area, above the bar). + - Click on `Mark`(`18`). + - Enter the grid number. + - Press OK. + - Enter the desired name of the waypoint. + - Press OK. + +- Second way: Using the waypoint menu + - Find the position you want to mark on the map. + - Get it's map grid. + - The grid is composed of 6 digits. + - The first three digits are read west to east. (Top of the map screen). + - The last three are read south to north. (Left side of the map screen). + - Go to the options menu (Click in `1` area, above the bar). + - CLick on `Waypoints` (`19`). + - Click on `Add`. + - Enter the grid number. + - Press OK. + - Enter the name of the waypoint. + - Press OK. + +- Third way: Using the Map menu. + - Go to the map menu (click on `9`) + - double left click on the position where you want your waypoint. + - Enter the name of the waypoint. + - Press OK. + +#### 2.3.2 Setting a waypoint +- Go to the options menu (Click in `1` area, above the bar). +- CLick on `Waypoints` (`19`). +- Select the waypoint. +- Click on `SetWp`. -## Usage +- Once a waypoint is set: + - It's heading, elevation and distance are marked on the main menu. (`7`) + - It's heading, direction, grid position and name are marked in the compass menu (`8`) + - A marker appear at the waypoint grid location in the map menu (`9`) -Short overview of how to use the feature, e.g. menu options, key bindings, -instructions. May not apply to all modules. +#### 2.3.3 Deleting a waypoint +- Go to the options menu (Click in `1` area, above the bar). +- CLick on `Waypoints` (`19`). +- Select the waypoint. +- Click on `Delete`. + +### 2.4 Switching between mils and degrees +- Go to the options menu (Click in `1` area, above the bar). +- Click on `Settings` (`21`) +- Double left click on the unit next to `Angular unit:` + +### 2.5 Switching between topographical and satellite view + +- Go to the map menu (`9`) +- Click on the map menu button again (`9`) + +### 2.6 Retrieving data from the vector +- For this you obviously need a `vector 21`. +- Go to the options menu (Click in `1` area, above the bar). +- Click on `Connect to` (`20`). +- Pull out your `vector 21`. + - Press and hold both R and Tab ↹ until the red pointing circle appears. + - Sight the circle on the object and release both keys. +- The data on the main menu now have changed, you can now see the azimuth the range and the elevation of the point you sighted. +- Note that the compass menu also changed and now features the azimuth, compass bearing, distance and grid position of the point you sighted. + +Note that the results of the measure you took won't change until you do an other measure. -## Dependencies +## 3. Dependencies `ace_common` diff --git a/documentation/feature/missileguidance.md b/documentation/feature/missileguidance.md index 7dd4d6a304..7231741d1a 100644 --- a/documentation/feature/missileguidance.md +++ b/documentation/feature/missileguidance.md @@ -13,14 +13,14 @@ Adds the AMG framework, for more information about it refer to the [AMG framewor ## 2. Usage ### 2.1 Switching fire mode -- Press CTRL + TAB the LED's on the right of the UI will change. +- Press Ctrl + Tab ↹ the LED's on the right of the UI will change. - `TOP` for top down mode. - `DIR` for direct mode. ### 2.2 Locking - Fully zoom in by using NUMPAD + - Switch to thermals by pressing N the `FLTR` LED should light up. -- Aim at the target and hold TAB a crosshair will appear and the `SEEK` LED will light up. +- Aim at the target and hold Tab ↹ a crosshair will appear and the `SEEK` LED will light up. - Fire! ## 3. Dependencies diff --git a/documentation/feature/mk6mortar.md b/documentation/feature/mk6mortar.md index eb4b22caaf..90b6512ed5 100644 --- a/documentation/feature/mk6mortar.md +++ b/documentation/feature/mk6mortar.md @@ -18,7 +18,7 @@ ACE3 adds wind deflection for shells as well as a rangetable to accurately take ### 2.2 Working with the rangetable - To open the table: - - Self interact CTRL + ⊞ Win + - Self interact Ctrl + ⊞ Win - Select `equipment`. - Select `Open 82mm Rangetable`. @@ -34,7 +34,7 @@ ACE3 adds wind deflection for shells as well as a rangetable to accurately take - Once you finished your maths, it's time to aim, get the cross of the mortar on target, if you don't see it use a waypoint if possible. In our case ELEV is 1339-2 = 1337. - On the right side of the screen, while looking through the mk6 scope you should see ELV, we need to match this number with the one we found. - - To adjust the ELV use pageUP and pageDOWN. + - To adjust the ELV use Page Up and page Down. - Once the number you found and ELV are the same FIRE ! - On top of that you can calculate the time the shell will take to land by using the third row from the left, in our case the shell need to travel 2000m that's 20xthe number indicated. so 20x0,5 = 10s. diff --git a/documentation/feature/modules.md b/documentation/feature/modules.md new file mode 100644 index 0000000000..3d8f27136b --- /dev/null +++ b/documentation/feature/modules.md @@ -0,0 +1,14 @@ +--- +layout: wiki +title: modules +group: feature +parent: wiki +--- + +## 1. Overview + +This is taking care of module initialization **DO NOT REMOVE**. + +## 2. Dependencies + +`ace_main` reminder: **DO NOT REMOVE**. diff --git a/documentation/feature/overheating.md b/documentation/feature/overheating.md index dcbc4c1939..b97df663ce 100644 --- a/documentation/feature/overheating.md +++ b/documentation/feature/overheating.md @@ -25,12 +25,12 @@ Adds the ability to changes barrels on machine guns to compensate for those effe ### 2.2 Swapping barrels - For this you need a `Spare barrel` and a compatible weapon. -- Press self interaction CTRL + ⊞ Win (ACE3 default key bind `Self Interaction Key`). +- Press self interaction Ctrl + ⊞ Win (ACE3 default key bind `Self Interaction Key`). - Select `Equipment`. - Select `Swap barrel`. ### 2.3 Checking your barrel temperature -- Press self interaction CTRL + ⊞ Win. +- Press self interaction Ctrl + ⊞ Win. - Select `Equipment`. - Select `Check weapon temperature`. diff --git a/documentation/feature/rangecard.md b/documentation/feature/rangecard.md index b40e76cd49..6c588de45a 100644 --- a/documentation/feature/rangecard.md +++ b/documentation/feature/rangecard.md @@ -13,7 +13,7 @@ Add a range card that updates itself for your weapon and the type of ammo you're ## 2. Usage ### 2.1 Opening the range card -- Open the self interaction menu CTRL + ⊞ Win +- Open the self interaction menu Ctrl + ⊞ Win - Select `Equipment` - Select `Open Range Card` diff --git a/documentation/feature/reload.md b/documentation/feature/reload.md index 3cd4db1c8d..1d8637c290 100644 --- a/documentation/feature/reload.md +++ b/documentation/feature/reload.md @@ -14,7 +14,7 @@ Hides the actual round count of magazines and removes the icon when the current ## 2. Usage ### 2.1 Checking your ammo -- Press CTRL + R (ACE3 default key bind `Check Ammo`). +- Press Ctrl + R (ACE3 default key bind `Check Ammo`). ## 3. Dependencies diff --git a/documentation/feature/reloadlaunchers.md b/documentation/feature/reloadlaunchers.md index 773814a73e..3bfa739360 100644 --- a/documentation/feature/reloadlaunchers.md +++ b/documentation/feature/reloadlaunchers.md @@ -13,7 +13,7 @@ Add the ability to reload someone else's launcher. ### 2. Usage ### 2.1 Reloading someone else's launcher -- Press the interaction key ⊞ Win and aim at your buddy's launcher. +- Press the interaction key ⊞ Win and aim at your buddy's launcher. - Select `reload launcher`. - Select the type of ammo. diff --git a/documentation/feature/respawn.md b/documentation/feature/respawn.md index 753784b52b..08d3bf7feb 100644 --- a/documentation/feature/respawn.md +++ b/documentation/feature/respawn.md @@ -23,7 +23,7 @@ Adds rallypoints to all 3 sides to enable teleportation from base spawn to FOB's ### 2.1 Using rallypoints - For this to work pre-emptive preparations need to be made by the mission maker. - Approach the rallypoint flagpole -- Use the interaction key ⊞ Win (ACE3 default key bind `Interaction key`). +- Use the interaction key ⊞ Win (ACE3 default key bind `Interaction key`). - Select teleport to (base / rallypoint). diff --git a/documentation/feature/safemode.md b/documentation/feature/safemode.md index 9024ac973b..0bcf4435de 100644 --- a/documentation/feature/safemode.md +++ b/documentation/feature/safemode.md @@ -14,8 +14,8 @@ You can now use the safety mode of any weapon. Switching weapon modes takes the ## 2. Usage ### 2.1 Switching safety on / off -- To turn it on press CTRL + ` (QWERTY layout) (ACE3 default key bind `Safe Mode`). -- To turn it off press CTRL + ` (QWERTY layout) again or switch firing mode. +- To turn it on press Ctrl + ` (QWERTY layout) (ACE3 default key bind `Safe Mode`). +- To turn it off press Ctrl + ` (QWERTY layout) again or switch firing mode. ## 3. Dependencies diff --git a/documentation/feature/sandbags.md b/documentation/feature/sandbags.md index 5e0011b755..9c0c90b7e0 100644 --- a/documentation/feature/sandbags.md +++ b/documentation/feature/sandbags.md @@ -15,7 +15,7 @@ Note that those sandbags are affected by physics, a rocket will send them flying ### 2.1 Placing the sandbags - You'll need at least one `sandbag (empty)`. - You need to be over a grass area / sand area to be able to fill the sandbag. -- Self interact CTRL+⊞ Win (ACE3 default). +- Self interact Ctrl+⊞ Win (ACE3 default). - Select `Deploy sandbag`. - Follow the instruction on screen. diff --git a/documentation/feature/scopes.md b/documentation/feature/scopes.md index 9e70641f71..cfcee4a687 100644 --- a/documentation/feature/scopes.md +++ b/documentation/feature/scopes.md @@ -15,16 +15,16 @@ Allows snipers to adjust their scopes horizontally and vertically in mils. ### 2.1 Adjusting your scope vertically Please not that the following key combinations are ACE3 default key binds. -- Minor adjustment up pageUP. -- Minor adjustment down pageDOWN. -- Major adjustment up Shift + pageUP. -- Major adjustment down Shift + pageDOWN. +- Minor adjustment up Page Up. +- Minor adjustment down page Down. +- Major adjustment up ⇧ Shift + Page Up. +- Major adjustment down ⇧ Shift + page Down. ### 2.2 Adjusting your scope horizontally -- Minor adjustment right CTRL + pageUP. -- Minor adjustment left CTRL + pageDOWN. -- Major adjustment right CTRL + Shift + pageUP. -- Major adjustment left CTRL + Shift + pageDOWN. +- Minor adjustment right Ctrl + Page Up. +- Minor adjustment left Ctrl + page Down. +- Major adjustment right Ctrl + ⇧ Shift + Page Up. +- Major adjustment left Ctrl + ⇧ Shift + page Down. ## 3. Dependencies diff --git a/documentation/feature/spotting_scope.md b/documentation/feature/spotting_scope.md index ead45d540f..a2b9bdf19d 100644 --- a/documentation/feature/spotting_scope.md +++ b/documentation/feature/spotting_scope.md @@ -12,7 +12,7 @@ Adds a deployable spotting scope. ## 2. Usage ### 2.1 Deploying the spotting scope -- Self interact CTRL+⊞ Win (ACE3 default). +- Self interact Ctrl+⊞ Win (ACE3 default). - Select `Equipment`. - Select `Place spotting scope` (note that the scope will be at your feet). diff --git a/documentation/feature/tacticallader.md b/documentation/feature/tacticallader.md index f992236db6..9ed4b9459d 100644 --- a/documentation/feature/tacticallader.md +++ b/documentation/feature/tacticallader.md @@ -12,9 +12,9 @@ Adds a deployable ladder with adjustable height that you can transport on your b ## 2. Usage ### 2.1 Deploying the ladder -- Self interact CTRL+⊞ Win (ACE3 default). +- Self interact Ctrl+⊞ Win (ACE3 default). - Select `Deploy ladder`. -- You can adjust it's position and height by interacting with it ⊞ Win (ACE3 default) and following the instructions on screen. +- You can adjust it's position and height by interacting with it ⊞ Win (ACE3 default) and following the instructions on screen. ## 3. Dependencies diff --git a/documentation/feature/tripod.md b/documentation/feature/tripod.md index 4f57dc05a7..f6f49ba3d1 100644 --- a/documentation/feature/tripod.md +++ b/documentation/feature/tripod.md @@ -13,12 +13,12 @@ Adds a packable tripod deployable on the field. It features a flat part to deplo ### 2.1 deploying the tripod - Note that you need a `SSWT kit` in your inventory. -- Self interact CTRL+⊞ Win. +- Self interact Ctrl+⊞ Win. - Select `Equipment` - Select `Place SSWT kit`. -To adjust or pick up the tripod just interact with it ⊞ Win and select the desired action. +To adjust or pick up the tripod just interact with it ⊞ Win and select the desired action. ## 3. Dependencies -`ace_interaction` \ No newline at end of file +`ace_interaction` diff --git a/documentation/feature/vector.md b/documentation/feature/vector.md index 025012959a..4dbf4440a1 100644 --- a/documentation/feature/vector.md +++ b/documentation/feature/vector.md @@ -32,12 +32,12 @@ The Vector is controlled with 2 keys: the azimuth key and the range key; Ta #### 2.2 Azimuth Measuring Azimuth -- Press and hold the TAB until the azimuth is displayed. +- Press and hold the Tab ↹ until the azimuth is displayed. #### 2.3 Slope distance and Azimuth Measuring Slope distance and Azimuth -- Press and hold both R and TAB until the red pointing circle appears. +- Press and hold both R and Tab ↹ until the red pointing circle appears. - Sight the circle on the object and release both keys. #### 2.4 Horizontal distance and height difference @@ -49,35 +49,35 @@ The Vector is controlled with 2 keys: the azimuth key and the range key; Ta #### 2.5 Azimuth and Inclination Measuring Azimuth and Inclination -- Tap TAB once then press and hold it until the azimuth and inclination is displayed. +- Tap Tab ↹ once then press and hold it until the azimuth and inclination is displayed. #### 2.6 Distance between two points Measuring Distance between two points - Press and hold R until the red pointing circle appears. -- Sight the circle on the first object and tap TAB while further holding R. The first measurement is confirmed ("1-P" = first point). +- Sight the circle on the first object and tap Tab ↹ while further holding R. The first measurement is confirmed ("1-P" = first point). - Sight the second object and release R. #### 2.7 Horizontal and vertical distance between two points Measuring Horizontal and vertical distance between two points - Tap R once then press and hold it until the red pointing circle appears. -- Sight the circle on the object and tap TAB once. The first measurement is confirmed ("1-P" = first point). +- Sight the circle on the object and tap Tab ↹ once. The first measurement is confirmed ("1-P" = first point). - Sight the second object and release R. #### 2.8 Horizontal distance and azimuth between two points Measuring Horizontal distance and azimuth between two points -- Press and hold TAB until the azimuth appears. -- Sight the circle on the first object and tap R while further holding TAB. The first measurement is confirmed ("1-P" = first point). -- Sight the second object and release TAB. +- Press and hold Tab ↹ until the azimuth appears. +- Sight the circle on the first object and tap R while further holding Tab ↹. The first measurement is confirmed ("1-P" = first point). +- Sight the second object and release Tab ↹. ### 2.9 Fall of shot Measuring Fall of shot -- Tap TAB once then press and hold it until the azimuth appears. -- Sight the circle on the object and tap R while further holding TAB. The first measurement is confirmed ("1-P" = first point). -- Sight the Fall of shot and release TAB. The left digits display the left (`L`)/right (`r`) correction value in meter and the right digits display the longer (`A` = add)/shorter (`d` = drop) correction value in meter. If R is tapped the height correction values will be displayed (`UP` and `dn`). +- Tap Tab ↹ once then press and hold it until the azimuth appears. +- Sight the circle on the object and tap R while further holding Tab ↹. The first measurement is confirmed ("1-P" = first point). +- Sight the Fall of shot and release Tab ↹. The left digits display the left (`L`)/right (`r`) correction value in meter and the right digits display the longer (`A` = add)/shorter (`d` = drop) correction value in meter. If R is tapped the height correction values will be displayed (`UP` and `dn`). ## 3. Dependencies diff --git a/documentation/feature/vehicles.md b/documentation/feature/vehicles.md index 3f78b654b2..a58d314194 100644 --- a/documentation/feature/vehicles.md +++ b/documentation/feature/vehicles.md @@ -41,6 +41,10 @@ MBT main guns and mortars can no longer lock on enemies. The AT rounds of both n - To turn the engine on press 2. - To turn the engine off press 1. +### 2.2 Turning the speed limiter on / off +- To turn the speed limiter on press Del. +- To turn it off press Del again. + ## 3. Dependencies `ace_common` diff --git a/documentation/framework/carry-drag.md b/documentation/framework/carry-drag.md index 988797ba79..cfa4eb13af 100644 --- a/documentation/framework/carry-drag.md +++ b/documentation/framework/carry-drag.md @@ -26,3 +26,71 @@ class CfgVehicles { }; ``` +## 2. Functions + +**NOTE THAT THE FOLLOWING FUNCTIONS ARE NOT PUBLIC AND THUS MAY CHANGE IN THE FUTURE.**
+ + +Also note that if the item is too heavy you won't be able to carry / drag it, the mass is also affected by what's inside it.
+To bypass this empty the object and / or use setMass.
+ +### 2.1 Enabling / disabling dragging + +`ace_dragging_fnc_setDraggable.`
+Enable the object to be dragged.
+ +| Arguments | | +--------------| -------- | +0 | Any object (Object) +1: | true to enable dragging, false to disable (Bool) +2:| Position offset for attachTo command (Array, optional; default: [0,0,0]) +3: | Direction in degree to rotate the object after attachTo (Number, optional; default: 0) +Return value: NONE
+ +#### 2.1.1 example 1: +``` +[foo,true,[0,2,0],45] call ace_dragging_fnc_setDraggable +``` +| Arguments | | +--------------| -------- | +0:| foo (my object) +1:| true (dragging is enabled) +2:| `[0,2,0]` (0 meters sideways, 2 meters forward, 0 meters upwards) +3:| 45 (the object is rotated by 45°) + +#### 2.1.2 example 2 +``` +[bar,false,[3,-2,2],20] call ace_dragging_fnc_setDraggable +``` + +| Arguments | | +--------------| -------- | +0:| bar (object) +1:| false (dragging is disabled) +2:| 3 meters sideways, -2 meters backwards, 2 meters upwards +3:| the object is rotated by 20° + +### 2.2 Enabling / disabling carrying +`ace_dragging_fnc_setCarryable.`
+Enable the object to be carried.
+ +| Arguments | | +--------------| -------- | +0 | Any object (Object) +1:| true to enable carrying, false to disable (Bool) +2:| Position offset for attachTo command (Array, optional; default: [0,1,1]) +3:| Direction in degree to rotate the object after attachTo (Number, optional; default: 0) +Return value: NONE
+ + +#### 2.1.1 example 1: +``` +[foo,true,[0,3,1],10] call ace_dragging_fnc_setCarryable +``` +| Arguments | | +--------------| -------- | +0:| foo (my object) +1:| true (carrying is enabled) +2:| `[0,2,0]` (0 meters sideways, 3 meters forward, 1 meters upwards) +3:| 10 (the object is rotated by 10°) + From 6b4eeedbad046f0259950bab67aee133c6063479 Mon Sep 17 00:00:00 2001 From: SzwedzikPL Date: Wed, 1 Jul 2015 21:21:09 +0200 Subject: [PATCH 118/118] headgear influence on hearing --- addons/hearing/CfgWeapons.hpp | 35 +++++++++++++++++++ addons/hearing/config.cpp | 2 +- addons/hearing/functions/fnc_earRinging.sqf | 21 +++++++---- addons/hearing/functions/fnc_updateVolume.sqf | 9 +++++ .../development/ace3-config-entries.md | 2 ++ documentation/feature/hearing.md | 5 ++- 6 files changed, 66 insertions(+), 8 deletions(-) diff --git a/addons/hearing/CfgWeapons.hpp b/addons/hearing/CfgWeapons.hpp index 11ad91f658..adcdb2217b 100644 --- a/addons/hearing/CfgWeapons.hpp +++ b/addons/hearing/CfgWeapons.hpp @@ -12,4 +12,39 @@ class CfgWeapons { mass = 1; }; }; + + class H_HelmetB; + class H_HelmetCrew_B: H_HelmetB { + GVAR(protection) = 1; + GVAR(lowerVolume) = 0.80; + }; + class H_HelmetCrew_0: H_HelmetCrew_B {}; + class H_HelmetCrew_I: H_HelmetCrew_B {}; + + class H_CrewHelmetHeli_B: H_HelmetB { + GVAR(protection) = 0.75; + GVAR(lowerVolume) = 0.70; + }; + class H_CrewHelmetHeli_O: H_CrewHelmetHeli_B {}; + class H_CrewHelmetHeli_I: H_CrewHelmetHeli_B {}; + + class H_PilotHelmetHeli_B: H_HelmetB { + GVAR(protection) = 0.75; + GVAR(lowerVolume) = 0.70; + }; + class H_PilotHelmetHeli_O: H_PilotHelmetHeli_B {}; + class H_PilotHelmetHeli_I: H_PilotHelmetHeli_B {}; + + class H_PilotHelmetFighter_B: H_HelmetB { + GVAR(protection) = 1; + GVAR(lowerVolume) = 0.80; + }; + class H_PilotHelmetFighter_O: H_PilotHelmetFighter_B {}; + class H_PilotHelmetFighter_I: H_PilotHelmetFighter_B {}; + + class H_Cap_headphones: H_HelmetB { + GVAR(protection) = 0.5; + GVAR(lowerVolume) = 0.60; + }; + class H_Cap_marshal: H_Cap_headphones {}; }; diff --git a/addons/hearing/config.cpp b/addons/hearing/config.cpp index 1007b2095d..5d130e589a 100644 --- a/addons/hearing/config.cpp +++ b/addons/hearing/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {}; weapons[] = {"ACE_EarPlugs"}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_interaction"}; + requiredAddons[] = {"ace_interaction", "A3_Characters_F", "A3_Characters_F_Kart"}; author[] = {"KoffeinFlummi", "esteldunedain", "HopeJ", "commy2", "Rocko", "Rommel", "Ruthberg"}; authorUrl = "https://github.com/KoffeinFlummi/"; VERSION_CONFIG; diff --git a/addons/hearing/functions/fnc_earRinging.sqf b/addons/hearing/functions/fnc_earRinging.sqf index 96482f5b79..74e2768c4c 100644 --- a/addons/hearing/functions/fnc_earRinging.sqf +++ b/addons/hearing/functions/fnc_earRinging.sqf @@ -27,6 +27,15 @@ if (_unit getVariable ["ACE_hasEarPlugsin", false]) then { _strength = _strength / 4; }; +//headgear hearing protection +if(headgear _unit != "") then { + private ["_protection"]; + _protection = (getNumber (configFile >> "CfgWeapons" >> (headgear _unit) >> QGVAR(protection))) min 1; + if(_protection > 0) then { + _strength = _strength * (1 - _protection); + }; +}; + _unit setVariable [QGVAR(dv), (_unit getVariable [QGVAR(dv), 0]) + _strength]; if (GVAR(earRingingPFH) != -1) exitWith {}; @@ -35,7 +44,7 @@ GVAR(earRingingPFH) = [{ EXPLODE_1_PVT(_this select 0,_unit); private ["_prior"]; _prior = (_unit getvariable [QGVAR(dv), 0]) min 20; - + if (!alive _unit || _prior <= 0) exitWith { _unit setVariable [QGVAR(dv), 0]; _unit setVariable [QGVAR(prior), 0]; @@ -47,7 +56,7 @@ GVAR(earRingingPFH) = [{ GVAR(earRingingPFH) = -1; [_this select 1] call cba_fnc_removePerFrameHandler; }; - + if (((_unit getvariable [QGVAR(dv), 0]) - (_unit getvariable [QGVAR(prior), 0])) > 2) then { if (ACE_time > GVAR(time3)) then { GVAR(beep2) = false; @@ -58,16 +67,16 @@ GVAR(earRingingPFH) = [{ GVAR(time3) = ACE_time + 5; }; }; - + _unit setvariable [QGVAR(prior), _prior]; GVAR(volume) = (1 - (_prior / 20)) max 0; - + if (_prior > 19.75) then { _unit setvariable [QGVAR(deaf), true]; } else { _unit setvariable [QGVAR(deaf), false]; }; - + if ((_unit getvariable [QGVAR(deaf), false]) && {ACE_time > GVAR(time4)}) then { playSound "ACE_Combat_Deafness"; GVAR(beep2) = true; @@ -77,7 +86,7 @@ GVAR(earRingingPFH) = [{ // Hearing takes longer to return to normal after it hits rock bottom _unit setvariable [QGVAR(dv), _prior - (0.5 * (GVAR(volume) max 0.1))]; - + if (_prior > 10) then { //check if the ringing is already being played if (ACE_time > GVAR(time2)) then { diff --git a/addons/hearing/functions/fnc_updateVolume.sqf b/addons/hearing/functions/fnc_updateVolume.sqf index cfec318dc0..5502f38bf4 100644 --- a/addons/hearing/functions/fnc_updateVolume.sqf +++ b/addons/hearing/functions/fnc_updateVolume.sqf @@ -46,6 +46,15 @@ if ([ACE_player] call FUNC(hasEarPlugsIn)) then { _volume = _volume min GVAR(EarplugsVolume); }; +// Headgear can reduce hearing +if(headgear ACE_player != "") then { + private ["_lowerVolume"]; + _lowerVolume = (getNumber (configFile >> "CfgWeapons" >> (headgear ACE_player) >> QGVAR(lowerVolume))) min 1; + if(_lowerVolume > 0) then { + _volume = _volume min (1 - _lowerVolume); + }; +}; + // Reduce volume if player is unconscious if (ACE_player getVariable ["ACE_isUnconscious", false]) then { _volume = _volume min GVAR(UnconsciousnessVolume); diff --git a/documentation/development/ace3-config-entries.md b/documentation/development/ace3-config-entries.md index d87ca4145e..1e28bec44d 100644 --- a/documentation/development/ace3-config-entries.md +++ b/documentation/development/ace3-config-entries.md @@ -63,6 +63,8 @@ ace_barrelLength ace_laserpointer ace_nextmodeclass ace_modedescription +ace_hearing_protection +ace_hearing_lowerVolume ``` diff --git a/documentation/feature/hearing.md b/documentation/feature/hearing.md index 5389f0c3d5..1328971de4 100644 --- a/documentation/feature/hearing.md +++ b/documentation/feature/hearing.md @@ -11,10 +11,13 @@ parent: wiki ### 1.1 Hearing damage simulation Introduces hearing damage caused by nearby explosions and large-caliber weapons. -### 1.2 Earplugs +### 1.2 Earplugs Adds earplugs to mitigate that effect. Soldiers with high caliber weapons or missile launchers will be equipped with those, but remember to put them in. +### 1.3 Helmets +Some types of helmets can mitigate hearing damage also (ie. crewman helmet, pilot helmet etc.). + ## 2. Usage ### 2.1 Equipping earplugs