Speed Changer
Key RequiredUniversal

Speed Changer

Universal Scriptzach13379zach13379 96 views 2.3K executesUpdated Jul 27, 2026
Unrated
00
Lua Script•168 lines (4902 chars)
-- Services & Player references
local Players = game:GetService("Players")
local CoreGui = game:GetService("CoreGui")

local lp = Players.LocalPlayer
local char = lp.Character or lp.CharacterAdded:Wait()
local hum = char:WaitForChild("Humanoid")

-- State variables
local defaultSpeed = 16
local active = true

-- Setup GUI Container
local gui = Instance.new("ScreenGui")
gui.Name = "SpeedGui"
gui.ResetOnSpawn = false

-- Safe parenting to CoreGui or PlayerGui
pcall(function()
    gui.Parent = CoreGui
end)
if not gui.Parent then
    gui.Parent = lp:WaitForChild("PlayerGui")
end

-- Main Window
local frame = Instance.new("Frame")
frame.Name = "MainFrame"
frame.Size = UDim2.new(0, 180, 0, 130)
frame.Position = UDim2.new(0.4, 0, 0.35, 0)
frame.BackgroundColor3 = Color3.fromRGB(24, 24, 24)
frame.BorderSizePixel = 0
frame.Active = true
frame.Draggable = true
frame.Parent = gui

-- Header Title
local title = Instance.new("TextLabel")
title.Size = UDim2.new(0, 110, 0, 28)
title.Position = UDim2.new(0, 10, 0, 0)
title.BackgroundTransparency = 1
title.Text = "Walk Speed GUI"
title.TextColor3 = Color3.fromRGB(240, 240, 240)
title.TextSize = 13
title.Font = Enum.Font.SourceSansBold
title.TextXAlignment = Enum.TextXAlignment.Left
title.Parent = frame

-- Minimize Button (-)
local minBtn = Instance.new("TextButton")
minBtn.Size = UDim2.new(0, 24, 0, 22)
minBtn.Position = UDim2.new(1, -52, 0, 3)
minBtn.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
minBtn.BorderSizePixel = 0
minBtn.Text = "-"
minBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
minBtn.Font = Enum.Font.SourceSansBold
minBtn.TextSize = 14
minBtn.Parent = frame

-- Close Button (X)
local closeBtn = Instance.new("TextButton")
closeBtn.Size = UDim2.new(0, 24, 0, 22)
closeBtn.Position = UDim2.new(1, -26, 0, 3)
closeBtn.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
closeBtn.BorderSizePixel = 0
closeBtn.Text = "X"
closeBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
closeBtn.Font = Enum.Font.SourceSansBold
closeBtn.TextSize = 13
closeBtn.Parent = frame

-- Toggle Button (Enable / Disable)
local toggleBtn = Instance.new("TextButton")
toggleBtn.Size = UDim2.new(0.85, 0, 0, 24)
toggleBtn.Position = UDim2.new(0.075, 0, 0.28, 0)
toggleBtn.BackgroundTransparency = 1
toggleBtn.Text = "Disable"
toggleBtn.TextColor3 = Color3.fromRGB(220, 220, 220)
toggleBtn.Font = Enum.Font.SourceSans
toggleBtn.TextSize = 14
toggleBtn.Parent = frame

-- Speed Label
local infoLabel = Instance.new("TextLabel")
infoLabel.Size = UDim2.new(1, 0, 0, 18)
infoLabel.Position = UDim2.new(0, 0, 0.52, 0)
infoLabel.BackgroundTransparency = 1
infoLabel.Text = "Set Speed (1-Inf):"
infoLabel.TextColor3 = Color3.fromRGB(180, 180, 180)
infoLabel.Font = Enum.Font.SourceSans
infoLabel.TextSize = 12
infoLabel.Parent = frame

-- Input Box
local input = Instance.new("TextBox")
input.Size = UDim2.new(0.85, 0, 0, 24)
input.Position = UDim2.new(0.075, 0, 0.7, 0)
input.BackgroundColor3 = Color3.fromRGB(38, 38, 38)
input.BorderSizePixel = 0
input.Text = "1000"
input.TextColor3 = Color3.fromRGB(255, 255, 255)
input.Font = Enum.Font.SourceSans
input.TextSize = 13
input.Parent = frame

----------------------------------------------------
-- Logic & Event Connections
----------------------------------------------------

local function setWalkSpeed(speed)
    local character = lp.Character
    if character and character:FindFirstChild("Humanoid") then
        character.Humanoid.WalkSpeed = speed
    end
end

-- Maintain speed on character respawn
lp.CharacterAdded:Connect(function(c)
    char = c
    hum = c:WaitForChild("Humanoid")
    if active then
        local speed = tonumber(input.Text)
        if speed then setWalkSpeed(speed) end
    end
end)

-- Process input changes (No upper cap / Infinite limit)
input.FocusLost:Connect(function()
    local val = tonumber(input.Text)
    if val and active then
        val = math.max(0, val) -- Prevent negative values, allow infinite upper speed
        input.Text = tostring(val)
        setWalkSpeed(val)
    elseif not val then
        input.Text = "16"
        setWalkSpeed(defaultSpeed)
    end
end)

-- Toggle custom speed on / off
toggleBtn.MouseButton1Click:Connect(function()
    active = not active
    if active then
        toggleBtn.Text = "Disable"
        local val = tonumber(input.Text) or defaultSpeed
        setWalkSpeed(val)
    else
        toggleBtn.Text = "Enable"
        setWalkSpeed(defaultSpeed)
    end
end)

-- Minimize window
local isMinimized = false
minBtn.MouseButton1Click:Connect(function()
    isMinimized = not isMinimized
    toggleBtn.Visible = not isMinimized
    infoLabel.Visible = not isMinimized
    input.Visible = not isMinimized
    frame.Size = isMinimized and UDim2.new(0, 180, 0, 30) or UDim2.new(0, 180, 0, 130)
end)

-- Close GUI & restore default speed
closeBtn.MouseButton1Click:Connect(function()
    setWalkSpeed(defaultSpeed)
    gui:Destroy()
end)

Features & Information

Speed Changer universal

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts