Run it
Copy the script and paste it into your executor.
-- LocalScript in StarterPlayerScripts
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local humanoidRootPart = character:WaitForChild("HumanoidRootPart")
local canDoubleJump =
isDoubleJumping =
doubleJumpPower =
rollAnimationId =
rollAnimation = .()
rollAnimation.AnimationId = rollAnimationId
animator = humanoid:() humanoid:()
rollAnimTrack = animator:(rollAnimation)
rollAnimTrack.Looped =
()
canDoubleJump isDoubleJumping
isDoubleJumping =
canDoubleJump =
rollAnimTrack:()
humanoid:(.HumanoidStateType.Jumping)
humanoidRootPart.Velocity = .(humanoidRootPart.Velocity.X, doubleJumpPower, humanoidRootPart.Velocity.Z)
rollAnimTrack.Stopped:()
isDoubleJumping =
()
humanoid:() == .HumanoidStateType.Freefall canDoubleJump
()
humanoid:() == .HumanoidStateType.Jumping humanoid:() == .HumanoidStateType.Running
canDoubleJump =
UserInputService.JumpRequest:(onJumpRequest)
humanoid.StateChanged:((_, newState)
newState == .HumanoidStateType.Landed newState == .HumanoidStateType.Seated
canDoubleJump =
)