Upload SlingLoad
This commit is contained in:
parent
3ea8a29cc1
commit
fc7f84bfc2
29
MPD_SlingLoad/init.sqf
Normal file
29
MPD_SlingLoad/init.sqf
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
Simple Sling Load Script by MrPvTDagger#4176 :D
|
||||||
|
*/
|
||||||
|
|
||||||
|
diag_log "MPD_SlingLoad is Loading...";
|
||||||
|
|
||||||
|
/*
|
||||||
|
This is for Modded Objects that Might not be slingable by default. I have done this automtically but Just incase it doesn't work with all mods.
|
||||||
|
|
||||||
|
EXAMPLE:
|
||||||
|
_ccargo = [
|
||||||
|
RHS_Storage_Create_1,
|
||||||
|
RHS_Storage_Create_2,
|
||||||
|
RHS_Storage_Create_3 // Make sure the last one doesn't have a comment at the end
|
||||||
|
];
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
_ccargo = [
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
|
// ====================== Don't Touch Anything Below this line ======================
|
||||||
|
_acargo = entities [[], ["Air","Man"], true];; // Maybe Better way of Doing This????
|
||||||
|
|
||||||
|
_acargo append _ccargo;
|
||||||
|
{
|
||||||
|
[_x] execVM "MPD_SlingLoad\sling.sqf";
|
||||||
|
} forEach _acargo;
|
83
MPD_SlingLoad/sling.sqf
Normal file
83
MPD_SlingLoad/sling.sqf
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
_nObject = nearestObject [_this select 0, "Helicopter"];
|
||||||
|
[
|
||||||
|
_this select 0,
|
||||||
|
"Sling to Nearest Helicopter",
|
||||||
|
"\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_connect_ca.paa",
|
||||||
|
"\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_connect_ca.paa",
|
||||||
|
"_this distance _target < 3", // Condition for the action to be shown
|
||||||
|
"_caller distance _target < 3", // Condition for the action to progress
|
||||||
|
{}, // Code executed when action starts
|
||||||
|
{}, // Code executed on every progress tick
|
||||||
|
{
|
||||||
|
private ["_cargo","_nObject","_pilot","_Rope1","_Rope2","_Rope3","_Rope4","_widthFactor","_lengthFactor","_centerOfMass","_bbr","_p1","_p2","_maxWidth","_widthOffset","_maxLength","_lengthOffset","_maxHeight","_heightOffset","_rearCorner","_rearCorner2","_frontCorner","_frontCorner2"];
|
||||||
|
_cargo = _this select 0;
|
||||||
|
_nObject = nearestObject [_cargo, "Helicopter"];
|
||||||
|
_pilot = currentPilot _nObject;
|
||||||
|
_cargo attachTo [_nObject, [0, 0, -5]];
|
||||||
|
removeAllActions _cargo;
|
||||||
|
|
||||||
|
/*
|
||||||
|
Credits for finding corners go to sethduda from Advanced Sling Loading
|
||||||
|
https://github.com/sethduda/
|
||||||
|
https://github.com/sethduda/AdvancedSlingLoading
|
||||||
|
*/
|
||||||
|
_widthFactor = 0.5;
|
||||||
|
_lengthFactor = 0.5;
|
||||||
|
if(_nObject isKindOf "Air") then {
|
||||||
|
_widthFactor = 0.3;
|
||||||
|
};
|
||||||
|
if(_nObject isKindOf "Helicopter") then {
|
||||||
|
_widthFactor = 0.2;
|
||||||
|
_lengthFactor = 0.45;
|
||||||
|
};
|
||||||
|
|
||||||
|
_centerOfMass = getCenterOfMass _nObject;
|
||||||
|
_bbr = boundingBoxReal _nObject;
|
||||||
|
_p1 = _bbr select 0;
|
||||||
|
_p2 = _bbr select 1;
|
||||||
|
_maxWidth = abs ((_p2 select 0) - (_p1 select 0));
|
||||||
|
_widthOffset = ((_maxWidth / 2) - abs ( _centerOfMass select 0 )) * _widthFactor;
|
||||||
|
_maxLength = abs ((_p2 select 1) - (_p1 select 1));
|
||||||
|
_lengthOffset = ((_maxLength / 2) - abs (_centerOfMass select 1 )) * _lengthFactor;
|
||||||
|
_maxHeight = abs ((_p2 select 2) - (_p1 select 2));
|
||||||
|
_heightOffset = _maxHeight/6;
|
||||||
|
|
||||||
|
_rearCorner = [(_centerOfMass select 0) + _widthOffset, (_centerOfMass select 1) - _lengthOffset, (_centerOfMass select 2)+_heightOffset];
|
||||||
|
_rearCorner2 = [(_centerOfMass select 0) - _widthOffset, (_centerOfMass select 1) - _lengthOffset, (_centerOfMass select 2)+_heightOffset];
|
||||||
|
_frontCorner = [(_centerOfMass select 0) + _widthOffset, (_centerOfMass select 1) + _lengthOffset, (_centerOfMass select 2)+_heightOffset];
|
||||||
|
_frontCorner2 = [(_centerOfMass select 0) - _widthOffset, (_centerOfMass select 1) + _lengthOffset, (_centerOfMass select 2)+_heightOffset];
|
||||||
|
|
||||||
|
_Rope1 = ropeCreate [_nObject, [0,0,0], 14];
|
||||||
|
_Rope2 = ropeCreate [_nObject, [0,0,0], 14];
|
||||||
|
_Rope3 = ropeCreate [_nObject, [0,0,0], 14];
|
||||||
|
_Rope4 = ropeCreate [_nObject, [0,0,0], 14];
|
||||||
|
|
||||||
|
[_cargo , _rearCorner, [0,0,-1]] ropeAttachTo (_Rope1);
|
||||||
|
[_cargo , __rearCorner2, [0,0,-1]] ropeAttachTo (_Rope2);
|
||||||
|
[_cargo , _frontCorner, [0,0,-1]] ropeAttachTo (_Rope3);
|
||||||
|
[_cargo , _frontCorner2, [0,0,-1]] ropeAttachTo (_Rope4);
|
||||||
|
|
||||||
|
_pilot addAction ["Release Cargo", {
|
||||||
|
if !(isNull objectParent player) then {
|
||||||
|
_nObject = nearestObject [player, "B_MRAP_01_F"];
|
||||||
|
_cargoRopes = ropes t1; // Needs to be changed
|
||||||
|
{
|
||||||
|
ropeDestroy _x;
|
||||||
|
} forEach _cargoRopes;
|
||||||
|
detach _nObject;
|
||||||
|
[_nObject] execVM "MPD_SlingLoad\sling.sqf";
|
||||||
|
};
|
||||||
|
removeAllActions player;
|
||||||
|
}];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
{}, // Code executed on interrupted
|
||||||
|
[], // Arguments passed to the scripts as _this select 3
|
||||||
|
8, // Action duration [s]
|
||||||
|
0, // Priority
|
||||||
|
true, // Remove on completion
|
||||||
|
false // Show in unconscious state
|
||||||
|
] remoteExec ["BIS_fnc_holdActionAdd", 0, _this select 0]; // MP compatible implementation
|
Loading…
x
Reference in New Issue
Block a user