diff --git a/addons/interact_menu/XEH_clientInit.sqf b/addons/interact_menu/XEH_clientInit.sqf index d2231d8768d..02bc94688ca 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", "isNotSitting"]] 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", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Statement [1] call FUNC(keyDown) },{[1,false] call FUNC(keyUp)}, @@ -72,3 +68,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 16203494686..1539f8e2aa9 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/functions/fnc_compileMenuZeus.sqf b/addons/interact_menu/functions/fnc_compileMenuZeus.sqf new file mode 100644 index 00000000000..9dc212ac403 --- /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 50e911c878f..5bf156b69ed 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", "isNotSitting"]] call EFUNC(common,canInteractWith)) +}) exitWith {false}; + while {dialog} do { closeDialog 0; }; @@ -34,6 +39,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 +52,12 @@ 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";// + // 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: diff --git a/addons/interact_menu/functions/fnc_keyUp.sqf b/addons/interact_menu/functions/fnc_keyUp.sqf index 6f1d00276f6..02e2d4db01d 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 diff --git a/addons/interact_menu/functions/fnc_renderActionPoints.sqf b/addons/interact_menu/functions/fnc_renderActionPoints.sqf index 707c3a33494..8ca7f8aa339 100644 --- a/addons/interact_menu/functions/fnc_renderActionPoints.sqf +++ b/addons/interact_menu/functions/fnc_renderActionPoints.sqf @@ -118,24 +118,35 @@ _fnc_renderSelfActions = { } forEach _classActions; }; +_fnc_renderZeusActions = { + { + _action = _x; + [_this, _action, [0.5, 0.5]] 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 5ee698b547a..a844930a7cb 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"); diff --git a/addons/interact_menu/stringtable.xml b/addons/interact_menu/stringtable.xml index 67377290925..31fab217b22 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 @@ -242,4 +245,4 @@ Černý obraz - \ No newline at end of file + diff --git a/addons/interaction/ACE_ZeusActions.hpp b/addons/interaction/ACE_ZeusActions.hpp new file mode 100644 index 00000000000..913e7a7c856 --- /dev/null +++ b/addons/interaction/ACE_ZeusActions.hpp @@ -0,0 +1,268 @@ +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 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 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 = CSTRING(Zeus_Behaviour); + + class careless { + displayName = CSTRING(Zeus_Behaviour_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 = "$STR_aware"; + icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeBehaviour\aware_ca.paa"; + statement = "{ _x setBehaviour 'AWARE'; } forEach (curatorSelected select 1);"; + }; + class combat { + displayName = "$STR_combat"; + icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeBehaviour\combat_ca.paa"; + statement = "{ _x setBehaviour 'COMBAT'; } forEach (curatorSelected select 1);"; + }; + class 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 = CSTRING(Zeus_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 = CSTRING(Zeus_Formation); + + 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 = CSTRING(Zeus_Behaviour); + + class careless { + displayName = CSTRING(Zeus_Behaviour_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 = CSTRING(Zeus_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 = CSTRING(Zeus_Formation); + + 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 = "$STR_A3_RscDisplayCurator_ModeMarkers_tooltip"; + icon = "\A3\UI_F_Curator\Data\Displays\RscDisplayCurator\modeMarkers_ca.paa"; + }; +}; diff --git a/addons/interaction/config.cpp b/addons/interaction/config.cpp index 7a68b2c12af..0afb2fc0fe2 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 c1a9d463e9d..624e63a4241 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -815,10 +815,22 @@ Mohou hráči použít menu správy týmu? Výchozí: Ano - + 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. Správa týmu se skládá z: přidělení barev pro členy týmu, převzetí velení, připojení/odpojení. + + Behaviour + + + Careless + + + Formation + + + Speed Mode + - \ No newline at end of file +