Cheat HUB Universal script keyess
Just a baseplate Keyless
Cheat HUB Universal script keyess
👤 alexriderr 👁 17 views ❤️ 0 likes ⏱ Jul 29, 2026
This is an **open-source universal Roblox script hub** designed to work across a wide range of Roblox games. It includes a variety of local player features and utilities that can be used in most experiences, making it a flexible and convenient option for players looking for broad game compatibility.
✨ Features
Fly Infinite Yield Noclip Infinite Jump ESP
📋 Script Code
--[[
    Cheat Hub Login GUI
    Username: TeamSploit2026
    Password: Password123
]]

local Players = game:GetService("Players")
local Player = Players.LocalPlayer
local Mouse = Player:GetMouse()
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local Lighting = game:GetService("Lighting")
local HttpService = game:GetService("HttpService")
local TweenService = game:GetService("TweenService")

-- Variables for cheats
local flyEnabled = false
local infJumpEnabled = false
local noclipEnabled = false
local espEnabled = false
local infiniteYieldEnabled = false
local flySpeed = 50
local walkSpeedValue = 16
local jumpPowerValue = 50
local bodyVelocity = nil
local bodyGyro = nil
local originalJumpPower = nil
local originalWalkSpeed = nil
local character = nil
local humanoid = nil
local hubGui = nil
local noclipConnection = nil
local espConnections = {}
local espHighlights = {}
local flyConnection = nil
local jumpConnections = {}

-- Create ScreenGui for login
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "CheatHubLogin"
ScreenGui.Parent = Player:WaitForChild("PlayerGui")

-- Background Frame
local MainFrame = Instance.new("Frame")
MainFrame.Size = UDim2.new(0, 400, 0, 350)
MainFrame.Position = UDim2.new(0.5, -200, 0.5, -175)
MainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 45)
MainFrame.BackgroundTransparency = 0.1
MainFrame.BorderSizePixel = 2
MainFrame.BorderColor3 = Color3.fromRGB(0, 170, 255)
MainFrame.ClipsDescendants = true
MainFrame.Parent = ScreenGui

-- Make login frame draggable
local dragging = false
local dragStart = nil
local startPos = nil

local function UpdateInput(input)
    local delta = input.Position - dragStart
    MainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end

MainFrame.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 then
        dragging = true
        dragStart = input.Position
        startPos = MainFrame.Position
        input.Changed:Connect(function()
            if input.UserInputState == Enum.UserInputState.End then
                dragging = false
            end
        end)
    end
end)

MainFrame.InputChanged:Connect(function(input)
    if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then
        UpdateInput(input)
    end
end)

-- Title Label
local TitleLabel = Instance.new("TextLabel")
TitleLabel.Size = UDim2.new(1, 0, 0, 50)
TitleLabel.Position = UDim2.new(0, 0, 0, 10)
TitleLabel.BackgroundTransparency = 1
TitleLabel.Text = "Welcome to Cheat Hub"
TitleLabel.TextColor3 = Color3.fromRGB(0, 170, 255)
TitleLabel.TextScaled = true
TitleLabel.Font = Enum.Font.GothamBold
TitleLabel.Parent = MainFrame

-- Username Label
local UsernameLabel = Instance.new("TextLabel")
UsernameLabel.Size = UDim2.new(0, 80, 0, 30)
UsernameLabel.Position = UDim2.new(0, 30, 0, 80)
UsernameLabel.BackgroundTransparency = 1
UsernameLabel.Text = "Username:"
UsernameLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
UsernameLabel.TextSize = 16
UsernameLabel.Font = Enum.Font.Gotham
UsernameLabel.TextXAlignment = Enum.TextXAlignment.Left
UsernameLabel.Parent = MainFrame

-- Username Box
local UsernameBox = Instance.new("TextBox")
UsernameBox.Size = UDim2.new(0, 200, 0, 30)
UsernameBox.Position = UDim2.new(0, 120, 0, 80)
UsernameBox.BackgroundColor3 = Color3.fromRGB(60, 60, 75)
UsernameBox.BorderSizePixel = 1
UsernameBox.BorderColor3 = Color3.fromRGB(0, 170, 255)
UsernameBox.Text = ""
UsernameBox.TextColor3 = Color3.fromRGB(255, 255, 255)
UsernameBox.TextSize = 16
UsernameBox.Font = Enum.Font.Gotham
UsernameBox.PlaceholderText = "Enter username..."
UsernameBox.ClearTextOnFocus = false
UsernameBox.Parent = MainFrame

-- Password Label
local PasswordLabel = Instance.new("TextLabel")
PasswordLabel.Size = UDim2.new(0, 80, 0, 30)
PasswordLabel.Position = UDim2.new(0, 30, 0, 130)
PasswordLabel.BackgroundTransparency = 1
PasswordLabel.Text = "Password:"
PasswordLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
PasswordLabel.TextSize = 16
PasswordLabel.Font = Enum.Font.Gotham
PasswordLabel.TextXAlignment = Enum.TextXAlignment.Left
PasswordLabel.Parent = MainFrame

-- Password Box
local PasswordBox = Instance.new("TextBox")
PasswordBox.Size = UDim2.new(0, 200, 0, 30)
PasswordBox.Position = UDim2.new(0, 120, 0, 130)
PasswordBox.BackgroundColor3 = Color3.fromRGB(60, 60, 75)
PasswordBox.BorderSizePixel = 1
PasswordBox.BorderColor3 = Color3.fromRGB(0, 170, 255)
PasswordBox.Text = ""
PasswordBox.TextColor3 = Color3.fromRGB(255, 255, 255)
PasswordBox.TextSize = 16
PasswordBox.Font = Enum.Font.Gotham
PasswordBox.PlaceholderText = "Enter password..."
PasswordBox.ClearTextOnFocus = false
PasswordBox.Parent = MainFrame

-- Login Button
local LoginButton = Instance.new("TextButton")
LoginButton.Size = UDim2.new(0, 150, 0, 40)
LoginButton.Position = UDim2.new(0.5, -75, 0, 190)
LoginButton.BackgroundColor3 = Color3.fromRGB(0, 170, 255)
LoginButton.BorderSizePixel = 0
LoginButton.Text = "Login"
LoginButton.TextColor3 = Color3.fromRGB(255, 255, 255)
LoginButton.TextSize = 18
LoginButton.Font = Enum.Font.GothamBold
LoginButton.Parent = MainFrame

-- Guest Login Button
local GuestButton = Instance.new("TextButton")
GuestButton.Size = UDim2.new(0, 150, 0, 40)
GuestButton.Position = UDim2.new(0.5, -75, 0, 245)
GuestButton.BackgroundColor3 = Color3.fromRGB(60, 60, 75)
GuestButton.BorderSizePixel = 1
GuestButton.BorderColor3 = Color3.fromRGB(100, 100, 100)
GuestButton.Text = "Continue as Guest"
GuestButton.TextColor3 = Color3.fromRGB(200, 200, 200)
GuestButton.TextSize = 16
GuestButton.Font = Enum.Font.GothamBold
GuestButton.Parent = MainFrame

-- Status Label
local StatusLabel = Instance.new("TextLabel")
StatusLabel.Size = UDim2.new(1, 0, 0, 30)
StatusLabel.Position = UDim2.new(0, 0, 0, 300)
StatusLabel.BackgroundTransparency = 1
StatusLabel.Text = ""
StatusLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
StatusLabel.TextSize = 14
StatusLabel.Font = Enum.Font.Gotham
StatusLabel.Parent = MainFrame

