Quote:
Ok so I created this supply drop script and it works well.
NOTES: you must place a Functions Module on your map to use this since I am using the BIS_FNC_spawncrew
on activation in radio alpha trigger>> nul=[player] execVM "scripts\supplydrop.sqf;" >>

What happens next:
a smoke grenade is created at players feet
a plane is spawned, either ju-87 or pe-2, 2km away from player (takes c.a 45 seconds to reach you). the plane is crewed with correct units via spawncrew function
they are given waypoint at the smoke grenade and when they are within range of this wp a parachute is created at the plane location
an ammo box of correct type is spawned and attached to parachute
when the parachute is "deleted" ie. when it hits the ground this ammo box is deleted and a new one spawned in its place***(see further notes)
the plane is then given a waypoint 5 km away and the plane and group are deleted.

Further notes: the reason for deleting the first crate is because when it lands on the ground with the chute the player is able to examine the contents but unable to retrieve any ammo from it

Feel free to mess around with this and let me know if you find a better way

Code:
_unit = _this select 0;


if (side _unit == West) then
{
_smoke= createVehicle ["Lib_nb39", getPos _unit, [], 0, "NONE"];
Plane= createVehicle ["Lib_JU87", [(getpos _unit select 0) +2000, (getpos _unit select 1) +2000, (getpos _unit select 2) +500], [], 0, "FLY"];
_group= Creategroup WEST;
_group setCombatMode "blue";
_group setBehaviour "careless";
[plane, _group] call bis_fnc_spawncrew;

_wp1 = _Group addWaypoint [(getPos _smoke), 25];
_wp1 setWaypointStatements ["true", "chute = createVehicle ['parachuteWest', getpos plane, [], 0, 'FLY'];"];
_wp1 setWaypointType "MOVE";

Waituntil {alive chute};
crate = createVehicle ["Lib_basicammunitionBox_GER", getpos chute, [], 0, "NONE"];
crate attachTo [chute, [0,0,-0.85]];
sleep 0.1;
Waituntil {!alive chute};
crate2 = createVehicle ["Lib_basicammunitionBox_GER", getpos crate, [], 0, "NONE"];
sleep 0.1;
deleteVehicle crate;

_wp2 = _Group addWaypoint [([(getpos _unit select 0) +5000, (getpos _unit select 1) +5000, (getpos _unit select 2) +1000]), 100];
_wp2 setWaypointStatements ["true", ""];
_wp2 setWaypointType "move";

sleep 145;
deleteVehicle Plane;
deleteGroup _group;
};

if (side _unit == EAST) then
{
_smoke= createVehicle ["Lib_nb39", getPos _unit, [], 0, "NONE"];
Plane= createVehicle ["Lib_Pe2", [(getpos _unit select 0) +2000, (getpos _unit select 1) +2000, (getpos _unit select 2) +500], [], 0, "FLY"];
_group= Creategroup East;
_group setCombatMode "blue";
_group setBehaviour "careless";
[plane, _group] call bis_fnc_spawncrew;

_wp1 = _Group addWaypoint [(getPos _smoke), 25];
_wp1 setWaypointStatements ["true", "chute = createVehicle ['parachuteWest', getpos plane, [], 0, 'FLY'];"];
_wp1 setWaypointType "MOVE";

Waituntil {alive chute};
crate = createVehicle ["Lib_basicammunitionBox_SU", getpos chute, [], 0, "NONE"];
crate attachTo [chute, [0,0,-0.85]];
sleep 0.1;
Waituntil {!alive chute};
crate2 = createVehicle ["Lib_basicammunitionBox_SU", getpos crate, [], 0, "NONE"];
sleep 0.1;
deleteVehicle crate;

_wp2 = _Group addWaypoint [([(getpos _unit select 0) +5000, (getpos _unit select 1) +5000, (getpos _unit select 2) +1000]), 100];
_wp2 setWaypointStatements ["true", ""];
_wp2 setWaypointType "move";

sleep 145;
deleteVehicle Plane;
deleteGroup _group;
};