Crooksa Hub movement
Key RequiredUniversal

Crooksa Hub movement

Universal ScriptCrooksaisthebestCrooksaisthebest 400 views 576 executesUpdated Feb 26, 2026
Unrated
00
Lua Script•408 lines (13666 chars)
local player = game.Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local rootPart = character:WaitForChild("HumanoidRootPart")

local flying = false
local noclip = false
local infJump = false
local currentSpeed = 16
local flySpeed = 50
local increment = 10
local bodyVelocity, bodyGyro
local camera = workspace.CurrentCamera
local UIS = game:GetService("UserInputService")
local RS = game:GetService("RunService")

-- GUI
local screenGui = Instance.new("ScreenGui")
screenGui.ResetOnSpawn = false
screenGui.Parent = player.PlayerGui

-- Logo button (image)
local logoBtn = Instance.new("ImageButton")
logoBtn.Size = UDim2.new(0, 38, 0, 38)
logoBtn.Position = UDim2.new(0, 20, 0.5, -19)
logoBtn.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
logoBtn.Image = "rbxassetid://83542200342727"
logoBtn.BorderSizePixel = 0
logoBtn.Parent = screenGui
Instance.new("UICorner", logoBtn).CornerRadius = UDim.new(0, 10)

local logoStroke = Instance.new("UIStroke")
logoStroke.Color = Color3.fromRGB(100, 180, 255)
logoStroke.Thickness = 2
logoStroke.Parent = logoBtn

local logoDragging = false
local logoDragStart, logoStartPos

logoBtn.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.Touch or
       input.UserInputType == Enum.UserInputType.MouseButton1 then
        logoDragging = true
        logoDragStart = input.Position
        logoStartPos = logoBtn.Position
    end
end)

logoBtn.InputEnded:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.Touch or
       input.UserInputType == Enum.UserInputType.MouseButton1 then
        logoDragging = false
    end
end)

-- Main frame
local frame = Instance.new("Frame")
frame.Size = UDim2.new(0, 220, 0, 290)
frame.Position = UDim2.new(0.5, -110, 0, 20)
frame.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
frame.BackgroundTransparency = 0.2
frame.BorderSizePixel = 0
frame.Parent = screenGui
Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 16)

local stroke = Instance.new("UIStroke")
stroke.Color = Color3.fromRGB(60, 60, 60)
stroke.Thickness = 1.5
stroke.Parent = frame

local header = Instance.new("TextLabel")
header.Size = UDim2.new(1, 0, 0, 30)
header.Position = UDim2.new(0, 0, 0, 5)
header.BackgroundTransparency = 1
header.TextColor3 = Color3.fromRGB(255, 255, 255)
header.Text = "🎮 Crooksa Hub"
header.Font = Enum.Font.GothamBold
header.TextSize = 14
header.Parent = frame

local function makeDivider(yPos)
    local d = Instance.new("Frame")
    d.Size = UDim2.new(0, 190, 0, 1)
    d.Position = UDim2.new(0.5, -95, 0, yPos)
    d.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
    d.BorderSizePixel = 0
    d.Parent = frame
end

makeDivider(35)
makeDivider(82)
makeDivider(155)
makeDivider(182)
makeDivider(222)

local function makeToggleButton(text, yPos)
    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(0, 190, 0, 30)
    btn.Position = UDim2.new(0.5, -95, 0, yPos)
    btn.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
    btn.TextColor3 = Color3.fromRGB(180, 180, 180)
    btn.Text = text .. ":  OFF"
    btn.Font = Enum.Font.GothamBold
    btn.TextSize = 13
    btn.BorderSizePixel = 0
    btn.Parent = frame
    Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 8)
    return btn
end

local function makeAdjustRow(labelText, yPos, defaultVal)
    local label = Instance.new("TextLabel")
    label.Size = UDim2.new(0, 190, 0, 18)
    label.Position = UDim2.new(0.5, -95, 0, yPos)
    label.BackgroundTransparency = 1
    label.TextColor3 = Color3.fromRGB(180, 180, 180)
    label.Text = labelText .. "  |  " .. defaultVal
    label.Font = Enum.Font.GothamBold
    label.TextSize = 12
    label.Parent = frame

    local minus = Instance.new("TextButton")
    minus.Size = UDim2.new(0, 45, 0, 26)
    minus.Position = UDim2.new(0.5, -95, 0, yPos + 20)
    minus.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
    minus.TextColor3 = Color3.new(1, 1, 1)
    minus.Text = "−"
    minus.Font = Enum.Font.GothamBold
    minus.TextSize = 18
    minus.BorderSizePixel = 0
    minus.Parent = frame
    Instance.new("UICorner", minus).CornerRadius = UDim.new(0, 8)

    local display = Instance.new("TextLabel")
    display.Size = UDim2.new(0, 80, 0, 26)
    display.Position = UDim2.new(0.5, -40, 0, yPos + 20)
    display.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
    display.TextColor3 = Color3.fromRGB(100, 180, 255)
    display.Text = tostring(defaultVal)
    display.Font = Enum.Font.GothamBold
    display.TextSize = 14
    display.BorderSizePixel = 0
    display.Parent = frame
    Instance.new("UICorner", display).CornerRadius = UDim.new(0, 8)

    local plus = Instance.new("TextButton")
    plus.Size = UDim2.new(0, 45, 0, 26)
    plus.Position = UDim2.new(0.5, 50, 0, yPos + 20)
    plus.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
    plus.TextColor3 = Color3.new(1, 1, 1)
    plus.Text = "+"
    plus.Font = Enum.Font.GothamBold
    plus.TextSize = 18
    plus.BorderSizePixel = 0
    plus.Parent = frame
    Instance.new("UICorner", plus).CornerRadius = UDim.new(0, 8)

    return label, minus, display, plus
end

local flyBtn = makeToggleButton("✈  Fly", 45)
local flySpeedLabel, flyMinus, flyDisplay, flyPlus = makeAdjustRow("✈  Fly Speed", 88, flySpeed)
local noclipBtn = makeToggleButton("👻  Noclip", 160)
local infJumpBtn = makeToggleButton("🦘  Inf Jump", 190)
local walkSpeedLabel, walkMinus, walkDisplay, walkPlus = makeAdjustRow("⚡ Walk Speed", 230, currentSpeed)

flyMinus.MouseButton1Click:Connect(function()
    flySpeed = math.clamp(flySpeed - 10, 10, 500)
    flyDisplay.Text = tostring(flySpeed)
    flySpeedLabel.Text = "✈  Fly Speed  |  " .. flySpeed
end)

flyPlus.MouseButton1Click:Connect(function()
    flySpeed = math.clamp(flySpeed + 10, 10, 500)
    flyDisplay.Text = tostring(flySpeed)
    flySpeedLabel.Text = "✈  Fly Speed  |  " .. flySpeed
end)

walkMinus.MouseButton1Click:Connect(function()
    currentSpeed = math.clamp(currentSpeed - increment, 16, 500)
    humanoid.WalkSpeed = currentSpeed
    walkDisplay.Text = tostring(currentSpeed)
    walkSpeedLabel.Text = "⚡ Walk Speed  |  " .. currentSpeed
end)

walkPlus.MouseButton1Click:Connect(function()
    currentSpeed = math.clamp(currentSpeed + increment, 16, 500)
    humanoid.WalkSpeed = currentSpeed
    walkDisplay.Text = tostring(currentSpeed)
    walkSpeedLabel.Text = "⚡ Walk Speed  |  " .. currentSpeed
end)

local upButton = Instance.new("TextButton")
upButton.Size = UDim2.new(0, 60, 0, 60)
upButton.Position = UDim2.new(1, -150, 1, -140)
upButton.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
upButton.TextColor3 = Color3.new(1, 1, 1)
upButton.Text = "▲"
upButton.Font = Enum.Font.GothamBold
upButton.TextSize = 22
upButton.BorderSizePixel = 0
upButton.Visible = false
upButton.Parent = screenGui
Instance.new("UICorner", upButton).CornerRadius = UDim.new(0, 10)

local downButton = Instance.new("TextButton")
downButton.Size = UDim2.new(0, 60, 0, 60)
downButton.Position = UDim2.new(1, -150, 1, -70)
downButton.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
downButton.TextColor3 = Color3.new(1, 1, 1)
downButton.Text = "▼"
downButton.Font = Enum.Font.GothamBold
downButton.TextSize = 22
downButton.BorderSizePixel = 0
downButton.Visible = false
downButton.Parent = screenGui
Instance.new("UICorner", downButton).CornerRadius = UDim.new(0, 10)

local goingUp = false
local goingDown = false

upButton.MouseButton1Down:Connect(function() goingUp = true end)
upButton.MouseButton1Up:Connect(function() goingUp = false end)
downButton.MouseButton1Down:Connect(function() goingDown = true end)
downButton.MouseButton1Up:Connect(function() goingDown = false end)

UIS.TouchStarted:Connect(function(touch, processed)
    if processed then
        local pos = touch.Position
        local function hitting(btn)
            local p = btn.AbsolutePosition
            local s = btn.AbsoluteSize
            return pos.X >= p.X and pos.X <= p.X + s.X and pos.Y >= p.Y and pos.Y <= p.Y + s.Y
        end
        if hitting(upButton) then goingUp = true end
        if hitting(downButton) then goingDown = true end
    end
end)

UIS.TouchEnded:Connect(function()
    goingUp = false
    goingDown = false
end)

local function startFly()
    flying = true
    flyBtn.Text = "✈  Fly:  ON"
    flyBtn.TextColor3 = Color3.fromRGB(100, 180, 255)
    humanoid.PlatformStand = true
    upButton.Visible = true
    downButton.Visible = true

    bodyVelocity = Instance.new("BodyVelocity")
    bodyVelocity.Velocity = Vector3.zero
    bodyVelocity.MaxForce = Vector3.new(1e5, 1e5, 1e5)
    bodyVelocity.Parent = rootPart

    bodyGyro = Instance.new("BodyGyro")
    bodyGyro.MaxTorque = Vector3.new(1e5, 1e5, 1e5)
    bodyGyro.CFrame = camera.CFrame
    bodyGyro.Parent = rootPart
end

local function stopFly()
    flying = false
    flyBtn.Text = "✈  Fly:  OFF"
    flyBtn.TextColor3 = Color3.fromRGB(180, 180, 180)
    humanoid.PlatformStand = false
    upButton.Visible = false
    downButton.Visible = false
    goingUp = false
    goingDown = false
    if bodyVelocity then bodyVelocity:Destroy() end
    if bodyGyro then bodyGyro:Destroy() end
end

flyBtn.MouseButton1Click:Connect(function()
    if flying then stopFly() else startFly() end
end)

noclipBtn.MouseButton1Click:Connect(function()
    noclip = not noclip
    if noclip then
        noclipBtn.Text = "👻  Noclip:  ON"
        noclipBtn.TextColor3 = Color3.fromRGB(100, 180, 255)
    else
        noclipBtn.Text = "👻  Noclip:  OFF"
        noclipBtn.TextColor3 = Color3.fromRGB(180, 180, 180)
        for _, part in pairs(character:GetDescendants()) do
            if part:IsA("BasePart") then part.CanCollide = true end
        end
    end
end)

infJumpBtn.MouseButton1Click:Connect(function()
    infJump = not infJump
    if infJump then
        infJumpBtn.Text = "🦘  Inf Jump:  ON"
        infJumpBtn.TextColor3 = Color3.fromRGB(100, 180, 255)
    else
        infJumpBtn.Text = "🦘  Inf Jump:  OFF"
        infJumpBtn.TextColor3 = Color3.fromRGB(180, 180, 180)
    end
end)

UIS.JumpRequest:Connect(function()
    if infJump and humanoid then
        humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
    end
end)

local guiOpen = true
logoBtn.MouseButton1Click:Connect(function()
    guiOpen = not guiOpen
    frame.Visible = guiOpen
end)

local dragging = false
local dragStart, startPos

frame.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.Touch or
       input.UserInputType == Enum.UserInputType.MouseButton1 then
        dragging = true
        dragStart = input.Position
        startPos = frame.Position
    end
end)

frame.InputEnded:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.Touch or
       input.UserInputType == Enum.UserInputType.MouseButton1 then
        dragging = false
    end
end)

UIS.InputChanged:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.Touch or
       input.UserInputType == Enum.UserInputType.MouseMove then
        if logoDragging then
            local delta = input.Position - logoDragStart
            logoBtn.Position = UDim2.new(
                logoStartPos.X.Scale, logoStartPos.X.Offset + delta.X,
                logoStartPos.Y.Scale, logoStartPos.Y.Offset + delta.Y
            )
        end
        if dragging then
            local delta = input.Position - dragStart
            frame.Position = UDim2.new(
                startPos.X.Scale, startPos.X.Offset + delta.X,
                startPos.Y.Scale, startPos.Y.Offset + delta.Y
            )
        end
    end
end)

RS.RenderStepped:Connect(function()
    if noclip then
        for _, part in pairs(character:GetDescendants()) do
            if part:IsA("BasePart") then part.CanCollide = false end
        end
    end

    if flying then
        bodyGyro.CFrame = camera.CFrame
        local moveVector = Vector3.zero
        local cf = camera.CFrame

        if UIS:IsKeyDown(Enum.KeyCode.W) then moveVector = moveVector + cf.LookVector end
        if UIS:IsKeyDown(Enum.KeyCode.S) then moveVector = moveVector - cf.LookVector end
        if UIS:IsKeyDown(Enum.KeyCode.A) then moveVector = moveVector - cf.RightVector end
        if UIS:IsKeyDown(Enum.KeyCode.D) then moveVector = moveVector + cf.RightVector end
        if UIS:IsKeyDown(Enum.KeyCode.E) or UIS:IsKeyDown(Enum.KeyCode.Space) then
            moveVector = moveVector + Vector3.new(0, 1, 0)
        end
        if UIS:IsKeyDown(Enum.KeyCode.Q) then
            moveVector = moveVector - Vector3.new(0, 1, 0)
        end

        local mobileMove = humanoid.MoveDirection
        if mobileMove.Magnitude > 0 then
            moveVector = moveVector + Vector3.new(mobileMove.X, 0, mobileMove.Z)
        end

        if goingUp then moveVector = moveVector + Vector3.new(0, 1, 0) end
        if goingDown then moveVector = moveVector - Vector3.new(0, 1, 0) end

        bodyVelocity.Velocity = moveVector.Magnitude > 0 and moveVector.Unit * flySpeed or Vector3.zero
    end
end)

player.CharacterAdded:Connect(function(newChar)
    character = newChar
    humanoid = newChar:WaitForChild("Humanoid")
    rootPart = newChar:WaitForChild("HumanoidRootPart")
    humanoid.WalkSpeed = currentSpeed
    flying = false
    noclip = false
    infJump = false
    flyBtn.Text = "✈  Fly:  OFF"
    flyBtn.TextColor3 = Color3.fromRGB(180, 180, 180)
    noclipBtn.Text = "👻  Noclip:  OFF"
    noclipBtn.TextColor3 = Color3.fromRGB(180, 180, 180)
    infJumpBtn.Text = "🦘  Inf Jump:  OFF"
    infJumpBtn.TextColor3 = Color3.fromRGB(180, 180, 180)
    upButton.Visible = false
    downButton.Visible = false
end)

Features & Information

There is all easy to access fly, walk speed, infinite jump, and Noclip.
#Fly#Speed#Noclip infinite jump

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts