Merge branch 'master' of https://github.com/KoffeinFlummi/ACE3 into ModuleIcons

This commit is contained in:
bux578 2015-03-24 19:12:23 +01:00
commit 60c50e0daf
232 changed files with 3717 additions and 1249 deletions

View File

@ -6,7 +6,7 @@
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"}; \
exceptions[] = {"isNotDragging"}; \
showDisabled = 0; \
priority = 0; \
icon = PATHTOF(UI\attach_ca.paa); \
@ -16,7 +16,7 @@
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"}; \
exceptions[] = {"isNotDragging"}; \
showDisabled = 0; \
priority = 0; \
icon = PATHTOF(UI\detach_ca.paa); \
@ -57,7 +57,7 @@ class CfgVehicles {
displayName = "$STR_ACE_Attach_AttachDetach";
condition = QUOTE(([ARR_3(_player, _player, '')] call FUNC(canAttach)));
statement = QUOTE( [ARR_2(_player, _player)] call FUNC(openAttachUI); );
exceptions[] = {"ACE_Drag_isNotDragging"};
exceptions[] = {"isNotDragging"};
showDisabled = 0;
priority = 5;
icon = PATHTOF(UI\attach_ca.paa);
@ -67,7 +67,7 @@ class CfgVehicles {
displayName = "$STR_ACE_Attach_Detach";
condition = QUOTE(([ARR_2(_player, _player)] call FUNC(canDetach)));
statement = QUOTE( [ARR_2(_player, _player)] call FUNC(detach) );
exceptions[] = {"ACE_Drag_isNotDragging"};
exceptions[] = {"isNotDragging"};
showDisabled = 0;
priority = 5;
icon = PATHTOF(UI\detach_ca.paa);

View File

@ -6,7 +6,7 @@ class CfgPatches {
weapons[] = {"ACE_IR_Strobe_Item"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_interaction"};
author[] = {"KoffeinFlummi","eRazeri","CAA-Picard"};
author[] = {"KoffeinFlummi","eRazeri","esteldunedain"};
authorUrl = "https://github.com/KoffeinFlummi/";
VERSION_CONFIG;
};

View File

@ -1,5 +1,5 @@
/*
* Author: eRazeri and CAA-Picard
* Author: eRazeri and esteldunedain
* Attach an item to the unit
*
* Arguments:

View File

@ -1,5 +1,5 @@
/*
* Author: eRazeri and CAA-Picard
* Author: eRazeri and esteldunedain
* Detach an item from a unit
*
* Arguments:

View File

@ -39,7 +39,7 @@ class CfgVehicles {
distance = 4;
condition = QUOTE([ARR_2(_player, _target)] call FUNC(canStopEscorting));
statement = QUOTE([ARR_3(_player,_target, false)] call FUNC(doEscortCaptive));
exceptions[] = {QGVAR(isNotEscorting)};
exceptions[] = {"isNotEscorting"};
showDisabled = 0;
icon = QUOTE(PATHTOF(UI\captive_ca.paa));
priority = 2.3;
@ -50,7 +50,7 @@ class CfgVehicles {
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)};
exceptions[] = {"isNotEscorting"};
showDisabled = 0;
icon = QUOTE(PATHTOF(UI\captive_ca.paa));
priority = 2.2;
@ -74,7 +74,7 @@ class CfgVehicles {
displayName = "$STR_ACE_Captives_StopEscorting";
condition = QUOTE([ARR_2(_player, objNull)] call FUNC(canStopEscorting));
statement = QUOTE([ARR_3(_player,objNull, false)] call FUNC(doEscortCaptive));
exceptions[] = {QGVAR(isNotEscorting)};
exceptions[] = {"isNotEscorting"};
showDisabled = 0;
priority = 2.3;
hotkey = "C";
@ -91,7 +91,7 @@ class CfgVehicles {
displayName = "$STR_ACE_Captives_StopSurrendering";
condition = QUOTE([ARR_2(_player, false)] call FUNC(canSurrender));
statement = QUOTE([ARR_2(_player, false)] call FUNC(setSurrendered));
exceptions[] = {QGVAR(isNotSurrendering)};
exceptions[] = {"isNotSurrendering"};
showDisabled = 0;
priority = 0;
};
@ -107,7 +107,7 @@ class CfgVehicles {
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)}; \
exceptions[] = {"isNotEscorting"}; \
showDisabled = 0; \
priority = 1.2; \
hotkey = "L"; \

View File

@ -183,3 +183,4 @@ _vehicle setFuel _fuelLevel;
["displayTextPicture", FUNC(displayTextPicture)] call FUNC(addEventhandler);
["notOnMap", {!visibleMap}] call FUNC(addCanInteractWithCondition);
["isNotInside", {_this select 0 == _this select 1 || {vehicle (_this select 0) == _this select 0}}] call FUNC(addCanInteractWithCondition);

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
* Converts ASL to Arma "Position"
*
* Arguments:

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
*
* Add line to draw on debug
*

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
* Adds a new setting at runtime, with all it's metadata.
* If has only local effects.
*

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard and Jaynus
* Author: esteldunedain and Jaynus
* Returns the result of the function and caches it up to a given time or event
*
* Arguments:

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
*
* Returns a orthonormal system of reference aligned with the supplied vector
*

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
* Deletes a cached result
*
* Arguments:

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
*
* Executes a code on the next frame
*

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
* Returns the metadata of a setting if it exists
*
* Arguments:

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
* Load the user setable settings from the user profile.
* Config < Server UserConfig < Mission Config < Client settings
*

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
* Load the parameters on the server.
* Config < Server UserConfig < Mission Config
*

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
* Converts Arma "Position" to ASL
*
* Arguments:

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
*
* Reads a setting value from a module, set it and force it. Logs if the setting is missing from the module.
* Must be called on the server, effect is global.

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
* Removes a magazine from the unit that has an specific ammo count
*
* Argument:

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard, based on Killzone-Kid code
* Author: esteldunedain, based on Killzone-Kid code
*
* Removes quotation marks to avoid exploits and optionally html tags from text to avoid conflicts with structured text.
*

View File

@ -1,4 +1,4 @@
// by CAA-Picard
// by esteldunedain
#include "script_component.hpp"
if (isServer) then {

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
*
* Sets the value of an ACE_Parameter and makes it public.
*

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
* Change the value of an existing setting if it was not previously forced. Force if neccesary.
* If executed on clients it has local effect.
* If executed on server it can have global effect if the last parameter is set to true.

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
* Load a setting from config if it was not previosuly forced. Force if neccesary.
*
* Arguments:

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
* Schedules the publishment of an object variable to reduce network overhead
*
* Arguments:

View File

@ -1,5 +1,5 @@
/*
Author: commy2, CAA-Picard
Author: commy2, esteldunedain
Description:
Converts number to hexadecimal number

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
*
* Executes a code once with a given game time delay, using a PFH
*

View File

@ -7,7 +7,7 @@ class CfgVehicles {
displayName = $STR_ACE_Explosives_Menu;
condition = QUOTE(!(_player getVariable [ARR_2('ace_explosives_PlantingExplosive',false)]));
statement = "";
exceptions[] = {"ACE_Interaction_isNotSwimming"};
exceptions[] = {"isNotSwimming"};
showDisabled = 1;
priority = 4;
icon = PATHTOF(UI\Explosives_Menu_ca.paa);
@ -17,7 +17,7 @@ class CfgVehicles {
displayName = $STR_ACE_Explosives_Detonate;
condition = QUOTE([_player] call FUNC(canDetonate));
statement = QUOTE([_player] call FUNC(openTransmitterUI););
exceptions[] = {"ACE_Interaction_isNotSwimming"};
exceptions[] = {"isNotSwimming"};
showDisabled = 1;
icon = PATHTOF(UI\Explosives_Menu_ca.paa);
priority = 2;
@ -27,7 +27,7 @@ class CfgVehicles {
displayName = $STR_ACE_Explosives_Place;
condition = QUOTE((vehicle _player == _player) and {[_player] call FUNC(hasExplosives)});
statement = QUOTE([_player] call FUNC(openPlaceUI););
exceptions[] = {"ACE_Interaction_isNotSwimming"};
exceptions[] = {"isNotSwimming"};
showDisabled = 1;
icon = PATHTOF(UI\Place_Explosive_ca.paa);
priority = 1;
@ -37,7 +37,7 @@ class CfgVehicles {
displayName = $STR_ACE_Explosives_Defuse;
condition = QUOTE([_player] call FUNC(canDefuse));
statement = QUOTE([ARR_2(_player,EGVAR(Interaction,Target))] call FUNC(startDefuse););
exceptions[] = {"ACE_Interaction_isNotSwimming"};
exceptions[] = {"isNotSwimming"};
showDisabled = 0;
icon = PATHTOF(UI\Defuse_ca.paa);
priority = 0.8;
@ -47,7 +47,7 @@ class CfgVehicles {
displayName = $STR_ACE_Explosives_cellphone_displayName;
condition = "('ACE_Cellphone' in (items ace_player))";
statement = "closeDialog 0;createDialog 'Rsc_ACE_PhoneInterface';";
exceptions[] = {"ACE_Interaction_isNotSwimming"};
exceptions[] = {"isNotSwimming"};
showDisabled = 0;
icon = PATHTOF(Data\UI\Cellphone_UI.paa);
priority = 0.8;

View File

@ -3,16 +3,16 @@
<Project name="ACE">
<Package name="Explosives">
<Key ID="STR_ACE_Explosives_Menu">
<English>Explosives &gt;&gt;</English>
<German>Sprengstoffe &gt;&gt;</German>
<Spanish>Explosivos &gt;&gt;</Spanish>
<Polish>Ładunki wybuchowe &gt;&gt;</Polish>
<French>Explosifs &gt;&gt;</French>
<Czech>Výbušniny &gt;&gt;</Czech>
<Italian>Esplosivi &gt;&gt;</Italian>
<Hungarian>Robbanóanyagok &gt;&gt;</Hungarian>
<Portuguese>Explosivos &gt;&gt;</Portuguese>
<Russian>Взрывчатка &gt;&gt;</Russian>
<English>Explosives</English>
<German>Sprengstoffe</German>
<Spanish>Explosivos</Spanish>
<Polish>Ładunki wybuchowe</Polish>
<French>Explosifs</French>
<Czech>Výbušniny</Czech>
<Italian>Esplosivi</Italian>
<Hungarian>Robbanóanyagok</Hungarian>
<Portuguese>Explosivos</Portuguese>
<Russian>Взрывчатка</Russian>
</Key>
<Key ID="STR_ACE_Explosives_Place">
<English>Place &gt;&gt;</English>

View File

@ -6,7 +6,7 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"};
author[] = {"KoffeinFlummi", "CAA-Picard"};
author[] = {"KoffeinFlummi", "esteldunedain"};
authorUrl = "https://github.com/KoffeinFlummi/";
VERSION_CONFIG;
};

View File

@ -1,5 +1,5 @@
/*
* Author: KoffeinFlummi and CAA-Picard
* Author: KoffeinFlummi and esteldunedain
* Calculates average g-forces and triggers g-effects
*
* Argument:

View File

@ -6,7 +6,7 @@ class CfgPatches {
weapons[] = {"ACE_EarPlugs"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common", "ace_interaction"};
author[] = {"KoffeinFlummi", "CAA-Picard", "HopeJ", "commy2"};
author[] = {"KoffeinFlummi", "esteldunedain", "HopeJ", "commy2"};
authorUrl = "https://github.com/KoffeinFlummi/";
VERSION_CONFIG;
};

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
* Initializes the Map module.
*
* Arguments:

View File

@ -1,5 +1,5 @@
/*
* Author: commy2 and CAA-Picard
* Author: commy2 and esteldunedain
* Updates and applys the current deafness. Called every 0.1 sec from a PFEH.
*
* Arguments:

View File

@ -1,10 +1,19 @@
//XEH_clientInit.sqf
#include "script_component.hpp"
_fnc = {
_this call FUNC(render);
// Install the render EH on the main display
addMissionEventHandler ["Draw3D", DFUNC(render)];
// This spawn is probably worth keeping, as pfh don't work natively on the briefing screen and IDK how reliable the hack we implemented for them is.
// The thread dies as soon as the mission start, so it's not really compiting for scheduler space.
[] spawn {
// Wait until the map display is detected
waitUntil {(!isNull findDisplay 12)};
// Install the render EH on the map screen
((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["Draw", DFUNC(render)];
};
addMissionEventHandler ["Draw3D", _fnc];
["ACE3", QGVAR(InteractKey), "Interact Key",
{_this call FUNC(keyDown)},

View File

@ -20,6 +20,7 @@ PREP(render);
PREP(renderBaseMenu);
PREP(renderIcon);
PREP(renderMenu);
PREP(renderSelector);
PREP(splitPath);
GVAR(keyDown) = false;

View File

@ -6,7 +6,7 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"};
author[] = {"NouberNou", "CAA-Picard"};
author[] = {"NouberNou", "esteldunedain"};
authorUrl = "";
VERSION_CONFIG;
};

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
* Insert an ACE action to a class, under a certain path
* Note: This function is NOT global.
*

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
* Insert an ACE action to an object, under a certain config path
* Note: This function is NOT global.
*

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
* Collect a entire tree of active actions
*
* Argument:

View File

@ -1,5 +1,5 @@
/*
* Author: NouberNou and CAA-Picard
* Author: NouberNou and esteldunedain
* Compile the action menu from config for an object's class
*
* Argument:

View File

@ -1,5 +1,5 @@
/*
* Author: NouberNou and CAA-Picard
* Author: NouberNou and esteldunedain
* Compile the self action menu from config for an object's class
*
* Argument:
@ -86,8 +86,11 @@ _actions = [
"ACE_SelfActions",
"Self Actions",
"\a3\ui_f\data\IGUI\Cfg\Actions\eject_ca.paa",
{},
{ true },
{
// Dummy statement so it's not collapsed when there's no available actions
true
},
{[ACE_player, objNull, ["isNotDragging", "isNotCarrying", "isNotSwimming", "notOnMap", "isNotEscorting", "isNotSurrendering"]] call EFUNC(common,canInteractWith)},
{},
[],
"Spine3",

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
* Creates an isolated ACE action
* Note: This function is NOT global.
*

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
* Return action point from path
* Note: This function is NOT global.
*

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
* Check if the first path is a subpath of the other
*
* Argument:

View File

@ -13,6 +13,9 @@
#include "script_component.hpp"
if(!GVAR(keyDown)) then {
while {dialog} do {
closeDialog 0;
};
// Only interact with others if on foot
if (vehicle ACE_player != ACE_player) exitWith {};

View File

@ -13,6 +13,10 @@
#include "script_component.hpp"
if(!GVAR(keyDownSelfAction)) then {
while {dialog} do {
closeDialog 0;
};
GVAR(keyDownSelfAction) = true;
GVAR(keyDown) = false;
GVAR(keyDownTime) = diag_tickTime;

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
* Removes an action from a class
*
* Argument:

View File

@ -1,5 +1,5 @@
/*
* Author: commy2, NouberNou and CAA-Picard
* Author: commy2, NouberNou and esteldunedain
* Removes an action from an object
*
* Argument:

View File

@ -1,5 +1,5 @@
/*
* Author: NouberNou and CAA-Picard
* Author: NouberNou and esteldunedain
* Render all available nearby interactions
*
* Argument:
@ -12,6 +12,8 @@
*/
#include "script_component.hpp"
BEGIN_COUNTER(fnc_render);
private ["_cursorPos1", "_cursorPos2", "_cursorVec", "_p1", "_p2", "_p", "_v", "_cp", "_forEachIndex", "_renderTargets", "_x", "_cursorScreenPos", "_closestDistance", "_closestSelection", "_pos", "_sPos", "_disSq", "_closest", "_cTime", "_delta", "_foundTarget", "_misMatch", "_hoverPath", "_i"];
_foundTarget = false;
_cursorPos1 = positionCameraToWorld [0, 0, 0];
@ -97,7 +99,11 @@ if (GVAR(keyDown)) then {
{
_action = _x;
_pos = (((positionCameraToWorld [0, 0, 0]) call EFUNC(common,positionToASL)) vectorAdd GVAR(selfMenuOffset)) call EFUNC(common,ASLToPosition);
_pos = if !(visibleMap) then {
(((positionCameraToWorld [0, 0, 0]) call EFUNC(common,positionToASL)) vectorAdd GVAR(selfMenuOffset)) call EFUNC(common,ASLToPosition)
} else {
[0.5, 0.5]
};
[_target, _action, _pos] call FUNC(renderBaseMenu);
} forEach _classActions;
};
@ -107,7 +113,7 @@ if (GVAR(keyDown)) then {
if(GVAR(keyDown) || GVAR(keyDownSelfAction)) then {
// Draw the red selector only when there's no cursor
if !(uiNamespace getVariable [QGVAR(cursorMenuOpened),false]) then {
drawIcon3D ["\a3\ui_f\data\IGUI\Cfg\Cursors\selected_ca.paa", [1,0,0,1], _cursorPos2, 1, 1, 0, "", 0.5, 0.025, "TahomaB"];
[[0.5,0.5], "\a3\ui_f\data\IGUI\Cfg\Cursors\selected_ca.paa"] call FUNC(renderSelector);
};
_cursorScreenPos = [worldToScreen _cursorPos2, GVAR(cursorPos)] select (uiNamespace getVariable [QGVAR(cursorMenuOpened),false]);
@ -115,15 +121,12 @@ if(GVAR(keyDown) || GVAR(keyDownSelfAction)) then {
_closestDistance = 1000000;
_closestSelection = -1;
{
_pos = _x select 1;
_sPos = worldToScreen _pos;
if(count _sPos > 0) then {
_sPos = _x select 1;
_disSq = (((_cursorScreenPos select 0) - (_sPos select 0))^2 + ((_cursorScreenPos select 1) - (_sPos select 1))^2);
if(_disSq < 0.0125 && _disSq < _closestDistance) then {
_closestDistance = _disSq;
_closestSelection = _forEachIndex;
};
};
} forEach GVAR(currentOptions);
@ -131,15 +134,14 @@ if(GVAR(keyDown) || GVAR(keyDownSelfAction)) then {
_closest = GVAR(currentOptions) select _closestSelection;
_pos = _closest select 1;
_sPos = _closest select 1;
_cTime = diag_tickTime;
_delta = _cTime - GVAR(lastTime);
GVAR(lastTime) = _cTime;
GVAR(rotationAngle) = GVAR(rotationAngle) + (180*_delta);
if(GVAR(rotationAngle) > 360) then {
GVAR(rotationAngle) = GVAR(rotationAngle) - 360;
};
drawIcon3D ["\a3\ui_f\data\IGUI\Cfg\Cursors\selectover_ca.paa", [1,0,0,.75], _pos, 0.6*SafeZoneW, 0.6*SafeZoneW, GVAR(rotationAngle), "", 0.5, 0.025, "TahomaB"];
GVAR(rotationAngle) = (GVAR(rotationAngle) + (270*_delta)) mod 360;
[_sPos, format [QUOTE(PATHTOF(ui\selector%1.paa)), floor (((abs GVAR(rotationAngle)) mod 90) / 6)]] call FUNC(renderSelector);
_foundTarget = true;
GVAR(actionSelected) = true;
GVAR(selectedAction) = (_closest select 0) select 1;
@ -207,3 +209,5 @@ for "_i" from GVAR(iconCount) to (count GVAR(iconCtrls))-1 do {
};
GVAR(iconCtrls) resize GVAR(iconCount);
GVAR(iconCount) = 0;
END_COUNTER(fnc_render);

View File

@ -1,11 +1,11 @@
/*
* Author: NouberNou and CAA-Picard
* Author: NouberNou and esteldunedain
* Render the interaction menu for a base action
*
* Argument:
* 0: Object <OBJECT>
* 1: Action node <ARRAY>
* 2: 3D position <ARRAY> (Optional)
* 2: 3D position or 2D position <ARRAY> (Optional)
*
* Return value:
* Was the menu rendered <BOOL>
@ -14,6 +14,8 @@
*/
#include "script_component.hpp"
BEGIN_COUNTER(fnc_renderBaseMenu)
private ["_distance","_pos","_weaponDir","_ref","_cameraPos","_sPos","_activeActionTree"];
EXPLODE_2_PVT(_this,_object,_baseActionNode);
@ -41,15 +43,16 @@ if((count _this) > 2) then {
_pos = _pos vectorAdd ((visiblePositionASL _object) vectorDiff (getPosASL _object));
};
_cameraToActionVec = (_pos call EFUNC(common,positionToASL)) vectorDiff ((positionCameraToWorld [0,0,0]) call EFUNC(common,positionToASL));
GVAR(refSystem) = _cameraToActionVec call EFUNC(common,createOrthonormalReference);
// For non-self actions, exit if the action is too far away
if (GVAR(keyDown) &&
{(ACE_player modelToWorld (ACE_player selectionPosition "pilot")) distance _pos >= _distance}) exitWith {false};
// Exit if the action is behind you
_sPos = worldToScreen _pos;
_sPos = if (count _pos != 2) then {
worldToScreen _pos
} else {
_pos
};
if(count _sPos == 0) exitWith {false};
// Exit if the action is off screen
@ -57,6 +60,8 @@ if ((_sPos select 0) < safeZoneXAbs || (_sPos select 0) > safeZoneXAbs + safeZon
if ((_sPos select 1) < safeZoneY || (_sPos select 1) > safeZoneY + safeZoneH) exitWith {false};
BEGIN_COUNTER(fnc_collectActiveActionTree)
// Collect active tree
private "_uid";
_uid = format [QGVAR(ATCache_%1), _actionData select 0];
@ -66,6 +71,8 @@ _activeActionTree = [
_object, _uid, 1.0, "interactMenuClosed"
] call EFUNC(common,cachedCall);
END_COUNTER(fnc_collectActiveActionTree)
/*
diag_log "Printing: _activeActionTree";
_fnc_print = {
@ -83,6 +90,12 @@ if (count _activeActionTree == 0) exitWith {false};
//EXPLODE_2_PVT(_activeActionTree,_actionData,_actionChildren);
[[], _activeActionTree, _pos, [180,360]] call FUNC(renderMenu);
BEGIN_COUNTER(fnc_renderMenus);
[[], _activeActionTree, _sPos, [180,360]] call FUNC(renderMenu);
END_COUNTER(fnc_renderMenus);
END_COUNTER(fnc_renderBaseMenu)
true

View File

@ -1,11 +1,11 @@
/*
* Author: NouberNou and CAA-Picard
* Author: NouberNou and esteldunedain
* Render a single interaction icon
*
* Argument:
* 0: Text <STRING>
* 1: Color <STRING>
* 2: 3d position ASL <ARRAY>
* 2: 2d position <ARRAY>
* 3: ?
* 4: ?
* 5: ?
@ -18,30 +18,25 @@
*/
#include "script_component.hpp"
#define DEFAULT_ICON QUOTE(\z\ace\addons\interaction\ui\dot_ca.paa)
private ["_color", "_pos", "_sPos", "_ctrl", "_icon"];
private ["_color", "_sPos", "_ctrl", "_icon"];
_text = _this select 0;
_color = _this select 1;
_pos = _this select 2;
_sPos = _this select 2;
_icon = _this select 6;
//systemChat format ["Icon %1 - %2,%3,%4", _text, _pos select 0, _pos select 1, _pos select 2];
//systemChat format ["Icon %1 - %2,%3", _text, _sPos select 0, _sPos select 1];
_sPos = worldToScreen _pos;
if(count _sPos > 0) then {
if(GVAR(iconCount) > (count GVAR(iconCtrls))-1) then {
_displayNum = [46,91919] select (uiNamespace getVariable [QGVAR(cursorMenuOpened),false]);
//systemChat format ["Displaynum: %1", _displayNum];
if(GVAR(iconCount) > (count GVAR(iconCtrls))-1) then {
_displayNum = [[46, 12] select visibleMap,91919] select (uiNamespace getVariable [QGVAR(cursorMenuOpened),false]);
GVAR(iconCtrls) pushBack ((findDisplay _displayNum) ctrlCreate ["RscStructuredText", 54021+GVAR(iconCount)]);
};
_ctrl = GVAR(iconCtrls) select GVAR(iconCount);
GVAR(iconCount) = GVAR(iconCount) + 1;
if(_icon == "") then {
_icon = DEFAULT_ICON;
};
_text = format ["<img image='%1' color='%2' align='center'/><br/><t color ='%3' size='0.75' align='center'>%4</t>", _icon, _color, _color, _text];
_ctrl ctrlSetStructuredText (parseText _text);
_ctrl ctrlSetPosition [(_sPos select 0)-(0.2*SafeZoneW), (_sPos select 1)-(0.0095*SafeZoneW), 0.4*SafeZoneW, 0.035*SafeZoneW];
//_ctrl ctrlSetBackgroundColor [1, 0, 0, 0.1];
_ctrl ctrlCommit 0;
};
_ctrl = GVAR(iconCtrls) select GVAR(iconCount);
GVAR(iconCount) = GVAR(iconCount) + 1;
if(_icon == "") then {
_icon = DEFAULT_ICON;
};
_text = format ["<img image='%1' color='%2' align='center'/><br/><t color='%3' size='0.80' align='center'>%4</t>", _icon, _color, _color, _text];
_ctrl ctrlSetStructuredText (parseText _text);
_ctrl ctrlSetPosition [(_sPos select 0)-(0.125*SafeZoneW), (_sPos select 1)-(0.0095*SafeZoneW), 0.25*SafeZoneW, 0.1*SafeZoneW];
//_ctrl ctrlSetBackgroundColor [1, 0, 0, 0.1];
_ctrl ctrlCommit 0;

View File

@ -1,11 +1,11 @@
/*
* Author: NouberNou and CAA-Picard
* Author: NouberNou and esteldunedain
* Render an interaction menu and it's children recursively
*
* Argument:
* 0: Parent path <ARRAY>
* 1: Action data <ARRAY>
* 2: 3D position <ARRAY>
* 2: 2D position <ARRAY>
* 3: Angle range available for rendering <ARRAY>
*
* Return value:
@ -17,12 +17,14 @@
private ["_menuInSelectedPath", "_path", "_menuDepth", "_currentRenderDepth", "_x", "_offset", "_newPos", "_forEachIndex"];
EXPLODE_4_PVT(_this,_parentPath,_action,_pos,_angles);
EXPLODE_4_PVT(_this,_parentPath,_action,_sPos,_angles);
EXPLODE_3_PVT(_action,_actionData,_activeChildren,_actionObject);
EXPLODE_2_PVT(_angles,_centerAngle,_maxAngleSpan);
_menuDepth = (count GVAR(menuDepthPath));
//BEGIN_COUNTER(constructing_paths);
// Store path to action
_path = +_parentPath;
_path pushBack [_actionData select 0,_actionObject];
@ -38,24 +40,39 @@ _menuInSelectedPath = true;
};
} forEach _path;
//END_COUNTER(constructing_paths);
//BEGIN_COUNTER(constructing_colors);
// Render icon
// ARGB Color (First Hex Pair is transparancy)
_color = "#FFFFFFFF";
if(!_menuInSelectedPath) then { //_menuDepth > 0 &&
if(!_menuInSelectedPath) then {
if (_menuDepth > 0) then {
_color = format ["#%1FFFFFF", [255 * ((((count _path) - 1)/_menuDepth) max 0.25)] call EFUNC(common,toHex)];
} else {
_color = format ["#%1FFFFFF", [255 * 0.75] call EFUNC(common,toHex)];
};
};
[_actionData select 1, _color, _pos, 1, 1, 0, _actionData select 2, 0.5, 0.025, "TahomaB"] call FUNC(renderIcon);
//END_COUNTER(constructing_colors);
//BEGIN_COUNTER(fnc_renderIcons);
[_actionData select 1, _color, _sPos, 1, 1, 0, _actionData select 2, 0.5, 0.025, "TahomaB"] call FUNC(renderIcon);
//END_COUNTER(fnc_renderIcons);
//BEGIN_COUNTER(currentOptions);
// Add the action to current options
GVAR(currentOptions) pushBack [_this, _pos, _path];
GVAR(currentOptions) pushBack [_this, _sPos, _path];
//END_COUNTER(currentOptions);
// Exit without rendering children if it isn't
if !(_menuInSelectedPath) exitWith {true};
//BEGIN_COUNTER(children);
private ["_numChildren","_angleSpan","_angle","_angleInterval","_scale","_offset"];
_numChildren = count _activeChildren;
_angleSpan = _maxAngleSpan min (55 * ((_numChildren) - 1));
@ -68,14 +85,14 @@ if (_angleSpan < 360) then {
_angleInterval = _angleSpan / (_numChildren - 1);
};
} else {
_angleSpan / (_numChildren);
_angleInterval = _angleSpan / (_numChildren);
};
if (_numChildren == 1) then {
_angleInterval = 60;
_angleInterval = 55;
};
// Scale menu based on the amount of children
_scale = GVAR(menuScale) * (((0.8 * (0.46 / sin (0.5 * _angleInterval))) min 1.4) max 0.5);
_scale = 0.17 * (((0.8 * (0.46 / sin (0.5 * _angleInterval))) min 1.1) max 0.5);
// Animate menu scale
if (_menuInSelectedPath && (_menuDepth == count _path)) then {
_scale = _scale * (0.3 + 0.7 * (((diag_tickTime - GVAR(expandedTime)) * 8) min 1));
@ -83,17 +100,18 @@ if (_menuInSelectedPath && (_menuDepth == count _path)) then {
_target = _actionObject;
_player = ACE_player;
//END_COUNTER(children);
_angle = _centerAngle - _angleSpan / 2;
{
//BEGIN_COUNTER(children);
private ["_offset","_newPos"];
_offset = ((GVAR(refSystem) select 1) vectorMultiply (-_scale * cos _angle)) vectorAdd
((GVAR(refSystem) select 2) vectorMultiply (-_scale * sin _angle));
_newPos = ((_pos call EFUNC(common,positionToASL)) vectorAdd _offset) call EFUNC(common,ASLToPosition);
_newPos = [(_sPos select 0) -_scale * cos _angle,
(_sPos select 1) +_scale * (sin _angle) * 4/3];
//drawLine3D [_pos, _newPos, [1,0,0,0.8]];
[_path, _x, _newPos, [_angle, 140]] call FUNC(renderMenu);
//END_COUNTER(children);
[_path, _x, _newPos, [_angle, 150]] call FUNC(renderMenu);
_angle = _angle + _angleInterval;
} forEach _activeChildren;

View File

@ -0,0 +1,30 @@
/*
* Author: esteldunedain
* Render a single interaction icon
*
* Argument:
* 0: 2d position <ARRAY>
* 1: Icon <STRING>
*
* Return value:
* None
*
* Public: No
*/
#include "script_component.hpp"
EXPLODE_2_PVT(_this,_sPos,_icon);
if(GVAR(iconCount) > (count GVAR(iconCtrls))-1) then {
_displayNum = [[46, 12] select visibleMap,91919] select (uiNamespace getVariable [QGVAR(cursorMenuOpened),false]);
GVAR(iconCtrls) pushBack ((findDisplay _displayNum) ctrlCreate ["RscStructuredText", 54021+GVAR(iconCount)]);
};
private "_ctrl";
_ctrl = GVAR(iconCtrls) select GVAR(iconCount);
GVAR(iconCount) = GVAR(iconCount) + 1;
_ctrl ctrlSetStructuredText (parseText format ["<img image='%1' color='#FF0000' size='1.6' align='center'/>", _icon]);
_ctrl ctrlSetPosition [(_sPos select 0)-(0.05*SafeZoneW), (_sPos select 1)-(0.014*SafeZoneW), 0.1*SafeZoneW, 0.035*SafeZoneW];
//_ctrl ctrlSetBackgroundColor [1, 0, 0, 0.1];
_ctrl ctrlCommit 0;

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
* Take full path and split it between parent path and action name
*
* Argument:

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -405,6 +405,7 @@ class CfgVehicles {
icon = ""; // @todo
enableInside = 1;
hotkey = "E";
exceptions[] = {"notOnMap"};
};
};
};

View File

@ -1,4 +1,4 @@
// by commy2 and CAA-Picard
// by commy2 and esteldunedain
#include "script_component.hpp"

View File

@ -6,7 +6,7 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_interact_menu"};
author[] = {"commy2", "KoffeinFlummi", "CAA-Picard", "bux578"};
author[] = {"commy2", "KoffeinFlummi", "esteldunedain", "bux578"};
authorUrl = "https://github.com/commy2/";
VERSION_CONFIG;
};

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
* Mount unit actions inside passenger submenu
*
* Argument:

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
* Create one action per passenger
*
* Argument:

View File

@ -3,28 +3,28 @@
<Project name="ACE">
<Package name="Interaction">
<Key ID="STR_ACE_Interaction_MainAction">
<English>Interactions &gt;&gt;</English>
<English>Interactions</English>
</Key>
<Key ID="STR_ACE_Interaction_Torso">
<English>Torso &gt;&gt;</English>
<English>Torso</English>
</Key>
<Key ID="STR_ACE_Interaction_Head">
<English>Head &gt;&gt;</English>
<English>Head</English>
</Key>
<Key ID="STR_ACE_Interaction_ArmLeft">
<English>Left Arm &gt;&gt;</English>
<English>Left Arm</English>
</Key>
<Key ID="STR_ACE_Interaction_ArmRight">
<English>Right Arm &gt;&gt;</English>
<English>Right Arm</English>
</Key>
<Key ID="STR_ACE_Interaction_LegLeft">
<English>Left Leg &gt;&gt;</English>
<English>Left Leg</English>
</Key>
<Key ID="STR_ACE_Interaction_LegRight">
<English>Right Leg &gt;&gt;</English>
<English>Right Leg</English>
</Key>
<Key ID="STR_ACE_Interaction_Weapon">
<English>Weapon &gt;&gt;</English>
<English>Weapon</English>
</Key>
<Key ID="STR_ACE_Interaction_InteractionMenu">
<English>Interaction Menu</English>
@ -183,16 +183,16 @@
<Italian>&lt;&lt; Indietro</Italian>
</Key>
<Key ID="STR_ACE_Interaction_Gestures">
<English>Gestures &gt;&gt;</English>
<German>Gesten &gt;&gt;</German>
<Spanish>Gestos &gt;&gt;</Spanish>
<Polish>Gesty &gt;&gt;</Polish>
<Czech>Gesta &gt;&gt;</Czech>
<French>Signaux &gt;&gt;</French>
<Russian>Жесты &gt;&gt;</Russian>
<Hungarian>Kézjelek &gt;&gt;</Hungarian>
<Portuguese>Gestos &gt;&gt;</Portuguese>
<Italian>Segnali gestuali &gt;&gt;</Italian>
<English>Gestures</English>
<German>Gesten</German>
<Spanish>Gestos</Spanish>
<Polish>Gesty</Polish>
<Czech>Gesta</Czech>
<French>Signaux</French>
<Russian>Жесты</Russian>
<Hungarian>Kézjelek</Hungarian>
<Portuguese>Gestos</Portuguese>
<Italian>Segnali gestuali</Italian>
</Key>
<Key ID="STR_ACE_Interaction_Gestures_Attack">
<English>Attack</English>
@ -435,16 +435,16 @@
<Italian>A Terra!</Italian>
</Key>
<Key ID="STR_ACE_Interaction_TeamManagement">
<English>Team Management &gt;&gt;</English>
<German>Team Management &gt;&gt;</German>
<Spanish>Gestión de equipo &gt;&gt;</Spanish>
<French>Gestion d'équipe &gt;&gt;</French>
<Polish>Zarządzanie oddziałem &gt;&gt;</Polish>
<Czech>Správa týmu &gt;&gt;</Czech>
<Russian>Управление группой &gt;&gt;</Russian>
<Portuguese>Gerenciamento de Equipe &gt;&gt;</Portuguese>
<Italian>Organizzazione Squadra &gt;&gt;</Italian>
<Hungarian>Csapat kezelés &gt;&gt;</Hungarian>
<English>Team&lt;br/&gt;Management</English>
<German>Team&lt;br/&gt;Management</German>
<Spanish>Gestión&lt;br/&gt;de equipo</Spanish>
<French>Gestion&lt;br/&gt;d'équipe</French>
<Polish>Zarządzanie&lt;br/&gt;oddziałem</Polish>
<Czech>Správa&lt;br/&gt;týmu</Czech>
<Russian>Управление&lt;br/&gt;группой</Russian>
<Portuguese>Gerenciamento&lt;br/&gt;de Equipe</Portuguese>
<Italian>Organizzazione&lt;br/&gt;Squadra</Italian>
<Hungarian>Csapat&lt;br/&gt;kezelés</Hungarian>
</Key>
<Key ID="STR_ACE_Interaction_TeamRED">
<English>Red</English>
@ -495,52 +495,52 @@
<Hungarian>Sárga</Hungarian>
</Key>
<Key ID="STR_ACE_Interaction_JoinTeamRed">
<English>Join Team Red</English>
<German>Team Rot beitreten</German>
<Spanish>Unirse al equipo rojo</Spanish>
<French>Rejoindre Rouge</French>
<Polish>Dołącz do drużyny czerwonej</Polish>
<Czech>Připojit do Červeného Týmu</Czech>
<Russian>Присоединиться к красной группе</Russian>
<Portuguese>Unir-se à Equipe Vermelha</Portuguese>
<Italian>Entra nella Squadra Rossa</Italian>
<Hungarian>Csatlakozás a piros csapathoz</Hungarian>
<English>Join Team&lt;br/&gt;Red</English>
<German>Team Rot&lt;br/&gt;beitreten</German>
<Spanish>Unirse al&lt;br/&gt;equipo rojo</Spanish>
<French>Rejoindre&lt;br/&gt;Rouge</French>
<Polish>Dołącz do drużyny&lt;br/&gt;czerwonej</Polish>
<Czech>Připojit do&lt;br/&gt;Červeného Týmu</Czech>
<Russian>Присоединиться&lt;br/&gt;к красной группе</Russian>
<Portuguese>Unir-se à&lt;br/&gt;Equipe Vermelha</Portuguese>
<Italian>Entra nella&lt;br/&gt;Squadra Rossa</Italian>
<Hungarian>Csatlakozás a&lt;br/&gt;piros csapathoz</Hungarian>
</Key>
<Key ID="STR_ACE_Interaction_JoinTeamGreen">
<English>Join Team Green</English>
<German>Team Grün beitreten</German>
<Spanish>Unirse al equipo verde</Spanish>
<French>Rejoindre Verte</French>
<Polish>Dołącz do drużyny zielonej</Polish>
<Czech>Připojit do Zeleného Týmu</Czech>
<Russian>Присоединиться к зеленой группе</Russian>
<Portuguese>Unir-se à Equipe Verde</Portuguese>
<Italian>Entra nella Squadra Verde</Italian>
<Hungarian>Csatlakozás a zöld csapathoz</Hungarian>
<English>Join Team&lt;br/&gt;Green</English>
<German>Team Grün&lt;br/&gt;beitreten</German>
<Spanish>Unirse al&lt;br/&gt;equipo verde</Spanish>
<French>Rejoindre&lt;br/&gt;Verte</French>
<Polish>Dołącz do&lt;br/&gt;drużyny zielonej</Polish>
<Czech>Připojit do&lt;br/&gt;Zeleného Týmu</Czech>
<Russian>Присоединиться&lt;br/&gt;к зеленой группе</Russian>
<Portuguese>Unir-se à&lt;br/&gt;Equipe Verde</Portuguese>
<Italian>Entra nella&lt;br/&gt;Squadra Verde</Italian>
<Hungarian>Csatlakozás a&lt;br/&gt;zöld csapathoz</Hungarian>
</Key>
<Key ID="STR_ACE_Interaction_JoinTeamBlue">
<English>Join Team Blue</English>
<German>Team Blau beitreten</German>
<Spanish>Unirse al equipo azul</Spanish>
<French>Rejoindre Bleue</French>
<Polish>Dołącz do drużyny niebieskiej</Polish>
<Czech>Připojit do Modrého Týmu</Czech>
<Russian>Присоединиться к синей группе</Russian>
<Portuguese>Unir-se à Equipe Azul</Portuguese>
<Italian>Entra nella Squadra Blu</Italian>
<Hungarian>Csatlakozás a kék csapathoz</Hungarian>
<English>Join Team&lt;br/&gt;Blue</English>
<German>Team Blau&lt;br/&gt;beitreten</German>
<Spanish>Unirse al&lt;br/&gt;equipo azul</Spanish>
<French>Rejoindre&lt;br/&gt;Bleue</French>
<Polish>Dołącz do&lt;br/&gt;drużyny niebieskiej</Polish>
<Czech>Připojit do&lt;br/&gt;Modrého Týmu</Czech>
<Russian>Присоединиться&lt;br/&gt;к синей группе</Russian>
<Portuguese>Unir-se à&lt;br/&gt;Equipe Azul</Portuguese>
<Italian>Entra nella&lt;br/&gt;Squadra Blu</Italian>
<Hungarian>Csatlakozás a&lt;br/&gt;kék csapathoz</Hungarian>
</Key>
<Key ID="STR_ACE_Interaction_JoinTeamYellow">
<English>Join Team Yellow</English>
<German>Team Gelb beitreten</German>
<Spanish>Unirse al equipo amarillo</Spanish>
<French>Rejoindre Jaune</French>
<Polish>Dołącz do drużyny żółtej</Polish>
<Czech>Připojit do Žlutého Týmu</Czech>
<Russian>Присоединиться к желтой группе</Russian>
<Portuguese>Unir-se à Equipe Amarela</Portuguese>
<Italian>Entra nella Squadra Gialla</Italian>
<Hungarian>Csatlakozás a sárga csapathoz</Hungarian>
<English>Join Team&lt;br/&gt;Yellow</English>
<German>Team Gelb&lt;br/&gt;beitreten</German>
<Spanish>Unirse al&lt;br/&gt;equipo amarillo</Spanish>
<French>Rejoindre&lt;br/&gt;Jaune</French>
<Polish>Dołącz do&lt;br/&gt;drużyny żółtej</Polish>
<Czech>Připojit do&lt;br/&gt;Žlutého Týmu</Czech>
<Russian>Присоединиться&lt;br/&gt;к желтой группе</Russian>
<Portuguese>Unir-se à&lt;br/&gt;Equipe Amarela</Portuguese>
<Italian>Entra nella&lt;br/&gt;Squadra Gialla</Italian>
<Hungarian>Csatlakozás a&lt;br/&gt;sárga csapathoz</Hungarian>
</Key>
<Key ID="STR_ACE_Interaction_JoinedTeam">
<English>You joined Team %1</English>
@ -626,14 +626,14 @@
<Czech>Mimo dosah</Czech>
</Key>
<Key ID="STR_ACE_Interaction_Equipment">
<English>Equipment &gt;&gt;</English>
<German>Ausrüstung &gt;&gt;</German>
<Spanish>Equipamiento &gt;&gt;</Spanish>
<French>Équipment &gt;&gt;</French>
<Polish>Ekwipunek &gt;&gt;</Polish>
<Czech>Vybavení &gt;&gt;</Czech>
<Hungarian>Felszerelés &gt;&gt;</Hungarian>
<Russian>Снаряжение &gt;&gt;</Russian>
<English>Equipment</English>
<German>Ausrüstung</German>
<Spanish>Equipamiento</Spanish>
<French>Équipment</French>
<Polish>Ekwipunek</Polish>
<Czech>Vybavení</Czech>
<Hungarian>Felszerelés</Hungarian>
<Russian>Снаряжение</Russian>
</Key>
<Key ID="STR_ACE_Interaction_Push">
<English>Push</English>
@ -654,7 +654,7 @@
<Spanish>Interactuar</Spanish>
</Key>
<Key ID="STR_ACE_Interaction_Passengers">
<English>Passengers &gt;&gt;</English>
<English>Passengers</English>
</Key>
</Package>
</Project>

View File

@ -6,7 +6,7 @@ class CfgPatches {
weapons[] = {"ACE_Kestrel"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common","ace_interaction"};
author[] = {"Falke","commy2","KoffeinFlummi","CAA-Picard"};
author[] = {"Falke","commy2","KoffeinFlummi","esteldunedain"};
authorUrl = "https://github.com/KoffeinFlummi/";
VERSION_CONFIG;
};

View File

@ -1,4 +1,4 @@
// by commy2 and CAA-Picard
// by commy2 and esteldunedain
#include "script_component.hpp"
EXPLODE_3_PVT(_this,_unit,_range,_isGreen);

View File

@ -17,6 +17,7 @@
PARAMS_1(_interactionType);
//Ignore self-interaction menu
if (_interactionType != 0) exitWith {};
//for performance only do stuff it they have a wirecutter item
@ -32,7 +33,10 @@ if (!("ACE_wirecutter" in (items ace_player))) exitWith {};
{deleteVehicle _x;} forEach _addedHelpers;
[_pfID] call CBA_fnc_removePerFrameHandler;
} else {
//If play moved >5 meters from last pos, then rescan
// Prevent Rare Error when ending mission with interact key down:
if (isNull ace_player) exitWith {};
//If player moved >5 meters from last pos, then rescan
if (((getPosASL ace_player) distance _setPosition) > 5) then {
_fncStatement = {

View File

@ -6,7 +6,7 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_interaction"};
author[] = {"commy2","CAA-Picard"};
author[] = {"commy2","esteldunedain"};
authorUrl = "https://github.com/commy2/";
VERSION_CONFIG;
};

View File

@ -3,16 +3,16 @@
<Project name="ACE">
<Package name="MagazineRepack">
<Key ID="STR_ACE_MagazineRepack_RepackMagazines">
<English>Repack Magazines</English>
<German>Magazine umpacken</German>
<Spanish>Reorganizar cargadores</Spanish>
<French>Réorganiser chargeurs</French>
<Polish>Przepakuj magazynki</Polish>
<Czech>Přepáskovat Zásobníky</Czech>
<Italian>Ricarica Caricatori</Italian>
<Portuguese>Reorganizar Carregadores</Portuguese>
<Hungarian>Újratárazás</Hungarian>
<Russian>Перепаковать магазины</Russian>
<English>Repack&lt;br/&gt;Magazines</English>
<German>Magazine&lt;br/&gt;umpacken</German>
<Spanish>Reorganizar&lt;br/&gt;cargadores</Spanish>
<French>Réorganiser&lt;br/&gt;chargeurs</French>
<Polish>Przepakuj&lt;br/&gt;magazynki</Polish>
<Czech>Přepáskovat&lt;br/&gt;Zásobníky</Czech>
<Italian>Ricarica&lt;br/&gt;Caricatori</Italian>
<Portuguese>Reorganizar&lt;br/&gt;Carregadores</Portuguese>
<Hungarian>Újratárazás<&lt;br/&gt;Hungarian>
<Russian>Перепаковать&lt;br/&gt;магазины</Russian>
</Key>
<Key ID="STR_ACE_MagazineRepack_SelectMagazineMenu">
<English>Select Magazine Menu</English>

View File

@ -6,7 +6,7 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common", "ace_interaction"};
author[] = {"KoffeinFlummi","Rocko","CAA-Picard"};
author[] = {"KoffeinFlummi","Rocko","esteldunedain"};
authorUrl = "https://github.com/KoffeinFlummi/";
VERSION_CONFIG;
};

View File

@ -1,5 +1,5 @@
/*
* Author: Rocko and CAA-Picard
* Author: Rocko and esteldunedain
* Calculates the current map illumination for a given unit
*
* Arguments:

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
* Initializes the Map module.
*
* Arguments:

View File

@ -1,5 +1,5 @@
/*
* Author: Rocko and CAA-Picard
* Author: Rocko and esteldunedain
* On map draw, updates the effects
*
* Arguments:

View File

@ -7,7 +7,7 @@ class CfgVehicles {
displayName = "$STR_ACE_MapTools_MapTools_Menu";
condition = QUOTE((call FUNC(canUseMapTools) || {call FUNC(canUseMapGPS)}));
statement = "";
exceptions[] = {"ACE_Drag_isNotDragging", QEGVAR(common,notOnMap)};
exceptions[] = {"isNotDragging", "notOnMap"};
showDisabled = 0;
priority = 100;
enableInside = 1;
@ -16,7 +16,7 @@ class CfgVehicles {
displayName = "$STR_ACE_MapTools_MapToolsHide";
condition = QUOTE((call FUNC(canUseMapTools) && {GVAR(mapTool_Shown) != 0}));
statement = QUOTE(GVAR(mapTool_Shown) = 0; [] call FUNC(updateMapToolMarkers));
exceptions[] = {"ACE_Drag_isNotDragging", QEGVAR(common,notOnMap)};
exceptions[] = {"isNotDragging", "notOnMap"};
showDisabled = 1;
priority = 5;
enableInside = 1;
@ -25,7 +25,7 @@ class CfgVehicles {
displayName = "$STR_ACE_MapTools_MapToolsShowNormal";
condition = QUOTE((call FUNC(canUseMapTools) && {GVAR(mapTool_Shown) != 1}));
statement = QUOTE(GVAR(mapTool_Shown) = 1; [] call FUNC(updateMapToolMarkers));
exceptions[] = {"ACE_Drag_isNotDragging", QEGVAR(common,notOnMap)};
exceptions[] = {"isNotDragging", "notOnMap"};
showDisabled = 1;
priority = 4;
enableInside = 1;
@ -34,7 +34,7 @@ class CfgVehicles {
displayName = "$STR_ACE_MapTools_MapToolsShowSmall";
condition = QUOTE((call FUNC(canUseMapTools) && {GVAR(mapTool_Shown) != 2}));
statement = QUOTE(GVAR(mapTool_Shown) = 2; [] call FUNC(updateMapToolMarkers));
exceptions[] = {"ACE_Drag_isNotDragging", QEGVAR(common,notOnMap)};
exceptions[] = {"isNotDragging", "notOnMap"};
showDisabled = 1;
priority = 3;
enableInside = 1;
@ -43,7 +43,7 @@ class CfgVehicles {
displayName = "$STR_ACE_MapTools_MapToolsAlignNorth";
condition = QUOTE((call FUNC(canUseMapTools) && {GVAR(mapTool_Shown) != 0}));
statement = QUOTE(GVAR(mapTool_angle) = 0; [] call FUNC(updateMapToolMarkers));
exceptions[] = {"ACE_Drag_isNotDragging", QEGVAR(common,notOnMap)};
exceptions[] = {"isNotDragging", "notOnMap"};
showDisabled = 1;
priority = 2;
enableInside = 1;
@ -52,7 +52,7 @@ class CfgVehicles {
displayName = "$STR_ACE_MapTools_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[] = {"ACE_Drag_isNotDragging", QEGVAR(common,notOnMap)};
exceptions[] = {"isNotDragging", "notOnMap"};
showDisabled = 1;
priority = 1;
enableInside = 1;
@ -61,7 +61,7 @@ class CfgVehicles {
displayName = "$STR_ACE_MapTools_MapGpsShow";
condition = QUOTE((call FUNC(canUseMapGPS) && {!GVAR(mapGpsShow)}));
statement = QUOTE(GVAR(mapGpsShow) = true; [GVAR(mapGpsShow)] call FUNC(openMapGps));
exceptions[] = {"ACE_Drag_isNotDragging", QEGVAR(common,notOnMap)};
exceptions[] = {"isNotDragging", "notOnMap"};
showDisabled = 0;
priority = 0;
enableInside = 1;
@ -70,7 +70,7 @@ class CfgVehicles {
displayName = "$STR_ACE_MapTools_MapGpsHide";
condition = QUOTE((call FUNC(canUseMapGPS) && {GVAR(mapGpsShow)}));
statement = QUOTE(GVAR(mapGpsShow) = false; [GVAR(mapGpsShow)] call FUNC(openMapGps));
exceptions[] = {"ACE_Drag_isNotDragging", QEGVAR(common,notOnMap)};
exceptions[] = {"isNotDragging", "notOnMap"};
showDisabled = 0;
priority = 0;
enableInside = 1;

View File

@ -1,4 +1,4 @@
// by CAA-Picard
// by esteldunedain
#include "script_component.hpp"

View File

@ -6,7 +6,7 @@ class CfgPatches {
weapons[] = {"ACE_MapTools"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common", "ace_interaction"};
author[] = {"CAA-Picard"};
author[] = {"esteldunedain"};
authorUrl = "https://github.com/esteldunedain/";
VERSION_CONFIG;
};

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
*
* Add the line marker
*

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
*
* Returns the equivalent of 100m in screen coordinates
*

View File

@ -1,4 +1,4 @@
// by CAA-Picard
// by esteldunedain
#include "script_component.hpp"

View File

@ -1,4 +1,4 @@
// by CAA-Picard
// by esteldunedain
#include "script_component.hpp"

View File

@ -1,4 +1,4 @@
// by CAA-Picard
// by esteldunedain
#include "script_component.hpp"

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
*
* Cancel the drawing of the current line marker
*

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
*
* Copy recieved markers to map
*

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
*
* Send Map markers to other player
*

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
*
* Send request to remote player
*

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
*
* Handle key down on map.
*

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
*
* Handle mouse buttons.
*

View File

@ -1,5 +1,5 @@
/*
* Author: CAA-Picard
* Author: esteldunedain
*
* Handle mouse movement over the map tool.
*

Some files were not shown because too many files have changed in this diff Show More