Custom Fall animation doesn't work and idle animation doesn't play after jumping?

I’ve made a localscript in StarterCharacterScripts for custom r6 animations, all other things work but why my fall animation doesn’t work? and when i jump then fall it plays the walk animation instead of idle, can someone help me? here’s the script: local walkAnimation = script:WaitForChild(“Walk”)
local jumpAnimation = script:WaitForChild(“Jump”)
local idleAnimation = script:WaitForChild(“Idle”)
local runAnimation = script:WaitForChild(“Run”)
local fallAnimation = script:WaitForChild(“Fall”)

local Char = script.Parent
local Humanoid = Char:WaitForChild(“Humanoid”)

local animationTracks = {
Walk = Humanoid:LoadAnimation(walkAnimation),
Jump = Humanoid:LoadAnimation(jumpAnimation),
Idle = Humanoid:LoadAnimation(idleAnimation),
Run = Humanoid:LoadAnimation(runAnimation),
Fall = Humanoid:LoadAnimation(fallAnimation)
}

local function playAnimation(animationTrack)
for _, track in pairs(animationTracks) do
if track ~= animationTrack then
track:Stop()
end
end
animationTrack:Play()
end

Humanoid.Running:Connect(function(speed)
if speed > 0 then
if speed > 16 then
playAnimation(animationTracks.Run)
else
playAnimation(animationTracks.Walk)
end
else
playAnimation(animationTracks.Idle)
end
end)

Humanoid.Jumping:Connect(function()
playAnimation(animationTracks.Jump)
end)

animationTracks.Fall.Stopped:Connect(function()
if Humanoid:GetState() == Enum.HumanoidStateType.Freefall then
playAnimation(animationTracks.Fall)
elseif Humanoid.MoveDirection.magnitude == 0 then
playAnimation(animationTracks.Idle)
end
end)

I dont know anything about scripting and coding but you can replace the basic player animations with the ones you want without any coding.

Heres a tutorial. Works with every other type of basic animations.