mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Fix Ladders - Add User Setting
This commit is contained in:
parent
08aeda11df
commit
b0bfb7dd43
@ -4,7 +4,7 @@ class ACE_Settings {
|
|||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
isClientSettable = 1;
|
isClientSettable = 1;
|
||||||
displayName = "$STR_ACE_Interact_Menu_AlwaysUseCursorSelfInteraction";
|
displayName = "$STR_ACE_Interact_Menu_AlwaysUseCursorSelfInteraction";
|
||||||
};
|
};
|
||||||
class GVAR(cursorKeepCentered) {
|
class GVAR(cursorKeepCentered) {
|
||||||
value = 0;
|
value = 0;
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
@ -54,7 +54,7 @@ class ACE_Settings {
|
|||||||
isClientSettable = 1;
|
isClientSettable = 1;
|
||||||
displayName = "$STR_ACE_Interact_textSize";
|
displayName = "$STR_ACE_Interact_textSize";
|
||||||
values[] = {"$str_very_small", "$str_small", "$str_medium", "$str_large", "$str_very_large"};
|
values[] = {"$str_very_small", "$str_small", "$str_medium", "$str_large", "$str_very_large"};
|
||||||
};
|
};
|
||||||
class GVAR(shadowSetting) {
|
class GVAR(shadowSetting) {
|
||||||
value = 2;
|
value = 2;
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
@ -69,4 +69,11 @@ class ACE_Settings {
|
|||||||
isClientSettable = 1;
|
isClientSettable = 1;
|
||||||
displayName = "$STR_ACE_Interact_Menu_ActionOnKeyRelease";
|
displayName = "$STR_ACE_Interact_Menu_ActionOnKeyRelease";
|
||||||
};
|
};
|
||||||
|
class GVAR(addBuildingActions) {
|
||||||
|
value = 0;
|
||||||
|
typeName = "BOOL";
|
||||||
|
isClientSettable = 1;
|
||||||
|
displayName = "$STR_ACE_Interact_Menu_addBuildingActions";
|
||||||
|
description = "$STR_ACE_Interact_Menu_addBuildingActionsDescription";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
@ -18,6 +18,8 @@
|
|||||||
|
|
||||||
PARAMS_1(_interactionType);
|
PARAMS_1(_interactionType);
|
||||||
|
|
||||||
|
//Ignore if not enabled:
|
||||||
|
if (!GVAR(addBuildingActions)) exitWith {};
|
||||||
//Ignore self-interaction menu:
|
//Ignore self-interaction menu:
|
||||||
if (_interactionType != 0) exitWith {};
|
if (_interactionType != 0) exitWith {};
|
||||||
//Ignore when mounted:
|
//Ignore when mounted:
|
||||||
@ -75,7 +77,7 @@ if ((vehicle ACE_player) != ACE_player) exitWith {};
|
|||||||
_actionSet = [_typeOfHouse] call FUNC(userActions_getHouseActions);
|
_actionSet = [_typeOfHouse] call FUNC(userActions_getHouseActions);
|
||||||
EXPLODE_2_PVT(_actionSet,_memPoints,_memPointsActions);
|
EXPLODE_2_PVT(_actionSet,_memPoints,_memPointsActions);
|
||||||
|
|
||||||
systemChat format ["Add Actions for [%1] (count %2) @ %3", _typeOfHouse, (count _memPoints), diag_tickTime];
|
// systemChat format ["Add Actions for [%1] (count %2) @ %3", _typeOfHouse, (count _memPoints), diag_tickTime];
|
||||||
{
|
{
|
||||||
_helperPos = (_houseBeingScaned modelToWorld (_houseBeingScaned selectionPosition _x)) call EFUNC(common,positionToASL);
|
_helperPos = (_houseBeingScaned modelToWorld (_houseBeingScaned selectionPosition _x)) call EFUNC(common,positionToASL);
|
||||||
_helperObject = "Sign_Sphere25cm_F" createVehicleLocal _helperPos;
|
_helperObject = "Sign_Sphere25cm_F" createVehicleLocal _helperPos;
|
||||||
|
@ -31,7 +31,7 @@ _fnc_getMemPointOffset = {
|
|||||||
_memPoints pushBack _memoryPoint;
|
_memPoints pushBack _memoryPoint;
|
||||||
_memPointsActions pushBack [];
|
_memPointsActions pushBack [];
|
||||||
} else {
|
} else {
|
||||||
_actionOffset set [2, 0.05 * (count (_memPointsActions select _memPointIndex))];
|
_actionOffset set [2, 0.0254 * (count (_memPointsActions select _memPointIndex))];
|
||||||
};
|
};
|
||||||
_actionOffset
|
_actionOffset
|
||||||
};
|
};
|
||||||
@ -47,6 +47,7 @@ _fnc_userAction_Condition = {
|
|||||||
PARAMS_3(_target,_player,_variable);
|
PARAMS_3(_target,_player,_variable);
|
||||||
EXPLODE_2_PVT(_variable,_actionStatement,_actionCondition);
|
EXPLODE_2_PVT(_variable,_actionStatement,_actionCondition);
|
||||||
this = _target getVariable [QGVAR(building), objNull];
|
this = _target getVariable [QGVAR(building), objNull];
|
||||||
|
if (isNull this) exitWith {false};
|
||||||
call _actionCondition;
|
call _actionCondition;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -71,27 +72,9 @@ for "_index" from 0 to ((count _configPath) - 1) do {
|
|||||||
_actionMaxDistance = _actionMaxDistance + 0.1; //increase range slightly
|
_actionMaxDistance = _actionMaxDistance + 0.1; //increase range slightly
|
||||||
_iconImage = "";
|
_iconImage = "";
|
||||||
|
|
||||||
/*
|
|
||||||
if (_actionDisplayNameDefault != "") then {
|
|
||||||
//something like: "<img image='\A3\Ui_f\data\IGUI\Cfg\Actions\open_door_ca.paa' size='2.5' />";
|
|
||||||
//find the end [.paa']
|
|
||||||
_endIndex = _actionDisplayNameDefault find ".paa'";
|
|
||||||
if (_endIndex == -1) exitWith {};
|
|
||||||
_startIndex = _endIndex - 1;
|
|
||||||
_endIndex = _endIndex + 4;
|
|
||||||
//work backwards to find the starting [']
|
|
||||||
while {(_startIndex > 0) && {_iconImage == ""}} do {
|
|
||||||
if ((_actionDisplayNameDefault select [_startIndex, 1]) == "'") then {
|
|
||||||
_startIndex = _startIndex + 1;
|
|
||||||
_iconImage = _actionDisplayNameDefault select [_startIndex, (_endIndex - _startIndex)];
|
|
||||||
};
|
|
||||||
_startIndex = _startIndex - 1;
|
|
||||||
};
|
|
||||||
}; */
|
|
||||||
//extension ~4x as fast:
|
//extension ~4x as fast:
|
||||||
_iconImage = "ace_parse_imagepath" callExtension _actionDisplayNameDefault;
|
_iconImage = "ace_parse_imagepath" callExtension _actionDisplayNameDefault;
|
||||||
|
|
||||||
|
|
||||||
_actionOffset = [_actionPosition] call _fnc_getMemPointOffset;
|
_actionOffset = [_actionPosition] call _fnc_getMemPointOffset;
|
||||||
_memPointIndex = _memPoints find _actionPosition;
|
_memPointIndex = _memPoints find _actionPosition;
|
||||||
|
|
||||||
@ -104,24 +87,28 @@ _fnc_ladder_ladderUp = {
|
|||||||
PARAMS_3(_target,_player,_variable);
|
PARAMS_3(_target,_player,_variable);
|
||||||
EXPLODE_1_PVT(_variable,_ladderIndex);
|
EXPLODE_1_PVT(_variable,_ladderIndex);
|
||||||
_building = _target getVariable [QGVAR(building), objNull];
|
_building = _target getVariable [QGVAR(building), objNull];
|
||||||
|
TRACE_3("Ladder Action - UP",_player,_building,_ladderIndex);
|
||||||
_player action ["LadderUp", _building, _ladderIndex, 0];
|
_player action ["LadderUp", _building, _ladderIndex, 0];
|
||||||
};
|
};
|
||||||
_fnc_ladder_ladderDown = {
|
_fnc_ladder_ladderDown = {
|
||||||
PARAMS_3(_target,_player,_variable);
|
PARAMS_3(_target,_player,_variable);
|
||||||
EXPLODE_1_PVT(_variable,_ladderIndex);
|
EXPLODE_1_PVT(_variable,_ladderIndex);
|
||||||
_building = _target getVariable [QGVAR(building), objNull];
|
_building = _target getVariable [QGVAR(building), objNull];
|
||||||
_player action ["LadderUp", _building, (_variable select 0), 1];
|
TRACE_3("Ladder Action - Down",_player,_building,_ladderIndex);
|
||||||
|
_player action ["LadderDown", _building, _ladderIndex, 1];
|
||||||
};
|
};
|
||||||
|
|
||||||
_fnc_ladder_conditional = { //Don't show actions if on a ladder
|
_fnc_ladder_conditional = {
|
||||||
((getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState _player) >> "onLadder")) == 0)
|
PARAMS_2(_target,_player);
|
||||||
|
//(Check distance < 2) and (Don't show actions if on a ladder)
|
||||||
|
((_target distance _player) < 2) && {((getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState _player) >> "onLadder")) == 0)}
|
||||||
};
|
};
|
||||||
|
|
||||||
_ladders = getArray (configFile >> "CfgVehicles" >> _typeOfBuilding >> "ladders");
|
_ladders = getArray (configFile >> "CfgVehicles" >> _typeOfBuilding >> "ladders");
|
||||||
{
|
{
|
||||||
EXPLODE_2_PVT(_x,_ladderBottomMemPoint,_ladderTopMemPoint);
|
EXPLODE_2_PVT(_x,_ladderBottomMemPoint,_ladderTopMemPoint);
|
||||||
|
|
||||||
_actionMaxDistance = 2;
|
_actionMaxDistance = 3; //interact_menu will check head -> target's offset; leave this high and do a precice distance check in condition
|
||||||
|
|
||||||
_actionDisplayName = localize "str_action_ladderup";
|
_actionDisplayName = localize "str_action_ladderup";
|
||||||
_iconImage = "\A3\ui_f\data\igui\cfg\actions\ladderup_ca.paa";
|
_iconImage = "\A3\ui_f\data\igui\cfg\actions\ladderup_ca.paa";
|
||||||
|
@ -217,5 +217,11 @@
|
|||||||
<Hungarian>Körvonal</Hungarian>
|
<Hungarian>Körvonal</Hungarian>
|
||||||
<Italian>Contorno</Italian>
|
<Italian>Contorno</Italian>
|
||||||
</Key>
|
</Key>
|
||||||
|
<Key ID="STR_ACE_Interact_Menu_addBuildingActions">
|
||||||
|
<English>Show actions for buildings</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_Interact_Menu_addBuildingActionsDescription">
|
||||||
|
<English>Adds interaction actions for opening doors and mounting ladders on buildings.</English>
|
||||||
|
</Key>
|
||||||
</Package>
|
</Package>
|
||||||
</Project>
|
</Project>
|
||||||
|
Loading…
Reference in New Issue
Block a user