mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Fastroping - Remove FRIES on vehicle deletion / adjust Ghosthawk Fries (#6932)
* fastroping_fnc_deequipFRIES, remove FRIES on vehicle deletion * Prevent FRIES from clipping into Ghost Hawk right door * UNequipFRIES * Remove fastroping checkVehicleThread * Document FRIES equip and unequip functions
This commit is contained in:
parent
83cd316b2e
commit
cc22e95012
@ -207,7 +207,7 @@ class CfgVehicles {
|
|||||||
GVAR(enabled) = 2;
|
GVAR(enabled) = 2;
|
||||||
GVAR(ropeOrigins)[] = {"ropeOriginRight", "ropeOriginLeft"};
|
GVAR(ropeOrigins)[] = {"ropeOriginRight", "ropeOriginLeft"};
|
||||||
GVAR(friesType) = "ACE_friesAnchorBar";
|
GVAR(friesType) = "ACE_friesAnchorBar";
|
||||||
GVAR(friesAttachmentPoint)[] = {0.065, 2.2, -0.15};
|
GVAR(friesAttachmentPoint)[] = {0.035, 2.2, -0.15};
|
||||||
GVAR(onPrepare) = QFUNC(onPrepareCommon);
|
GVAR(onPrepare) = QFUNC(onPrepareCommon);
|
||||||
GVAR(onCut) = QFUNC(onCutCommon);
|
GVAR(onCut) = QFUNC(onCutCommon);
|
||||||
EQUIP_FRIES_ATTRIBUTE;
|
EQUIP_FRIES_ATTRIBUTE;
|
||||||
|
@ -4,7 +4,6 @@ PREP(canDeployRopes);
|
|||||||
PREP(canFastRope);
|
PREP(canFastRope);
|
||||||
PREP(canPrepareFRIES);
|
PREP(canPrepareFRIES);
|
||||||
PREP(canStowFRIES);
|
PREP(canStowFRIES);
|
||||||
PREP(checkVehicleThread);
|
|
||||||
PREP(cutRopes);
|
PREP(cutRopes);
|
||||||
PREP(deployAI);
|
PREP(deployAI);
|
||||||
PREP(deployRopes);
|
PREP(deployRopes);
|
||||||
@ -18,3 +17,4 @@ PREP(onPrepareCommon);
|
|||||||
PREP(onRopeBreak);
|
PREP(onRopeBreak);
|
||||||
PREP(prepareFRIES);
|
PREP(prepareFRIES);
|
||||||
PREP(stowFRIES);
|
PREP(stowFRIES);
|
||||||
|
PREP(unequipFRIES);
|
||||||
|
@ -1,24 +0,0 @@
|
|||||||
#include "script_component.hpp"
|
|
||||||
/*
|
|
||||||
* Author: BaerMitUmlaut
|
|
||||||
* Checks if the given helicopter still exits, and if not, destroys the FRIES.
|
|
||||||
*
|
|
||||||
* Arguments:
|
|
||||||
* 0: The helicopter <OBJECT>
|
|
||||||
* 1: The helicopter's FRIES <OBJECT>
|
|
||||||
*
|
|
||||||
* Return Value:
|
|
||||||
* None
|
|
||||||
*
|
|
||||||
* Example:
|
|
||||||
* [_vehicle, _fries] call ace_fastroping_fnc_checkVehicleThread
|
|
||||||
*
|
|
||||||
* Public: No
|
|
||||||
*/
|
|
||||||
params ["_vehicle", "_fries"];
|
|
||||||
|
|
||||||
if (isNull _vehicle) then {
|
|
||||||
deleteVehicle _fries;
|
|
||||||
} else {
|
|
||||||
[FUNC(checkVehicleThread), _this, 5] call CBA_fnc_waitAndExecute;
|
|
||||||
};
|
|
@ -12,7 +12,7 @@
|
|||||||
* Example:
|
* Example:
|
||||||
* [_vehicle] call ace_fastroping_fnc_equipFRIES
|
* [_vehicle] call ace_fastroping_fnc_equipFRIES
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: Yes
|
||||||
*/
|
*/
|
||||||
params ["_vehicle"];
|
params ["_vehicle"];
|
||||||
|
|
||||||
@ -24,15 +24,8 @@ if !(isNumber (_config >> QGVAR(enabled))) then {
|
|||||||
private _fries = (getText (_config >> QGVAR(friesType))) createVehicle [0, 0, 0];
|
private _fries = (getText (_config >> QGVAR(friesType))) createVehicle [0, 0, 0];
|
||||||
_fries attachTo [_vehicle, (getArray (_config >> QGVAR(friesAttachmentPoint)))];
|
_fries attachTo [_vehicle, (getArray (_config >> QGVAR(friesAttachmentPoint)))];
|
||||||
_vehicle setVariable [QGVAR(FRIES), _fries, true];
|
_vehicle setVariable [QGVAR(FRIES), _fries, true];
|
||||||
_vehicle addEventHandler ["Killed", {
|
|
||||||
params ["_vehicle"];
|
|
||||||
deleteVehicle (_vehicle getVariable [QGVAR(FRIES), objNull]);
|
|
||||||
_vehicle setVariable [QGVAR(FRIES), nil, true];
|
|
||||||
|
|
||||||
if !((_vehicle getVariable [QGVAR(deployedRopes), []] isEqualTo [])) then {
|
_vehicle addEventHandler ["Killed", FUNC(unequipFRIES)];
|
||||||
[_vehicle] call FUNC(cutRopes);
|
_vehicle addEventHandler ["Deleted", FUNC(unequipFRIES)];
|
||||||
};
|
|
||||||
}];
|
|
||||||
[FUNC(checkVehicleThread), [_vehicle, _fries], 5] call CBA_fnc_waitAndExecute;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
24
addons/fastroping/functions/fnc_unequipFRIES.sqf
Normal file
24
addons/fastroping/functions/fnc_unequipFRIES.sqf
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
/*
|
||||||
|
* Author: BaerMitUmlaut
|
||||||
|
* Removes FRIES from helicopter.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: The helicopter <OBJECT>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* None
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* [_vehicle] call ace_fastroping_fnc_unequipFRIES
|
||||||
|
*
|
||||||
|
* Public: Yes
|
||||||
|
*/
|
||||||
|
params ["_vehicle"];
|
||||||
|
|
||||||
|
deleteVehicle (_vehicle getVariable [QGVAR(FRIES), objNull]);
|
||||||
|
_vehicle setVariable [QGVAR(FRIES), nil, true];
|
||||||
|
|
||||||
|
if !((_vehicle getVariable [QGVAR(deployedRopes), []] isEqualTo [])) then {
|
||||||
|
[_vehicle] call FUNC(cutRopes);
|
||||||
|
};
|
@ -80,3 +80,23 @@ To create a custom FRIES you will need to look out for a few things:
|
|||||||
The `onCut` and `onPrepare` functions are responsible for opening/closing the helicopter doors and animating the FRIES (if equipped) when the FRIES gets prepared and the ropes get cut.
|
The `onCut` and `onPrepare` functions are responsible for opening/closing the helicopter doors and animating the FRIES (if equipped) when the FRIES gets prepared and the ropes get cut.
|
||||||
|
|
||||||
ACE3 provides two functions that are compatible with most helicopters and all ACE3 FRIES. It is recommended to use the naming scheme for doors that is present in the base game so you can use the already existing functions `ace_fastroping_fnc_onCutCommon` and `ace_fastroping_fnc_onPrepareCommon`. You can however define your own functions if you so desire. Note that these functions run in the unscheduled environment, so commands like `sleep` and `waitUntil` will not work unless you use `spawn`. It is recommended to use `ace_common_fnc_waitAndExecute` and `ace_common_fnc_waitUntilAndExecute` instead though.
|
ACE3 provides two functions that are compatible with most helicopters and all ACE3 FRIES. It is recommended to use the naming scheme for doors that is present in the base game so you can use the already existing functions `ace_fastroping_fnc_onCutCommon` and `ace_fastroping_fnc_onPrepareCommon`. You can however define your own functions if you so desire. Note that these functions run in the unscheduled environment, so commands like `sleep` and `waitUntil` will not work unless you use `spawn`. It is recommended to use `ace_common_fnc_waitAndExecute` and `ace_common_fnc_waitUntilAndExecute` instead though.
|
||||||
|
|
||||||
|
## 4. Scripting
|
||||||
|
|
||||||
|
### 4.1. Add FRIES to helicopter
|
||||||
|
|
||||||
|
`ace_fastroping_fnc_equipFRIES`
|
||||||
|
|
||||||
|
| | Arguments | Type | Optional (default value)
|
||||||
|
---| --------- | ---- | ------------------------
|
||||||
|
0 | Helicopter | Object | Required
|
||||||
|
**R** | None | None | Return value
|
||||||
|
|
||||||
|
### 4.2. Remove FRIES from helicopter
|
||||||
|
|
||||||
|
`ace_fastroping_fnc_unequipFRIES`
|
||||||
|
|
||||||
|
| | Arguments | Type | Optional (default value)
|
||||||
|
---| --------- | ---- | ------------------------
|
||||||
|
0 | Helicopter | Object | Required
|
||||||
|
**R** | None | None | Return value
|
||||||
|
Loading…
Reference in New Issue
Block a user