-- Guest hover effects
GuestButton.MouseEnter:Connect(function()
    GuestButton.BackgroundColor3 = Color3.fromRGB(80, 80, 95)
    GuestButton.BorderColor3 = Color3.fromRGB(150, 150, 150)
    GuestButton.TextColor3 = Color3.fromRGB(255, 255, 255)
end)

GuestButton.MouseLeave:Connect(function()
    GuestButton.BackgroundColor3 = Color3.fromRGB(60, 60, 75)
    GuestButton.BorderColor3 = Color3.fromRGB(100, 100, 100)
    GuestButton.TextColor3 = Color3.fromRGB(200, 200, 200)
end)

-- Function to create a toggle switch
local function CreateToggleSwitch(parent, labelText, x, y, width, height, callback)
    local container = Instance.new("Frame")
    container.Size = UDim2.new(0, width, 0, height)
    container.Position = UDim2.new(0, x, 0, y)
    container.BackgroundTransparency = 1
    container.Parent = parent
    
    local label = Instance.new("TextLabel")
    label.Size = UDim2.new(0, width - 60, 0, height)
    label.Position = UDim2.new(0, 0, 0, 0)
    label.BackgroundTransparency = 1
    label.Text = labelText
    label.TextColor3 = Color3.fromRGB(255, 255, 255)
    label.TextSize = 16
    label.Font = Enum.Font.Gotham
    label.TextXAlignment = Enum.TextXAlignment.Left
    label.Parent = container
    
    local switchBg = Instance.new("Frame")
    switchBg.Size = UDim2.new(0, 50, 0, 25)
    switchBg.Position = UDim2.new(0, width - 55, 0, (height - 25) / 2)
    switchBg.BackgroundColor3 = Color3.fromRGB(60, 60, 75)
    switchBg.BorderSizePixel = 2
    switchBg.BorderColor3 = Color3.fromRGB(100, 100, 100)
    switchBg.Parent = container
    
    local switchKnob = Instance.new("Frame")
    switchKnob.Size = UDim2.new(0, 20, 0, 20)
    switchKnob.Position = UDim2.new(0, 3, 0, 2.5)
    switchKnob.BackgroundColor3 = Color3.fromRGB(200, 200, 200)
    switchKnob.BorderSizePixel = 0
    switchKnob.Parent = switchBg
    
    local isOn = false
    
    local function UpdateSwitch(state)
        isOn = state
        if isOn then
            switchBg.BackgroundColor3 = Color3.fromRGB(0, 170, 0)
            switchBg.BorderColor3 = Color3.fromRGB(0, 255, 0)
            switchKnob.Position = UDim2.new(0, 27, 0, 2.5)
            switchKnob.BackgroundColor3 = Color3.fromRGB(0, 255, 0)
        else
            switchBg.BackgroundColor3 = Color3.fromRGB(60, 60, 75)
            switchBg.BorderColor3 = Color3.fromRGB(100, 100, 100)
            switchKnob.Position = UDim2.new(0, 3, 0, 2.5)
            switchKnob.BackgroundColor3 = Color3.fromRGB(200, 200, 200)
        end
        if callback then
            callback(isOn)
        end
    end
    
    switchBg.InputBegan:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 then
            UpdateSwitch(not isOn)
        end
    end)
    
    return {
        SetState = UpdateSwitch,
        GetState = function() return isOn end,
        Container = container,
        SwitchBg = switchBg,
        SwitchKnob = switchKnob
    }
end

-- Function to create an input box
local function CreateInputBox(parent, labelText, x, y, width, height, defaultValue, callback)
    local container = Instance.new("Frame")
    container.Size = UDim2.new(0, width, 0, height)
    container.Position = UDim2.new(0, x, 0, y)
    container.BackgroundTransparency = 1
    container.Parent = parent
    
    local label = Instance.new("TextLabel")
    label.Size = UDim2.new(0, width - 120, 0, height)
    label.Position = UDim2.new(0, 0, 0, 0)
    label.BackgroundTransparency = 1
    label.Text = labelText
    label.TextColor3 = Color3.fromRGB(255, 255, 255)
    label.TextSize = 16
    label.Font = Enum.Font.Gotham
    label.TextXAlignment = Enum.TextXAlignment.Left
    label.Parent = container
    
    local input = Instance.new("TextBox")
    input.Size = UDim2.new(0, 100, 0, height - 5)
    input.Position = UDim2.new(0, width - 105, 0, 2.5)
    input.BackgroundColor3 = Color3.fromRGB(60, 60, 75)
    input.BorderSizePixel = 1
    input.BorderColor3 = Color3.fromRGB(0, 170, 255)
    input.Text = tostring(defaultValue)
    input.TextColor3 = Color3.fromRGB(255, 255, 255)
    input.TextSize = 16
    input.Font = Enum.Font.Gotham
    input.Parent = container
    
    input.FocusLost:Connect(function(enterPressed)
        if enterPressed then
            local value = tonumber(input.Text)
            if value then
                callback(value)
            else
                input.Text = tostring(defaultValue)
            end
        end
    end)
    
    return {
        SetValue = function(value) input.Text = tostring(value) end,
        GetValue = function() return tonumber(input.Text) or 0 end,
        Input = input
    }
end

-- Function to toggle fly (gentler and cooler)
local function ToggleFly()
    flyEnabled = not flyEnabled
    character = Player.Character
    if not character then 
        warn("No character found!")
        return 
    end
    
    if flyEnabled then
        -- Get humanoid
        humanoid = character:FindFirstChildOfClass("Humanoid")
        local hrp = character:FindFirstChild("HumanoidRootPart")
        if not hrp then return end
        
        -- Create BodyVelocity for smooth movement
        bodyVelocity = Instance.new("BodyVelocity")
        bodyVelocity.MaxForce = Vector3.new(4000, 4000, 4000)
        bodyVelocity.Velocity = Vector3.new(0, 0, 0)
        bodyVelocity.P = 2000
        bodyVelocity.Parent = hrp
        
        -- Create BodyGyro for stability and smooth rotation
        bodyGyro = Instance.new("BodyGyro")
        bodyGyro.MaxTorque = Vector3.new(4000, 4000, 4000)
        bodyGyro.CFrame = hrp.CFrame
        bodyGyro.P = 5000
        bodyGyro.D = 500
        bodyGyro.Parent = hrp
        
        -- Disable gravity on humanoid
        if humanoid then
            humanoid.PlatformStand = true
            humanoid.AutoRotate = false
        end
        
        -- Start fly loop with smoother movement
        if flyConnection then
            flyConnection:Disconnect()
            flyConnection = nil
        end
        
        flyConnection = RunService.Heartbeat:Connect(function(deltaTime)
            if not flyEnabled or not character or not character.Parent then
                return
            end
            
            local hrp = character:FindFirstChild("HumanoidRootPart")
            if not hrp then return end
            
            local moveDirection = Vector3.new(0, 0, 0)
            local camera = workspace.CurrentCamera
            if not camera then return end
            local cameraCFrame = camera.CFrame
            
            -- Get movement keys with camera-relative movement
            if UserInputService:IsKeyDown(Enum.KeyCode.W) then
                moveDirection = moveDirection + (cameraCFrame.LookVector * Vector3.new(1, 0, 1))
            end
            if UserInputService:IsKeyDown(Enum.KeyCode.S) then
                moveDirection = moveDirection - (cameraCFrame.LookVector * Vector3.new(1, 0, 1))
            end
            if UserInputService:IsKeyDown(Enum.KeyCode.A) then
                moveDirection = moveDirection - cameraCFrame.RightVector
            end
            if UserInputService:IsKeyDown(Enum.KeyCode.D) then
                moveDirection = moveDirection + cameraCFrame.RightVector
            end
            if UserInputService:IsKeyDown(Enum.KeyCode.Space) then
                moveDirection = moveDirection + Vector3.new(0, 1, 0)
            end
            if UserInputService:IsKeyDown(Enum.KeyCode.LeftShift) then
                moveDirection = moveDirection - Vector3.new(0, 1, 0)
            end
            
            -- Normalize and apply speed with smooth acceleration
            if moveDirection.Magnitude > 0 then
                moveDirection = moveDirection.Unit * flySpeed
                -- Smoothly interpolate velocity
                if bodyVelocity then
                    local currentVel = bodyVelocity.Velocity
                    local targetVel = moveDirection
                    bodyVelocity.Velocity = currentVel:Lerp(targetVel, deltaTime * 10)
                end
            else
                -- Smoothly slow down when no input
                if bodyVelocity then
                    bodyVelocity.Velocity = bodyVelocity.Velocity * (1 - deltaTime * 5)
                end
            end
            
            -- Update Gyro with smooth rotation
            if bodyGyro and bodyGyro.Parent then
                local lookDirection = cameraCFrame.LookVector * Vector3.new(1, 0, 1)
                if lookDirection.Magnitude > 0.1 then
                    local targetCFrame = CFrame.lookAt(hrp.Position, hrp.Position + lookDirection)
                    bodyGyro.CFrame = bodyGyro.CFrame:Lerp(targetCFrame, deltaTime * 5)
                end
            end
        end)
        
    else
        -- Disable fly
        if flyConnection then
            flyConnection:Disconnect()
            flyConnection = nil
        end
        if bodyVelocity then
            bodyVelocity:Destroy()
            bodyVelocity = nil
        end
        if bodyGyro then
            bodyGyro:Destroy()
            bodyGyro = nil
        end
        if humanoid then
            humanoid.PlatformStand = false
            humanoid.AutoRotate = true
        end
    end
end

-- Function to toggle infinite jump
local function ToggleInfJump()
    infJumpEnabled = not infJumpEnabled
    character = Player.Character
    if not character then 
        warn("No character found!")
        return 
    end
    
    humanoid = character:FindFirstChildOfClass("Humanoid")
    if not humanoid then return end
    
    if infJumpEnabled then
        originalJumpPower = humanoid.JumpPower
        humanoid.JumpPower = jumpPowerValue
        
        -- Connect jump listener
        local jumpConnection
        jumpConnection = humanoid.StateChanged:Connect(function(oldState, newState)
            if newState == Enum.HumanoidStateType.Landed then
                task.wait(0.01)
                if humanoid and humanoid.Parent then
                    humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
                end
            end
        end)
        
        table.insert(jumpConnections, jumpConnection)
        
    else
        if humanoid then
            if originalJumpPower then
                humanoid.JumpPower = originalJumpPower
                originalJumpPower = nil
            end
            for _, conn in pairs(jumpConnections) do
                conn:Disconnect()
            end
            jumpConnections = {}
        end
    end
end

-- Function to toggle noclip
local function ToggleNoclip()
    noclipEnabled = not noclipEnabled
    character = Player.Character
    if not character then
        warn("No character found!")
        return
    end
    
    if noclipEnabled then
        if noclipConnection then
            noclipConnection:Disconnect()
            noclipConnection = nil
        end
        noclipConnection = RunService.Stepped:Connect(function()
            if not noclipEnabled or not character or not character.Parent then
                return
            end
            for _, part in pairs(character:GetDescendants()) do
                if part:IsA("BasePart") then
                    part.CanCollide = false
                end
            end
        end)
    else
        if noclipConnection then
            noclipConnection:Disconnect()
            noclipConnection = nil
        end
        if character then
            for _, part in pairs(character:GetDescendants()) do
                if part:IsA("BasePart") then
                    part.CanCollide = true
                end
            end
        end
    end
end

-- Function to toggle ESP
local function ToggleESP()
    espEnabled = not espEnabled
    
    if espEnabled then
        -- Create highlights for all players
        for _, otherPlayer in pairs(Players:GetPlayers()) do
            if otherPlayer ~= Player and otherPlayer.Character then
                local highlight = Instance.new("Highlight")
                highlight.Name = "ESP_Highlight"
                highlight.FillColor = Color3.fromRGB(0, 255, 0)
                highlight.FillTransparency = 0.3
                highlight.OutlineColor = Color3.fromRGB(0, 255, 0)
                highlight.OutlineTransparency = 0
                highlight.Adornee = otherPlayer.Character
                highlight.Parent = otherPlayer.Character
                table.insert(espHighlights, highlight)
            end
        end
        
        -- Connect to player added event
        local playerAddedConn = Players.PlayerAdded:Connect(function(newPlayer)
            if newPlayer ~= Player then
                newPlayer.CharacterAdded:Connect(function(char)
                    local highlight = Instance.new("Highlight")
                    highlight.Name = "ESP_Highlight"
                    highlight.FillColor = Color3.fromRGB(0, 255, 0)
                    highlight.FillTransparency = 0.3
                    highlight.OutlineColor = Color3.fromRGB(0, 255, 0)
                    highlight.OutlineTransparency = 0
                    highlight.Adornee = char
                    highlight.Parent = char
                    table.insert(espHighlights, highlight)
                end)
            end
        end)
        table.insert(espConnections, playerAddedConn)
        
    else
        -- Remove all ESP highlights
        for _, highlight in pairs(espHighlights) do
            if highlight and highlight.Parent then
                highlight:Destroy()
            end
        end
        espHighlights = {}
        
        for _, conn in pairs(espConnections) do
            conn:Disconnect()
        end
        espConnections = {}
    end
end

-- Function to toggle Infinite Yield
local function ToggleInfiniteYield()
    infiniteYieldEnabled = not infiniteYieldEnabled
    
    if infiniteYieldEnabled then
        -- Load Infinite Yield
        local success, result = pcall(function()
            loadstring(game:HttpGet("https://raw.githubusercontent.com/EdgeIY/infiniteyield/master/source", true))()
        end)
        
        if success then
            print("Infinite Yield loaded successfully!")
        else
            warn("Failed to load Infinite Yield: " .. tostring(result))
        end
    else
        warn("Infinite Yield cannot be unloaded. It will remain active until you rejoin.")
    end
end

-- Function to update walk speed
local function UpdateWalkSpeed(value)
    walkSpeedValue = value
    character = Player.Character
    if character then
        humanoid = character:FindFirstChildOfClass("Humanoid")
        if humanoid then
            humanoid.WalkSpeed = walkSpeedValue
        end
    end
end

-- Function to update jump power
local function UpdateJumpPower(value)
    jumpPowerValue = value
    character = Player.Character
    if character then
        humanoid = character:FindFirstChildOfClass("Humanoid")
        if humanoid then
            humanoid.JumpPower = jumpPowerValue
        end
    end
end

-- Function to handle logout
local function HandleLogout()
    -- Disable all cheats
    if flyEnabled then
        ToggleFly()
    end
    if infJumpEnabled then
        ToggleInfJump()
    end
    if noclipEnabled then
        ToggleNoclip()
    end
    if espEnabled then
        ToggleESP()
    end
    
    -- Create logout notification
    local notificationGui = Instance.new("ScreenGui")
    notificationGui.Name = "LogoutNotification"
    notificationGui.Parent = Player:WaitForChild("PlayerGui")
    
    local notificationFrame = Instance.new("Frame")
    notificationFrame.Size = UDim2.new(0, 500, 0, 200)
    notificationFrame.Position = UDim2.new(0.5, -250, 0.5, -100)
    notificationFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 45)
    notificationFrame.BackgroundTransparency = 0.1
    notificationFrame.BorderSizePixel = 2
    notificationFrame.BorderColor3 = Color3.fromRGB(0, 255, 0)
    notificationFrame.Parent = notificationGui
    
    -- Make notification draggable
    local notifDragging = false
    local notifDragStart = nil
    local notifStartPos = nil
    
    notificationFrame.InputBegan:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 then
            notifDragging = true
            notifDragStart = input.Position
            notifStartPos = notificationFrame.Position
            input.Changed:Connect(function()
                if input.UserInputState == Enum.UserInputState.End then
                    notifDragging = false
                end
            end)
        end
    end)
    
    notificationFrame.InputChanged:Connect(function(input)
        if notifDragging and input.UserInputType == Enum.UserInputType.MouseMovement then
            local delta = input.Position - notifDragStart
            notificationFrame.Position = UDim2.new(notifStartPos.X.Scale, notifStartPos.X.Offset + delta.X, notifStartPos.Y.Scale, notifStartPos.Y.Offset + delta.Y)
        end
    end)
    
    -- Thank you message
    local thankYouText = Instance.new("TextLabel")
    thankYouText.Size = UDim2.new(1, 0, 1, 0)
    thankYouText.Position = UDim2.new(0, 0, 0, 0)
    thankYouText.BackgroundTransparency = 1
    thankYouText.Text = "👋 Thanks for using TeamSploit2026 for exploiting!\n\nWe hope you had a great experience!\n\nSee you next time!"
    thankYouText.TextColor3 = Color3.fromRGB(0, 255, 0)
    thankYouText.TextScaled = true
    thankYouText.Font = Enum.Font.GothamBold
    thankYouText.TextYAlignment = Enum.TextYAlignment.Center
    thankYouText.LineHeight = 1.5
    thankYouText.Parent = notificationFrame
    
    -- Close button for notification
    local closeNotifButton = Instance.new("TextButton")
    closeNotifButton.Size = UDim2.new(0, 150, 0, 40)
    closeNotifButton.Position = UDim2.new(0.5, -75, 0, 150)
    closeNotifButton.BackgroundColor3 = Color3.fromRGB(0, 170, 255)
    closeNotifButton.BorderSizePixel = 0
    closeNotifButton.Text = "Close"
    closeNotifButton.TextColor3 = Color3.fromRGB(255, 255, 255)
    closeNotifButton.TextSize = 18
    closeNotifButton.Font = Enum.Font.GothamBold
    closeNotifButton.Parent = notificationFrame
    
    closeNotifButton.MouseButton1Click:Connect(function()
        notificationGui:Destroy()
        if hubGui then
            hubGui:Destroy()
            hubGui = nil
        end
    end)
    
    -- Auto-close after 10 seconds
    task.wait(10)
    if notificationGui then
        notificationGui:Destroy()
        if hubGui then
            hubGui:Destroy()
            hubGui = nil
        end
    end
end

