First of all, I tried making it so an animation could play at the second jump but I messed up. Second of all I wanted the JUMP_FORCE to affect the first jump and not only the second jump. Btw, every time I test it there is that 1 jump at the start that would make you jump so high for some reason. Is there a way to fix that as well? Thanks.

local player = game.Players.LocalPlayer
local character = player.Character or player.CharacterAdded:wait()
local humanoid = character:WaitForChild("Humanoid")
local humanoidrootpart = character:WaitForChild("HumanoidRootPart")

local JUMP_FORCE = script:WaitForChild("JUMP_FORCE") 
local MAX_JUMPS = script:WaitForChild("MAX_JUMPS") 
local JUMP_CONTROL = Enum.KeyCode.Space 

local numjumps = 0

local anim = Instance.new("Animation")
anim.AnimationId = "http://www.roblox.com/asset/?id=1078047967"

function jump(basepart, power)
	local oldvel = basepart.Velocity
	basepart.Velocity = Vector3.new(oldvel.x, power, oldvel.z)
end

game:GetService("UserInputService").InputBegan:connect(function (key)
	if key.KeyCode == JUMP_CONTROL then
		if numjumps >= 1 and numjumps < MAX_JUMPS.Value then
			local playAnim = humanoid:LoadAnimation(anim)
		playAnim:Play()
			numjumps = numjumps + 1
			jump(humanoidrootpart, JUMP_FORCE.Value)
		end
	end
end)

humanoid.FreeFalling:connect(function(falling)
	if not falling then
		numjumps = 0
	end
	if falling and numjumps == 0 then
		numjumps = 1
	end
end)

humanoid.Jumping:connect(function(jump)
	if jump then
		numjumps = 1


	end
end)