From f7d5d615ee1cbc18aee5d2c259bec947114c639f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Thu, 19 Feb 2015 15:36:27 -0300 Subject: [PATCH] allow actions to be defined for different selections --- addons/attach/CfgVehicles.hpp | 43 ++-- addons/captives/CfgVehicles.hpp | 173 ++++++++-------- .../functions/fnc_compileMenu.sqf | 36 ++-- addons/interact_menu/functions/fnc_probe.sqf | 1 + .../functions/fnc_renderIcon.sqf | 2 +- .../functions/fnc_renderMenu.sqf | 5 +- addons/interaction/CfgVehicles.hpp | 192 +++++++++--------- addons/interaction/stringtable.xml | 3 + addons/logistics_uavbattery/CfgVehicles.hpp | 4 +- addons/map/CfgVehicles.hpp | 14 +- addons/respawn/CfgVehicles.hpp | 111 ++++++---- addons/vehiclelock/CfgVehicles.hpp | 55 ++--- 12 files changed, 356 insertions(+), 283 deletions(-) diff --git a/addons/attach/CfgVehicles.hpp b/addons/attach/CfgVehicles.hpp index 1cd65127a6..b681c0f7f7 100644 --- a/addons/attach/CfgVehicles.hpp +++ b/addons/attach/CfgVehicles.hpp @@ -1,25 +1,30 @@ #define MACRO_ATTACHTOVEHICLE \ class ACE_Actions { \ - class GVAR(AttachVehicle) { \ - displayName = "$STR_ACE_Attach_AttachDetach"; \ - condition = QUOTE(([ARR_3(_player, _target, '')] call FUNC(canAttach))); \ - statement = QUOTE( [ARR_2(_player, _target)] call FUNC(openAttachUI);); \ - exceptions[] = {"ACE_Drag_isNotDragging"}; \ - showDisabled = 0; \ - priority = 0; \ - icon = PATHTOF(UI\attach_ca.paa); \ - distance = 4; \ - }; \ - class GVAR(DetachVehicle) { \ - displayName = "$STR_ACE_Attach_Detach"; \ - condition = QUOTE(([ARR_2(_player, _target)] call FUNC(canDetach))); \ - statement = QUOTE( [ARR_2(_player, _target)] call FUNC(detach) ); \ - exceptions[] = {"ACE_Drag_isNotDragging"}; \ - showDisabled = 0; \ - priority = 0; \ - icon = PATHTOF(UI\detach_ca.paa); \ - distance = 4; \ + class ACE_MainActions { \ + selection = ""; \ + distance = 5; \ + condition = "true"; \ + class GVAR(AttachVehicle) { \ + displayName = "$STR_ACE_Attach_AttachDetach"; \ + condition = QUOTE(([ARR_3(_player, _target, '')] call FUNC(canAttach))); \ + statement = QUOTE( [ARR_2(_player, _target)] call FUNC(openAttachUI);); \ + exceptions[] = {"ACE_Drag_isNotDragging"}; \ + showDisabled = 0; \ + priority = 0; \ + icon = PATHTOF(UI\attach_ca.paa); \ + distance = 4; \ + }; \ + class GVAR(DetachVehicle) { \ + displayName = "$STR_ACE_Attach_Detach"; \ + condition = QUOTE(([ARR_2(_player, _target)] call FUNC(canDetach))); \ + statement = QUOTE( [ARR_2(_player, _target)] call FUNC(detach) ); \ + exceptions[] = {"ACE_Drag_isNotDragging"}; \ + showDisabled = 0; \ + priority = 0; \ + icon = PATHTOF(UI\detach_ca.paa); \ + distance = 4; \ + }; \ }; \ }; diff --git a/addons/captives/CfgVehicles.hpp b/addons/captives/CfgVehicles.hpp index d292402bcf..57f9644a4a 100644 --- a/addons/captives/CfgVehicles.hpp +++ b/addons/captives/CfgVehicles.hpp @@ -2,70 +2,78 @@ class CfgVehicles { class Man; class CAManBase: Man { class ACE_Actions { - class ACE_ApplyHandcuffs { - displayName = "$STR_ACE_Captives_SetCaptive"; - distance = 4; - condition = QUOTE([ARR_2(_player, _target)] call FUNC(canApplyHandcuffs)); - statement = QUOTE([ARR_2(_player, _target)] call FUNC(doApplyHandcuffs)); - exceptions[] = {}; - showDisabled = 0; - priority = 2.4; - icon = QUOTE(PATHTOF(UI\handcuff_ca.paa)); - hotkey = "C"; + class ACE_RightHandActions { + selection = "righthand"; + displayName = "Right hand"; + distance = 5; + condition = QUOTE(([ARR_2(_player, _target)] call FUNC(canApplyHandcuffs)) || ([ARR_2(_player, _target)] call FUNC(canRemoveHandcuffs))); + class ACE_ApplyHandcuffs { + displayName = "$STR_ACE_Captives_SetCaptive"; + distance = 4; + condition = QUOTE([ARR_2(_player, _target)] call FUNC(canApplyHandcuffs)); + statement = QUOTE([ARR_2(_player, _target)] call FUNC(doApplyHandcuffs)); + exceptions[] = {}; + showDisabled = 0; + priority = 2.4; + icon = QUOTE(PATHTOF(UI\handcuff_ca.paa)); + hotkey = "C"; + }; + class ACE_RemoveHandcuffs { + displayName = "$STR_ACE_Captives_ReleaseCaptive"; + distance = 4; + condition = QUOTE([ARR_2(_player, _target)] call FUNC(canRemoveHandcuffs)); + statement = QUOTE([ARR_2(_player, _target)] call FUNC(doRemoveHandcuffs)); + exceptions[] = {}; + showDisabled = 0; + priority = 2.4; + icon = QUOTE(PATHTOF(UI\handcuff_ca.paa)); + hotkey = "R"; + }; }; - class ACE_RemoveHandcuffs { - displayName = "$STR_ACE_Captives_ReleaseCaptive"; - distance = 4; - condition = QUOTE([ARR_2(_player, _target)] call FUNC(canRemoveHandcuffs)); - statement = QUOTE([ARR_2(_player, _target)] call FUNC(doRemoveHandcuffs)); - exceptions[] = {}; - showDisabled = 0; - priority = 2.4; - icon = QUOTE(PATHTOF(UI\handcuff_ca.paa)); - hotkey = "R"; - }; - class ACE_EscortCaptive { - displayName = "$STR_ACE_Captives_EscortCaptive"; - distance = 4; - condition = QUOTE([ARR_2(_player, _target)] call FUNC(canEscortCaptive)); - statement = QUOTE([ARR_3(_player, _target, true)] call FUNC(doEscortCaptive)); - exceptions[] = {}; - showDisabled = 0; - icon = QUOTE(PATHTOF(UI\captive_ca.paa)); - priority = 2.3; - hotkey = "E"; - }; - class ACE_StopEscorting { - displayName = "$STR_ACE_Captives_StopEscorting"; - distance = 4; - condition = QUOTE([ARR_2(_player, _target)] call FUNC(canStopEscorting)); - statement = QUOTE([ARR_3(_player,_target, false)] call FUNC(doEscortCaptive)); - exceptions[] = {QGVAR(isNotEscorting)}; - showDisabled = 0; - icon = QUOTE(PATHTOF(UI\captive_ca.paa)); - priority = 2.3; - hotkey = "E"; - }; - class ACE_LoadCaptive { - displayName = "$STR_ACE_Captives_LoadCaptive"; - distance = 4; - condition = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(canLoadCaptive)); - statement = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(doLoadCaptive)); - exceptions[] = {QGVAR(isNotEscorting)}; - showDisabled = 0; - icon = QUOTE(PATHTOF(UI\captive_ca.paa)); - priority = 2.2; - hotkey = "L"; - }; - class ACE_FriskPerson { - displayName = "$STR_ACE_Captives_FriskPerson"; - distance = 2; - condition = QUOTE([ARR_2(_player, _target)] call FUNC(canFriskPerson)); - statement = QUOTE([ARR_2(_player, _target)] call FUNC(doFriskPerson)); - showDisabled = 0; - //icon = ""; //@todo - priority = 3; - hotkey = "F"; + class ACE_MainActions { + class ACE_EscortCaptive { + displayName = "$STR_ACE_Captives_EscortCaptive"; + distance = 4; + condition = QUOTE([ARR_2(_player, _target)] call FUNC(canEscortCaptive)); + statement = QUOTE([ARR_3(_player, _target, true)] call FUNC(doEscortCaptive)); + exceptions[] = {}; + showDisabled = 0; + icon = QUOTE(PATHTOF(UI\captive_ca.paa)); + priority = 2.3; + hotkey = "E"; + }; + class ACE_StopEscorting { + displayName = "$STR_ACE_Captives_StopEscorting"; + distance = 4; + condition = QUOTE([ARR_2(_player, _target)] call FUNC(canStopEscorting)); + statement = QUOTE([ARR_3(_player,_target, false)] call FUNC(doEscortCaptive)); + exceptions[] = {QGVAR(isNotEscorting)}; + showDisabled = 0; + icon = QUOTE(PATHTOF(UI\captive_ca.paa)); + priority = 2.3; + hotkey = "E"; + }; + class ACE_LoadCaptive { + displayName = "$STR_ACE_Captives_LoadCaptive"; + distance = 4; + condition = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(canLoadCaptive)); + statement = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(doLoadCaptive)); + exceptions[] = {QGVAR(isNotEscorting)}; + showDisabled = 0; + icon = QUOTE(PATHTOF(UI\captive_ca.paa)); + priority = 2.2; + hotkey = "L"; + }; + class ACE_FriskPerson { + displayName = "$STR_ACE_Captives_FriskPerson"; + distance = 2; + condition = QUOTE([ARR_2(_player, _target)] call FUNC(canFriskPerson)); + statement = QUOTE([ARR_2(_player, _target)] call FUNC(doFriskPerson)); + showDisabled = 0; + //icon = ""; //@todo + priority = 3; + hotkey = "F"; + }; }; }; @@ -100,24 +108,27 @@ class CfgVehicles { #define MACRO_LOADUNLOADCAPTIVE \ class ACE_Actions { \ - class ACE_LoadCaptive { \ - displayName = "$STR_ACE_Captives_LoadCaptive"; \ - distance = 4; \ - condition = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(canLoadCaptive)); \ - statement = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(doLoadCaptive)); \ - exceptions[] = {QGVAR(isNotEscorting)}; \ - showDisabled = 0; \ - priority = 1.2; \ - hotkey = "L"; \ - }; \ - class ACE_UnloadCaptive { \ - displayName = "$STR_ACE_Captives_UnloadCaptive"; \ - distance = 4; \ - condition = QUOTE([ARR_2(_player, _target)] call FUNC(canUnloadCaptive)); \ - statement = QUOTE([ARR_2(_player, _target)] call FUNC(doUnloadCaptive)); \ - showDisabled = 0; \ - priority = 1.2; \ - hotkey = "C"; \ + class ACE_MainActions { \ + selection = ""; \ + class ACE_LoadCaptive { \ + displayName = "$STR_ACE_Captives_LoadCaptive"; \ + distance = 4; \ + condition = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(canLoadCaptive)); \ + statement = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(doLoadCaptive)); \ + exceptions[] = {QGVAR(isNotEscorting)}; \ + showDisabled = 0; \ + priority = 1.2; \ + hotkey = "L"; \ + }; \ + class ACE_UnloadCaptive { \ + displayName = "$STR_ACE_Captives_UnloadCaptive"; \ + distance = 4; \ + condition = QUOTE([ARR_2(_player, _target)] call FUNC(canUnloadCaptive)); \ + statement = QUOTE([ARR_2(_player, _target)] call FUNC(doUnloadCaptive)); \ + showDisabled = 0; \ + priority = 1.2; \ + hotkey = "C"; \ + }; \ }; \ }; diff --git a/addons/interact_menu/functions/fnc_compileMenu.sqf b/addons/interact_menu/functions/fnc_compileMenu.sqf index 647a78c7b2..1e89a1b969 100644 --- a/addons/interact_menu/functions/fnc_compileMenu.sqf +++ b/addons/interact_menu/functions/fnc_compileMenu.sqf @@ -37,7 +37,7 @@ _actionsCfg = configFile >> "CfgVehicles" >> _objectType >> "ACE_Actions"; _recurseFnc = { - private ["_actions", "_displayName", "_distance", "_icon", "_statement", "_condition", "_showDisabled", + private ["_actions", "_displayName", "_distance", "_icon", "_statement", "_selection", "_condition", "_showDisabled", "_enableInside", "_children", "_entry", "_actionsCfg"]; _actions = []; _actionsCfg = _this select 0; @@ -48,7 +48,10 @@ _recurseFnc = { _distance = getNumber (_entryCfg >> "distance"); _icon = getText (_entryCfg >> "icon"); _statement = compile (getText (_entryCfg >> "statement")); - + _selection = getText (_entryCfg >> "selection"); + if (_selection == "") then { + _selection = [0,0,0]; + }; _condition = getText (_entryCfg >> "condition"); if (_condition == "") then {_condition = "true"}; @@ -59,24 +62,18 @@ _recurseFnc = { _enableInside = getNumber (_entryCfg >> "enableInside"); _condition = compile _condition; - // diag_log text format["_condition: %1", _condition]; - _children = []; - if(isArray (_entryCfg >> "subMenu")) then { - _subMenuDef = getArray (_entryCfg >> "subMenu"); - _childMenuName = _subMenuDef select 0; - _childMenuCfg = configFile >> "CfgVehicles" >> _objectType >> "ACE_Actions" >> _childMenuName; - _children = [_childMenuCfg] call _recurseFnc; - }; + _children = [_entryCfg] call _recurseFnc; _entry = [ _displayName, _icon, - [0,0,0], + _selection, _statement, _condition, _distance, _children, GVAR(uidCounter) ]; + diag_log _entry; GVAR(uidCounter) = GVAR(uidCounter) + 1; _actions pushBack _entry; }; @@ -85,9 +82,20 @@ _recurseFnc = { }; _actions = [_actionsCfg] call _recurseFnc; +//diag_log _actions; +// Backward-compat, filter only base actions that have a selection +private ["_newActions","_oldActions","_selection"]; +_filteredActions = []; +{ + _selection = _x select 2; + if (typeName _selection == "STRING") then { + _filteredActions pushBack _x; + }; +} forEach _actions; +/* _actions = [[ - "TEST!", + "Interactions", "\a3\ui_f\data\IGUI\Cfg\Actions\eject_ca.paa", "Spine3", { true }, @@ -98,5 +106,5 @@ _actions = [[ ] ]; GVAR(uidCounter) = GVAR(uidCounter) + 1; - -_object setVariable [QUOTE(GVAR(actionData)), _actions]; \ No newline at end of file +*/ +_object setVariable [QUOTE(GVAR(actionData)), _filteredActions]; \ No newline at end of file diff --git a/addons/interact_menu/functions/fnc_probe.sqf b/addons/interact_menu/functions/fnc_probe.sqf index c7386c9bc6..9fdb166f6d 100644 --- a/addons/interact_menu/functions/fnc_probe.sqf +++ b/addons/interact_menu/functions/fnc_probe.sqf @@ -18,6 +18,7 @@ if(!GVAR(keyDown)) then { _target = _actionObject; _player = ACE_player; _active = [_target, ACE_player] call (_actionItem select 4); + systemChat format ["%1 %2 is active %3", _actionObject, _actionItem select 0, _active]; // player sideChat format["_active: %1 %2", _actionItem select 0, _active]; if(_active) then { _renderItem = +_actionItem; diff --git a/addons/interact_menu/functions/fnc_renderIcon.sqf b/addons/interact_menu/functions/fnc_renderIcon.sqf index ad381f691d..63623aeae1 100644 --- a/addons/interact_menu/functions/fnc_renderIcon.sqf +++ b/addons/interact_menu/functions/fnc_renderIcon.sqf @@ -6,7 +6,7 @@ _text = _this select 0; _color = _this select 1; _pos = _this select 2; _icon = _this select 6; - +//systemChat format ["Drawing icon %1", _text]; _sPos = worldToScreen _pos; // _sPos = _pos; if(count _sPos > 0) then { diff --git a/addons/interact_menu/functions/fnc_renderMenu.sqf b/addons/interact_menu/functions/fnc_renderMenu.sqf index 532762d41b..a5eb2cbe22 100644 --- a/addons/interact_menu/functions/fnc_renderMenu.sqf +++ b/addons/interact_menu/functions/fnc_renderMenu.sqf @@ -34,7 +34,6 @@ if(_cursorScreenPos distance _pos <= _distance) then { _color = format ["#%1FFFFFF", [255 * (((GVAR(renderDepth)/_menuDepth)) max 0.25)] call EFUNC(common,toHex)]; }; _path set[(count _path), _index]; - // player sideChat format["r: %1", _actionData select 2]; [_actionData select 0, _color, _pos, 1, 1, 0, _actionData select 1, 0.5, 0.025, "TahomaB"] call FUNC(renderIcon); GVAR(currentOptions) set[(count GVAR(currentOptions)), [_this, _pos, _path]]; _currentRenderDepth = -1; @@ -53,7 +52,7 @@ if(_cursorScreenPos distance _pos <= _distance) then { _numActions = _numActions + 1; }; } forEach (_actionData select 6); - systemChat format ["_numActions: %1", _numActions]; + systemChat format ["Menu %1, _numActions: %2", _actionData select 0, _numActions]; private "_angleSpan"; _angleSpan = _maxAngleSpan min (35 * (_numActions - 1)); @@ -67,7 +66,7 @@ if(_cursorScreenPos distance _pos <= _distance) then { _active = [_object, ACE_player] call (_x select 4); // diag_log text format["_active: %1: %2", (_x select 0), _active]; if(_active) then { - systemChat format ["_angle: %1", _angle]; + //systemChat format ["_angle: %1", _angle]; _offset = [GVAR(vecLineMap), _angle] call FUNC(rotateVectLine); _mod = 0.4 max (0.15 * (_cursorScreenPos distance _pos)); //0.5;//0.1*_distance; _newPos = [ diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index ce1a98abc5..78b87f0967 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -30,123 +30,133 @@ class CfgVehicles { class Man; class CAManBase: Man { class ACE_Actions { - class ACE_TeamManagement { - displayName = "$STR_ACE_Interaction_TeamManagement"; + class ACE_MainActions { + displayName = "$STR_ACE_Interaction_MainAction"; distance = 4; - condition = QUOTE(alive _target && {!isPlayer _target} && {_target in units group _player} && {GVAR(EnableTeamManagement)}); + condition = QUOTE(true); statement = ""; - showDisabled = 0; - priority = 3.2; - icon = PATHTOF(UI\team\team_management_ca.paa); - subMenu[] = {"ACE_TeamManagement", 0}; - hotkey = "M"; - enableInside = 1; + icon = "\a3\ui_f\data\IGUI\Cfg\Actions\eject_ca.paa"; + selection = "spine3"; - class ACE_JoinTeamRed { - displayName = "$STR_ACE_Interaction_JoinTeamRed"; + class ACE_TeamManagement { + displayName = "$STR_ACE_Interaction_TeamManagement"; distance = 4; - condition = QUOTE(alive _target && {!isPlayer _target} && {_target in units group _player}); - statement = QUOTE([ARR_2(_target,'RED')] call DFUNC(joinTeam)); - showDisabled = 1; - icon = PATHTOF(UI\team\team_red_ca.paa); - priority = 2.4; - hotkey = "R"; + condition = QUOTE(alive _target && {!isPlayer _target} && {_target in units group _player} && {GVAR(EnableTeamManagement)}); + statement = ""; + showDisabled = 0; + priority = 3.2; + icon = PATHTOF(UI\team\team_management_ca.paa); + hotkey = "M"; + enableInside = 1; + + class ACE_JoinTeamRed { + displayName = "$STR_ACE_Interaction_JoinTeamRed"; + distance = 4; + condition = QUOTE(alive _target && {!isPlayer _target} && {_target in units group _player}); + statement = QUOTE([ARR_2(_target,'RED')] call DFUNC(joinTeam)); + showDisabled = 1; + icon = PATHTOF(UI\team\team_red_ca.paa); + priority = 2.4; + hotkey = "R"; + enableInside = 1; + }; + class ACE_JoinTeamGreen { + displayName = "$STR_ACE_Interaction_JoinTeamGreen"; + distance = 4; + condition = QUOTE(alive _target && {!isPlayer _target} && {_target in units group _player}); + statement = QUOTE([ARR_2(_target,'GREEN')] call DFUNC(joinTeam)); + showDisabled = 1; + icon = PATHTOF(UI\team\team_green_ca.paa); + priority = 2.3; + hotkey = "G"; + enableInside = 1; + }; + class ACE_JoinTeamBlue { + displayName = "$STR_ACE_Interaction_JoinTeamBlue"; + distance = 4; + condition = QUOTE(alive _target && {!isPlayer _target} && {_target in units group _player}); + statement = QUOTE([ARR_2(_target,'BLUE')] call DFUNC(joinTeam)); + showDisabled = 1; + icon = PATHTOF(UI\team\team_blue_ca.paa); + priority = 2.2; + hotkey = "B"; + enableInside = 1; + }; + class ACE_JoinTeamYellow { + displayName = "$STR_ACE_Interaction_JoinTeamYellow"; + distance = 4; + condition = QUOTE(alive _target && {!isPlayer _target} && {_target in units group _player}); + statement = QUOTE([ARR_2(_target,'YELLOW')] call DFUNC(joinTeam)); + showDisabled = 1; + icon = PATHTOF(UI\team\team_yellow_ca.paa); + priority = 2.1; + hotkey = "Y"; + enableInside = 1; + }; + + class ACE_LeaveTeam { + displayName = "$STR_ACE_Interaction_LeaveTeam"; + distance = 4; + condition = QUOTE(alive _target && {!isPlayer _target} && {_target in units group _player} && {assignedTeam _player != 'MAIN'}); + statement = QUOTE([ARR_2(_target,'MAIN')] call DFUNC(joinTeam)); + showDisabled = 1; + icon = PATHTOF(UI\team\team_white_ca.paa); + priority = 2.5; + hotkey = "N"; + enableInside = 1; + }; + }; + + class ACE_JoinGroup { + displayName = "$STR_ACE_Interaction_JoinGroup"; + distance = 4; + condition = QUOTE(side group _player == side group _target && {group _player != group _target}); + statement = QUOTE([_player] joinSilent group _target;); + showDisabled = 0; + priority = 2.6; + icon = PATHTOF(UI\team\team_management_ca.paa); + hotkey = "J"; enableInside = 1; }; - class ACE_JoinTeamGreen { - displayName = "$STR_ACE_Interaction_JoinTeamGreen"; + + class ACE_GetDown { + displayName = "$STR_ACE_Interaction_GetDown"; distance = 4; - condition = QUOTE(alive _target && {!isPlayer _target} && {_target in units group _player}); - statement = QUOTE([ARR_2(_target,'GREEN')] call DFUNC(joinTeam)); - showDisabled = 1; - icon = PATHTOF(UI\team\team_green_ca.paa); - priority = 2.3; - hotkey = "G"; - enableInside = 1; - }; - class ACE_JoinTeamBlue { - displayName = "$STR_ACE_Interaction_JoinTeamBlue"; - distance = 4; - condition = QUOTE(alive _target && {!isPlayer _target} && {_target in units group _player}); - statement = QUOTE([ARR_2(_target,'BLUE')] call DFUNC(joinTeam)); - showDisabled = 1; - icon = PATHTOF(UI\team\team_blue_ca.paa); + condition = QUOTE([_target] call DFUNC(canInteractWith)); + statement = QUOTE([_target] call DFUNC(getDown)); + showDisabled = 0; priority = 2.2; - hotkey = "B"; - enableInside = 1; }; - class ACE_JoinTeamYellow { - displayName = "$STR_ACE_Interaction_JoinTeamYellow"; + class ACE_SendAway { + displayName = "$STR_ACE_Interaction_SendAway"; distance = 4; - condition = QUOTE(alive _target && {!isPlayer _target} && {_target in units group _player}); - statement = QUOTE([ARR_2(_target,'YELLOW')] call DFUNC(joinTeam)); - showDisabled = 1; - icon = PATHTOF(UI\team\team_yellow_ca.paa); - priority = 2.1; - hotkey = "Y"; - enableInside = 1; + condition = QUOTE([_target] call DFUNC(canInteractWith)); + statement = QUOTE([_target] call DFUNC(sendAway)); + showDisabled = 0; + priority = 2.0; }; - - class ACE_LeaveTeam { - displayName = "$STR_ACE_Interaction_LeaveTeam"; + class ACE_Pardon { + displayName = "$STR_ACE_Interaction_Pardon"; distance = 4; - condition = QUOTE(alive _target && {!isPlayer _target} && {_target in units group _player} && {assignedTeam _player != 'MAIN'}); - statement = QUOTE([ARR_2(_target,'MAIN')] call DFUNC(joinTeam)); - showDisabled = 1; - icon = PATHTOF(UI\team\team_white_ca.paa); + condition = QUOTE(rating _target < -2000 && {alive _target} && {side group _player == side group _target}); + statement = QUOTE([ARR_3(_target,'{_this addRating -rating _this}',_target)] call DEFUNC(common,execRemoteFnc)); + showDisabled = 0; priority = 2.5; - hotkey = "N"; enableInside = 1; }; }; class ACE_TapShoulder { displayName = "$STR_ACE_Interaction_TapShoulder"; + selection = "rightshoulder"; distance = 4; condition = QUOTE([ARR_2(_player, _target)] call DFUNC(canTapShoulder)); statement = QUOTE([ARR_2(_player, _target)] call DFUNC(tapShoulder)); - showDisabled = 1; + showDisabled = 0; priority = 2.8; hotkey = "Q"; enableInside = 1; }; - class ACE_JoinGroup { - displayName = "$STR_ACE_Interaction_JoinGroup"; - distance = 4; - condition = QUOTE(side group _player == side group _target && {group _player != group _target}); - statement = QUOTE([_player] joinSilent group _target;); - showDisabled = 0; - priority = 2.6; - icon = PATHTOF(UI\team\team_management_ca.paa); - hotkey = "J"; - enableInside = 1; - }; - - class ACE_GetDown { - displayName = "$STR_ACE_Interaction_GetDown"; - distance = 4; - condition = QUOTE([_target] call DFUNC(canInteractWith)); - statement = QUOTE([_target] call DFUNC(getDown)); - showDisabled = 0; - priority = 2.2; - }; - class ACE_SendAway { - displayName = "$STR_ACE_Interaction_SendAway"; - distance = 4; - condition = QUOTE([_target] call DFUNC(canInteractWith)); - statement = QUOTE([_target] call DFUNC(sendAway)); - showDisabled = 0; - priority = 2.0; - }; - class ACE_Pardon { - displayName = "$STR_ACE_Interaction_Pardon"; - distance = 4; - condition = QUOTE(rating _target < -2000 && {alive _target} && {side group _player == side group _target}); - statement = QUOTE([ARR_3(_target,'{_this addRating -rating _this}',_target)] call DEFUNC(common,execRemoteFnc)); - showDisabled = 0; - priority = 2.5; - enableInside = 1; - }; }; class ACE_SelfActions { diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index e58e808687..d0c5f47790 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -2,6 +2,9 @@ + + Interactions >> + Interaction Menu Interaktionsmenü diff --git a/addons/logistics_uavbattery/CfgVehicles.hpp b/addons/logistics_uavbattery/CfgVehicles.hpp index 933079071a..a3a3fc763d 100644 --- a/addons/logistics_uavbattery/CfgVehicles.hpp +++ b/addons/logistics_uavbattery/CfgVehicles.hpp @@ -2,6 +2,7 @@ class CfgVehicles { class Helicopter_Base_F; class UAV_01_base_F: Helicopter_Base_F { class ACE_Actions { + class ACE_MainActions { class GVAR(RefuelUAV) { displayName = "$STR_ACE_logistics_uavbattery_Recharge"; distance = 4; @@ -11,9 +12,10 @@ class CfgVehicles { priority = 1.245; \ icon = QUOTE(PATHTOF(ui\UAV_battery.paa)); }; + }; }; }; - + // Misc box content class Box_NATO_Support_F; class ACE_Box_Misc: Box_NATO_Support_F { diff --git a/addons/map/CfgVehicles.hpp b/addons/map/CfgVehicles.hpp index 6c2d4a1ee1..eafc85cdf1 100644 --- a/addons/map/CfgVehicles.hpp +++ b/addons/map/CfgVehicles.hpp @@ -85,12 +85,14 @@ class CfgVehicles { }; class ACE_Actions { - class ACE_CopyMap { - displayName = "$STR_ACE_Map_CopyMap"; - condition = QUOTE(([_target] call EFUNC(common,isPlayer) && {'ItemMap' in assigneditems _player} && {'ACE_MapTools' in items _player} && {'ItemMap' in assignedItems _target})); - statement = QUOTE([ARR_2(_player,_target)] call FUNC(copyMapStart)); - showDisabled = 0; - priority = -1; + class ACE_MainActions { + class ACE_CopyMap { + displayName = "$STR_ACE_Map_CopyMap"; + condition = QUOTE(([_target] call EFUNC(common,isPlayer) && {'ItemMap' in assigneditems _player} && {'ACE_MapTools' in items _player} && {'ItemMap' in assignedItems _target})); + statement = QUOTE([ARR_2(_player,_target)] call FUNC(copyMapStart)); + showDisabled = 0; + priority = -1; + }; }; }; }; diff --git a/addons/respawn/CfgVehicles.hpp b/addons/respawn/CfgVehicles.hpp index bdf4576eb3..cbf35b0baf 100644 --- a/addons/respawn/CfgVehicles.hpp +++ b/addons/respawn/CfgVehicles.hpp @@ -78,13 +78,18 @@ class CfgVehicles { init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_nato_CO.paa'; _this call FUNC(initRallypoint)); }; class ACE_Actions : ACE_Actions { - class ACE_Teleport { - displayName = "Teleport to Rallypoint"; - distance = 4; - condition = QUOTE(side group _player == west); - statement = QUOTE([ARR_3(_player, side group _player, false)] call FUNC(teleportToRallypoint)); - showDisabled = 1; - priority = 1; + class ACE_MainActions { + distance = 5; + condition = "true"; + selection = ""; + class ACE_Teleport { + displayName = "Teleport to Rallypoint"; + distance = 4; + condition = QUOTE(side group _player == west); + statement = QUOTE([ARR_3(_player, side group _player, false)] call FUNC(teleportToRallypoint)); + showDisabled = 1; + priority = 1; + }; }; }; }; @@ -98,13 +103,18 @@ class CfgVehicles { init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_CSAT_CO.paa'; _this call FUNC(initRallypoint)); }; class ACE_Actions : ACE_Actions { - class ACE_Teleport { - displayName = "Teleport to Rallypoint"; - distance = 4; - condition = QUOTE(side group _player == east); - statement = QUOTE([ARR_3(_player, side group _player, false)] call FUNC(teleportToRallypoint)); - showDisabled = 1; - priority = 1; + class ACE_MainActions { + distance = 5; + condition = "true"; + selection = ""; + class ACE_Teleport { + displayName = "Teleport to Rallypoint"; + distance = 4; + condition = QUOTE(side group _player == east); + statement = QUOTE([ARR_3(_player, side group _player, false)] call FUNC(teleportToRallypoint)); + showDisabled = 1; + priority = 1; + }; }; }; }; @@ -118,13 +128,18 @@ class CfgVehicles { init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_AAF_CO.paa'; _this call FUNC(initRallypoint)); }; class ACE_Actions : ACE_Actions { - class ACE_Teleport { - displayName = "Teleport to Rallypoint"; - distance = 4; - condition = QUOTE(side group _player == independent); - statement = QUOTE([ARR_3(_player, side group _player, false)] call FUNC(teleportToRallypoint)); - showDisabled = 1; - priority = 1; + class ACE_MainActions { + distance = 5; + condition = "true"; + selection = ""; + class ACE_Teleport { + displayName = "Teleport to Rallypoint"; + distance = 4; + condition = QUOTE(side group _player == independent); + statement = QUOTE([ARR_3(_player, side group _player, false)] call FUNC(teleportToRallypoint)); + showDisabled = 1; + priority = 1; + }; }; }; }; @@ -139,13 +154,17 @@ class CfgVehicles { init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_nato_CO.paa'; _this call FUNC(initRallypoint)); }; class ACE_Actions : ACE_Actions { - class ACE_Teleport { - displayName = "Teleport to Base"; - distance = 4; - condition = QUOTE(side group _player == west); - statement = QUOTE([ARR_3(_player, side group _player, true)] call FUNC(teleportToRallypoint)); - showDisabled = 1; - priority = 1; + class ACE_MainActions { + distance = 5; + condition = "true"; + class ACE_Teleport { + displayName = "Teleport to Base"; + distance = 4; + condition = QUOTE(side group _player == west); + statement = QUOTE([ARR_3(_player, side group _player, true)] call FUNC(teleportToRallypoint)); + showDisabled = 1; + priority = 1; + }; }; }; }; @@ -159,13 +178,17 @@ class CfgVehicles { init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_CSAT_CO.paa'; _this call FUNC(initRallypoint)); }; class ACE_Actions : ACE_Actions { - class ACE_Teleport { - displayName = "Teleport to Base"; - distance = 4; - condition = QUOTE(side group _player == east); - statement = QUOTE([ARR_3(_player, side group _player, true)] call FUNC(teleportToRallypoint)); - showDisabled = 1; - priority = 1; + class ACE_MainActions { + distance = 5; + condition = "true"; + class ACE_Teleport { + displayName = "Teleport to Base"; + distance = 4; + condition = QUOTE(side group _player == east); + statement = QUOTE([ARR_3(_player, side group _player, true)] call FUNC(teleportToRallypoint)); + showDisabled = 1; + priority = 1; + }; }; }; }; @@ -179,13 +202,17 @@ class CfgVehicles { init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_AAF_CO.paa'; _this call FUNC(initRallypoint)); }; class ACE_Actions : ACE_Actions { - class ACE_Teleport { - displayName = "Teleport to Base"; - distance = 4; - condition = QUOTE(side group _player == independent); - statement = QUOTE([ARR_3(_player, side group _player, true)] call FUNC(teleportToRallypoint)); - showDisabled = 1; - priority = 1; + class ACE_MainActions { + distance = 5; + condition = "true"; + class ACE_Teleport { + displayName = "Teleport to Base"; + distance = 4; + condition = QUOTE(side group _player == independent); + statement = QUOTE([ARR_3(_player, side group _player, true)] call FUNC(teleportToRallypoint)); + showDisabled = 1; + priority = 1; + }; }; }; }; diff --git a/addons/vehiclelock/CfgVehicles.hpp b/addons/vehiclelock/CfgVehicles.hpp index 79591280d8..2ffb4eee44 100644 --- a/addons/vehiclelock/CfgVehicles.hpp +++ b/addons/vehiclelock/CfgVehicles.hpp @@ -1,29 +1,34 @@ #define MACRO_LOCK_ACTIONS \ - class ACE_unlockVehicle { \ - displayName = "$STR_ACE_Vehicle_Action_UnLock"; \ - distance = 4; \ - condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(2,3)]}); \ - statement = QUOTE([ARR_3('SetVehicleLock', [_target], [ARR_2(_target,false)])] call EFUNC(common,targetEvent)); \ - showDisabled = 0; \ - priority = 0.3; \ - icon = QUOTE(PATHTOF(ui\key_menuIcon_ca.paa)); \ - }; \ - class ACE_lockVehicle { \ - displayName = "$STR_ACE_Vehicle_Action_Lock"; \ - distance = 4; \ - condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(0,1)]}); \ - statement = QUOTE([ARR_3('SetVehicleLock', [_target], [ARR_2(_target,true)])] call EFUNC(common,targetEvent)); \ - showDisabled = 0; \ - priority = 0.2; \ - icon = QUOTE(PATHTOF(ui\key_menuIcon_ca.paa)); \ - }; \ - class ACE_lockpickVehicle { \ - displayName = "$STR_ACE_Vehicle_Action_Lockpick"; \ - distance = 4; \ - condition = QUOTE([ARR_3(_player, _target, 'canLockpick')] call FUNC(lockpick)); \ - statement = QUOTE([ARR_3(_player, _target, 'startLockpick')] call FUNC(lockpick)); \ - showDisabled = 0; \ - priority = 0.1; \ + class ACE_MainActions { \ + selection = ""; \ + distance = 5; \ + condition = "true"; \ + class ACE_unlockVehicle { \ + displayName = "$STR_ACE_Vehicle_Action_UnLock"; \ + distance = 4; \ + condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(2,3)]}); \ + statement = QUOTE([ARR_3('SetVehicleLock', [_target], [ARR_2(_target,false)])] call EFUNC(common,targetEvent)); \ + showDisabled = 0; \ + priority = 0.3; \ + icon = QUOTE(PATHTOF(ui\key_menuIcon_ca.paa)); \ + }; \ + class ACE_lockVehicle { \ + displayName = "$STR_ACE_Vehicle_Action_Lock"; \ + distance = 4; \ + condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(0,1)]}); \ + statement = QUOTE([ARR_3('SetVehicleLock', [_target], [ARR_2(_target,true)])] call EFUNC(common,targetEvent)); \ + showDisabled = 0; \ + priority = 0.2; \ + icon = QUOTE(PATHTOF(ui\key_menuIcon_ca.paa)); \ + }; \ + class ACE_lockpickVehicle { \ + displayName = "$STR_ACE_Vehicle_Action_Lockpick"; \ + distance = 4; \ + condition = QUOTE([ARR_3(_player, _target, 'canLockpick')] call FUNC(lockpick)); \ + statement = QUOTE([ARR_3(_player, _target, 'startLockpick')] call FUNC(lockpick)); \ + showDisabled = 0; \ + priority = 0.1; \ + }; \ }; class CfgVehicles {