--[[ WARNING: Heads up! This script has not been verified by ScriptBlox. Use at your own risk! ]] local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local Debris = game:GetService("Debris") local player = Players.LocalPlayer local gui = player:WaitForChild("PlayerGui") local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local root = character:WaitForChild("HumanoidRootPart") -- SETUP JUMP ANIMATION local jumpAnim = Instance.new("Animation") jumpAnim.AnimationId = "rbxassetid://131814798893284" local jumpAnimTrack = humanoid:LoadAnimation(jumpAnim) local scriptEnabled = true local spaceHeld = false local infJumpEnabled = false -- NEW local velocity = Vector3.new() local isGrounded = false local wasGrounded = false local footstepTimer = 0 local footstepInterval = 0.35 local lastFootstepIndex = 0 -- config local cfg = { groundAccel = 50, airAccel = 3200, maxAirSpeed = 20, runSpeed = 23, jumpPower = 32, gravity = 80, friction = 6, stopSpeed = 5, } local footstepSounds = { "rbxassetid://81623756670923", "rbxassetid://78754179999047", "rbxassetid://79418255155423", "rbxassetid://112240321395589", } local jumpSound local landSound local function createSounds() if jumpSound then jumpSound:Destroy() end if landSound then landSound:Destroy() end jumpSound = Instance.new("Sound") jumpSound.SoundId = "rbxassetid://78754179999047" jumpSound.Volume = 0.5 jumpSound.PlaybackSpeed = 1 jumpSound.Parent = root landSound = Instance.new("Sound") landSound.SoundId = "rbxassetid://78754179999047" landSound.Volume = 0.6 landSound.PlaybackSpeed = 1 landSound.Parent = root end createSounds() local function playFootstep() local sound = Instance.new("Sound") sound.Parent = workspace lastFootstepIndex = lastFootstepIndex + 1 if lastFootstepIndex > #footstepSounds then lastFootstepIndex = 1 end sound.SoundId = footstepSounds[lastFootstepIndex] sound.Volume = 0.6 sound.PlaybackSpeed = 1.0 + math.random(-10, 10) / 100 sound:Play() Debris:AddItem(sound, 2) end local function playJump() if jumpSound then jumpSound:Stop() jumpSound:Play() end if jumpAnimTrack then jumpAnimTrack:Play() end end local function playLand() if landSound then landSound:Stop() landSound:Play() end if jumpAnimTrack then jumpAnimTrack:Stop(0.1) end end local isMobile = UserInputService.TouchEnabled and not UserInputService.KeyboardEnabled local gameModes = {} if isMobile then gameModes = {"default (mobile)", "no grenades (mobile)", "hard (mobile)"} else gameModes = {"default (PC)", "no grenades (PC)", "hard (PC)"} end local currentModeIndex = 1 -- GUI local function createGui() local g = Instance.new("ScreenGui") g.ResetOnSpawn = false g.Name = "SourceDBG" g.Parent = gui -- DESTROY button local destroy = Instance.new("TextButton") destroy.Size = UDim2.new(0, 70, 0, 30) destroy.Position = UDim2.new(0, 10, 1, -250) destroy.BackgroundColor3 = Color3.fromRGB(255, 60, 60) destroy.Text = "DESTROY" destroy.Parent = g destroy.MouseButton1Click:Connect(function() if humanoid then humanoid.WalkSpeed = 16 humanoid.JumpPower = 50 end g:Destroy() scriptEnabled = false end) -- ON/OFF toggle local toggle = Instance.new("TextButton") toggle.Size = UDim2.new(0, 70, 0, 30) toggle.Position = UDim2.new(0, 10, 1, -210) toggle.BackgroundColor3 = Color3.fromRGB(80, 255, 130) toggle.Text = "ON" toggle.Parent = g toggle.MouseButton1Click:Connect(function() scriptEnabled = not scriptEnabled toggle.Text = scriptEnabled and "ON" or "OFF" toggle.BackgroundColor3 = scriptEnabled and Color3.fromRGB(80, 255, 130) or Color3.fromRGB(255, 60, 60) end) -- INF JUMP button (NEW) local infJumpButton = Instance.new("TextButton") infJumpButton.Size = UDim2.new(0, 150, 0, 30) infJumpButton.Position = UDim2.new(0, 10, 1, -170) infJumpButton.BackgroundColor3 = Color3.fromRGB(255, 80, 80) infJumpButton.Text = "Inf Jump: OFF" infJumpButton.TextScaled = true infJumpButton.Parent = g infJumpButton.MouseButton1Click:Connect(function() infJumpEnabled = not infJumpEnabled infJumpButton.Text = infJumpEnabled and "Inf Jump: ON" or "Inf Jump: OFF" infJumpButton.BackgroundColor3 = infJumpEnabled and Color3.fromRGB(80, 255, 130) or Color3.fromRGB(255, 80, 80) end) -- Mode button local modeButton = Instance.new("TextButton") modeButton.Size = UDim2.new(0, 150, 0, 30) modeButton.Position = UDim2.new(0, 10, 1, -130) modeButton.BackgroundColor3 = Color3.fromRGB(100, 150, 255) modeButton.Text = "Mode: " .. gameModes[currentModeIndex] modeButton.TextScaled = true modeButton.Parent = g modeButton.MouseButton1Click:Connect(function() currentModeIndex = currentModeIndex + 1 if currentModeIndex > #gameModes then currentModeIndex = 1 end modeButton.Text = "Mode: " .. gameModes[currentModeIndex] end) -- SPEED LABEL local speedLabel = Instance.new("TextLabel") speedLabel.Size = UDim2.new(0, 150, 0, 20) speedLabel.Position = UDim2.new(0, 10, 1, -90) speedLabel.BackgroundTransparency = 1 speedLabel.Text = "Type Speed + Enter:" speedLabel.TextColor3 = Color3.fromRGB(255, 255, 255) speedLabel.TextScaled = true speedLabel.Font = Enum.Font.GothamBold speedLabel.Parent = g -- SPEED TEXTBOX local speedBox = Instance.new("TextBox") speedBox.Size = UDim2.new(0, 150, 0, 35) speedBox.Position = UDim2.new(0, 10, 1, -70) speedBox.BackgroundColor3 = Color3.fromRGB(255, 180, 50) speedBox.Text = tostring(cfg.runSpeed) speedBox.TextColor3 = Color3.fromRGB(0, 0, 0) speedBox.TextScaled = true speedBox.Font = Enum.Font.GothamBold speedBox.ClearTextOnFocus = false speedBox.Parent = g local function applySpeed() local number = tonumber(speedBox.Text) if number and number > 0 and number < 500 then cfg.runSpeed = number cfg.maxAirSpeed = math.floor(number * 0.85) speedBox.Text = tostring(number) speedBox.BackgroundColor3 = Color3.fromRGB(80, 255, 130) task.wait(0.4) speedBox.BackgroundColor3 = Color3.fromRGB(255, 180, 50) else speedBox.Text = tostring(cfg.runSpeed) speedBox.BackgroundColor3 = Color3.fromRGB(255, 60, 60) task.wait(0.4) speedBox.BackgroundColor3 = Color3.fromRGB(255, 180, 50) end end speedBox.FocusLost:Connect(function() applySpeed() end) -- Mobile Jump button if isMobile then local jumpButton = Instance.new("TextButton") jumpButton.Size = UDim2.new(0, 80, 0, 80) jumpButton.Position = UDim2.new(1, -90, 1, -90) jumpButton.Text = "JUMP" jumpButton.Name = "JumpButton" jumpButton.Parent = g jumpButton.MouseButton1Down:Connect(function() spaceHeld = true end) jumpButton.MouseButton1Up:Connect(function() spaceHeld = false end) end end createGui() local function grounded() local rayParams = RaycastParams.new() rayParams.FilterDescendantsInstances = {character} rayParams.FilterType = Enum.RaycastFilterType.Exclude local result = workspace:Raycast(root.Position, Vector3.new(0, -3.8, 0), rayParams) return result and result.Instance and result.Instance.CanCollide end local function applyFriction(dt) local speed = velocity.Magnitude if speed < 0.1 then velocity = Vector3.new() return end local drop = isGrounded and (math.max(speed, cfg.stopSpeed) * cfg.friction * dt) or 0 local newSpeed = math.max(speed - drop, 0) if newSpeed ~= speed then velocity = velocity * (newSpeed / speed) end end local function accel(wishDir, wishSpeed, accelAmount, dt) local cur = velocity:Dot(wishDir) local add = wishSpeed - cur if add <= 0 then return end local accelSpeed = math.min(accelAmount * dt * wishSpeed, add) velocity = velocity + wishDir * accelSpeed end local function process(dt) if not scriptEnabled then return end if not humanoid or humanoid.Health <= 0 then return end if not root or not root.Parent then return end humanoid.WalkSpeed = 0 humanoid.JumpPower = 0 wasGrounded = isGrounded isGrounded = grounded() -- Landing if isGrounded and not wasGrounded then playLand() footstepTimer = 0 end local cam = workspace.CurrentCamera local fwd = cam.CFrame.LookVector local right = cam.CFrame.RightVector fwd = Vector3.new(fwd.X, 0, fwd.Z) right = Vector3.new(right.X, 0, right.Z) if fwd.Magnitude > 0 then fwd = fwd.Unit end if right.Magnitude > 0 then right = right.Unit end local input = Vector3.new() if isMobile then input = humanoid.MoveDirection else if UserInputService:IsKeyDown(Enum.KeyCode.W) then input = input + fwd end if UserInputService:IsKeyDown(Enum.KeyCode.S) then input = input - fwd end if UserInputService:IsKeyDown(Enum.KeyCode.A) then input = input - right end if UserInputService:IsKeyDown(Enum.KeyCode.D) then input = input + right end end if input.Magnitude > 0 then input = input.Unit end if isGrounded then applyFriction(dt) accel(input, cfg.runSpeed, cfg.groundAccel, dt) if input.Magnitude > 0.1 then footstepTimer = footstepTimer + dt if footstepTimer >= footstepInterval then playFootstep() footstepTimer = 0 end end if spaceHeld then velocity = Vector3.new(velocity.X, cfg.jumpPower, velocity.Z) playJump() else velocity = Vector3.new(velocity.X, 0, velocity.Z) end else -- Air movement accel(input, cfg.maxAirSpeed, cfg.airAccel, dt) velocity = velocity + Vector3.new(0, -cfg.gravity * dt, 0) -- Infinite Jump (when enabled) if infJumpEnabled and spaceHeld then velocity = Vector3.new(velocity.X, cfg.jumpPower, velocity.Z) playJump() end end root.AssemblyLinearVelocity = velocity end UserInputService.InputBegan:Connect(function(input) if input.KeyCode == Enum.KeyCode.Space then spaceHeld = true end end) UserInputService.InputEnded:Connect(function(input) if input.KeyCode == Enum.KeyCode.Space then spaceHeld = false end end) RunService.Heartbeat:Connect(function(dt) process(dt) end) player.CharacterAdded:Connect(function(char) character = char humanoid = char:WaitForChild("Humanoid") root = char:WaitForChild("HumanoidRootPart") jumpAnimTrack = humanoid:LoadAnimation(jumpAnim) createSounds() velocity = Vector3.new() isGrounded = false wasGrounded = false end) print("Source Movement Loaded | Infinite Jump Added")