Merge pull request #1541 from jonpas/sitting

Sitting
This commit is contained in:
ulteq 2015-06-26 21:34:34 +02:00
commit 241e8acdd9
49 changed files with 528 additions and 62 deletions

View File

@ -10,7 +10,7 @@ class CfgVehicles {
showDisabled = 0;
priority = 2;
icon = PATHTOF(UI\ATRAG_Icon.paa);
exceptions[] = {"notOnMap", "isNotInside"};
exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"};
};
};
};

View File

@ -1,7 +1,7 @@
["ACE3 Equipment", QGVAR(ATragMXDialogKey), localize LSTRING(ATragMXDialogKey),
{
// Conditions: canInteract
if !([ACE_player, objNull, ["notOnMap", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false};
if !([ACE_player, objNull, ["notOnMap", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false};
if (GVAR(active)) exitWith {
closeDialog 0;
false
@ -21,7 +21,7 @@ _conditonCode = {
};
_toggleCode = {
// Conditions: canInteract
if !([ACE_player, objNull, ["notOnMap", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {};
if !([ACE_player, objNull, ["notOnMap", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {};
if (GVAR(active)) exitWith {
closeDialog 0;
};

View File

@ -10,7 +10,7 @@ class CfgVehicles {
showDisabled = 0;
priority = 0.1;
icon = QUOTE(PATHTOF(UI\DAGR_Icon.paa));
exceptions[] = {"isNotInside"};
exceptions[] = {"isNotInside", "isNotSitting"};
class GVAR(toggle) {
displayName = "Toggle DAGR";
condition = QUOTE([ARR_2(_player,'ACE_DAGR')] call EFUNC(common,hasItem));
@ -18,7 +18,7 @@ class CfgVehicles {
showDisabled = 0;
priority = 0.2;
icon = QUOTE(PATHTOF(UI\DAGR_Icon.paa));
exceptions[] = {"notOnMap", "isNotInside"};
exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"};
};
};
};

View File

@ -2,7 +2,7 @@
["ACE3 Equipment", QGVAR(MenuKey), "Configure DAGR",
{
// Conditions: canInteract
if !([ACE_player, objNull, ["notOnMap", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false};
if !([ACE_player, objNull, ["notOnMap", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false};
if !([ACE_player, "ACE_DAGR"] call EFUNC(common,hasItem)) exitWith {false};
// Statement
@ -19,7 +19,7 @@
["ACE3 Equipment", QGVAR(ToggleKey), "Toggle DAGR",
{
// Conditions: canInteract
if !([ACE_player, objNull, ["notOnMap", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false};
if !([ACE_player, objNull, ["notOnMap", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false};
if !([ACE_player, "ACE_DAGR"] call EFUNC(common,hasItem)) exitWith {false};
// Statement

View File

@ -6,7 +6,7 @@ class CfgVehicles {
displayName = CSTRING(Menu);
condition = QUOTE(!(_player getVariable [ARR_2('ace_explosives_PlantingExplosive',false)]));
statement = "";
exceptions[] = {"isNotSwimming", "isNotInside"};
exceptions[] = {"isNotSwimming", "isNotInside", "isNotSitting"};
showDisabled = 1;
priority = 4;
icon = PATHTOF(UI\Explosives_Menu_ca.paa);
@ -17,7 +17,7 @@ class CfgVehicles {
condition = QUOTE([_player] call FUNC(canDetonate));
statement = "";
insertChildren = QUOTE([_player] call FUNC(addTransmitterActions););
exceptions[] = {"isNotSwimming", "isNotInside"};
exceptions[] = {"isNotSwimming", "isNotInside", "isNotSitting"};
showDisabled = 1;
icon = PATHTOF(UI\Explosives_Menu_ca.paa);
priority = 2;
@ -38,7 +38,7 @@ class CfgVehicles {
displayName = CSTRING(cellphone_displayName);
condition = "('ACE_Cellphone' in (items ace_player))";
statement = "closeDialog 0;createDialog 'Rsc_ACE_PhoneInterface';";
exceptions[] = {"isNotSwimming", "isNotInside"};
exceptions[] = {"isNotSwimming", "isNotInside", "isNotSitting"};
showDisabled = 0;
icon = PATHTOF(Data\UI\Cellphone_UI.paa);
priority = 0.8;

View File

@ -6,7 +6,7 @@ class CfgVehicles {
class ACE_PutInEarplugs {
displayName = CSTRING(EarPlugs_On);
condition = QUOTE( !([_player] call FUNC(hasEarPlugsIn)) && {'ACE_EarPlugs' in items _player} );
exceptions[] = {"isNotInside"};
exceptions[] = {"isNotInside", "isNotSitting"};
statement = QUOTE( [_player] call FUNC(putInEarPlugs) );
showDisabled = 0;
priority = 2.5;
@ -16,7 +16,7 @@ class CfgVehicles {
class ACE_RemoveEarplugs {
displayName = CSTRING(EarPlugs_Off);
condition = QUOTE( [_player] call FUNC(hasEarPlugsIn) );
exceptions[] = {"isNotInside"};
exceptions[] = {"isNotInside", "isNotSitting"};
statement = QUOTE( [_player] call FUNC(removeEarPlugs) );
showDisabled = 0;
priority = 2.5;

View File

@ -31,7 +31,7 @@ addMissionEventHandler ["Draw3D", DFUNC(render)];
["ACE3 Common", QGVAR(InteractKey), (localize LSTRING(InteractKey)),
{
// Conditions: canInteract
if !([ACE_player, objNull, ["isNotInside","isNotDragging", "isNotCarrying", "isNotSwimming", "notOnMap", "isNotEscorting", "isNotSurrendering"]] call EFUNC(common,canInteractWith)) exitWith {false};
if !([ACE_player, objNull, ["isNotInside","isNotDragging", "isNotCarrying", "isNotSwimming", "notOnMap", "isNotEscorting", "isNotSurrendering", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false};
// Statement
[0] call FUNC(keyDown)
},{[0,false] call FUNC(keyUp)},
@ -40,7 +40,7 @@ addMissionEventHandler ["Draw3D", DFUNC(render)];
["ACE3 Common", QGVAR(SelfInteractKey), (localize LSTRING(SelfInteractKey)),
{
// Conditions: canInteract
if !([ACE_player, objNull, ["isNotInside","isNotDragging", "isNotCarrying", "isNotSwimming", "notOnMap", "isNotEscorting", "isNotSurrendering"]] call EFUNC(common,canInteractWith)) exitWith {false};
if !([ACE_player, objNull, ["isNotInside","isNotDragging", "isNotCarrying", "isNotSwimming", "notOnMap", "isNotEscorting", "isNotSurrendering", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false};
// Statement
[1] call FUNC(keyDown)
},{[1,false] call FUNC(keyUp)},

View File

@ -122,7 +122,7 @@ _actions = if (_isMan) then {
// Dummy statement so it's not collapsed when there's no available actions
true
},
{[ACE_player, _target, ["isNotInside","isNotDragging", "isNotCarrying", "isNotSwimming", "notOnMap", "isNotEscorting", "isNotSurrendering"]] call EFUNC(common,canInteractWith)},
{[ACE_player, _target, ["isNotInside","isNotDragging", "isNotCarrying", "isNotSwimming", "notOnMap", "isNotEscorting", "isNotSurrendering", "isNotSitting"]] call EFUNC(common,canInteractWith)},
{},
{},
"Spine3",

View File

@ -191,7 +191,7 @@ class CfgVehicles {
class ACE_TeamManagement {
displayName = CSTRING(TeamManagement);
condition = QUOTE(GVAR(EnableTeamManagement));
exceptions[] = {"isNotInside"};
exceptions[] = {"isNotInside", "isNotSitting"};
statement = "";
showDisabled = 1;
priority = 3.2;
@ -201,7 +201,7 @@ class CfgVehicles {
class ACE_JoinTeamRed {
displayName = CSTRING(JoinTeamRed);
condition = QUOTE(true);
exceptions[] = {"isNotInside"};
exceptions[] = {"isNotInside", "isNotSitting"};
statement = QUOTE([ARR_2(_player,'RED')] call DFUNC(joinTeam));
showDisabled = 1;
priority = 2.4;
@ -211,7 +211,7 @@ class CfgVehicles {
class ACE_JoinTeamGreen {
displayName = CSTRING(JoinTeamGreen);
condition = QUOTE(true);
exceptions[] = {"isNotInside"};
exceptions[] = {"isNotInside", "isNotSitting"};
statement = QUOTE([ARR_2(_player,'GREEN')] call DFUNC(joinTeam));
showDisabled = 1;
priority = 2.3;
@ -221,7 +221,7 @@ class CfgVehicles {
class ACE_JoinTeamBlue {
displayName = CSTRING(JoinTeamBlue);
condition = QUOTE(true);
exceptions[] = {"isNotInside"};
exceptions[] = {"isNotInside", "isNotSitting"};
statement = QUOTE([ARR_2(_player,'BLUE')] call DFUNC(joinTeam));
showDisabled = 1;
priority = 2.2;
@ -231,7 +231,7 @@ class CfgVehicles {
class ACE_JoinTeamYellow {
displayName = CSTRING(JoinTeamYellow);
condition = QUOTE(true);
exceptions[] = {"isNotInside"};
exceptions[] = {"isNotInside", "isNotSitting"};
statement = QUOTE([ARR_2(_player,'YELLOW')] call DFUNC(joinTeam));
showDisabled = 1;
priority = 2.1;
@ -242,7 +242,7 @@ class CfgVehicles {
class ACE_LeaveTeam {
displayName = CSTRING(LeaveTeam);
condition = QUOTE(assignedTeam _player != 'MAIN');
exceptions[] = {"isNotInside"};
exceptions[] = {"isNotInside", "isNotSitting"};
statement = QUOTE([ARR_2(_player,'MAIN')] call DFUNC(joinTeam));
showDisabled = 1;
priority = 2.5;
@ -252,7 +252,7 @@ class CfgVehicles {
class ACE_BecomeLeader {
displayName = CSTRING(BecomeLeader);
condition = QUOTE(_this call DFUNC(canBecomeLeader));
exceptions[] = {"isNotInside"};
exceptions[] = {"isNotInside", "isNotSitting"};
statement = QUOTE(_this call DFUNC(doBecomeLeader));
showDisabled = 1;
priority = 1.0;
@ -262,7 +262,7 @@ class CfgVehicles {
class ACE_LeaveGroup {
displayName = CSTRING(LeaveGroup);
condition = QUOTE(count (units group _player) > 1);
exceptions[] = {"isNotInside"};
exceptions[] = {"isNotInside", "isNotSitting"};
statement = QUOTE(_oldGroup = units group _player; _newGroup = createGroup side _player; [_player] joinSilent _newGroup; {_player reveal _x} forEach _oldGroup;);
showDisabled = 1;
priority = 1.2;
@ -379,7 +379,7 @@ class CfgVehicles {
class ACE_Equipment {
displayName = CSTRING(Equipment);
condition = QUOTE(true);
exceptions[] = {"isNotInside","notOnMap"};
exceptions[] = {"isNotInside","notOnMap", "isNotSitting"};
statement = "";
showDisabled = 1;
priority = 4.5;

View File

@ -10,7 +10,7 @@ class CfgVehicles {
showDisabled = 0;
priority = 0.1;
icon = QUOTE(PATHTOF(UI\Kestrel4500_Icon.paa));
exceptions[] = {"notOnMap"};
exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"};
class GVAR(show) {
displayName = CSTRING(ShowKestrel);
condition = QUOTE(call FUNC(canShow) && !GVAR(Overlay));
@ -18,7 +18,7 @@ class CfgVehicles {
showDisabled = 0;
priority = 0.2;
icon = QUOTE(PATHTOF(UI\Kestrel4500_Icon.paa));
exceptions[] = {"notOnMap", "isNotInside"};
exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"};
};
class GVAR(hide) {
displayName = CSTRING(HideKestrel);
@ -27,7 +27,7 @@ class CfgVehicles {
showDisabled = 0;
priority = 0.3;
icon = QUOTE(PATHTOF(UI\Kestrel4500_Icon.paa));
exceptions[] = {"notOnMap", "isNotInside"};
exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"};
};
};
};

View File

@ -1,7 +1,7 @@
["ACE3 Equipment", QGVAR(KestrelDialogKey), localize LSTRING(KestrelDialogKey),
{
// Conditions: canInteract
if !([ACE_player, objNull, ["notOnMap", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false};
if !([ACE_player, objNull, ["notOnMap", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false};
if (GVAR(Kestrel4500)) exitWith {
closeDialog 0;
false
@ -16,7 +16,7 @@
["ACE3 Equipment", QGVAR(DisplayKestrelKey), localize LSTRING(DisplayKestrelKey),
{
// Conditions: canInteract
if !([ACE_player, objNull, ["notOnMap", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false};
if !([ACE_player, objNull, ["notOnMap", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false};
// Statement
[] call FUNC(displayKestrel);

View File

@ -3,7 +3,7 @@
["ACE3 Weapons", QGVAR(switchLaserLightMode), localize LSTRING(switchLaserLight),
{
// Conditions: canInteract
if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false};
if !([ACE_player, objNull, ["isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false};
// Conditions: specific
if !([ACE_player] call EFUNC(common,canUseWeapon)) exitWith {false};

View File

@ -5,7 +5,7 @@ class CfgVehicles {
class ACE_RepackMagazines {
displayName = CSTRING(RepackMagazines);
condition = QUOTE(true);
exceptions[] = {"isNotInside"};
exceptions[] = {"isNotInside", "isNotSitting"};
insertChildren = QUOTE(_this call FUNC(getMagazineChildren));
priority = -2;
icon = QUOTE(PATHTOF(UI\repack_ca.paa));

View File

@ -26,7 +26,7 @@ EXPLODE_2_PVT(_args,_magazineClassname,_lastAmmoCount);
_fullMagazineCount = getNumber (configfile >> "CfgMagazines" >> _magazineClassname >> "count");
//Don't show anything if player can't interact:
if (!([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith))) exitWith {};
if (!([ACE_player, objNull, ["isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith))) exitWith {};
_structuredOutputText = if (_errorCode == 0) then {
format ["<t align='center'>%1</t><br/>", (localize LSTRING(RepackComplete))];

View File

@ -31,7 +31,7 @@ _fullMagazineCount = getNumber (_magazineCfg >> "count");
_isBelt = (isNumber (_magazineCfg >> "ACE_isBelt")) && {(getNumber (_magazineCfg >> "ACE_isBelt")) == 1};
//Check canInteractWith:
if (!([_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith))) exitWith {};
if (!([_player, objNull, ["isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith))) exitWith {};
[_player] call EFUNC(common,goKneeling);
@ -69,5 +69,5 @@ _totalTime,
{_this call FUNC(magazineRepackFinish)},
(localize LSTRING(RepackingMagazine)),
{_this call FUNC(magazineRepackProgress)},
["isNotInside"]
["isNotInside", "isNotSitting"]
] call EFUNC(common,progressBar);

View File

@ -7,7 +7,7 @@ class CfgVehicles {
displayName = CSTRING(MapTools_Menu);
condition = QUOTE((call FUNC(canUseMapTools) || {call FUNC(canUseMapGPS)}));
statement = "";
exceptions[] = {"isNotDragging", "notOnMap", "isNotInside"};
exceptions[] = {"isNotDragging", "notOnMap", "isNotInside", "isNotSitting"};
showDisabled = 0;
priority = 100;
@ -15,7 +15,7 @@ class CfgVehicles {
displayName = CSTRING(MapToolsHide);
condition = QUOTE((call FUNC(canUseMapTools) && {GVAR(mapTool_Shown) != 0}));
statement = QUOTE(GVAR(mapTool_Shown) = 0; [] call FUNC(updateMapToolMarkers));
exceptions[] = {"isNotDragging", "notOnMap", "isNotInside"};
exceptions[] = {"isNotDragging", "notOnMap", "isNotInside", "isNotSitting"};
showDisabled = 1;
priority = 5;
};
@ -23,7 +23,7 @@ class CfgVehicles {
displayName = CSTRING(MapToolsShowNormal);
condition = QUOTE((call FUNC(canUseMapTools) && {GVAR(mapTool_Shown) != 1}));
statement = QUOTE(GVAR(mapTool_Shown) = 1; [] call FUNC(updateMapToolMarkers));
exceptions[] = {"isNotDragging", "notOnMap", "isNotInside"};
exceptions[] = {"isNotDragging", "notOnMap", "isNotInside", "isNotSitting"};
showDisabled = 1;
priority = 4;
};
@ -31,7 +31,7 @@ class CfgVehicles {
displayName = CSTRING(MapToolsShowSmall);
condition = QUOTE((call FUNC(canUseMapTools) && {GVAR(mapTool_Shown) != 2}));
statement = QUOTE(GVAR(mapTool_Shown) = 2; [] call FUNC(updateMapToolMarkers));
exceptions[] = {"isNotDragging", "notOnMap", "isNotInside"};
exceptions[] = {"isNotDragging", "notOnMap", "isNotInside", "isNotSitting"};
showDisabled = 1;
priority = 3;
};
@ -39,7 +39,7 @@ class CfgVehicles {
displayName = CSTRING(MapToolsAlignNorth);
condition = QUOTE((call FUNC(canUseMapTools) && {GVAR(mapTool_Shown) != 0}));
statement = QUOTE(GVAR(mapTool_angle) = 0; [] call FUNC(updateMapToolMarkers));
exceptions[] = {"isNotDragging", "notOnMap", "isNotInside"};
exceptions[] = {"isNotDragging", "notOnMap", "isNotInside", "isNotSitting"};
showDisabled = 1;
priority = 2;
};
@ -47,7 +47,7 @@ class CfgVehicles {
displayName = CSTRING(MapToolsAlignCompass);
condition = QUOTE((call FUNC(canUseMapTools) && {GVAR(mapTool_Shown) != 0} && {('ItemCompass' in assigneditems ACE_player) || {'ItemCompass' in assigneditems ACE_player}}));
statement = QUOTE(GVAR(mapTool_angle) = getDir ACE_player; [] call FUNC(updateMapToolMarkers));
exceptions[] = {"isNotDragging", "notOnMap", "isNotInside"};
exceptions[] = {"isNotDragging", "notOnMap", "isNotInside", "isNotSitting"};
showDisabled = 1;
priority = 1;
};
@ -55,7 +55,7 @@ class CfgVehicles {
displayName = CSTRING(MapGpsShow);
condition = QUOTE((call FUNC(canUseMapGPS) && {!GVAR(mapGpsShow)}));
statement = QUOTE(GVAR(mapGpsShow) = true; [GVAR(mapGpsShow)] call FUNC(openMapGps));
exceptions[] = {"isNotDragging", "notOnMap", "isNotInside"};
exceptions[] = {"isNotDragging", "notOnMap", "isNotInside", "isNotSitting"};
showDisabled = 0;
priority = 0;
};
@ -63,7 +63,7 @@ class CfgVehicles {
displayName = CSTRING(MapGpsHide);
condition = QUOTE((call FUNC(canUseMapGPS) && {GVAR(mapGpsShow)}));
statement = QUOTE(GVAR(mapGpsShow) = false; [GVAR(mapGpsShow)] call FUNC(openMapGps));
exceptions[] = {"isNotDragging", "notOnMap", "isNotInside"};
exceptions[] = {"isNotDragging", "notOnMap", "isNotInside", "isNotSitting"};
showDisabled = 0;
priority = 0;
};

View File

@ -25,7 +25,7 @@
PARAMS_1(_display);
//Can't place markers when can't interact
if (!([ACE_player, objNull, ["notOnMap", "isNotInside"]] call EFUNC(common,canInteractWith))) exitWith {
if (!([ACE_player, objNull, ["notOnMap", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith))) exitWith {
_display closeDisplay 2; //emulate "Cancel" button
};

View File

@ -2,7 +2,7 @@ class Medical {
displayName = CSTRING(Actions_Medical);
runOnHover = 1;
hotkey = "M";
exceptions[] = {"isNotInside"};
exceptions[] = {"isNotInside", "isNotSitting"};
statement = QUOTE([ARR_3(_target, true, 0)] call DFUNC(displayPatientInformation));
condition = "true";
icon = PATHTOF(UI\icons\medical_cross.paa);
@ -10,7 +10,7 @@ class Medical {
class ACE_Head {
displayName = CSTRING(Head);
icon = PATHTOF(UI\icons\medical_cross.paa);
exceptions[] = {"isNotInside"};
exceptions[] = {"isNotInside", "isNotSitting"};
statement = QUOTE([ARR_3(_target, true, 0)] call DFUNC(displayPatientInformation));
modifierFunction = QUOTE([ARR_4(_target,_player,0,_this select 3)] call FUNC(modifyMedicalAction));
condition = "true";
@ -79,7 +79,7 @@ class Medical {
distance = 5.0;
condition = "true";
runOnHover = 1;
exceptions[] = {"isNotInside"};
exceptions[] = {"isNotInside", "isNotSitting"};
statement = QUOTE([ARR_3(_target, true, 1)] call DFUNC(displayPatientInformation));
modifierFunction = QUOTE([ARR_4(_target,_player,1,_this select 3)] call FUNC(modifyMedicalAction));
showDisabled = 1;
@ -148,7 +148,7 @@ class Medical {
class ACE_ArmLeft {
displayName = ECSTRING(interaction,ArmLeft);
runOnHover = 1;
exceptions[] = {"isNotInside"};
exceptions[] = {"isNotInside", "isNotSitting"};
statement = QUOTE([ARR_3(_target, true, 2)] call DFUNC(displayPatientInformation));
modifierFunction = QUOTE([ARR_4(_target,_player,2,_this select 3)] call FUNC(modifyMedicalAction));
condition = "true";
@ -250,7 +250,7 @@ class Medical {
class ACE_ArmRight {
displayName = ECSTRING(interaction,ArmRight);
runOnHover = 1;
exceptions[] = {"isNotInside"};
exceptions[] = {"isNotInside", "isNotSitting"};
statement = QUOTE([ARR_3(_target, true, 3)] call DFUNC(displayPatientInformation));
modifierFunction = QUOTE([ARR_4(_target,_player,3,_this select 3)] call FUNC(modifyMedicalAction));
condition = "true";
@ -348,7 +348,7 @@ class Medical {
class ACE_LegLeft {
displayName = ECSTRING(interaction,LegLeft);
runOnHover = 1;
exceptions[] = {"isNotInside"};
exceptions[] = {"isNotInside", "isNotSitting"};
statement = QUOTE([ARR_3(_target, true, 4)] call DFUNC(displayPatientInformation));
modifierFunction = QUOTE([ARR_4(_target,_player,4,_this select 3)] call FUNC(modifyMedicalAction));
condition = "true";
@ -435,7 +435,7 @@ class Medical {
class ACE_LegRight {
displayName = ECSTRING(interaction,LegRight);
runOnHover = 1;
exceptions[] = {"isNotInside"};
exceptions[] = {"isNotInside", "isNotSitting"};
statement = QUOTE([ARR_3(_target, true, 5)] call DFUNC(displayPatientInformation));
modifierFunction = QUOTE([ARR_4(_target,_player,5,_this select 3)] call FUNC(modifyMedicalAction));
condition = "true";

View File

@ -9,21 +9,21 @@ class CfgVehicles {
condition = QUOTE(([DISPLAY_MODE_DIALOG] call FUNC(canShow)) && {GVAR(currentShowMode) != DISPLAY_MODE_DIALOG});
statement = QUOTE([DISPLAY_MODE_DIALOG] call FUNC(openDisplay));
icon = QUOTE(PATHTOF(UI\icon_microDAGR.paa));
exceptions[] = {"notOnMap", "isNotInside"};
exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"};
class GVAR(show) {
//Opens the mini map
displayName = CSTRING(show);
condition = QUOTE(([DISPLAY_MODE_DISPLAY] call FUNC(canShow)) && {GVAR(currentShowMode) != DISPLAY_MODE_DISPLAY});
statement = QUOTE([DISPLAY_MODE_DISPLAY] call FUNC(openDisplay));
icon = QUOTE(PATHTOF(UI\icon_microDAGR.paa));
exceptions[] = {"notOnMap", "isNotInside"};
exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"};
};
class GVAR(close) {
displayName = CSTRING(closeUnit);
condition = QUOTE(GVAR(currentShowMode) != DISPLAY_MODE_CLOSED);
statement = QUOTE([DISPLAY_MODE_CLOSED] call FUNC(openDisplay));
icon = QUOTE(PATHTOF(UI\icon_microDAGR.paa));
exceptions[] = {"notOnMap", "isNotInside"};
exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"};
};
};
};

View File

@ -9,7 +9,7 @@ _conditonCode = {
("ACE_microDAGR" in (items ACE_player))
};
_toggleCode = {
if !([ACE_player, objNull, ["notOnMap", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {};
if !([ACE_player, objNull, ["notOnMap", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {};
[] call FUNC(openDisplay); //toggle display mode
};
_closeCode = {

View File

@ -26,11 +26,11 @@ case (DISPLAY_MODE_CLOSED): {_returnValue = true}; //Can always close
case (DISPLAY_MODE_HIDDEN): {_returnValue = true}; //Can always hide
case (DISPLAY_MODE_DIALOG): {
_returnValue = ("ACE_microDAGR" in (items ACE_player)) && {[ACE_player, objNull, ["notOnMap", "isNotInside"]] call EFUNC(common,canInteractWith)};
_returnValue = ("ACE_microDAGR" in (items ACE_player)) && {[ACE_player, objNull, ["notOnMap", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)};
};
case (DISPLAY_MODE_DISPLAY): {
//Can't have minimap up while zoomed in
_returnValue = (cameraview != "GUNNER") && {"ACE_microDAGR" in (items ACE_player)} && {[ACE_player, objNull, ["notOnMap", "isNotInside"]] call EFUNC(common,canInteractWith)};
_returnValue = (cameraview != "GUNNER") && {"ACE_microDAGR" in (items ACE_player)} && {[ACE_player, objNull, ["notOnMap", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)};
};
};

View File

@ -9,7 +9,7 @@ class CfgVehicles {
statement = QUOTE(_this call FUNC(rangeTableOpen));
priority = 0;
icon = QUOTE(PATHTOF(UI\icon_rangeTable.paa));
exceptions[] = {"notOnMap", "isNotInside"};
exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"};
};
};
};

View File

@ -40,7 +40,7 @@ GVAR(ppEffectMuzzleFlash) ppEffectCommit 0;
["ACE3 Equipment", QGVAR(IncreaseNVGBrightness), localize LSTRING(IncreaseNVGBrightness),
{
// Conditions: canInteract
if !([ACE_player, objNull, ["isNotEscorting", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false};
if !([ACE_player, objNull, ["isNotEscorting", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false};
// Conditions: specific
if ((currentVisionMode ACE_player != 1)) exitWith {false};
@ -54,7 +54,7 @@ GVAR(ppEffectMuzzleFlash) ppEffectCommit 0;
["ACE3 Equipment", QGVAR(DecreaseNVGBrightness), localize LSTRING(DecreaseNVGBrightness),
{
// Conditions: canInteract
if !([ACE_player, objNull, ["isNotEscorting", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false};
if !([ACE_player, objNull, ["isNotEscorting", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false};
// Conditions: specific
if ((currentVisionMode ACE_player != 1)) exitWith {false};

View File

@ -16,7 +16,7 @@ class CfgVehicles {
class ACE_CheckTemperature {
displayName = CSTRING(CheckTemperatureShort);
condition = "switch (currentWeapon _player) do {case (''): {false}; case (primaryWeapon _player); case (secondaryWeapon _player); case (handgunWeapon _player): {true}; default {false}}";
exceptions[] = {"isNotInside"};
exceptions[] = {"isNotInside", "isNotSitting"};
statement = QUOTE( [ARR_2(_player, currentWeapon _player)] call FUNC(CheckTemperature); );
showDisabled = 0;
priority = 2.9;

View File

@ -7,7 +7,7 @@ if !(hasInterface) exitWith {};
["ACE3 Weapons", QGVAR(checkAmmo), localize LSTRING(checkAmmo),
{
// Conditions: canInteract
if !([ACE_player, (vehicle ACE_player), ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false};
if !([ACE_player, (vehicle ACE_player), ["isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false};
// Conditions: specific
if !([ACE_player] call EFUNC(common,canUseWeapon) || {(vehicle ACE_player) isKindOf "StaticWeapon"}) exitWith {false};

View File

@ -11,7 +11,7 @@ class CfgVehicles {
showDisabled = 0;
priority = 0.2;
//icon = QUOTE(PATHTOF(UI\...)); // TODO
exceptions[] = {"notOnMap", "isNotInside"};
exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"};
};
};
};

View File

@ -0,0 +1 @@
z\ace\addons\sitting

View File

@ -0,0 +1,7 @@
class ACE_Settings {
class GVAR(enable) {
value = 1;
typeName = "BOOL";
displayName = CSTRING(Enable);
};
};

View File

@ -0,0 +1,19 @@
class Extended_PreInit_EventHandlers {
class ADDON {
init = QUOTE(call COMPILE_FILE(XEH_preInit));
};
};
class Extended_PostInit_EventHandlers {
class ADDON {
clientInit = QUOTE(call COMPILE_FILE(XEH_clientInit));
};
};
class Extended_Killed_EventHandlers {
class CAManBase {
class ADDON {
killed = QUOTE(_this call DFUNC(handleInterrupt));
};
};
};

View File

@ -0,0 +1,128 @@
class CfgVehicles {
class ACE_Module;
class ACE_ModuleSitting: ACE_Module {
author = ECSTRING(common,ACETeam);
category = "ACE";
displayName = CSTRING(ModuleDisplayName);
function = QFUNC(moduleInit);
scope = 2;
isGlobal = 1;
icon = QUOTE(PATHTOF(UI\Icon_Module_Sitting_ca.paa));
class Arguments {
class enable {
displayName = CSTRING(Enable);
typeName = "BOOL";
defaultValue = 1;
};
};
class ModuleDescription {
description = CSTRING(ModuleDescription);
};
};
class Man;
class CAManBase: Man {
class ACE_SelfActions {
class GVAR(Stand) {
displayName = CSTRING(Stand);
condition = QUOTE(_player call FUNC(canStand));
exceptions[] = {"isNotSitting"};
statement = QUOTE(_player call FUNC(stand));
priority = 0;
icon = PATHTOF(UI\stand_ca.paa);
};
};
};
#define MACRO_SEAT_ACTION \
class ACE_Actions { \
class ACE_MainActions { \
displayName = ECSTRING(interaction,MainAction); \
selection = ""; \
distance = 1.25; \
condition = "true"; \
class GVAR(Sit) { \
displayName = CSTRING(Sit); \
condition = QUOTE(_this call FUNC(canSit)); \
statement = QUOTE(_this call FUNC(sit)); \
showDisabled = 0; \
priority = 0; \
icon = PATHTOF(UI\sit_ca.paa); \
}; \
}; \
};
class ThingX;
// Folding Chair
class Land_CampingChair_V1_F: ThingX {
XEH_ENABLED;
MACRO_SEAT_ACTION
GVAR(canSit) = 1;
GVAR(sitDirection) = 180;
GVAR(sitPosition[]) = {0, -0.1, -0.45};
GVAR(sitRotation) = 10;
};
// Camping Chair
class Land_CampingChair_V2_F: ThingX {
XEH_ENABLED;
MACRO_SEAT_ACTION
GVAR(canSit) = 1;
GVAR(sitDirection) = 180;
GVAR(sitPosition[]) = {0, -0.1, -0.45};
GVAR(sitRotation) = 45;
};
// Chair (Plastic)
class Land_ChairPlastic_F: ThingX {
XEH_ENABLED;
MACRO_SEAT_ACTION
GVAR(canSit) = 1;
GVAR(sitDirection) = 90;
GVAR(sitPosition[]) = {0, 0, -0.5};
GVAR(sitRotation) = 5;
};
// Chair (Wooden)
class Land_ChairWood_F: ThingX {
XEH_ENABLED;
MACRO_SEAT_ACTION
GVAR(canSit) = 1;
GVAR(sitDirection) = 180;
GVAR(sitPosition[]) = {0, -0.05, 0};
GVAR(sitRotation) = 75;
};
// Office Chair
class Land_OfficeChair_01_F: ThingX {
XEH_ENABLED;
MACRO_SEAT_ACTION
GVAR(canSit) = 1;
GVAR(sitDirection) = 180;
GVAR(sitPosition[]) = {0, 0, -0.6};
GVAR(sitRotation) = 15;
};
// Rattan Chair
class Land_RattanChair_01_F: ThingX {
XEH_ENABLED;
MACRO_SEAT_ACTION
GVAR(canSit) = 1;
GVAR(sitDirection) = 180;
GVAR(sitPosition[]) = {0, -0.1, -1}; // Z must be -1 due to chair's geometry (magic floating seat point)
GVAR(sitRotation) = 2;
};
// Field Toilet
class Land_FieldToilet_F: ThingX {
XEH_ENABLED;
MACRO_SEAT_ACTION
GVAR(canSit) = 1;
GVAR(sitDirection) = 180;
GVAR(sitPosition[]) = {0, 0.75, -1.1};
GVAR(sitRotation) = 10;
};
// Toiletbox
class Land_ToiletBox_F: ThingX {
XEH_ENABLED;
MACRO_SEAT_ACTION
GVAR(canSit) = 1;
GVAR(sitDirection) = 180;
GVAR(sitPosition[]) = {0, 0.75, -1.1};
GVAR(sitRotation) = 10;
};
};

10
addons/sitting/README.md Normal file
View File

@ -0,0 +1,10 @@
ace_sitting
===============
The Sitting module introduces ability to sit on different chairs and toilets.
## Maintainers
The people responsible for merging changes to this component or answering potential questions.
- [Jonpas] (https://github.com/jonpas)

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,12 @@
#include "script_component.hpp"
// Exit on Headless
if !(hasInterface) exitWith {};
// Add interaction menu exception
["isNotSitting", {!((_this select 0) getVariable [QGVAR(isSitting), false])}] call EFUNC(common,addCanInteractWithCondition);
// Handle interruptions
["medical_onUnconscious", {_this call DFUNC(handleInterrupt)}] call EFUNC(common,addEventhandler);
["SetHandcuffed", {_this call DFUNC(handleInterrupt)}] call EFUNC(common,addEventhandler);
["SetSurrendered", {_this call DFUNC(handleInterrupt)}] call EFUNC(common,addEventhandler);

View File

@ -0,0 +1,13 @@
#include "script_component.hpp"
ADDON = false;
PREP(canSit);
PREP(canStand);
PREP(getRandomAnimation);
PREP(handleInterrupt);
PREP(moduleInit);
PREP(sit);
PREP(stand);
ADDON = true;

17
addons/sitting/config.cpp Normal file
View File

@ -0,0 +1,17 @@
#include "script_component.hpp"
class CfgPatches {
class ADDON {
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_interaction"};
author[] = {"Jonpas"};
authorUrl = "https://github.com/jonpas";
VERSION_CONFIG;
};
};
#include "CfgEventHandlers.hpp"
#include "ACE_Settings.hpp"
#include "CfgVehicles.hpp"

View File

@ -0,0 +1,22 @@
/*
* Author: Jonpas
* Check if the player can sit down.
*
* Arguments:
* 0: Seat <OBJECT>
* 1: Player <OBJECT>
*
* Return Value:
* Can Sit Down <BOOL>
*
* Example:
* [seat, player] call ace_sitting_fnc_canSit;
*
* Public: No
*/
#include "script_component.hpp"
PARAMS_2(_seat,_player);
// Sitting enabled, is seat object and not occupied
(GVAR(enable) && {getNumber (configFile >> "CfgVehicles" >> typeOf _seat >> QGVAR(canSit)) == 1} && {isNil{_seat getVariable QGVAR(seatOccupied)}})

View File

@ -0,0 +1,21 @@
/*
* Author: Jonpas
* Check if the player can stand up (is in sitting position).
*
* Arguments:
* Player <OBJECT>
*
* Return Value:
* Can Stand Up <BOOL>
*
* Example:
* player call ace_sitting_fnc_canStand;
*
* Public: No
*/
#include "script_component.hpp"
PARAMS_1(_player);
// Sitting
(_player getVariable [QGVAR(isSitting),false])

View File

@ -0,0 +1,49 @@
/*
* Author: Jonpas
* Gets a random animations from the list.
*
* Arguments:
* None
*
* Return Value:
* Random Animation <STRING>
*
* Example:
* _animation = call ace_sitting_fnc_getRandomAnimation;
*
* Public: No
*/
#include "script_component.hpp"
private ["_animations"];
// Animations Pool
_animations = [
"HubSittingChairUA_idle1",
"HubSittingChairUA_idle2",
"HubSittingChairUA_idle3",
"HubSittingChairUA_move1",
"HubSittingChairUB_idle1",
"HubSittingChairUB_idle2",
"HubSittingChairUB_idle3",
"HubSittingChairUB_move1",
"HubSittingChairUC_idle1",
"HubSittingChairUC_idle2",
"HubSittingChairUC_idle3",
"HubSittingChairUC_move1",
"HubSittingChairA_idle1",
"HubSittingChairA_idle2",
"HubSittingChairA_idle3",
"HubSittingChairA_move1",
"HubSittingChairB_idle1",
"HubSittingChairB_idle2",
"HubSittingChairB_idle3",
"HubSittingChairB_move1",
"HubSittingChairC_idle1",
"HubSittingChairC_idle2",
"HubSittingChairC_idle3",
"HubSittingChairC_move1"
];
// Select random animation
(_animations select (floor (random (count _animations))))

View File

@ -0,0 +1,22 @@
/*
* Author: Jonpas
* Handles interruptions of sitting, like killed or unconsciousness.
*
* Arguments:
* 0: Player <OBJECT>
*
* Return Value:
* None
*
* Example:
* [player] call ace_sitting_fnc_handleInterrupt;
*
* Public: No
*/
#include "script_component.hpp"
PARAMS_1(_player);
if (_player getVariable [QGVAR(isSitting), false]) then {
[_player] call FUNC(stand);
};

View File

@ -0,0 +1,21 @@
/*
* Author: Jonpas
* Initializes the Sitting module.
*
* Arguments:
* Whatever the module provides.
*
* Return Value:
* None
*/
#include "script_component.hpp"
if !(isServer) exitWith {};
PARAMS_3(_logic,_units,_activated);
if !(_activated) exitWith {};
[_logic, QGVAR(enable), "enable"] call EFUNC(common,readSettingFromModule);
diag_log text "[ACE]: Sitting Module Initialized.";

View File

@ -0,0 +1,63 @@
/*
* Author: Jonpas
* Sits down the player.
*
* Arguments:
* 0: Seat <OBJECT>
* 1: Player <OBJECT>
*
* Return Value:
* None
*
* Example:
* [seat, player] call ace_sitting_fnc_sit;
*
* Public: No
*/
#include "script_component.hpp"
private ["_configFile", "_sitDirection", "_sitPosition", "_sitRotation", "_sitDirectionVisual"];
PARAMS_2(_seat,_player);
// Set global variable for standing up
GVAR(seat) = _seat;
// Overwrite weird position, because Arma decides to set it differently based on current animation/stance...
_player switchMove "amovpknlmstpsraswrfldnon";
// Read config
_configFile = configFile >> "CfgVehicles" >> typeOf _seat;
_sitDirection = (getDir _seat) + getNumber (_configFile >> QGVAR(sitDirection));
_sitPosition = getArray (_configFile >> QGVAR(sitPosition));
_sitRotation = if (isNumber (_configFile >> QGVAR(sitRotation))) then {getNumber (_configFile >> QGVAR(sitRotation))} else {45}; // Apply default if config entry not present
// Get random animation and perform it (before moving player to ensure correct placement)
[_player, call FUNC(getRandomAnimation), 2] call EFUNC(common,doAnimation);
// Set direction and position
_player setDir _sitDirection;
_player setPosASL (_seat modelToWorld _sitPosition) call EFUNC(common,positionToASL);
// Set variables
_player setVariable [QGVAR(isSitting), true];
_seat setVariable [QGVAR(seatOccupied), true, true]; // To prevent multiple people sitting on one seat
// Add rotation control PFH
_sitDirectionVisual = getDirVisual _player; // Needed for precision and issues with using above directly
[{
EXPLODE_3_PVT(_this select 0,_player,_sitDirectionVisual,_sitRotation);
// Remove PFH if not sitting any more
if !(_player getVariable [QGVAR(isSitting), false]) exitWith {
[_this select 1] call cba_fnc_removePerFrameHandler;
};
// Set direction to boundary when passing it
if (getDir _player > _sitDirectionVisual + _sitRotation) exitWith {
_player setDir (_sitDirectionVisual + _sitRotation);
};
if (getDir _player < _sitDirectionVisual - _sitRotation) exitWith {
_player setDir (_sitDirectionVisual - _sitRotation);
};
}, 0, [_player, _sitDirectionVisual, _sitRotation]] call cba_fnc_addPerFrameHandler;

View File

@ -0,0 +1,26 @@
/*
* Author: Jonpas
* Stands up the player.
*
* Arguments:
* Player <OBJECT>
*
* Return Value:
* None
*
* Example:
* player call ace_sitting_fnc_stand;
*
* Public: No
*/
#include "script_component.hpp"
PARAMS_1(_player);
// Restore animation
[_player, "", 2] call EFUNC(common,doAnimation);
// Set variables to nil
_player setVariable [QGVAR(isSitting), nil];
GVAR(seat) setVariable [QGVAR(seatOccupied), nil, true];
GVAR(seat) = nil;

View File

@ -0,0 +1 @@
#include "\z\ace\addons\sitting\script_component.hpp"

View File

@ -0,0 +1,12 @@
#define COMPONENT sitting
#include "\z\ace\addons\main\script_mod.hpp"
#ifdef DEBUG_ENABLED_SITTING
#define DEBUG_MODE_FULL
#endif
#ifdef DEBUG_SETTINGS_SITTING
#define DEBUG_SETTINGS DEBUG_SETTINGS_SITTING
#endif
#include "\z\ace\addons\main\script_macros.hpp"

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<Project name="ACE">
<Package name="Sitting">
<Key ID="STR_ACE_Sitting_Sit">
<English>Sit Down</English>
<Polish>Usiądź</Polish>
</Key>
<Key ID="STR_ACE_Sitting_Stand">
<English>Stand Up</English>
<Polish>Wstań</Polish>
</Key>
<Key ID="STR_ACE_Sitting_Enable">
<English>Enable Sitting</English>
</Key>
<Key ID="STR_ACE_Sitting_ModuleDisplayName">
<English>Sitting</English>
</Key>
<Key ID="STR_ACE_Sitting_ModuleDescription">
<English>This module allows you to disable the ability to sit on chairs and toilets.</English>
</Key>
</Package>
</Project>

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB