local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")

local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local root = character:WaitForChild("HumanoidRootPart")

-- Settings
local minSpeed = 16
local maxSpeed = 90          -- keep this reasonable (60-80 is safer)
local targetSpeed = 45
local enabled = false
local connection = nil
local attachment = nil
local linearVel = nil

-- Create the force objects
local function setupVelocity()
    if attachment then attachment:Destroy() end
    if linearVel then linearVel:Destroy() end

    attachment = Instance.new("Attachment")
    attachment.Name = "SpeedAtt"
    attachment.Parent = root

    linearVel = Instance.new("LinearVelocity")
    linearVel.Name = "SpeedForce"
    linearVel.Attachment0 = attachment
    linearVel.MaxForce = 99999
    linearVel.VectorVelocity = Vector3.zero
    linearVel.RelativeTo = Enum.ActuatorRelativeTo.World
    linearVel.Parent = root
end

local function startSpeed()
    if connection then connection:Disconnect() end
    setupVelocity()

    connection = RunService.Heartbeat:Connect(function()
        if not enabled or not humanoid or not root or not linearVel then return end

        local moveDir = humanoid.MoveDirection
        if moveDir.Magnitude > 0.05 then
            -- slight random so it doesn't look perfectly constant
            local random = math.random(-3, 3)
            local finalSpeed = targetSpeed + random
            linearVel.VectorVelocity = Vector3.new(moveDir.X * finalSpeed, 0, moveDir.Z * finalSpeed)
            linearVel.MaxForce = 99999
        else
            linearVel.VectorVelocity = Vector3.zero
            linearVel.MaxForce = 0
        end
    end)
end

local function stopSpeed()
    if connection then
        connection:Disconnect()
        connection = nil
    end
    if linearVel then
        linearVel.VectorVelocity = Vector3.zero
        linearVel.MaxForce = 0
    end
end

-- GUI
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "TBSpeed"
ScreenGui.ResetOnSpawn = false
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
ScreenGui.Parent = game:GetService("CoreGui")

local Main = Instance.new("Frame")
Main.Size = UDim2.new(0, 260, 0, 155)
Main.Position = UDim2.new(0.5, -130, 0.25, 0)
Main.BackgroundColor3 = Color3.fromRGB(22, 22, 22)
Main.BorderSizePixel = 0
Main.Active = true
Main.Draggable = true
Main.Parent = ScreenGui
Instance.new("UICorner", Main).CornerRadius = UDim.new(0, 8)

local Title = Instance.new("TextLabel")
Title.Size = UDim2.new(1, 0, 0, 28)
Title.BackgroundColor3 = Color3.fromRGB(32, 32, 32)
Title.BorderSizePixel = 0
Title.Text = "TB Speed (Under Hood)"
Title.TextColor3 = Color3.fromRGB(255, 255, 255)
Title.Font = Enum.Font.GothamBold
Title.TextSize = 14
Title.Parent = Main
Instance.new("UICorner", Title).CornerRadius = UDim.new(0, 8)

local ToggleBtn = Instance.new("TextButton")
ToggleBtn.Size = UDim2.new(0, 110, 0, 26)
ToggleBtn.Position = UDim2.new(0, 15, 0, 40)
ToggleBtn.BackgroundColor3 = Color3.fromRGB(180, 40, 40)
ToggleBtn.BorderSizePixel = 0
ToggleBtn.Text = "OFF"
ToggleBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
ToggleBtn.Font = Enum.Font.GothamBold
ToggleBtn.TextSize = 13
ToggleBtn.Parent = Main
Instance.new("UICorner", ToggleBtn).CornerRadius = UDim.new(0, 6)

local SpeedBox = Instance.new("TextBox")
SpeedBox.Size = UDim2.new(0, 100, 0, 26)
SpeedBox.Position = UDim2.new(0, 140, 0, 40)
SpeedBox.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
SpeedBox.BorderSizePixel = 0
SpeedBox.Text = "45"
SpeedBox.TextColor3 = Color3.fromRGB(255, 255, 255)
SpeedBox.Font = Enum.Font.Gotham
SpeedBox.TextSize = 13
SpeedBox.Parent = Main
Instance.new("UICorner", SpeedBox).CornerRadius = UDim.new(0, 6)

local SliderBG = Instance.new("Frame")
SliderBG.Size = UDim2.new(0, 230, 0, 7)
SliderBG.Position = UDim2.new(0, 15, 0, 85)
SliderBG.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
SliderBG.BorderSizePixel = 0
SliderBG.Parent = Main
Instance.new("UICorner", SliderBG).CornerRadius = UDim.new(1, 0)

local SliderFill = Instance.new("Frame")
SliderFill.Size = UDim2.new(0.35, 0, 1, 0)
SliderFill.BackgroundColor3 = Color3.fromRGB(0, 170, 255)
SliderFill.BorderSizePixel = 0
SliderFill.Parent = SliderBG
Instance.new("UICorner", SliderFill).CornerRadius = UDim.new(1, 0)

local SliderBtn = Instance.new("TextButton")
SliderBtn.Size = UDim2.new(0, 16, 0, 16)
SliderBtn.Position = UDim2.new(0.35, -8, 0.5, -8)
SliderBtn.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
SliderBtn.BorderSizePixel = 0
SliderBtn.Text = ""
SliderBtn.Parent = SliderBG
Instance.new("UICorner", SliderBtn).CornerRadius = UDim.new(1, 0)

local Info = Instance.new("TextLabel")
Info.Size = UDim2.new(1, -30, 0, 20)
Info.Position = UDim2.new(0, 15, 0, 115)
Info.BackgroundTransparency = 1
Info.Text = "Recommended: 40-60 | Don't go crazy"
Info.TextColor3 = Color3.fromRGB(160, 160, 160)
Info.Font = Enum.Font.Gotham
Info.TextSize = 12
Info.TextXAlignment = Enum.TextXAlignment.Left
Info.Parent = Main

-- Functions
local function updateVisual()
    local percent = math.clamp((targetSpeed - minSpeed) / (maxSpeed - minSpeed), 0, 1)
    SliderFill.Size = UDim2.new(percent, 0, 1, 0)
    SliderBtn.Position = UDim2.new(percent, -8, 0.5, -8)
    SpeedBox.Text = tostring(math.floor(targetSpeed))
end

local function setSpeed(val)
    targetSpeed = math.clamp(tonumber(val) or 45, minSpeed, maxSpeed)
    updateVisual()
end

ToggleBtn.MouseButton1Click:Connect(function()
    enabled = not enabled
    if enabled then
        ToggleBtn.Text = "ON"
        ToggleBtn.BackgroundColor3 = Color3.fromRGB(40, 160, 60)
        startSpeed()
    else
        ToggleBtn.Text = "OFF"
        ToggleBtn.BackgroundColor3 = Color3.fromRGB(180, 40, 40)
        stopSpeed()
    end
end)

SpeedBox.FocusLost:Connect(function(enter)
    if enter then setSpeed(SpeedBox.Text) end
end)

local dragging = false
SliderBtn.MouseButton1Down:Connect(function() dragging = true end)
UserInputService.InputEnded:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end
end)

UserInputService.InputChanged:Connect(function(input)
    if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then
        local rel = math.clamp((UserInputService:GetMouseLocation().X - SliderBG.AbsolutePosition.X) / SliderBG.AbsoluteSize.X, 0, 1)
        setSpeed(minSpeed + rel * (maxSpeed - minSpeed))
    end
end)

-- Respawn support
player.CharacterAdded:Connect(function(char)
    character = char
    humanoid = char:WaitForChild("Humanoid")
    root = char:WaitForChild("HumanoidRootPart")
    task.wait(0.8)
    if enabled then
        startSpeed()
    end
end)

setSpeed(45)
print("TB LinearVelocity speed loaded")
Timebomb Duels [Alpha] OP WALKKSPEED CHANGER KEYLESS!
Mobile Friendly
605 views
2 months ago

OP WALKKSPEED CHANGER KEYLESS!

WORKING
Free

Description

Walkspeed changer isnt detected as of now

Features

  • WALKKSPEEDBOOST

Related Scripts