Hmm, your script seems to disable itself if there is a VTOL on the map which is not the one you are driving and is older than any vehicles within 12m of your VT_CarryAll vehicle... (note: BaseGameObjList is NOT in order of distance from the current object, but in order of when they were created)
Specifically this bit;
if(Is_VTOLVehicle(o)||Is_Script_Attached(o,"VT_CARRYALL_ATTACHED"))
{
Remove_Script(obj,"VT_CarryAll");
return;
}
From what I can see you iterate through EVERY object in the game, so if it hits this one BEFORE it hit's the one which can be attached (ie: within 12m of you) it's going to cancel itself.