-- 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)

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: