-- LocalScript in StarterPlayerScripts
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
-- Anti-detection settings
local PROTECTION = {
RANDOM_DELAYS = true, -- Add random delays between speed changes
SPEED_VARIANCE = 0.15, -- Randomly vary speed by ±15%
HUMANISTIC_MOVEMENT = true, -- Mimic human-like acceleration
STEALTH_MODE = false, -- Temporarily disable when suspicious activity detected
MAX_SAFE_SPEED = 120, -- Don't exceed this speed to avoid detection
USE_TWEENS = true -- Use Roblox's tween service instead of manual lerp
}
-- Settings
local DEFAULT_SPEED = 16
local MAX_SPEED = math.min(500, PROTECTION.MAX_SAFE_SPEED)
local LERP_SPEED = 6 -- Slower for more natural movement
-- Security variables (don't modify these)
local security = {
lastSpeedChange = tick(),
lastHumanoidCheck = 0,
detectionCounter = 0,
originalWalkSpeed = DEFAULT_SPEED,
isSuspicious = false,
randomSeed = math.random(1, 10000)
}
-- Obfuscated function names
local _env = {
updateMovement = function() end,
safeHumanoidSet = function() end,
securityCheck = function() end,
humanisticSpeed = function() end
}
-- Safe humanoid property setter with error handling
function _env.safeHumanoidSet(hum, property, value)
if not hum or not hum:IsA("Humanoid") then return false end
local success, result = pcall(function()
hum[property] = value
return true
end)
if not success then
security.detectionCounter = security.detectionCounter + 1
if security.detectionCounter > 3 then
PROTECTION.STEALTH_MODE = true
task.delay(10, function()
PROTECTION.STEALTH_MODE = false
security.detectionCounter = 0
end)
end
return false
end
return true
end
-- Security monitoring
function _env.securityCheck()
if PROTECTION.STEALTH_MODE then
return false, "Stealth mode active"
end
-- Check if game might be detecting modifications
if tick() - security.lastSpeedChange < 0.1 then
security.detectionCounter = security.detectionCounter + 0.5
end
-- Reset counter over time
if tick() - security.lastSpeedChange > 30 then
security.detectionCounter = math.max(0, security.detectionCounter - 1)
end
return true
end
-- Human-like speed calculation with randomness
function _env.humanisticSpeed(targetSpeed)
if not PROTECTION.HUMANISTIC_MOVEMENT then
return targetSpeed
end
local variance = 1.0
if PROTECTION.RANDOM_DELAYS then
math.randomseed(tick() + security.randomSeed)
variance = 1.0 + (math.random() * 2 - 1) * PROTECTION.SPEED_VARIANCE
end
local finalSpeed = targetSpeed * variance
-- Add small random delays between speed changes
if PROTECTION.RANDOM_DELAYS and math.random() < 0.3 then
task.wait(math.random() * 0.1)
end
return finalSpeed
end
-- UI Creation (same as before but with obfuscated variable names)
local _interface = {
mainWindow = Instance.new("ScreenGui"),
container = Instance.new("Frame")
}
_interface.mainWindow.ResetOnSpawn = false
_interface.mainWindow.Parent = playerGui
_interface.container.Size = UDim2.new(0, 260, 0, 170)
_interface.container.Position = UDim2.new(0.5, -130, 0.5, -85)
_interface.container.AnchorPoint = Vector2.new(0.5, 0.5)
_interface.container.BackgroundColor3 = Color3.fromRGB(25,25,25)
_interface.container.BackgroundTransparency = 0.12
_interface.container.Active = true
_interface.container.Parent = _interface.mainWindow
local corner = Instance.new("UICorner", _interface.container)
corner.CornerRadius = UDim.new(0, 10)
local title = Instance.new("TextLabel", _interface.container)
title.Size = UDim2.new(1, -12, 0, 28)
title.Position = UDim2.new(0, 6, 0, 6)
title.BackgroundTransparency = 1
title.Text = "Movement Assistant"
title.TextColor3 = Color3.fromRGB(255,255,255)
title.Font = Enum.Font.SourceSansBold
title.TextSize = 18
title.TextXAlignment = Enum.TextXAlignment.Left
-- Speed controls
local speedInput = Instance.new("TextBox", _interface.container)
speedInput.Size = UDim2.new(0.9, 0, 0, 28)
speedInput.Position = UDim2.new(0.05, 0, 0, 40)
speedInput.PlaceholderText = tostring(DEFAULT_SPEED)
speedInput.ClearTextOnFocus = false
speedInput.Text = ""
speedInput.Font = Enum.Font.SourceSans
speedInput.TextSize = 16
speedInput.BackgroundColor3 = Color3.fromRGB(40,40,40)
speedInput.TextColor3 = Color3.fromRGB(255,255,255)
local applyBtn = Instance.new("TextButton", _interface.container)
applyBtn.Size = UDim2.new(0.44, 0, 0, 32)
applyBtn.Position = UDim2.new(0.05, 0, 0, 76)
applyBtn.Text = "Apply Speed"
applyBtn.Font = Enum.Font.SourceSansBold
applyBtn.TextSize = 16
applyBtn.BackgroundColor3 = Color3.fromRGB(75,75,160)
applyBtn.TextColor3 = Color3.fromRGB(255,255,255)
local defaultBtn = Instance.new("TextButton", _interface.container)
defaultBtn.Size = UDim2.new(0.44, 0, 0, 32)
defaultBtn.Position = UDim2.new(0.51, 0, 0, 76)
defaultBtn.Text = "Reset"
defaultBtn.Font = Enum.Font.SourceSansBold
defaultBtn.TextSize = 16
defaultBtn.BackgroundColor3 = Color3.fromRGB(100,100,100)
defaultBtn.TextColor3 = Color3.fromRGB(255,255,255)
-- AutoJump Controls
local jumpLabel = Instance.new("TextLabel", _interface.container)
jumpLabel.Size = UDim2.new(0.6, 0, 0, 22)
jumpLabel.Position = UDim2.new(0.05, 0, 0, 116)
jumpLabel.BackgroundTransparency = 1
jumpLabel.Text = "Auto Jump:"
jumpLabel.TextColor3 = Color3.fromRGB(255,255,255)
jumpLabel.Font = Enum.Font.SourceSans
jumpLabel.TextSize = 14
jumpLabel.TextXAlignment = Enum.TextXAlignment.Left
local jumpToggle = Instance.new("TextButton", _interface.container)
jumpToggle.Size = UDim2.new(0.28, 0, 0, 22)
jumpToggle.Position = UDim2.new(0.67, 0, 0, 116)
jumpToggle.Text = "Off"
jumpToggle.Font = Enum.Font.SourceSansBold
jumpToggle.TextSize = 14
jumpToggle.BackgroundColor3 = Color3.fromRGB(120,120,120)
jumpToggle.TextColor3 = Color3.fromRGB(255,255,255)
local timingInput = Instance.new("TextBox", _interface.container)
timingInput.Size = UDim2.new(0.9, 0, 0, 20)
timingInput.Position = UDim2.new(0.05, 0, 0, 142)
timingInput.PlaceholderText = "Jump interval (seconds) e.g. 0.2"
timingInput.ClearTextOnFocus = false
timingInput.Text = "0.2"
timingInput.Font = Enum.Font.SourceSans
timingInput.TextSize = 14
timingInput.BackgroundColor3 = Color3.fromRGB(40,40,40)
timingInput.TextColor3 = Color3.fromRGB(255,255,255)
-- Draggable UI (same functionality)
local dragging, dragInput, dragStart, startPos
local function update(input)
local delta = input.Position - dragStart
_interface.container.Position = UDim2.new(
_interface.container.Position.X.Scale,
startPos.X + delta.X,
_interface.container.Position.Y.Scale,
startPos.Y + delta.Y
)
end
_interface.container.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPos = Vector2.new(_interface.container.Position.X.Offset, _interface.container.Position.Y.Offset)
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then
dragging = false
end
end)
end
end)
_interface.container.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
dragInput = input
end
end)
UserInputService.InputChanged:Connect(function(input)
if input == dragInput and dragging then
update(input)
end
end)
-- Toggle UI visibility
UserInputService.InputBegan:Connect(function(inp, processed)
if processed then return end
if inp.KeyCode == Enum.KeyCode.G then
_interface.container.Visible = not _interface.container.Visible
end
end)
-- Movement system with anti-detection
local currentTargetSpeed = DEFAULT_SPEED
local currentSpeed = DEFAULT_SPEED
local speedTween
local function setTargetSpeed(n)
if type(n) ~= "number" then return end
n = math.clamp(n, 0, MAX_SPEED)
security.lastSpeedChange = tick()
currentTargetSpeed = n
-- Use tween service for more natural movement
if PROTECTION.USE_TWEENS and speedTween then
speedTween:Cancel()
end
end
applyBtn.MouseButton1Click:Connect(function()
local n = tonumber(speedInput.Text)
if n and n > 0 then
setTargetSpeed(n)
applyBtn.Text = "Speed: " .. tostring(math.floor(currentTargetSpeed))
else
applyBtn.Text = "Invalid input"
task.wait(1.5)
applyBtn.Text = "Apply Speed"
end
end)
defaultBtn.MouseButton1Click:Connect(function()
speedInput.Text = ""
setTargetSpeed(DEFAULT_SPEED)
applyBtn.Text = "Apply Speed"
end)
-- AutoJump system
local autoJumpEnabled = false
jumpToggle.MouseButton1Click:Connect(function()
autoJumpEnabled = not autoJumpEnabled
jumpToggle.Text = autoJumpEnabled and "On" or "Off"
jumpToggle.BackgroundColor3 = autoJumpEnabled and Color3.fromRGB(80,160,80) or Color3.fromRGB(120,120,120)
end)
-- Character monitoring
local humanoid
local function refreshHumanoid()
if player.Character then
humanoid = player.Character:FindFirstChildOfClass("Humanoid")
if humanoid then
security.originalWalkSpeed = humanoid.WalkSpeed
_env.safeHumanoidSet(humanoid, "WalkSpeed", currentSpeed)
end
end
end
refreshHumanoid()
player.CharacterAdded:Connect(function()
task.wait(0.5) -- Longer delay for safety
refreshHumanoid()
end)
-- Jump timing
local jumpInterval = 0.2
local jumpTimer = 0
local function readInterval()
local n = tonumber(timingInput.Text)
if n and n > 0 then
jumpInterval = math.clamp(n, 0.08, 2.5) -- More reasonable limits
else
jumpInterval = 0.2
end
end
-- Main loop with protection
RunService.Heartbeat:Connect(function(dt)
-- Security check
local safe, reason = _env.securityCheck()
if not safe then
if humanoid and security.originalWalkSpeed then
_env.safeHumanoidSet(humanoid, "WalkSpeed", security.originalWalkSpeed)
end
return
end
-- Update humanoid reference
if not humanoid and player.Character then
refreshHumanoid()
end
-- Apply speed with protection
if humanoid then
if PROTECTION.USE_TWEENS then
-- Smooth interpolation
currentSpeed = currentSpeed + (currentTargetSpeed - currentSpeed) * math.clamp(LERP_SPEED * dt, 0, 1)
else
currentSpeed = currentTargetSpeed
end
-- Apply humanistic variations
local finalSpeed = _env.humanisticSpeed(currentSpeed)
_env.safeHumanoidSet(humanoid, "WalkSpeed", finalSpeed)
end
-- Auto jump with safety checks
if autoJumpEnabled and humanoid and player.Character then
readInterval()
jumpTimer += dt
if jumpTimer >= jumpInterval then
local moving = humanoid.MoveDirection.Magnitude > 0.1
local grounded = humanoid.FloorMaterial ~= Enum.Material.Air
if moving and grounded and humanoid:GetState() ~= Enum.HumanoidStateType.Jumping then
_env.safeHumanoidSet(humanoid, "Jump", true)
end
jumpTimer = 0
end
end
end)
-- Initialize with safe speed
setTargetSpeed(DEFAULT_SPEED)
-- Additional protection: Randomize internal timing
if PROTECTION.RANDOM_DELAYS then
task.wait(math.random() * 2) -- Random startup delay
end
-- Cleanup on script termination
game:GetService("ScriptContext").DescendantRemoving:Connect(function(descendant)
if descendant == script then
if humanoid and security.originalWalkSpeed then
pcall(function()
humanoid.WalkSpeed = security.originalWalkSpeed
end)
end
end
end)
To embed this project on your website, copy the following code and paste it into your website's HTML: