-- Eclipse Hub-style Infinite Jump + Sprint (with forward velocity carry) local Players = game:GetService("Players") local UIS = game:GetService("UserInputService") local player = Players.LocalPlayer -- Settings _G.JumpHeight = 50 _G.NormalSpeed = 16 _G.BoostSpeed = 40 _G.InfJumpEnabled = true -- States local holdingJump = false local holdingShift = false -- Infinite Jump with Momentum local function doInfJump() while holdingJump and _G.InfJumpEnabled do local char = player.Character if char then local humanoid = char:FindFirstChildOfClass("Humanoid") local root = char:FindFirstChild("HumanoidRootPart") if humanoid and root then local state = humanoid:GetState() if state == Enum.HumanoidStateType.Jumping or state == Enum.HumanoidStateType.Freefall then local currentVel = root.Velocity root.Velocity = Vector3.new(currentVel.X, _G.JumpHeight, currentVel.Z) end end end task.wait() end end -- Sprint logic (apply always, even midair) local function updateSpeed() local char = player.Character if char then local humanoid = char:FindFirstChildOfClass("Humanoid") if humanoid then humanoid.WalkSpeed = holdingShift and _G.BoostSpeed or _G.NormalSpeed end end end -- Input listeners UIS.InputBegan:Connect(function(input, gp) if gp then return end if input.KeyCode == Enum.KeyCode.Space then holdingJump = true coroutine.wrap(doInfJump)() elseif input.KeyCode == Enum.KeyCode.LeftShift then holdingShift = true updateSpeed() end end) UIS.InputEnded:Connect(function(input) if input.KeyCode == Enum.KeyCode.Space then holdingJump = false elseif input.KeyCode == Enum.KeyCode.LeftShift then holdingShift = false updateSpeed() end end) -- On reset local function onChar(char) task.wait(1) local hum = char:WaitForChild("Humanoid") hum.WalkSpeed = _G.NormalSpeed end player.CharacterAdded:Connect(onChar) if player.Character then onChar(player.Character) end