mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Fix change seat while vehicle is moving (#7692)
This commit is contained in:
parent
92941c11de
commit
09cc8173a1
@ -33,17 +33,17 @@
|
|||||||
[ARR_5( \
|
[ARR_5( \
|
||||||
{!isNull objectParent (_this select 0)}, \
|
{!isNull objectParent (_this select 0)}, \
|
||||||
{ \
|
{ \
|
||||||
params [ARR_2("_player","_damageBlocked")]; \
|
LOG_1("moved in after %1 frames",diag_frameno-GVAR(frame)); \
|
||||||
if (_damageBlocked) then {_player allowDamage true}; \
|
(_this select 0) enableSimulation true; \
|
||||||
LOG_1("moved in in %1 frames",diag_frameno-GVAR(frame)); \
|
|
||||||
}, \
|
}, \
|
||||||
[ARR_4(_player,_damageBlocked,_moveBackCode,_moveBackParams)], \
|
[ARR_3(_player,_moveBackCode,_moveBackParams)], \
|
||||||
TAKEN_SEAT_TIMEOUT, \
|
TAKEN_SEAT_TIMEOUT, \
|
||||||
{ \
|
{ \
|
||||||
params [ARR_4("_player","_damageBlocked","_moveBackCode","_moveBackParams")]; \
|
params [ARR_3("_player","_moveBackCode","_moveBackParams")]; \
|
||||||
|
WARNING_1("failed move in after %1 frames",diag_frameno-GVAR(frame)); \
|
||||||
[ARR_2(_player,_moveBackParams)] call _moveBackCode; \
|
[ARR_2(_player,_moveBackParams)] call _moveBackCode; \
|
||||||
if (_damageBlocked) then {_player allowDamage true}; \
|
|
||||||
localize "str_mis_state_failed" call EFUNC(common,displayTextStructured); \
|
localize "str_mis_state_failed" call EFUNC(common,displayTextStructured); \
|
||||||
|
_player enableSimulation true; \
|
||||||
} \
|
} \
|
||||||
)] call CBA_fnc_waitUntilAndExecute;
|
)] call CBA_fnc_waitUntilAndExecute;
|
||||||
|
|
||||||
@ -62,18 +62,10 @@ private _fnc_move = {
|
|||||||
(_this select 2) params ["_moveInCode", "_moveInParams", "_currentTurret", "_moveBackCode", "_moveBackParams", ["_enabledByAnimationSource", ""]];
|
(_this select 2) params ["_moveInCode", "_moveInParams", "_currentTurret", "_moveBackCode", "_moveBackParams", ["_enabledByAnimationSource", ""]];
|
||||||
TRACE_7("fnc_move params",_moveInCode,_moveInParams,_currentTurret,_moveBackCode,_moveBackParams,_enabledByAnimationSource,call {GVAR(frame)=diag_frameno});
|
TRACE_7("fnc_move params",_moveInCode,_moveInParams,_currentTurret,_moveBackCode,_moveBackParams,_enabledByAnimationSource,call {GVAR(frame)=diag_frameno});
|
||||||
|
|
||||||
// check bugged FFV
|
|
||||||
if (
|
|
||||||
!("" isEqualTo _enabledByAnimationSource)
|
|
||||||
&& {1 > _target doorPhase _enabledByAnimationSource}
|
|
||||||
) exitWith {};
|
|
||||||
|
|
||||||
// workaround getting damage when moveOut while vehicle is moving
|
// workaround getting damage when moveOut while vehicle is moving
|
||||||
private _damageBlocked = false;
|
// also this helps with arma bug when unit is stuck in wrong anim when move in turret with configured enabledByAnimationSource
|
||||||
if (isDamageAllowed _player) then {
|
_player enableSimulation false;
|
||||||
_player allowDamage false;
|
|
||||||
_damageBlocked = true;
|
|
||||||
};
|
|
||||||
private _preserveEngineOn = _player == driver _target && {isEngineOn _target};
|
private _preserveEngineOn = _player == driver _target && {isEngineOn _target};
|
||||||
moveOut _player;
|
moveOut _player;
|
||||||
if (_preserveEngineOn) then {_target engineOn true};
|
if (_preserveEngineOn) then {_target engineOn true};
|
||||||
@ -89,12 +81,12 @@ private _fnc_move = {
|
|||||||
[
|
[
|
||||||
{params ["_target", "_player", "_currentTurret"]; IS_MOVED_OUT},
|
{params ["_target", "_player", "_currentTurret"]; IS_MOVED_OUT},
|
||||||
{
|
{
|
||||||
params ["", "_player", "", "_moveInCode", "_moveInParams", "_moveBackCode", "_moveBackParams", "_damageBlocked"];
|
params ["", "_player", "", "_moveInCode", "_moveInParams", "_moveBackCode", "_moveBackParams"];
|
||||||
LOG_2("moved out in %1 frames",diag_frameno-GVAR(frame),call {GVAR(frame)=diag_frameno; 0});
|
LOG_2("moved out after %1 frames",diag_frameno-GVAR(frame),call {GVAR(frame)=diag_frameno; 0});
|
||||||
[_player, _moveInParams] call _moveInCode;
|
[_player, _moveInParams] call _moveInCode;
|
||||||
WAIT_IN_OR_MOVE_BACK;
|
WAIT_IN_OR_MOVE_BACK;
|
||||||
},
|
},
|
||||||
[_target, _player, _currentTurret, _moveInCode, _moveInParams, _moveBackCode, _moveBackParams, _damageBlocked]
|
[_target, _player, _currentTurret, _moveInCode, _moveInParams, _moveBackCode, _moveBackParams]
|
||||||
] call CBA_fnc_waitUntilAndExecute;
|
] call CBA_fnc_waitUntilAndExecute;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -216,12 +208,6 @@ private _cargoNumber = -1;
|
|||||||
private _gunnerCompartments = (_turretConfig >> "gunnerCompartments") call BIS_fnc_getCfgData;
|
private _gunnerCompartments = (_turretConfig >> "gunnerCompartments") call BIS_fnc_getCfgData;
|
||||||
TO_COMPARTMENT_STRING(_gunnerCompartments);
|
TO_COMPARTMENT_STRING(_gunnerCompartments);
|
||||||
if (_compartment != _gunnerCompartments) then {breakTo "crewLoop"};
|
if (_compartment != _gunnerCompartments) then {breakTo "crewLoop"};
|
||||||
// due to arma bug the unit is stuck in wrong anim when move in turret with configured enabledByAnimationSource
|
|
||||||
private _enabledByAnimationSource = getText (_turretConfig >> "enabledByAnimationSource");
|
|
||||||
if (
|
|
||||||
!("" isEqualTo _enabledByAnimationSource)
|
|
||||||
&& {1 > _vehicle doorPhase _enabledByAnimationSource}
|
|
||||||
) then {breakTo "crewLoop"};
|
|
||||||
_params = [{MOVE_IN_CODE(moveInTurret)}, [_vehicle, _turretPath], _currentTurret, _moveBackCode, _moveBackParams, _enabledByAnimationSource];
|
_params = [{MOVE_IN_CODE(moveInTurret)}, [_vehicle, _turretPath], _currentTurret, _moveBackCode, _moveBackParams, _enabledByAnimationSource];
|
||||||
_statement = _fnc_move;
|
_statement = _fnc_move;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user