M
ScriptKeyless
KEYLESS | Steal, Plant, Grow! | FAST SPEED
Steal, Plant, Grow!Desktop & mobile readyDelta · Potassium
Description
Steal, Plant, Grow! V 1.1 more soon KEYLESS
GAMESteal, Plant, Grow!
UPDATEDOct 10, 2026
ACCESSKeyless
PLATFORMDesktop & Mobile
Script source Luau
-- [[ BloxScripts Risk Notice ]]
-- This script has not been verified by BloxScripts.fun. Deal with caution.
--
-- Stay safe:
-- • Never log in on unofficial Roblox sites or lookalike domains.
-- • Real Roblox links use roblox.com (check the .com ending).
-- • Treat fake Roblox login / "claim reward" pages as phishing.
-- [[ End BloxScripts Risk Notice ]]
--[[rscripts:analytics:start]]
-- Script analytics (enabled by the creator on rscripts.net).
-- Runs in its own thread and cannot affect the script below.
task.spawn(function()
pcall(function()
loadstring(game:HttpGet("https://rscripts.net/api/telemetry/v2/client.lua?s=6ab95b3eaf6b8dfe260c3671"))()
end)
end)
--[[rscripts:analytics:end]]
--[[
STEAL, PLANT, GROW GUI - V2
--------------------------------------------------
Features:
- Draggable, screen-clamped GUI
- Round on/off fast movement button
- Speed slider from 1 to 1000
- Numeric speed input box
- Preset speed buttons
- Presets appear in the exact order defined in PRESET_SPEEDS
- Minimize / restore button
- Close button
- RightShift keybind
- Anti-slide at high speed
- Smooth tween animations
- Optional click sound
- Mobile/narrow screen scaling
- Numeric textbox filtering
- State survives respawn
- Single LocalScript
NOTE:
This is client-side. WalkSpeed is not server-validated.
--]]
--==================================================
-- SERVICES
--==================================================
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local Workspace = game:GetService("Workspace")
--==================================================
-- PLAYER
--==================================================
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
--==================================================
-- CONFIG
--==================================================
local CONFIG = {
NormalSpeed = 16,
MinSpeed = 1,
MaxSpeed = 1000,
DefaultSpeed = 50,
StopThreshold = 0.05,
ToggleKeybind = Enum.KeyCode.RightShift,
ClickSoundId = "",
ClickSoundVolume = 0.4,
MobileBreakpoint = 500,
MobileScale = 0.85,
TweenTime = 0.12,
EnableAntiSlide = true,
EnableAnimations = true,
}
--==================================================
-- PRESET SPEED ORDER
--==================================================
-- Change ONLY this table to change the order.
--
-- Current order:
-- MAX -> 25 -> 50 -> 100 -> 250 -> 500
--
-- The UIListLayout below is explicitly configured to
-- use LayoutOrder, so this order is always respected.
--==================================================
local PRESET_SPEEDS = {
{
Value = 1000,
Label = "MAX",
},
{
Value = 25,
Label = "25",
},
{
Value = 50,
Label = "50",
},
{
Value = 100,
Label = "100",
},
{
Value = 250,
Label = "250",
},
{
Value = 500,
Label = "500",
},
}
--==================================================
-- COLORS
--==================================================
local COLORS = {
Background = Color3.fromRGB(35, 35, 35),
Header = Color3.fromRGB(25, 25, 25),
Text = Color3.fromRGB(230, 230, 230),
SubText = Color3.fromRGB(180, 180, 180),
Off = Color3.fromRGB(60, 60, 60),
OffStroke = Color3.fromRGB(90, 90, 90),
On = Color3.fromRGB(255, 255, 255),
SliderTrack = Color3.fromRGB(55, 55, 55),
SliderFill = Color3.fromRGB(0, 170, 255),
InputBackground = Color3.fromRGB(50, 50, 50),
PresetBackground = Color3.fromRGB(50, 50, 50),
PresetHover = Color3.fromRGB(70, 70, 70),
CloseHover = Color3.fromRGB(255, 90, 90),
}
local TWEEN_INFO = TweenInfo.new(
CONFIG.TweenTime,
Enum.EasingStyle.Quad,
Enum.EasingDirection.Out
)
--==================================================
-- STATE
--==================================================
local state = {
Enabled = false,
Speed = CONFIG.DefaultSpeed,
SliderDragging = false,
DraggingPanel = false,
Minimized = false,
Terminated = false,
}
local characterState = {
Humanoid = nil,
RootPart = nil,
}
local connections = {}
local antiSlideConnection = nil
--==================================================
-- CONNECTION MANAGEMENT
--==================================================
local function track(connection)
table.insert(connections, connection)
return connection
end
local function disconnectAll()
for _, connection in ipairs(connections) do
if connection and connection.Connected then
connection:Disconnect()
end
end
table.clear(connections)
end
--==================================================
-- HELPERS
--==================================================
local function clampSpeed(value)
value = tonumber(value) or CONFIG.DefaultSpeed
return math.clamp(
math.floor(value + 0.5),
CONFIG.MinSpeed,
CONFIG.MaxSpeed
)
end
local function speedToRelative(speed)
return (
speed - CONFIG.MinSpeed
) / (
CONFIG.MaxSpeed - CONFIG.MinSpeed
)
end
local function relativeToSpeed(relative)
relative = math.clamp(relative, 0, 1)
return CONFIG.MinSpeed
+ relative * (CONFIG.MaxSpeed - CONFIG.MinSpeed)
end
--==================================================
-- GUI
--==================================================
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "SpeedToggleGui"
screenGui.ResetOnSpawn = false
screenGui.IgnoreGuiInset = false
screenGui.Parent = playerGui
--==================================================
-- CLICK SOUND
--==================================================
local clickSound = Instance.new("Sound")
clickSound.Name = "ClickSound"
clickSound.SoundId = CONFIG.ClickSoundId
clickSound.Volume = CONFIG.ClickSoundVolume
clickSound.Parent = screenGui
local function playClickSound()
if clickSound.SoundId ~= "" then
clickSound:Play()
end
end
--==================================================
-- MAIN FRAME
--==================================================
local mainFrame = Instance.new("Frame")
mainFrame.Name = "MainFrame"
mainFrame.Size = UDim2.new(0, 320, 0, 210)
mainFrame.Position = UDim2.new(0, 100, 0, 120)
mainFrame.BackgroundColor3 = COLORS.Background
mainFrame.BorderSizePixel = 0
mainFrame.Active = true
mainFrame.Parent = screenGui
local uiScale = Instance.new("UIScale")
uiScale.Parent = mainFrame
local mainCorner = Instance.new("UICorner")
mainCorner.CornerRadius = UDim.new(0, 12)
mainCorner.Parent = mainFrame
--==================================================
-- HEADER
--==================================================
local header = Instance.new("Frame")
header.Name = "Header"
header.Size = UDim2.new(1, 0, 0, 28)
header.BackgroundColor3 = COLORS.Header
header.BorderSizePixel = 0
header.Active = true
header.Parent = mainFrame
local headerCorner = Instance.new("UICorner")
headerCorner.CornerRadius = UDim.new(0, 12)
headerCorner.Parent = header
local headerFix = Instance.new("Frame")
headerFix.Size = UDim2.new(1, 0, 0, 14)
headerFix.Position = UDim2.new(0, 0, 1, -14)
headerFix.BackgroundColor3 = COLORS.Header
headerFix.BorderSizePixel = 0
headerFix.Parent = header
local headerLabel = Instance.new("TextLabel")
headerLabel.Name = "HeaderLabel"
headerLabel.BackgroundTransparency = 1
headerLabel.Size = UDim2.new(1, -70, 1, 0)
headerLabel.Position = UDim2.new(0, 10, 0, 0)
headerLabel.Text = "Steal, Plant, Grow GUI"
headerLabel.TextColor3 = Color3.fromRGB(200, 200, 200)
headerLabel.TextXAlignment = Enum.TextXAlignment.Left
headerLabel.Font = Enum.Font.GothamBold
headerLabel.TextSize = 13
headerLabel.Parent = header
--==================================================
-- MINIMIZE BUTTON
--==================================================
local minimizeButton = Instance.new("TextButton")
minimizeButton.Name = "MinimizeButton"
minimizeButton.Size = UDim2.new(0, 24, 0, 24)
minimizeButton.Position = UDim2.new(1, -52, 0.5, -12)
minimizeButton.BackgroundTransparency = 1
minimizeButton.Text = "-"
minimizeButton.TextColor3 = Color3.fromRGB(200, 200, 200)
minimizeButton.Font = Enum.Font.GothamBold
minimizeButton.TextSize = 20
minimizeButton.AutoButtonColor = false
minimizeButton.Parent = header
--==================================================
-- CLOSE BUTTON
--==================================================
local closeButton = Instance.new("TextButton")
closeButton.Name = "CloseButton"
closeButton.Size = UDim2.new(0, 24, 0, 24)
closeButton.Position = UDim2.new(1, -28, 0.5, -12)
closeButton.BackgroundTransparency = 1
closeButton.Text = "✕"
closeButton.TextColor3 = Color3.fromRGB(200, 200, 200)
closeButton.Font = Enum.Font.GothamBold
closeButton.TextSize = 16
closeButton.AutoButtonColor = false
closeButton.Parent = header
--==================================================
-- TOGGLE BUTTON
--==================================================
local toggleButton = Instance.new("TextButton")
toggleButton.Name = "ToggleButton"
toggleButton.Size = UDim2.new(0, 48, 0, 48)
toggleButton.Position = UDim2.new(0, 16, 0, 40)
toggleButton.BackgroundColor3 = COLORS.Off
toggleButton.BorderSizePixel = 0
toggleButton.AutoButtonColor = false
toggleButton.Text = ""
toggleButton.Parent = mainFrame
local toggleCorner = Instance.new("UICorner")
toggleCorner.CornerRadius = UDim.new(1, 0)
toggleCorner.Parent = toggleButton
local toggleStroke = Instance.new("UIStroke")
toggleStroke.Thickness = 2
toggleStroke.Color = COLORS.OffStroke
toggleStroke.Parent = toggleButton
-- Inner toggle indicator
local toggleDot = Instance.new("Frame")
toggleDot.Name = "ToggleDot"
toggleDot.Size = UDim2.new(0, 16, 0, 16)
toggleDot.AnchorPoint = Vector2.new(0.5, 0.5)
toggleDot.Position = UDim2.new(0.5, 0, 0.5, 0)
toggleDot.BackgroundColor3 = Color3.fromRGB(150, 150, 150)
toggleDot.BorderSizePixel = 0
toggleDot.Parent = toggleButton
local toggleDotCorner = Instance.new("UICorner")
toggleDotCorner.CornerRadius = UDim.new(1, 0)
toggleDotCorner.Parent = toggleDot
--==================================================
-- STATUS
--==================================================
local statusLabel = Instance.new("TextLabel")
statusLabel.Name = "StatusLabel"
statusLabel.BackgroundTransparency = 1
statusLabel.Size = UDim2.new(0, 220, 0, 25)
statusLabel.Position = UDim2.new(0, 80, 0, 42)
statusLabel.Text = "Fast Speed: OFF"
statusLabel.TextColor3 = COLORS.Text
statusLabel.TextXAlignment = Enum.TextXAlignment.Left
statusLabel.Font = Enum.Font.GothamBold
statusLabel.TextSize = 15
statusLabel.Parent = mainFrame
local currentSpeedLabel = Instance.new("TextLabel")
currentSpeedLabel.Name = "CurrentSpeedLabel"
currentSpeedLabel.BackgroundTransparency = 1
currentSpeedLabel.Size = UDim2.new(0, 220, 0, 20)
currentSpeedLabel.Position = UDim2.new(0, 80, 0, 67)
currentSpeedLabel.Text = "Current: 50"
currentSpeedLabel.TextColor3 = COLORS.SubText
currentSpeedLabel.TextXAlignment = Enum.TextXAlignment.Left
currentSpeedLabel.Font = Enum.Font.Gotham
currentSpeedLabel.TextSize = 12
currentSpeedLabel.Parent = mainFrame
--==================================================
-- SPEED INPUT
--==================================================
local speedLabel = Instance.new("TextLabel")
speedLabel.Name = "SpeedLabel"
speedLabel.BackgroundTransparency = 1
speedLabel.Size = UDim2.new(0, 60, 0, 22)
speedLabel.Position = UDim2.new(0, 16, 0, 96)
speedLabel.Text = "Speed:"
speedLabel.TextColor3 = COLORS.Text
speedLabel.TextXAlignment = Enum.TextXAlignment.Left
speedLabel.Font = Enum.Font.Gotham
speedLabel.TextSize = 13
speedLabel.Parent = mainFrame
local speedTextBox = Instance.new("TextBox")
speedTextBox.Name = "SpeedTextBox"
speedTextBox.Size = UDim2.new(0, 65, 0, 24)
speedTextBox.Position = UDim2.new(1, -81, 0, 94)
speedTextBox.BackgroundColor3 = COLORS.InputBackground
speedTextBox.TextColor3 = Color3.fromRGB(255, 255, 255)
speedTextBox.Font = Enum.Font.Gotham
speedTextBox.TextSize = 13
speedTextBox.Text = tostring(CONFIG.DefaultSpeed)
speedTextBox.ClearTextOnFocus = false
speedTextBox.PlaceholderText = "1-1000"
speedTextBox.Parent = mainFrame
local speedBoxCorner = Instance.new("UICorner")
speedBoxCorner.CornerRadius = UDim.new(0, 6)
speedBoxCorner.Parent = speedTextBox
--==================================================
-- SLIDER
--==================================================
local sliderTrack = Instance.new("Frame")
sliderTrack.Name = "SliderTrack"
sliderTrack.Size = UDim2.new(1, -32, 0, 7)
sliderTrack.Position = UDim2.new(0, 16, 0, 126)
sliderTrack.BackgroundColor3 = COLORS.SliderTrack
sliderTrack.BorderSizePixel = 0
sliderTrack.Active = true
sliderTrack.Parent = mainFrame
local sliderTrackCorner = Instance.new("UICorner")
sliderTrackCorner.CornerRadius = UDim.new(1, 0)
sliderTrackCorner.Parent = sliderTrack
local sliderFill = Instance.new("Frame")
sliderFill.Name = "SliderFill"
sliderFill.Size = UDim2.new(0, 0, 1, 0)
sliderFill.BackgroundColor3 = COLORS.SliderFill
sliderFill.BorderSizePixel = 0
sliderFill.Parent = sliderTrack
local sliderFillCorner = Instance.new("UICorner")
sliderFillCorner.CornerRadius = UDim.new(1, 0)
sliderFillCorner.Parent = sliderFill
local sliderHandle = Instance.new("Frame")
sliderHandle.Name = "SliderHandle"
sliderHandle.Size = UDim2.new(0, 16, 0, 16)
sliderHandle.AnchorPoint = Vector2.new(0.5, 0.5)
sliderHandle.Position = UDim2.new(0, 0, 0.5, 0)
sliderHandle.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
sliderHandle.BorderSizePixel = 0
sliderHandle.Active = true
sliderHandle.ZIndex = 2
sliderHandle.Parent = sliderTrack
local sliderHandleCorner = Instance.new("UICorner")
sliderHandleCorner.CornerRadius = UDim.new(1, 0)
sliderHandleCorner.Parent = sliderHandle
--==================================================
-- PRESET LABEL
--==================================================
local presetLabel = Instance.new("TextLabel")
presetLabel.Name = "PresetLabel"
presetLabel.BackgroundTransparency = 1
presetLabel.Size = UDim2.new(1, -32, 0, 18)
presetLabel.Position = UDim2.new(0, 16, 0, 143)
presetLabel.Text = "Presets"
presetLabel.TextColor3 = COLORS.SubText
presetLabel.TextXAlignment = Enum.TextXAlignment.Left
presetLabel.Font = Enum.Font.Gotham
presetLabel.TextSize = 11
presetLabel.Parent = mainFrame
--==================================================
-- PRESET CONTAINER
--==================================================
local presetFrame = Instance.new("Frame")
presetFrame.Name = "PresetFrame"
presetFrame.Size = UDim2.new(1, -32, 0, 36)
presetFrame.Position = UDim2.new(0, 16, 0, 164)
presetFrame.BackgroundTransparency = 1
presetFrame.Parent = mainFrame
-- IMPORTANT:
-- This forces buttons to follow LayoutOrder instead
-- of Name, which fixes the ordering issue.
local presetLayout = Instance.new("UIListLayout")
presetLayout.Name = "PresetLayout"
presetLayout.FillDirection = Enum.FillDirection.Horizontal
presetLayout.HorizontalAlignment = Enum.HorizontalAlignment.Left
presetLayout.VerticalAlignment = Enum.VerticalAlignment.Center
presetLayout.SortOrder = Enum.SortOrder.LayoutOrder
presetLayout.Padding = UDim.new(0, 6)
presetLayout.Parent = presetFrame
--==================================================
-- MINIMIZED ICON
--==================================================
local minimizedIcon = Instance.new("TextButton")
minimizedIcon.Name = "MinimizedIcon"
minimizedIcon.Size = UDim2.new(0, 44, 0, 44)
minimizedIcon.Position = UDim2.new(0, 20, 0, 20)
minimizedIcon.BackgroundColor3 = COLORS.Background
minimizedIcon.Text = "S"
minimizedIcon.TextColor3 = COLORS.Text
minimizedIcon.Font = Enum.Font.GothamBold
minimizedIcon.TextSize = 18
minimizedIcon.AutoButtonColor = false
minimizedIcon.Visible = false
minimizedIcon.Parent = screenGui
local minimizedIconCorner = Instance.new("UICorner")
minimizedIconCorner.CornerRadius = UDim.new(1, 0)
minimizedIconCorner.Parent = minimizedIcon
--==================================================
-- SCREEN HELPERS
--==================================================
local function getViewportSize()
local camera = Workspace.CurrentCamera
if camera then
return camera.ViewportSize
end
return Vector2.new(1920, 1080)
end
local function clampMainFrameToScreen()
local viewport = getViewportSize()
local frameWidth = mainFrame.AbsoluteSize.X
local frameHeight = mainFrame.AbsoluteSize.Y
local maxX = math.max(viewport.X - frameWidth, 0)
local maxY = math.max(viewport.Y - frameHeight, 0)
local x = math.clamp(mainFrame.Position.X.Offset, 0, maxX)
local y = math.clamp(mainFrame.Position.Y.Offset, 0, maxY)
mainFrame.Position = UDim2.new(
0,
x,
0,
y
)
end
local function updateUIScale()
local viewport = getViewportSize()
if viewport.X < CONFIG.MobileBreakpoint then
uiScale.Scale = CONFIG.MobileScale
else
uiScale.Scale = 1
end
clampMainFrameToScreen()
end
local function bindViewportSignal()
local camera = Workspace.CurrentCamera
if camera then
track(
camera:GetPropertyChangedSignal("ViewportSize"):Connect(
updateUIScale
)
)
end
end
bindViewportSignal()
updateUIScale()
track(
Workspace:GetPropertyChangedSignal("CurrentCamera"):Connect(
function()
bindViewportSignal()
updateUIScale()
end
)
)
--==================================================
-- PANEL DRAGGING
--==================================================
local dragging = false
local dragInput = nil
local dragStart = nil
local dragStartPosition = nil
local function updatePanelDrag(input)
if not dragStart or not dragStartPosition then
return
end
local delta = input.Position - dragStart
local newPosition = UDim2.new(
dragStartPosition.X.Scale,
dragStartPosition.X.Offset + delta.X,
dragStartPosition.Y.Scale,
dragStartPosition.Y.Offset + delta.Y
)
mainFrame.Position = newPosition
clampMainFrameToScreen()
end
track(
header.InputBegan:Connect(
function(input)
if
input.UserInputType == Enum.UserInputType.MouseButton1
or input.UserInputType == Enum.UserInputType.Touch
then
dragging = true
dragStart = input.Position
dragStartPosition = mainFrame.Position
input.Changed:Connect(
function()
if input.UserInputState == Enum.UserInputState.End then
dragging = false
end
end
)
end
end
)
)
track(
header.InputChanged:Connect(
function(input)
if
input.UserInputType == Enum.UserInputType.MouseMovement
or input.UserInputType == Enum.UserInputType.Touch
then
dragInput = input
end
end
)
)
track(
UserInputService.InputChanged:Connect(
function(input)
if input == dragInput and dragging then
updatePanelDrag(input)
end
end
)
)
--==================================================
-- ANTI-SLIDE
--==================================================
local function stopAntiSlide()
if antiSlideConnection then
antiSlideConnection:Disconnect()
antiSlideConnection = nil
end
end
local function startAntiSlide()
if not CONFIG.EnableAntiSlide then
return
end
stopAntiSlide()
antiSlideConnection = RunService.Heartbeat:Connect(
function()
if not characterState.Humanoid then
return
end
if not characterState.RootPart then
return
end
if characterState.Humanoid.FloorMaterial == Enum.Material.Air then
return
end
if characterState.Humanoid.MoveDirection.Magnitude < CONFIG.StopThreshold then
local velocity =
characterState.RootPart.AssemblyLinearVelocity
characterState.RootPart.AssemblyLinearVelocity =
Vector3.new(
0,
velocity.Y,
0
)
end
end
)
end
--==================================================
-- UI UPDATE
--==================================================
local function updateUI(animate)
local relative = speedToRelative(state.Speed)
local fillGoal = UDim2.new(
relative,
0,
1,
0
)
local handleGoal = UDim2.new(
relative,
0,
0.5,
0
)
local toggleColor =
state.Enabled
and COLORS.On
or COLORS.Off
local strokeColor =
state.Enabled
and COLORS.On
or COLORS.OffStroke
local dotColor =
state.Enabled
and COLORS.On
or Color3.fromRGB(150, 150, 150)
if animate and CONFIG.EnableAnimations then
TweenService:Create(
sliderFill,
TWEEN_INFO,
{
Size = fillGoal
}
):Play()
TweenService:Create(
sliderHandle,
TWEEN_INFO,
{
Position = handleGoal
}
):Play()
TweenService:Create(
toggleButton,
TWEEN_INFO,
{
BackgroundColor3 = toggleColor
}
):Play()
TweenService:Create(
toggleStroke,
TWEEN_INFO,
{
Color = strokeColor
}
):Play()
TweenService:Create(
toggleDot,
TWEEN_INFO,
{
BackgroundColor3 = dotColor
}
):Play()
else
sliderFill.Size = fillGoal
sliderHandle.Position = handleGoal
toggleButton.BackgroundColor3 = toggleColor
toggleStroke.Color = strokeColor
toggleDot.BackgroundColor3 = dotColor
end
if not speedTextBox:IsFocused() then
speedTextBox.Text = tostring(state.Speed)
end
statusLabel.Text =
state.Enabled
and "Fast Speed: ON"
or "Fast Speed: OFF"
currentSpeedLabel.Text =
"Current: " .. tostring(state.Speed)
end
--==================================================
-- APPLY SPEED
--==================================================
local function setSpeed(value, animate)
state.Speed = clampSpeed(value)
updateUI(
animate ~= false
)
if characterState.Humanoid then
if state.Enabled then
characterState.Humanoid.WalkSpeed =
state.Speed
else
characterState.Humanoid.WalkSpeed =
CONFIG.NormalSpeed
end
end
end
local function setEnabled(enabled, animate)
state.Enabled = enabled == true
if state.Enabled then
startAntiSlide()
else
stopAntiSlide()
end
if characterState.Humanoid then
characterState.Humanoid.WalkSpeed =
state.Enabled
and state.Speed
or CONFIG.NormalSpeed
end
updateUI(
animate ~= false
)
end
local function toggleSpeed()
setEnabled(
not state.Enabled,
true
)
playClickSound()
end
--==================================================
-- SLIDER
--==================================================
local function getSpeedFromInput(inputPosition)
local trackPosition = sliderTrack.AbsolutePosition.X
local trackWidth = sliderTrack.AbsoluteSize.X
if trackWidth <= 0 then
return state.Speed
end
local relative =
(
inputPosition.X - trackPosition
)
/ trackWidth
relative = math.clamp(
relative,
0,
1
)
return relativeToSpeed(relative)
end
local function beginSliderDrag(input)
if
input.UserInputType == Enum.UserInputType.MouseButton1
or input.UserInputType == Enum.UserInputType.Touch
then
state.SliderDragging = true
setSpeed(
getSpeedFromInput(input.Position),
false
)
end
end
track(
sliderTrack.InputBegan:Connect(
beginSliderDrag
)
)
track(
sliderHandle.InputBegan:Connect(
beginSliderDrag
)
)
track(
UserInputService.InputChanged:Connect(
function(input)
if not state.SliderDragging then
return
end
if
input.UserInputType == Enum.UserInputType.MouseMovement
or input.UserInputType == Enum.UserInputType.Touch
then
setSpeed(
getSpeedFromInput(input.Position),
false
)
end
end
)
)
track(
UserInputService.InputEnded:Connect(
function(input)
if
input.UserInputType == Enum.UserInputType.MouseButton1
or input.UserInputType == Enum.UserInputType.Touch
then
state.SliderDragging = false
end
end
)
)
--==================================================
-- NUMERIC TEXTBOX
--==================================================
local filteringText = false
track(
speedTextBox:GetPropertyChangedSignal("Text"):Connect(
function()
if filteringText then
return
end
local cleaned =
speedTextBox.Text:gsub(
"%D",
""
)
if cleaned ~= speedTextBox.Text then
filteringText = true
speedTextBox.Text = cleaned
filteringText = false
end
end
)
)
track(
speedTextBox.FocusLost:Connect(
function()
local value =
tonumber(speedTextBox.Text)
if value then
setSpeed(
value,
true
)
else
speedTextBox.Text =
tostring(state.Speed)
end
end
)
)
--==================================================
-- PRESET BUTTONS
--==================================================
-- This is the important ordering section.
--
-- The table order + LayoutOrder + SortOrder all
-- point to the same ordering system.
--==================================================
for index, preset in ipairs(PRESET_SPEEDS) do
local presetButton = Instance.new("TextButton")
presetButton.Name =
"Preset_" .. tostring(index)
presetButton.Size =
UDim2.new(
0,
43,
0,
34
)
-- THIS forces the exact order.
presetButton.LayoutOrder = index
presetButton.BackgroundColor3 =
COLORS.PresetBackground
presetButton.BorderSizePixel = 0
presetButton.Text =
preset.Label
presetButton.TextColor3 =
COLORS.Text
presetButton.Font =
Enum.Font.GothamBold
presetButton.TextSize = 11
presetButton.AutoButtonColor = false
presetButton.Parent = presetFrame
local presetCorner =
Instance.new("UICorner")
presetCorner.CornerRadius =
UDim.new(0, 6)
presetCorner.Parent =
presetButton
track(
presetButton.MouseEnter:Connect(
function()
presetButton.BackgroundColor3 =
COLORS.PresetHover
end
)
)
track(
presetButton.MouseLeave:Connect(
function()
presetButton.BackgroundColor3 =
COLORS.PresetBackground
end
)
)
track(
presetButton.MouseButton1Click:Connect(
function()
setSpeed(
preset.Value,
true
)
playClickSound()
end
)
)
end
--==================================================
-- TOGGLE BUTTON
--==================================================
track(
toggleButton.MouseButton1Click:Connect(
function()
toggleSpeed()
end
)
)
--==================================================
-- KEYBIND
--==================================================
track(
UserInputService.InputBegan:Connect(
function(input, gameProcessedEvent)
if gameProcessedEvent then
return
end
if
CONFIG.ToggleKeybind
and input.KeyCode
== CONFIG.ToggleKeybind
then
toggleSpeed()
end
end
)
)
--==================================================
-- CHARACTER HANDLING
--==================================================
local function onCharacterAdded(character)
if state.Terminated then
return
end
characterState.Humanoid =
character:WaitForChild(
"Humanoid"
)
characterState.RootPart =
character:WaitForChild(
"HumanoidRootPart"
)
if state.Enabled then
characterState.Humanoid.WalkSpeed =
state.Speed
startAntiSlide()
else
characterState.Humanoid.WalkSpeed =
CONFIG.NormalSpeed
end
end
if player.Character then
onCharacterAdded(
player.Character
)
end
track(
player.CharacterAdded:Connect(
onCharacterAdded
)
)
--==================================================
-- MINIMIZE
--==================================================
track(
minimizeButton.MouseButton1Click:Connect(
function()
state.Minimized = true
mainFrame.Visible = false
minimizedIcon.Visible = true
end
)
)
--==================================================
-- RESTORE
--==================================================
track(
minimizedIcon.MouseButton1Click:Connect(
function()
state.Minimized = false
minimizedIcon.Visible = false
mainFrame.Visible = true
clampMainFrameToScreen()
end
)
)
--==================================================
-- CLOSE BUTTON HOVER
--==================================================
track(
closeButton.MouseEnter:Connect(
function()
closeButton.TextColor3 =
COLORS.CloseHover
end
)
)
track(
closeButton.MouseLeave:Connect(
function()
closeButton.TextColor3 =
Color3.fromRGB(
200,
200,
200
)
end
)
)
--==================================================
-- TERMINATE
--==================================================
local function terminateGui()
if state.Terminated then
return
end
state.Terminated = true
-- Restore normal speed
if characterState.Humanoid then
characterState.Humanoid.WalkSpeed =
CONFIG.NormalSpeed
end
stopAntiSlide()
disconnectAll()
if screenGui then
screenGui:Destroy()
end
if script then
script:Destroy()
end
end
track(
closeButton.MouseButton1Click:Connect(
terminateGui
)
)
--==================================================
-- INITIAL STATE
--==================================================
state.Speed =
clampSpeed(
CONFIG.DefaultSpeed
)
state.Enabled = false
updateUI(false)
if characterState.Humanoid then
characterState.Humanoid.WalkSpeed =
CONFIG.NormalSpeed
endReview the source before using it. Executions count successful copies, capped at 10 per user and network per script in 24 hours.
Community discussion
0Start the conversation.


Your community, in one place