-- Function to create the main Cheat Hub GUI
local function CreateCheatHub()
    -- Create new ScreenGui for hub
    hubGui = Instance.new("ScreenGui")
    hubGui.Name = "CheatHubMain"
    hubGui.Parent = Player:WaitForChild("PlayerGui")
    
    -- Main Hub Frame
    local HubFrame = Instance.new("Frame")
    HubFrame.Name = "HubFrame"
    HubFrame.Size = UDim2.new(0, 500, 0, 650)
    HubFrame.Position = UDim2.new(0.5, -250, 0.5, -325)
    HubFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 45)
    HubFrame.BackgroundTransparency = 0.1
    HubFrame.BorderSizePixel = 2
    HubFrame.BorderColor3 = Color3.fromRGB(0, 255, 0)
    HubFrame.ClipsDescendants = true
    HubFrame.Parent = hubGui
    
    -- Make hub frame draggable
    local hubDragging = false
    local hubDragStart = nil
    local hubStartPos = nil
    
    local function UpdateHubInput(input)
        local delta = input.Position - hubDragStart
        HubFrame.Position = UDim2.new(hubStartPos.X.Scale, hubStartPos.X.Offset + delta.X, hubStartPos.Y.Scale, hubStartPos.Y.Offset + delta.Y)
    end
    
    HubFrame.InputBegan:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 then
            hubDragging = true
            hubDragStart = input.Position
            hubStartPos = HubFrame.Position
            input.Changed:Connect(function()
                if input.UserInputState == Enum.UserInputState.End then
                    hubDragging = false
                end
            end)
        end
    end)
    
    HubFrame.InputChanged:Connect(function(input)
        if hubDragging and input.UserInputType == Enum.UserInputType.MouseMovement then
            UpdateHubInput(input)
        end
    end)
    
    -- Tab Buttons
    local TabFrame = Instance.new("Frame")
    TabFrame.Size = UDim2.new(1, 0, 0, 40)
    TabFrame.Position = UDim2.new(0, 0, 0, 85)
    TabFrame.BackgroundColor3 = Color3.fromRGB(45, 45, 60)
    TabFrame.BorderSizePixel = 0
    TabFrame.Parent = HubFrame
    
    local function CreateTabButton(text, x)
        local button = Instance.new("TextButton")
        button.Size = UDim2.new(0, 100, 0, 40)
        button.Position = UDim2.new(0, x, 0, 0)
        button.BackgroundColor3 = Color3.fromRGB(60, 60, 75)
        button.BorderSizePixel = 1
        button.BorderColor3 = Color3.fromRGB(100, 100, 100)
        button.Text = text
        button.TextColor3 = Color3.fromRGB(255, 255, 255)
        button.TextSize = 16
        button.Font = Enum.Font.GothamBold
        button.Parent = TabFrame
        return button
    end
    
    -- Content Frame (where tabs will show their content)
    local ContentFrame = Instance.new("Frame")
    ContentFrame.Name = "ContentFrame"
    ContentFrame.Size = UDim2.new(1, -40, 1, -170)
    ContentFrame.Position = UDim2.new(0, 20, 0, 135)
    ContentFrame.BackgroundColor3 = Color3.fromRGB(35, 35, 50)
    ContentFrame.BorderSizePixel = 1
    ContentFrame.BorderColor3 = Color3.fromRGB(50, 50, 70)
    ContentFrame.Parent = HubFrame
    
    -- Create tabs
    local mainTabButton = CreateTabButton("Main", 10)
    local creditsTabButton = CreateTabButton("Credits", 120)
    local historyTabButton = CreateTabButton("History", 230)
    local logoutTabButton = CreateTabButton("Log Out", 340)
    
    -- Create pages for tabs
    local MainPage = Instance.new("Frame")
    MainPage.Size = UDim2.new(1, 0, 1, 0)
    MainPage.BackgroundTransparency = 1
    MainPage.Parent = ContentFrame
    MainPage.Visible = true
    
    local CreditsPage = Instance.new("Frame")
    CreditsPage.Size = UDim2.new(1, 0, 1, 0)
    CreditsPage.BackgroundTransparency = 1
    CreditsPage.Parent = ContentFrame
    CreditsPage.Visible = false
    
    local HistoryPage = Instance.new("Frame")
    HistoryPage.Size = UDim2.new(1, 0, 1, 0)
    HistoryPage.BackgroundTransparency = 1
    HistoryPage.Parent = ContentFrame
    HistoryPage.Visible = false
    
    local LogoutPage = Instance.new("Frame")
    LogoutPage.Size = UDim2.new(1, 0, 1, 0)
    LogoutPage.BackgroundTransparency = 1
    LogoutPage.Parent = ContentFrame
    LogoutPage.Visible = false
    
    -- Main Page Content
    -- User Info Section
    local UserInfoFrame = Instance.new("Frame")
    UserInfoFrame.Size = UDim2.new(1, 0, 0, 60)
    UserInfoFrame.Position = UDim2.new(0, 0, 0, 0)
    UserInfoFrame.BackgroundColor3 = Color3.fromRGB(45, 45, 60)
    UserInfoFrame.BorderSizePixel = 1
    UserInfoFrame.BorderColor3 = Color3.fromRGB(0, 170, 255)
    UserInfoFrame.Parent = MainPage
    
    -- Profile Picture
    local profilePicture = Instance.new("ImageLabel")
    profilePicture.Size = UDim2.new(0, 50, 0, 50)
    profilePicture.Position = UDim2.new(0, 5, 0, 5)
    profilePicture.BackgroundColor3 = Color3.fromRGB(60, 60, 75)
    profilePicture.BorderSizePixel = 1
    profilePicture.BorderColor3 = Color3.fromRGB(255, 255, 255)
    profilePicture.Parent = UserInfoFrame
    
    -- Load profile picture
    local userId = Player.UserId
    local thumbnailUrl = "https://www.roblox.com/headshot-thumbnail/image?userId=" .. userId .. "&width=420&height=420&format=png"
    profilePicture.Image = thumbnailUrl
    
    -- Username Display
    local usernameDisplay = Instance.new("TextLabel")
    usernameDisplay.Size = UDim2.new(0, 200, 0, 30)
    usernameDisplay.Position = UDim2.new(0, 65, 0, 5)
    usernameDisplay.BackgroundTransparency = 1
    usernameDisplay.Text = Player.Name
    usernameDisplay.TextColor3 = Color3.fromRGB(0, 255, 0)
    usernameDisplay.TextSize = 20
    usernameDisplay.Font = Enum.Font.GothamBold
    usernameDisplay.TextXAlignment = Enum.TextXAlignment.Left
    usernameDisplay.Parent = UserInfoFrame
    
    -- Display Name
    local displayNameLabel = Instance.new("TextLabel")
    displayNameLabel.Size = UDim2.new(0, 200, 0, 20)
    displayNameLabel.Position = UDim2.new(0, 65, 0, 35)
    displayNameLabel.BackgroundTransparency = 1
    displayNameLabel.Text = "Display Name: " .. Player.DisplayName
    displayNameLabel.TextColor3 = Color3.fromRGB(150, 150, 150)
    displayNameLabel.TextSize = 14
    displayNameLabel.Font = Enum.Font.Gotham
    displayNameLabel.TextXAlignment = Enum.TextXAlignment.Left
    displayNameLabel.Parent = UserInfoFrame
    
    -- Create toggle switches on Main Page
    local flySwitch = CreateToggleSwitch(MainPage, "Fly", 10, 75, 400, 35, function(state)
        if state then
            if not flyEnabled then ToggleFly() end
        else
            if flyEnabled then ToggleFly() end
        end
    end)
    
    local jumpSwitch = CreateToggleSwitch(MainPage, "Infinite Jump", 10, 125, 400, 35, function(state)
        if state then
            if not infJumpEnabled then ToggleInfJump() end
        else
            if infJumpEnabled then ToggleInfJump() end
        end
    end)
    
    local noclipSwitch = CreateToggleSwitch(MainPage, "Noclip", 10, 175, 400, 35, function(state)
        if state then
            if not noclipEnabled then ToggleNoclip() end
        else
            if noclipEnabled then ToggleNoclip() end
        end
    end)
    
    local espSwitch = CreateToggleSwitch(MainPage, "ESP (Green)", 10, 225, 400, 35, function(state)
        if state then
            if not espEnabled then ToggleESP() end
        else
            if espEnabled then ToggleESP() end
        end
    end)
    
    local yieldSwitch = CreateToggleSwitch(MainPage, "Infinite Yield", 10, 275, 400, 35, function(state)
        if state then
            if not infiniteYieldEnabled then ToggleInfiniteYield() end
        else
            if infiniteYieldEnabled then ToggleInfiniteYield() end
        end
    end)
    
    -- Create input boxes on Main Page
    local walkSpeedBox = CreateInputBox(MainPage, "Walk Speed", 10, 330, 400, 35, 16, function(value)
        UpdateWalkSpeed(value)
    end)
    
    local jumpPowerBox = CreateInputBox(MainPage, "Jump Power", 10, 380, 400, 35, 50, function(value)
        UpdateJumpPower(value)
        if infJumpEnabled then
            character = Player.Character
            if character then
                humanoid = character:FindFirstChildOfClass("Humanoid")
                if humanoid then
                    humanoid.JumpPower = value
                end
            end
        end
    end)
    
    -- Keybind hints on Main Page
    local KeyHint = Instance.new("TextLabel")
    KeyHint.Name = "KeyHint"
    KeyHint.Size = UDim2.new(1, 0, 0, 80)
    KeyHint.Position = UDim2.new(0, 0, 0, 430)
    KeyHint.BackgroundTransparency = 1
    KeyHint.Text = "Keybinds:\nF - Fly | J - Infinite Jump | N - Noclip\nE - ESP | Y - Infinite Yield"
    KeyHint.TextColor3 = Color3.fromRGB(150, 150, 150)
    KeyHint.TextSize = 14
    KeyHint.Font = Enum.Font.Gotham
    KeyHint.LineHeight = 1.5
    KeyHint.Parent = MainPage
    
    -- Credits Page Content
    local CreditsTitle = Instance.new("TextLabel")
    CreditsTitle.Size = UDim2.new(1, 0, 0, 40)
    CreditsTitle.Position = UDim2.new(0, 0, 0, 10)
    CreditsTitle.BackgroundTransparency = 1
    CreditsTitle.Text = "📋 Credits & Terms"
    CreditsTitle.TextColor3 = Color3.fromRGB(0, 255, 0)
    CreditsTitle.TextSize = 24
    CreditsTitle.Font = Enum.Font.GothamBold
    CreditsTitle.Parent = CreditsPage
    
    -- Credits Text Box (Scrolling)
    local CreditsTextScrolling = Instance.new("ScrollingFrame")
    CreditsTextScrolling.Size = UDim2.new(1, -20, 1, -70)
    CreditsTextScrolling.Position = UDim2.new(0, 10, 0, 60)
    CreditsTextScrolling.BackgroundColor3 = Color3.fromRGB(25, 25, 40)
    CreditsTextScrolling.BorderSizePixel = 1
    CreditsTextScrolling.BorderColor3 = Color3.fromRGB(50, 50, 70)
    CreditsTextScrolling.ScrollBarThickness = 8
    CreditsTextScrolling.CanvasSize = UDim2.new(0, 0, 0, 500)
    CreditsTextScrolling.Parent = CreditsPage
    
    local CreditsText = Instance.new("TextLabel")
    CreditsText.Size = UDim2.new(1, -20, 0, 480)
    CreditsText.Position = UDim2.new(0, 10, 0, 0)
    CreditsText.BackgroundTransparency = 1
    CreditsText.Text = [[
⚠️ PRIVATE USE ONLY ⚠️

This script is for authorized users only.

If you are seeing this without proper authorization, 
you are in violation of the Terms of Service.

Unauthorized access is strictly prohibited and will 
result in:

• Immediate blacklisting of your Roblox account
• Permanent ban from using this and future scripts
• Reporting to Roblox moderation team
• Legal action may be taken against violators

This script is protected under copyright law and 
is the exclusive property of TeamSploit.

By using this script, you agree to:
• Not share or distribute this script
• Not decompile or reverse engineer
• Use only for personal entertainment
• Not use in competitive environments

For support or authorization inquiries, 
please contact TeamSploit officials.

ALL RIGHTS RESERVED © 2024 - 2026

━━━━━━━━━━━━━━━━━━━━━━━

DEVELOPER NOTES:
This script was created by TeamSploit 
for educational and entertainment purposes.

Version: 2.0.0
Last Updated: July 2026

━━━━━━━━━━━━━━━━━━━━━━━

🚫 BLACKLISTED USERS 🚫

Accounts that have been caught sharing or 
leaking this script will be permanently 
blacklisted from all TeamSploit products.

Current Blacklist Status: 
You are NOT blacklisted (Valid User)

Remember: Sharing is NOT caring when it comes 
to private scripts. Protect your access!

━━━━━━━━━━━━━━━━━━━━━━━

Thank you for using Cheat Hub responsibly.
    ]]
    CreditsText.TextColor3 = Color3.fromRGB(200, 200, 200)
    CreditsText.TextSize = 15
    CreditsText.Font = Enum.Font.Gotham
    CreditsText.TextXAlignment = Enum.TextXAlignment.Left
    CreditsText.TextYAlignment = Enum.TextYAlignment.Top
    CreditsText.LineHeight = 1.5
    CreditsText.Parent = CreditsTextScrolling
    
    -- History Page Content
    local HistoryTitle = Instance.new("TextLabel")
    HistoryTitle.Size = UDim2.new(1, 0, 0, 40)
    HistoryTitle.Position = UDim2.new(0, 0, 0, 10)
    HistoryTitle.BackgroundTransparency = 1
    HistoryTitle.Text = "📜 TeamSploit History"
    HistoryTitle.TextColor3 = Color3.fromRGB(255, 200, 0)
    HistoryTitle.TextSize = 24
    HistoryTitle.Font = Enum.Font.GothamBold
    HistoryTitle.Parent = HistoryPage
    
    -- History Text Box (Scrolling)
    local HistoryTextScrolling = Instance.new("ScrollingFrame")
    HistoryTextScrolling.Size = UDim2.new(1, -20, 1, -70)
    HistoryTextScrolling.Position = UDim2.new(0, 10, 0, 60)
    HistoryTextScrolling.BackgroundColor3 = Color3.fromRGB(25, 25, 40)
    HistoryTextScrolling.BorderSizePixel = 1
    HistoryTextScrolling.BorderColor3 = Color3.fromRGB(50, 50, 70)
    HistoryTextScrolling.ScrollBarThickness = 8
    HistoryTextScrolling.CanvasSize = UDim2.new(0, 0, 0, 650)
    HistoryTextScrolling.Parent = HistoryPage
    
    local HistoryText = Instance.new("TextLabel")
    HistoryText.Size = UDim2.new(1, -20, 0, 630)
    HistoryText.Position = UDim2.new(0, 10, 0, 0)
    HistoryText.BackgroundTransparency = 1
    HistoryText.Text = [[
🏆 TEAMSPLOIT - THE LEGACY 🏆

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

🌟 ABOUT US

TeamSploit was founded in 2020 by a group of 
passionate developers who wanted to revolutionize 
the Roblox exploiting scene. What started as a 
small project quickly grew into one of the most 
trusted names in the community.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

🚀 OUR MISSION

To provide high-quality, reliable, and safe 
scripts for the Roblox community. We believe in 
transparency, quality, and user satisfaction.

Our mission is to:
• Create working scripts that actually function
• Maintain trust through consistent updates
• Provide top-tier customer support
• Push the boundaries of what's possible

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

🏅 ACHIEVEMENTS

• Over 50,000+ satisfied users
• 98.7% script success rate
• Featured in multiple Roblox communities
• Awarded "Most Trusted Group" 2023 & 2024
• 100% legit scripts with proof of functionality

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

💪 WHAT MAKES US DIFFERENT

Unlike other groups that distribute broken or 
malicious scripts, TeamSploit is committed to:

✅ Working scripts - Tested before release
✅ Quick updates - Usually within 24 hours
✅ Clean code - No viruses or backdoors
✅ Professional support - 24/7 assistance
✅ Regular improvements - Always evolving

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

👑 TRUSTED DEVELOPERS

Our team consists of experienced developers who 
have been in the scene for years:

• SploitMaster - Lead Developer (5+ years)
• CodeNinja - Scripting Expert (4+ years)  
• HexEditor - Security Specialist (3+ years)
• ByteWizard - UI/UX Designer (4+ years)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

📈 OUR GROWTH

2020 - TeamSploit founded
2021 - First successful script release
2022 - Reached 10,000 users
2023 - Expanded to 6 developers
2024 - Launched premium services
2025 - Community recognition & awards
2026 - Continued excellence and expansion

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

🎯 OUR PROMISE

We promise to always:
1. Deliver working, high-quality scripts
2. Maintain user trust and safety
3. Provide fast and effective support
4. Keep improving our products
5. Stay transparent with our community

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

💎 TESTIMONIALS

"TeamSploit is the only group I trust for 
scripts. They always work and the support 
is amazing!" - GamingPro_2024

"Never had an issue with TeamSploit. 
100% reliable and professional." - RobloxKing

"The best script group on Roblox. Period." 
- ScriptGuru

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

🔐 SAFETY & SECURITY

Your safety is our priority:
• All scripts scanned for viruses
• No data collection or logging
• Secure authentication system
• Regular security audits
• Community-driven safety measures

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

🌟 FUTURE PLANS

We're constantly working on:
• New script releases
• Enhanced features
• Better user experience
• Community events
• Expanded support

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

🤝 JOIN THE COMMUNITY

Become part of the TeamSploit family:
• Active community discord
• Regular updates and news
• Exclusive script access
• Support from experienced users
• Contribution opportunities

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Thank you for choosing TeamSploit!

Remember: We make working scripts because 
we care about quality. That's why we're the 
most trusted exploit group in Roblox!

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

#TeamSploit #WorkingScripts #TrustedGroup
    ]]
    HistoryText.TextColor3 = Color3.fromRGB(200, 200, 200)
    HistoryText.TextSize = 15
    HistoryText.Font = Enum.Font.Gotham
    HistoryText.TextXAlignment = Enum.TextXAlignment.Left
    HistoryText.TextYAlignment = Enum.TextYAlignment.Top
    HistoryText.LineHeight = 1.5
    HistoryText.Parent = HistoryTextScrolling
    
    -- Logout Page Content
    local LogoutTitle = Instance.new("TextLabel")
    LogoutTitle.Size = UDim2.new(1, 0, 0, 40)
    LogoutTitle.Position = UDim2.new(0, 0, 0, 20)
    LogoutTitle.BackgroundTransparency = 1
    LogoutTitle.Text = "🚪 Log Out"
    LogoutTitle.TextColor3 = Color3.fromRGB(255, 50, 50)
    LogoutTitle.TextSize = 28
    LogoutTitle.Font = Enum.Font.GothamBold
    LogoutTitle.Parent = LogoutPage
    
    local LogoutDescription = Instance.new("TextLabel")
    LogoutDescription.Size = UDim2.new(1, 0, 0, 60)
    LogoutDescription.Position = UDim2.new(0, 0, 0, 70)
    LogoutDescription.BackgroundTransparency = 1
    LogoutDescription.Text = "Are you sure you want to log out?\nAll cheats will be disabled."
    LogoutDescription.TextColor3 = Color3.fromRGB(200, 200, 200)
    LogoutDescription.TextSize = 16
    LogoutDescription.Font = Enum.Font.Gotham
    LogoutDescription.TextYAlignment = Enum.TextYAlignment.Center
    LogoutDescription.LineHeight = 1.5
    LogoutDescription.Parent = LogoutPage
    
    -- Logout Button
    local LogoutButton = Instance.new("TextButton")
    LogoutButton.Size = UDim2.new(0, 200, 0, 60)
    LogoutButton.Position = UDim2.new(0.5, -100, 0, 160)
    LogoutButton.BackgroundColor3 = Color3.fromRGB(200, 50, 50)
    LogoutButton.BorderSizePixel = 0
    LogoutButton.Text = "🔴 Log Out"
    LogoutButton.TextColor3 = Color3.fromRGB(255, 255, 255)
    LogoutButton.TextSize = 22
    LogoutButton.Font = Enum.Font.GothamBold
    LogoutButton.Parent = LogoutPage
    
    LogoutButton.MouseButton1Click:Connect(function()
        HandleLogout()
    end)
    
    -- Hover effects for logout button
    LogoutButton.MouseEnter:Connect(function()
        LogoutButton.BackgroundColor3 = Color3.fromRGB(255, 50, 50)
        LogoutButton:TweenSize(UDim2.new(0, 210, 0, 65), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.2, true)
    end)
    
    LogoutButton.MouseLeave:Connect(function()
        LogoutButton.BackgroundColor3 = Color3.fromRGB(200, 50, 50)
        LogoutButton:TweenSize(UDim2.new(0, 200, 0, 60), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.2, true)
    end)
    
    -- Cancel Button
    local CancelButton = Instance.new("TextButton")
    CancelButton.Size = UDim2.new(0, 150, 0, 40)
    CancelButton.Position = UDim2.new(0.5, -75, 0, 250)
    CancelButton.BackgroundColor3 = Color3.fromRGB(60, 60, 75)
    CancelButton.BorderSizePixel = 1
    CancelButton.BorderColor3 = Color3.fromRGB(100, 100, 100)
    CancelButton.Text = "Cancel"
    CancelButton.TextColor3 = Color3.fromRGB(255, 255, 255)
    CancelButton.TextSize = 16
    CancelButton.Font = Enum.Font.GothamBold
    CancelButton.Parent = LogoutPage
    
    CancelButton.MouseButton1Click:Connect(function()
        -- Switch back to main tab
        SwitchTab("Main")
    end)
    
    -- Hover effects for cancel button
    CancelButton.MouseEnter:Connect(function()
        CancelButton.BackgroundColor3 = Color3.fromRGB(80, 80, 95)
    end)
    
    CancelButton.MouseLeave:Connect(function()
        CancelButton.BackgroundColor3 = Color3.fromRGB(60, 60, 75)
    end)
    
    -- Tab switching functionality
    local function SwitchTab(tabName)
        if tabName == "Main" then
            MainPage.Visible = true
            CreditsPage.Visible = false
            HistoryPage.Visible = false
            LogoutPage.Visible = false
            mainTabButton.BackgroundColor3 = Color3.fromRGB(0, 170, 255)
            mainTabButton.BorderColor3 = Color3.fromRGB(0, 255, 255)
            creditsTabButton.BackgroundColor3 = Color3.fromRGB(60, 60, 75)
            creditsTabButton.BorderColor3 = Color3.fromRGB(100, 100, 100)
            historyTabButton.BackgroundColor3 = Color3.fromRGB(60, 60, 75)
            historyTabButton.BorderColor3 = Color3.fromRGB(100, 100, 100)
            logoutTabButton.BackgroundColor3 = Color3.fromRGB(60, 60, 75)
            logoutTabButton.BorderColor3 = Color3.fromRGB(100, 100, 100)
        elseif tabName == "Credits" then
            MainPage.Visible = false
            CreditsPage.Visible = true
            HistoryPage.Visible = false
            LogoutPage.Visible = false
            creditsTabButton.BackgroundColor3 = Color3.fromRGB(0, 170, 255)
            creditsTabButton.BorderColor3 = Color3.fromRGB(0, 255, 255)
            mainTabButton.BackgroundColor3 = Color3.fromRGB(60, 60, 75)
            mainTabButton.BorderColor3 = Color3.fromRGB(100, 100, 100)
            historyTabButton.BackgroundColor3 = Color3.fromRGB(60, 60, 75)
            historyTabButton.BorderColor3 = Color3.fromRGB(100, 100, 100)
            logoutTabButton.BackgroundColor3 = Color3.fromRGB(60, 60, 75)
            logoutTabButton.BorderColor3 = Color3.fromRGB(100, 100, 100)
        elseif tabName == "History" then
            MainPage.Visible = false
            CreditsPage.Visible = false
            HistoryPage.Visible = true
            LogoutPage.Visible = false
            historyTabButton.BackgroundColor3 = Color3.fromRGB(0, 170, 255)
            historyTabButton.BorderColor3 = Color3.fromRGB(0, 255, 255)
            mainTabButton.BackgroundColor3 = Color3.fromRGB(60, 60, 75)
            mainTabButton.BorderColor3 = Color3.fromRGB(100, 100, 100)
            creditsTabButton.BackgroundColor3 = Color3.fromRGB(60, 60, 75)
            creditsTabButton.BorderColor3 = Color3.fromRGB(100, 100, 100)
            logoutTabButton.BackgroundColor3 = Color3.fromRGB(60, 60, 75)
            logoutTabButton.BorderColor3 = Color3.fromRGB(100, 100, 100)
        elseif tabName == "Logout" then
            MainPage.Visible = false
            CreditsPage.Visible = false
            HistoryPage.Visible = false
            LogoutPage.Visible = true
            logoutTabButton.BackgroundColor3 = Color3.fromRGB(0, 170, 255)
            logoutTabButton.BorderColor3 = Color3.fromRGB(0, 255, 255)
            mainTabButton.BackgroundColor3 = Color3.fromRGB(60, 60, 75)
            mainTabButton.BorderColor3 = Color3.fromRGB(100, 100, 100)
            creditsTabButton.BackgroundColor3 = Color3.fromRGB(60, 60, 75)
            creditsTabButton.BorderColor3 = Color3.fromRGB(100, 100, 100)
            historyTabButton.BackgroundColor3 = Color3.fromRGB(60, 60, 75)
            historyTabButton.BorderColor3 = Color3.fromRGB(100, 100, 100)
        end
    end
    
    mainTabButton.MouseButton1Click:Connect(function()
        SwitchTab("Main")
    end)
    
    creditsTabButton.MouseButton1Click:Connect(function()
        SwitchTab("Credits")
    end)
    
    historyTabButton.MouseButton1Click:Connect(function()
        SwitchTab("History")
    end)
    
    logoutTabButton.MouseButton1Click:Connect(function()
        SwitchTab("Logout")
    end)
    
    -- Set default tab
    SwitchTab("Main")
    
    -- Close Button
    local CloseButton = Instance.new("TextButton")
    CloseButton.Name = "CloseButton"
    CloseButton.Size = UDim2.new(0, 80, 0, 30)
    CloseButton.Position = UDim2.new(1, -90, 0, 5)
    CloseButton.BackgroundColor3 = Color3.fromRGB(200, 50, 50)
    CloseButton.BorderSizePixel = 0
    CloseButton.Text = "Close"
    CloseButton.TextColor3 = Color3.fromRGB(255, 255, 255)
    CloseButton.TextSize = 14
    CloseButton.Font = Enum.Font.GothamBold
    CloseButton.Parent = HubFrame
    
    CloseButton.MouseButton1Click:Connect(function()
        -- Disable cheats before closing
        if flyEnabled then
            ToggleFly()
        end
        if infJumpEnabled then
            ToggleInfJump()
        end
        if noclipEnabled then
            ToggleNoclip()
        end
        if espEnabled then
            ToggleESP()
        end
        if hubGui then
            hubGui:Destroy()
            hubGui = nil
        end
    end)
    
    -- Animation
    HubFrame:TweenPosition(UDim2.new(0.5, -250, 0.5, -325), Enum.EasingDirection.Out, Enum.EasingStyle.Back, 0.5, true)
    
    print("Cheat Hub GUI created successfully!")
    return {flySwitch = flySwitch, jumpSwitch = jumpSwitch, noclipSwitch = noclipSwitch, espSwitch = espSwitch, yieldSwitch = yieldSwitch}
end

-- Function to handle guest login
local function HandleGuestLogin()
    StatusLabel.Text = "✅ Logged in as Guest!"
    StatusLabel.TextColor3 = Color3.fromRGB(255, 255, 0)
    
    -- Close login GUI after successful guest login
    task.wait(0.5)
    if ScreenGui then
        ScreenGui:Destroy()
    end
    
    -- Create main Cheat Hub
    local switches = CreateCheatHub()
    
    -- Keybind connections
    local keybindConnection
    keybindConnection = UserInputService.InputBegan:Connect(function(input, gameProcessed)
        if gameProcessed then return end
        
        if input.KeyCode == Enum.KeyCode.F then
            ToggleFly()
            if switches and switches.flySwitch then
                switches.flySwitch.SetState(flyEnabled)
            end
        elseif input.KeyCode == Enum.KeyCode.J then
            ToggleInfJump()
            if switches and switches.jumpSwitch then
                switches.jumpSwitch.SetState(infJumpEnabled)
            end
        elseif input.KeyCode == Enum.KeyCode.N then
            ToggleNoclip()
            if switches and switches.noclipSwitch then
                switches.noclipSwitch.SetState(noclipEnabled)
            end
        elseif input.KeyCode == Enum.KeyCode.E then
            ToggleESP()
            if switches and switches.espSwitch then
                switches.espSwitch.SetState(espEnabled)
            end
        elseif input.KeyCode == Enum.KeyCode.Y then
            ToggleInfiniteYield()
            if switches and switches.yieldSwitch then
                switches.yieldSwitch.SetState(infiniteYieldEnabled)
            end
        end
    end)
end

-- Function to handle login
local function HandleLogin()
    local username = UsernameBox.Text
    local password = PasswordBox.Text
    
    if username == "TeamSploit2026" and password == "Password123" then
        StatusLabel.Text = "✅ Login successful! Welcome!"
        StatusLabel.TextColor3 = Color3.fromRGB(0, 255, 0)
        
        -- Close login GUI after successful login
        task.wait(0.5)
        if ScreenGui then
            ScreenGui:Destroy()
        end
        
        -- Create main Cheat Hub
        local switches = CreateCheatHub()
        
        -- Keybind connections
        local keybindConnection
        keybindConnection = UserInputService.InputBegan:Connect(function(input, gameProcessed)
            if gameProcessed then return end
            
            if input.KeyCode == Enum.KeyCode.F then
                ToggleFly()
                if switches and switches.flySwitch then
                    switches.flySwitch.SetState(flyEnabled)
                end
            elseif input.KeyCode == Enum.KeyCode.J then
                ToggleInfJump()
                if switches and switches.jumpSwitch then
                    switches.jumpSwitch.SetState(infJumpEnabled)
                end
            elseif input.KeyCode == Enum.KeyCode.N then
                ToggleNoclip()
                if switches and switches.noclipSwitch then
                    switches.noclipSwitch.SetState(noclipEnabled)
                end
            elseif input.KeyCode == Enum.KeyCode.E then
                ToggleESP()
                if switches and switches.espSwitch then
                    switches.espSwitch.SetState(espEnabled)
                end
            elseif input.KeyCode == Enum.KeyCode.Y then
                ToggleInfiniteYield()
                if switches and switches.yieldSwitch then
                    switches.yieldSwitch.SetState(infiniteYieldEnabled)
                end
            end
        end)
        
    else
        StatusLabel.Text = "❌ Invalid username or password!"
        StatusLabel.TextColor3 = Color3.fromRGB(255, 0, 0)
        
        -- Shake animation for invalid login
        local originalPos = MainFrame.Position
        for i = 1, 5 do
            MainFrame.Position = UDim2.new(0.5, -200 + (i % 2 == 0 and 10 or -10), 0.5, -175)
            task.wait(0.05)
        end
        MainFrame.Position = originalPos
    end
end

-- Login button click event
LoginButton.MouseButton1Click:Connect(HandleLogin)

-- Guest button click event
GuestButton.MouseButton1Click:Connect(HandleGuestLogin)

-- Enter key support
local function OnEnterPressed(input, gameProcessed)
    if gameProcessed then return end
    if input.KeyCode == Enum.KeyCode.Return or input.KeyCode == Enum.KeyCode.KeypadEnter then
        HandleLogin()
    end
end

-- Connect enter key events
UsernameBox.FocusLost:Connect(function(enterPressed)
    if enterPressed then
        HandleLogin()
    end
end)

PasswordBox.FocusLost:Connect(function(enterPressed)
    if enterPressed then
        HandleLogin()
    end
end)

UserInputService.InputBegan:Connect(OnEnterPressed)

-- UI Animations
MainFrame:TweenPosition(UDim2.new(0.5, -200, 0.5, -175), Enum.EasingDirection.Out, Enum.EasingStyle.Back, 0.5, true)

-- Mouse hover effects for Login Button
LoginButton.MouseEnter:Connect(function()
    LoginButton.BackgroundColor3 = Color3.fromRGB(0, 200, 255)
    LoginButton:TweenSize(UDim2.new(0, 160, 0, 45), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.2, true)
end)

LoginButton.MouseLeave:Connect(function()
    LoginButton.BackgroundColor3 = Color3.fromRGB(0, 170, 255)
    LoginButton:TweenSize(UDim2.new(0, 150, 0, 40), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.2, true)
end)

-- Box focus effects
local function OnBoxFocused(box)
    box.BorderColor3 = Color3.fromRGB(0, 255, 255)
end

local function OnBoxFocusLost(box)
    box.BorderColor3 = Color3.fromRGB(0, 170, 255)
end

UsernameBox.Focused:Connect(function() OnBoxFocused(UsernameBox) end)
UsernameBox.FocusLost:Connect(function() OnBoxFocusLost(UsernameBox) end)
PasswordBox.Focused:Connect(function() OnBoxFocused(PasswordBox) end)
PasswordBox.FocusLost:Connect(function() OnBoxFocusLost(PasswordBox) end)

print("========================================")
print("Cheat Hub Login GUI Loaded!")
print("Username: TeamSploit2026")
print("Password: Password123")
print("Controls:")
print("F - Toggle Fly")
print("J - Toggle Infinite Jump")
print("N - Toggle Noclip")
print("E - Toggle ESP")
print("Y - Toggle Infinite Yield")
print("========================================")
🎮 Similar Scripts
💬 Comments (0)
Login to post a comment
No comments yet. Be the first!
Script Info
Game Just a baseplate
TypeKeyless
Authoralexriderr
Views17
Likes0
PublishedJul 29, 2026
🎮 Play Game on Roblox
🕐 Recent Scripts
Mini War script by Ouroboros hub – Auto collect
Mini War script by Ouroboros hub – Auto collect
Mini War • 👁 3
Keyless
Survive Verity in Area 51 script keyless
Survive Verity in Area 51 script keyless
Survive Verity in Area 51🔦 • 👁 5
Keyless
Unbox ASMR Auto Spawn script OP
Unbox ASMR Auto Spawn script OP
Unbox ASMR! • 👁 5
Keyless
WHI Auto Farm script keyless
WHI Auto Farm script keyless
Wild Horse Islands • 👁 10
Keyless
Bridge Battles script keyless
Bridge Battles script keyless
Bridge Battles! • 👁 9
Keyless