local Rayfield = loadstring(game:HttpGet('https://[Log in to view URL]'))()

local Window = Rayfield:CreateWindow({
   Name = "{FREE} HACKER Hub👾",
   Icon = 0, -- Icon in Topbar. Can use Lucide Icons (string) or Roblox Image (number). 0 to use no icon (default).
   LoadingTitle = "{Free} Hacker Hub",
   LoadingSubtitle = "by Sirius",
   ShowText = "Rayfield", -- for mobile users to unhide rayfield, change if you'd like
   Theme = "Default", -- Check https://[Log in to view URL]

   ToggleUIKeybind = "K", -- The keybind to toggle the UI visibility (string like "K" or Enum.KeyCode)

   DisableRayfieldPrompts = false,
   DisableBuildWarnings = false, -- Prevents Rayfield from warning when the script has a version mismatch with the interface

   ConfigurationSaving = {
      Enabled = true,
      FolderName = nil, -- Create a custom folder for your hub/game
      FileName = "Big Hub"
   },

   Discord = {
      Enabled = false, -- Prompt the user to join your Discord server if their executor supports it
      Invite = "noinvitelink", -- The Discord invite code, do not include discord.gg/. E.g. discord.gg/ ABCD would be ABCD
      RememberJoins = true -- Set this to false to make them join the discord every time they load it up
   },

   KeySystem = true, -- Set this to true to use our key system
   KeySettings = {
      Title = "Untitled",
      Subtitle = "Key System",
      Note = "No method of obtaining the key is provided", -- Use this to tell the user how to get a key
      FileName = "Key", -- It is recommended to use something unique as other scripts using Rayfield may overwrite your key file
      SaveKey = true, -- The user's key will be saved, but if you change the key, they will be unable to use your script
      GrabKeyFromSite = false, -- If this is true, set Key below to the RAW site you would like Rayfield to get the key from
      Key = {"Hello"} -- List of keys that will be accepted by the system, can be RAW file links (pastebin, github etc) or simple strings ("hello","key22")
   }
})

local MainTab = Window:CreateTab("Main", circle) -- Title, Image
local Section = MainTab:CreateSection("ESP")

local Button = MainTab:CreateButton({
   Name = "ESP",
   Callback = function()
         --Tracer
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local Camera = workspace.CurrentCamera

local LocalPlayer = Players.LocalPlayer

local function createTracer()
    local tracer = Drawing.new("Line")
    tracer.Thickness = 1
    tracer.Transparency = 1
    tracer.Color = Color3.fromRGB(255, 255, 255)
    tracer.Visible = false
    return tracer
end

local tracers = {}

local function updateTracer(player)
    if player == LocalPlayer then return end

    local character = player.Character
    if not character then return end

    local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
    if not humanoidRootPart then return end

    local tracer = tracers[player] or createTracer()
    tracers[player] = tracer

    local rootPos, onScreen = Camera:WorldToViewportPoint(humanoidRootPart.Position)
    if onScreen then
        tracer.From = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y) -- Bottom center of the screen
        tracer.To = Vector2.new(rootPos.X, rootPos.Y) 
        tracer.Visible = true
    else
        tracer.Visible = false
    end
end

local function removeTracer(player)
    if tracers[player] then
        tracers[player]:Remove()
        tracers[player] = nil
    end
end

RunService.RenderStepped:Connect(function()
    for _, player in pairs(Players:GetPlayers()) do
        if player ~= LocalPlayer then
            updateTracer(player)
        end
    end
end)

Players.PlayerRemoving:Connect(function(player)
    removeTracer(player)
end)

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local Camera = workspace.CurrentCamera

local LocalPlayer = Players.LocalPlayer

local function createBox()
    local box = Drawing.new("Square")
    box.Thickness = 1
    box.Transparency = 1
    box.Color = Color3.fromRGB(255, 255, 255)
    box.Filled = false
    box.Visible = false
    return box
end

local espBoxes = {}

local function updateBox(player)
    if player == LocalPlayer then return end

    local character = player.Character
    if not character then return end

    local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
    if not humanoidRootPart then return end

    local box = espBoxes[player] or createBox()
    espBoxes[player] = box

    local rootPos, onScreen = Camera:WorldToViewportPoint(humanoidRootPart.Position)
    if onScreen then
        local distance = (Camera.CFrame.Position - humanoidRootPart.Position).Magnitude
        local boxSize = Vector2.new(2000 / distance, 3000 / distance) -- Adjust size based on distance
        local boxPosition = Vector2.new(rootPos.X - boxSize.X / 2, rootPos.Y - boxSize.Y / 2)

        box.Size = boxSize
        box.Position = boxPosition
        box.Visible = true
    else
        box.Visible = false
    end
end

local function removeBox(player)
    if espBoxes[player] then
        espBoxes[player]:Remove()
        espBoxes[player] = nil
    end
end

RunService.RenderStepped:Connect(function()
    for _, player in pairs(Players:GetPlayers()) do
        if player ~= LocalPlayer then
            updateBox(player)
        end
    end
end)

Players.PlayerRemoving:Connect(function(player)
    removeBox(player)
end)

--Health Esp

local function createESP(plr)
    local function applyESP(char)
        local head = char:WaitForChild("Head", 5)
        if not head then return end

        -- Clean old ESP
        if head:FindFirstChild("HealthESP") then
            head:FindFirstChild("HealthESP"):Destroy()
        end

        -- Create BillboardGui
        local billboard = Instance.new("BillboardGui")
        billboard.Name = "HealthESP"
        billboard.Adornee = head
        billboard.Size = UDim2.new(0, 100, 0, 10)
        billboard.StudsOffset = Vector3.new(0, 3, 0)
        billboard.AlwaysOnTop = true
        billboard.Parent = head

        -- Background frame
        local bg = Instance.new("Frame")
        bg.Size = UDim2.new(1, 0, 1, 0)
        bg.BackgroundColor3 = Color3.new(0, 0, 0)
        bg.BackgroundTransparency = 0.5
        bg.BorderSizePixel = 1
        bg.Parent = billboard

        -- Health bar
        local bar = Instance.new("Frame")
        bar.Size = UDim2.new(1, 0, 1, 0)
        bar.BackgroundColor3 = Color3.fromRGB(0, 255, 0)
        bar.BorderSizePixel = 0
        bar.Parent = bg

        -- Text label
        local label = Instance.new("TextLabel")
        label.Size = UDim2.new(1, 0, 1, 0)
        label.BackgroundTransparency = 1
        label.TextColor3 = Color3.new(1, 1, 1)
        label.TextStrokeTransparency = 0.5
        label.TextScaled = true
        label.Font = Enum.Font.GothamBold
        label.Text = "HP: 0 / 0"
        label.Parent = bg

        -- Update loop
        task.spawn(function()
            while char.Parent and plr.Parent do
                local humanoid = char:FindFirstChildOfClass("Humanoid")
                if humanoid then
                    local hp = humanoid.Health
                    local maxHp = humanoid.MaxHealth
                    local ratio = math.clamp(hp / maxHp, 0, 1)

                    bar.Size = UDim2.new(ratio, 0, 1, 0)

                    -- Gradient color
                    if ratio > 0.5 then
                        bar.BackgroundColor3 = Color3.fromRGB(0, 255, 0)
                    elseif ratio > 0.25 then
                        bar.BackgroundColor3 = Color3.fromRGB(255, 165, 0)
                    else
                        bar.BackgroundColor3 = Color3.fromRGB(255, 0, 0)
                    end

                    label.Text = "HP: " .. math.floor(hp) .. " / " .. math.floor(maxHp)
                end
                task.wait(0.1)
            end
        end)
    end

    -- Apply to current character
    if plr.Character then
        applyESP(plr.Character)
    end

    -- Listen for respawn
    plr.CharacterAdded:Connect(function(char)
        task.wait(0.5)
        applyESP(char)
    end)
end

-- Apply to all players
for _, plr in pairs(game.Players:GetPlayers()) do
    if plr ~= game.Players.LocalPlayer then
        createESP(plr)
    end
end

-- Handle players who join later
game.Players.PlayerAdded:Connect(function(plr)
    if plr ~= game.Players.LocalPlayer then
        plr.CharacterAdded:Connect(function(char)
            task.wait(0.5)
            createESP(plr)
        end)
    end
end)

--Username esp

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local Camera = workspace.CurrentCamera

local LocalPlayer = Players.LocalPlayer

local function createUsernameTag()
    local usernameTag = Drawing.new("Text")
    usernameTag.Size = 18
    usernameTag.Center = true
    usernameTag.Outline = true
    usernameTag.Color = Color3.fromRGB(255, 255, 255)
    usernameTag.OutlineColor = Color3.fromRGB(0, 0, 0)
    usernameTag.Visible = false
    return usernameTag
end

local usernameTags = {}

local function updateUsernameTag(player)
    if player == LocalPlayer then return end

    local character = player.Character
    if not character then return end

    local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
    if not humanoidRootPart then return end

    local usernameTag = usernameTags[player] or createUsernameTag()
    usernameTags[player] = usernameTag

    local rootPos, onScreen = Camera:WorldToViewportPoint(humanoidRootPart.Position)
    if onScreen then
        usernameTag.Text = player.Name
        usernameTag.Position = Vector2.new(rootPos.X, rootPos.Y - 25) 
        usernameTag.Visible = true
    else
        usernameTag.Visible = false
    end
end

local function removeUsernameTag(player)
    if usernameTags[player] then
        usernameTags[player]:Remove()
        usernameTags[player] = nil
    end
end

RunService.RenderStepped:Connect(function()
    for _, player in pairs(Players:GetPlayers()) do
        if player ~= LocalPlayer then
            updateUsernameTag(player)
        end
    end
end)

Players.PlayerRemoving:Connect(player)
    removeUsernameTag(player)
   end,
})

local Section = MainTab:CreateSection("Player Mods")

local Slider = MainTab:CreateSlider({
   Name = "sped",
   Range = {16, 300},
   Increment = 1,
   Suffix = "DIDDLES",
   CurrentValue = 16,
   Flag = "Sliwder132", -- A flag is the identifier for the configuration file, make sure every element has a different flag if you're using configuration saving to ensure no overlaps
   Callback = function(Value)
        game.Players.LocalPlayer.Character.Humanoid.WalkSpeed = (Value)
   end,
})

local Slider = MainTab:CreateSlider({
   Name = "JumpPower",
   Range = {50, 300},
   Increment = 1,
   Suffix = "Noice",
   CurrentValue = 50,
   Flag = "Slider132", -- A flag is the identifier for the configuration file, make sure every element has a different flag if you're using configuration saving to ensure no overlaps
   Callback = function(Value)
        game.Players.LocalPlayer.Character.Humanoid.JumpPower = (Value)
   end,
})

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local LocalPlayer = Players.LocalPlayer

local noclipEnabled = false
local noclipConnection

local function setCharacterCollision(state)
    local char = LocalPlayer.Character
    if not char then return end

    for _, part in ipairs(char:GetDescendants()) do
        if part:IsA("BasePart") then
            part.CanCollide = state
        end
    end
end

MainTab:CreateToggle({
    Name = "Noclip",
    CurrentValue = false,
    Flag = "NoclipToggle",
    Callback = function(Value)
        noclipEnabled = Value

        if Value then
            -- turn ON noclip
            if noclipConnection then
                noclipConnection:Disconnect()
            end

            noclipConnection = RunService.Heartbeat:Connect(function()
                if not noclipEnabled then return end
                setCharacterCollision(false)
            end)
        else
            -- turn OFF noclip
            if noclipConnection then
                noclipConnection:Disconnect()
                noclipConnection = nil
            end
            setCharacterCollision(true)
        end
    end,
})

local Section = MainTab:CreateSection("player TP")

--// Services
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer

--// Make a list of player names (except you)
local function GetPlayerNames()
    local list = {}
    for _, plr in ipairs(Players:GetPlayers()) do
        if plr ~= LocalPlayer then
            table.insert(list, plr.Name)
        end
    end
    return list
end

--// Create the dropdown in your Rayfield Tab
local TeleportDropdown = MainTab:CreateDropdown({
    Name = "Teleport to Player",
    Options = GetPlayerNames(),
    CurrentOption = "",
    MultipleOptions = false,
    Flag = "TeleportToPlayer",
    Callback = function(option)
        -- Rayfield can send a string or table, so handle both
        local targetName = option
        if typeof(option) == "table" then
            targetName = option[1]
        end

        local target = Players:FindFirstChild(targetName)
        local char = LocalPlayer.Character
        if target and target.Character and target.Character:FindFirstChild("HumanoidRootPart") and char and char:FindFirstChild("HumanoidRootPart") then
            -- Teleport slightly above the player so you don't get stuck
            char.HumanoidRootPart.CFrame = target.Character.HumanoidRootPart.CFrame + Vector3.new(0, 3, 0)
        end
    end,
})

--// Auto-update the dropdown when players join/leave
local function RefreshDropdown()
    TeleportDropdown:Refresh(GetPlayerNames(), true)
end

Players.PlayerAdded:Connect(RefreshDropdown)
Players.PlayerRemoving:Connect(RefreshDropdown)

local Section = MainTab:CreateSection("Crosshairs", crosshair)

--// CROSSHAIR STORAGE
local Crosshair1 = {}
local Crosshair2 = {}
local Crosshair3 = {}

--// DEFAULT COLORS
local Crosshair1Color = Color3.fromRGB(0, 255, 0)
local Crosshair2Color = Color3.fromRGB(255, 0, 0)
local Crosshair3Color = Color3.fromRGB(255, 255, 0)

--// DEFAULT THICKNESS / SIZE
local Crosshair1Thickness = 2
local Crosshair2Thickness = 2
local Crosshair3Thickness = 3 -- this will be the DOT RADIUS

local Camera = workspace.CurrentCamera

local function Remove(tbl)
    for _, v in ipairs(tbl) do
        if v and v.Remove then
            v:Remove()
        end
    end
    table.clear(tbl)
end

--// =============== DRAW FUNCTIONS =================

local function DrawCrosshair1()
    Remove(Crosshair1)

    local center = Camera.ViewportSize / 2

    local hLine = Drawing.new("Line")
    hLine.From = Vector2.new(center.X - 10, center.Y)
    hLine.To = Vector2.new(center.X + 10, center.Y)
    hLine.Thickness = Crosshair1Thickness
    hLine.Color = Crosshair1Color
    hLine.Visible = true

    local vLine = Drawing.new("Line")
    vLine.From = Vector2.new(center.X, center.Y - 10)
    vLine.To = Vector2.new(center.X, center.Y + 10)
    vLine.Thickness = Crosshair1Thickness
    vLine.Color = Crosshair1Color
    vLine.Visible = true

    Crosshair1 = {hLine, vLine}
end

local function DrawCrosshair2()
    Remove(Crosshair2)

    local center = Camera.ViewportSize / 2

    local l1 = Drawing.new("Line")
    l1.From = Vector2.new(center.X - 10, center.Y - 10)
    l1.To = Vector2.new(center.X + 10, center.Y + 10)
    l1.Thickness = Crosshair2Thickness
    l1.Color = Crosshair2Color
    l1.Visible = true

    local l2 = Drawing.new("Line")
    l2.From = Vector2.new(center.X + 10, center.Y - 10)
    l2.To = Vector2.new(center.X - 10, center.Y + 10)
    l2.Thickness = Crosshair2Thickness
    l2.Color = Crosshair2Color
    l2.Visible = true

    Crosshair2 = {l1, l2}
end

local function DrawCrosshair3()
    Remove(Crosshair3)

    local center = Camera.ViewportSize / 2

    local dot = Drawing.new("Circle")
    dot.Position = Vector2.new(center.X, center.Y)
    dot.Radius = Crosshair3Thickness -- use radius as "thickness"
    dot.Filled = true
    dot.Color = Crosshair3Color
    dot.Visible = true

    Crosshair3 = {dot}
end

--// =============== MAIN TAB ELEMENTS =================

--// Crosshair 1 Toggle
MainTab:CreateToggle({
    Name = "Crosshair 1 (Plus)",
    CurrentValue = false,
    Callback = function(on)
        if on then
            Remove(Crosshair2)
            Remove(Crosshair3)
            DrawCrosshair1()
        else
            Remove(Crosshair1)
        end
    end
})

-- Crosshair 1 Color
MainTab:CreateColorPicker({
    Name = "Crosshair 1 Color",
    Color = Crosshair1Color,
    Callback = function(color)
        Crosshair1Color = color
        for _, obj in ipairs(Crosshair1) do
            obj.Color = color
        end
    end
})

-- Crosshair 1 Thickness Slider (re-draw on change)
MainTab:CreateSlider({
    Name = "Crosshair 1 Thickness",
    Range = {1, 10},
    Increment = 1,
    Suffix = "px",
    CurrentValue = Crosshair1Thickness,
    Callback = function(value)
        Crosshair1Thickness = value
        if #Crosshair1 > 0 then
            DrawCrosshair1()
        end
    end
})

--======================================================

-- Crosshair 2 Toggle
MainTab:CreateToggle({
    Name = "Crosshair 2 (X)",
    CurrentValue = false,
    Callback = function(on)
        if on then
            Remove(Crosshair1)
            Remove(Crosshair3)
            DrawCrosshair2()
        else
            Remove(Crosshair2)
        end
    end
})

-- Crosshair 2 Color
MainTab:CreateColorPicker({
    Name = "Crosshair 2 Color",
    Color = Crosshair2Color,
    Callback = function(color)
        Crosshair2Color = color
        for _, obj in ipairs(Crosshair2) do
            obj.Color = color
        end
    end
})

-- Crosshair 2 Thickness Slider (re-draw on change)
MainTab:CreateSlider({
    Name = "Crosshair 2 Thickness",
    Range = {1, 10},
    Increment = 1,
    Suffix = "px",
    CurrentValue = Crosshair2Thickness,
    Callback = function(value)
        Crosshair2Thickness = value
        if #Crosshair2 > 0 then
            DrawCrosshair2()
        end
    end
})

--======================================================

-- Crosshair 3 Toggle
MainTab:CreateToggle({
    Name = "Crosshair 3 (Dot)",
    CurrentValue = false,
    Callback = function(on)
        if on then
            Remove(Crosshair1)
            Remove(Crosshair2)
            DrawCrosshair3()
        else
            Remove(Crosshair3)
        end
    end
})

-- Crosshair 3 Color
MainTab:CreateColorPicker({
    Name = "Crosshair 3 Color",
    Color = Crosshair3Color,
    Callback = function(color)
        Crosshair3Color = color
        for _, obj in ipairs(Crosshair3) do
            obj.Color = color
        end
    end
})

-- Crosshair 3 "Thickness" Slider (actually size / radius)
MainTab:CreateSlider({
    Name = "Crosshair 3 Size",
    Range = {1, 15},
    Increment = 1,
    Suffix = "px",
    CurrentValue = Crosshair3Thickness,
    Callback = function(value)
        Crosshair3Thickness = value
        if #Crosshair3 > 0 then
            DrawCrosshair3()
        end
    end
})

local Section = MainTab:CreateSection("Aimbot")

local Toggle = MainTab:CreateToggle({
   Name = "AimBot",
   CurrentValue = false,
   Flag = "Toggle1fe", -- A flag is the identifier for the configuration file, make sure every element has a different flag if you're using configuration saving to ensure no overlaps
   Callback = function(Value)
        -- Original script - github.com/ngaokng/KNG-Script/blob/main/Simple-AImbot.lua

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local StarterGui = game:GetService("StarterGui")
local LocalPlayer = Players.LocalPlayer
local Mouse = LocalPlayer:GetMouse()

local FOV = 120
local AimbotEnabled = false
local TargetPlayer = nil

local circle = Drawing.new("Circle")
circle.Visible = false
circle.Radius = FOV
circle.Color = Color3.fromRGB(0, 255, 0)
circle.Thickness = 2
circle.NumSides = 100
circle.Filled = false
circle.Transparency = 0.8

local function isPlayerValid(player)
    local char = player.Character
    if char and char:FindFirstChild("Head") and char:FindFirstChild("Humanoid") then
        local humanoid = char.Humanoid
        if humanoid.Health > 0 and char.Head.Transparency < 1 then
            return true
        end
    end
    return false
end

local function getClosestPlayer()
    local closestPlayer = nil
    local shortestDistance = math.huge

    for _, player in pairs(Players:GetPlayers()) do
        if player ~= LocalPlayer and isPlayerValid(player) then
            local headPos, onScreen = workspace.CurrentCamera:WorldToScreenPoint(player.Character.Head.Position)
            if onScreen then
                local mousePos = Vector2.new(Mouse.X, Mouse.Y)
                local playerPos = Vector2.new(headPos.X, headPos.Y)
                local distance = (playerPos - mousePos).Magnitude

                if distance < FOV and distance < shortestDistance then
                    shortestDistance = distance
                    closestPlayer = player
                end
            end
        end
    end

    return closestPlayer
end

-- Notification à l'exécution
StarterGui:SetCore("SendNotification", {
    Title = "Aimbot | by @elh_rblx",
    Text = 'Press "R" for activate/deactivate the aimbot',
    Duration = 5
})

RunService.RenderStepped:Connect(function()
    circle.Position = Vector2.new(Mouse.X, Mouse.Y)
    circle.Visible = AimbotEnabled

    if AimbotEnabled then
        if not TargetPlayer or not isPlayerValid(TargetPlayer) then
            TargetPlayer = getClosestPlayer()
        end

        if TargetPlayer and TargetPlayer.Character then
            local head = TargetPlayer.Character:FindFirstChild("Head")
            if head then
                local camera = workspace.CurrentCamera
                local screenPos, onScreen = camera:WorldToScreenPoint(head.Position)

                if onScreen then
                    local deltaX = screenPos.X - Mouse.X
                    local deltaY = screenPos.Y - Mouse.Y
                    mousemoverel(deltaX, deltaY)
                else
                    TargetPlayer = nil
                end
            else
                TargetPlayer = nil
            end
        end
    else
        TargetPlayer = nil
        circle.Visible = false
    end
end)

UserInputService.InputBegan:Connect(function(input, gameProcessed)
    if gameProcessed then return end
    if input.KeyCode == Enum.KeyCode.R then
        AimbotEnabled = not AimbotEnabled
        if not AimbotEnabled then
            TargetPlayer = nil
            circle.Visible = false
        end
    end
end)
   end,
})

local ChicagoTab = Window:CreateTab("Chicago IL RP", nil) -- Title, Image
local Section = ChicagoTab:CreateSection("Teleports")

local Players = game:GetService("Players")

-- Simple teleport function
local function TeleportTo(positionVector3)
    local player = Players.LocalPlayer
    if not player then return end

    local character = player.Character or player.CharacterAdded:Wait()
    local hrp = character:FindFirstChild("HumanoidRootPart")

    if hrp then
        hrp.CFrame = CFrame.new(positionVector3)
    end
end

-- 🧨 Illegal Gun Dealer
ChicagoTab:CreateButton({
    Name = "Teleport: Illegal Gun Dealer",
    Callback = function()
        TeleportTo(Vector3.new(-19.17, 4.49, -180.11))
    end,
})

-- 🏠 Claim Apartment Sign
ChicagoTab:CreateButton({
    Name = "Teleport: Claim Apartment Sign",
    Callback = function()
        TeleportTo(Vector3.new(73.30, 4.50, 120.51))
    end,
})

-- 💻 Computer
ChicagoTab:CreateButton({
    Name = "Teleport: Computer",
    Callback = function()
        TeleportTo(Vector3.new(45.93, 5.21, 102.30))
    end,
})

-- 🏧 ATM
ChicagoTab:CreateButton({
    Name = "Teleport: ATM",
    Callback = function()
        TeleportTo(Vector3.new(242.36, 5.00, 72.34))
    end,
})

-- 💳 Card Dealer
ChicagoTab:CreateButton({
    Name = "Teleport: Card Dealer",
    Callback = function()
        TeleportTo(Vector3.new(732.00, 4.49, -51.69))
    end,
})

local Section = ChicagoTab:CreateSection("Money💵")

local Toggle = ChicagoTab:CreateToggle({
   Name = "CARD AUTOFARM💵",
   CurrentValue = false,
   Flag = "Toggle1", -- A flag is the identifier for the configuration file, make sure every element has a different flag if you're using configuration saving to ensure no overlaps
   Callback = function(Value)
        local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer

-- ===== Helpers =====

local function getCharacter()
    return LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
end

local function getHRP()
    local char = getCharacter()
    if not char then return nil end
    return char:FindFirstChild("HumanoidRootPart")
end

local function TeleportTo(v3)
    local hrp = getHRP()
    if hrp then
        hrp.CFrame = CFrame.new(v3)
        task.wait(0.5)
    end
end

local function getPromptPosition(prompt)
    local parent = prompt.Parent
    if parent:IsA("BasePart") then
        return parent.Position
    elseif parent:IsA("Attachment") then
        return parent.WorldPosition
    elseif parent:IsA("Model") and parent.PrimaryPart then
        return parent.PrimaryPart.Position
    end
end

local function getNearestPrompt(maxDistance)
    local hrp = getHRP()
    if not hrp then return nil end

    local nearest, nearestDist
    for _, inst in ipairs(workspace:GetDescendants()) do
        if inst:IsA("ProximityPrompt") then
            local pos = getPromptPosition(inst)
            if pos then
                local dist = (pos - hrp.Position).Magnitude
                if (not maxDistance or dist <= maxDistance) and (not nearestDist or dist < nearestDist) then
                    nearest, nearestDist = inst, dist
                end
            end
        end
    end
    return nearest
end

local function fireNearestPrompt(maxDistance)
    local prompt = getNearestPrompt(maxDistance)
    if prompt then
        fireproximityprompt(prompt)
        return true
    end
    return false
end

-- 🔎 specifically fire a prompt by its ObjectText (like "Take Loaded Card")
local function firePromptByObjectText(targetText, maxDistance)
    local hrp = getHRP()
    if not hrp then return false end

    local closest, closestDist

    for _, inst in ipairs(workspace:GetDescendants()) do
        if inst:IsA("ProximityPrompt") and inst.ObjectText == targetText then
            local pos = getPromptPosition(inst)
            if pos then
                local dist = (pos - hrp.Position).Magnitude
                if (not maxDistance or dist <= maxDistance) and (not closestDist or dist < closestDist) then
                    closest, closestDist = inst, dist
                end
            end
        end
    end

    if closest then
        fireproximityprompt(closest)
        return true
    end

    return false
end

local function findTool(name)
    local char = getCharacter()
    local backpack = LocalPlayer:FindFirstChild("Backpack")

    if char and char:FindFirstChild(name) then
        return char[name], true
    end
    if backpack and backpack:FindFirstChild(name) then
        return backpack[name], false
    end
    return nil, false
end

local function equipToolByName(name)
    local tool, inChar = findTool(name)
    local char = getCharacter()
    if tool and not inChar and char then
        tool.Parent = char
    end
    return tool
end

local function hasTool(name)
    local tool = select(1, findTool(name))
    return tool ~= nil
end

-- ===== TOGGLE =====

local CardFarmEnabled = false

ChicagoTab:CreateToggle({
    Name = "Card Loader ATM Farm",
    CurrentValue = false,
    Flag = "CardLoaderFarm",
    Callback = function(Value)
        CardFarmEnabled = Value

        if Value then
            task.spawn(function()
                while CardFarmEnabled do
                    -- 1) Card Dealer
                    TeleportTo(Vector3.new(732.00, 4.49, -51.69))
                    fireNearestPrompt(20)

                    -- 2) Claim Apartment
                    TeleportTo(Vector3.new(73.30, 4.50, 120.51))
                    fireNearestPrompt(20)

                    -- 3) Computer: load Blank Card
                    TeleportTo(Vector3.new(45.93, 5.21, 102.30))
                    equipToolByName("Blank Card")
                    task.wait(0.3)

                    -- start loading (use nearest here)
                    fireNearestPrompt(20)
                    task.wait(40)

                    -- finish loading (again nearest)
                    fireNearestPrompt(20)

                    -- ⭐ LOOP: keep firing "Take Loaded Card" until we actually get it
                    local tries = 0
                    while CardFarmEnabled and not hasTool("Loaded Card") and tries < 80 do
                        firePromptByObjectText("Take Loaded Card", 30)
                        tries += 1
                        task.wait(0.2)
                    end

                    if not CardFarmEnabled then
                        break
                    end

                    -- if we STILL didn't get the card, skip this cycle
                    if not hasTool("Loaded Card") then
                        task.wait(1)
                        continue
                    end

                    -- 4) ATM: teleport, equip, and spam nearest prompt until Loaded Card is gone
                    TeleportTo(Vector3.new(242.36, 5.00, 72.34))
                    equipToolByName("Loaded Card")

                    local safetyCount = 0
                    while CardFarmEnabled and hasTool("Loaded Card") do
                        if not fireNearestPrompt(20) then
                            break
                        end
                        task.wait(0.2)
                        safetyCount += 1
                        if safetyCount > 300 then
                            break
                        end
                    end

                    if not CardFarmEnabled then
                        break
                    end

                    task.wait(1)
                end
            end)
        end
    end,
})
   end,
})

local BedWarsTab = Window:CreateTab("BedWars🛏️", nil) -- Title, Image
local Section = BedWarsTab:CreateSection("Scripts")

local Button = BedWarsTab:CreateButton({
   Name = "Bedwars Script",
   Callback = function()
        -- 🌀 HACKER HUB (English Version, No Key System)
local BUTTON_IMAGE_ID = "rbxassetid://107781958606208"
local player = game.Players.LocalPlayer

local ScreenGui = Instance.new("ScreenGui", player:WaitForChild("PlayerGui"))
ScreenGui.ResetOnSpawn = false

-- 🔵 Main Menu Frame
local MainFrame = Instance.new("Frame")
MainFrame.Parent = ScreenGui
MainFrame.Size = UDim2.new(0, 500, 0, 350)
MainFrame.Position = UDim2.new(0.5, -250, 0.5, -175)
MainFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
MainFrame.Visible = false
Instance.new("UICorner", MainFrame).CornerRadius = UDim.new(0, 15)

-- Header
local HeaderLabel = Instance.new("TextLabel", MainFrame)
HeaderLabel.Size = UDim2.new(1, 0, 0, 40)
HeaderLabel.Position = UDim2.new(0, 10, 0, 10)
HeaderLabel.BackgroundTransparency = 1
HeaderLabel.TextColor3 = Color3.fromRGB(255,255,255)
HeaderLabel.Font = Enum.Font.GothamBold
HeaderLabel.TextSize = 16
HeaderLabel.Text = "HACKER HUB | BEDWARS CORE"

-- Tabs Bar
local TabScroll = Instance.new("ScrollingFrame")
TabScroll.Parent = MainFrame
TabScroll.Size = UDim2.new(1, -20, 0, 40)
TabScroll.Position = UDim2.new(0, 10, 0, 60)
TabScroll.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
TabScroll.ScrollBarThickness = 6
TabScroll.CanvasSize = UDim2.new(0,0,0,0)
TabScroll.ScrollBarImageColor3 = Color3.fromRGB(0,170,255)
TabScroll.BorderSizePixel = 0
Instance.new("UICorner", TabScroll).CornerRadius = UDim.new(0, 10)

local UIListLayout = Instance.new("UIListLayout")
UIListLayout.FillDirection = Enum.FillDirection.Horizontal
UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder
UIListLayout.Padding = UDim.new(0, 10)
UIListLayout.Parent = TabScroll

-- Content Frame
local ContentFrame = Instance.new("Frame")
ContentFrame.Parent = MainFrame
ContentFrame.Size = UDim2.new(1, -20, 1, -110)
ContentFrame.Position = UDim2.new(0, 10, 0, 110)
ContentFrame.BackgroundTransparency = 1

local Pages = {}
local CurrentPage = nil

-- 📌 Function to Add Tabs
local function AddTab(name)
    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(0, 120, 1, 0)
    btn.Text = name
    btn.Font = Enum.Font.GothamBold
    btn.TextSize = 18
    btn.TextColor3 = Color3.fromRGB(255,255,255)
    btn.BackgroundTransparency = 1
    btn.Parent = TabScroll

    task.wait()
    TabScroll.CanvasSize = UDim2.new(0, UIListLayout.AbsoluteContentSize.X + 10, 0, 0)

    local page = Instance.new("ScrollingFrame", ContentFrame)
    page.Size = UDim2.new(1,0,1,0)
    page.CanvasSize = UDim2.new(0,0,0,0)
    page.ScrollBarThickness = 6
    page.Visible = false
    page.BackgroundTransparency = 1
    Pages[name] = page

    btn.MouseButton1Click:Connect(function()
        if CurrentPage then CurrentPage.Visible = false end
        page.Visible = true
        CurrentPage = page
    end)

    if not CurrentPage then
        page.Visible = true
        CurrentPage = page
    end
end

-- 📌 Function to Add Buttons
local function AddButton(tabName, text, callback)
    local page = Pages[tabName]
    if not page then return warn("Tab "..tabName.." not found!") end

    local btn = Instance.new("TextButton", page)
    btn.Size = UDim2.new(0, 200, 0, 40)
    btn.Position = UDim2.new(0, 20, 0, (#page:GetChildren()-1)*50)
    btn.Text = text
    btn.Font = Enum.Font.GothamBold
    btn.TextSize = 18
    btn.BackgroundColor3 = Color3.fromRGB(0,170,255)
    btn.TextColor3 = Color3.fromRGB(255,255,255)
    Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 10)

    page.CanvasSize = UDim2.new(0,0,0,(#page:GetChildren()-1)*50+60)

    btn.MouseButton1Click:Connect(callback)
end

-- 🔵 Always-visible Menu Button
local OpenButton = Instance.new("ImageButton")
OpenButton.Parent = ScreenGui
OpenButton.Size = UDim2.new(0, 60, 0, 60)
OpenButton.Position = UDim2.new(0, 20, 0.5, -30)
OpenButton.BackgroundTransparency = 1
OpenButton.Image = BUTTON_IMAGE_ID
OpenButton.ScaleType = Enum.ScaleType.Fit
OpenButton.Visible = true
Instance.new("UICorner", OpenButton).CornerRadius = UDim.new(1, 0)

local menuOpen = false
OpenButton.MouseButton1Click:Connect(function()
    menuOpen = not menuOpen
    MainFrame.Visible = menuOpen
end)

-- Player Info Box
local PlayerFrame = Instance.new("Frame", MainFrame)
PlayerFrame.Size = UDim2.new(0,200,0,50)
PlayerFrame.Position = UDim2.new(0,10,1,-60)
PlayerFrame.BackgroundTransparency = 1

local Avatar = Instance.new("ImageLabel", PlayerFrame)
Avatar.Size = UDim2.new(0,40,0,40)
Avatar.Position = UDim2.new(0,0,0.5,-20)
Avatar.BackgroundColor3 = Color3.fromRGB(255,255,255)
Avatar.Image = "rbxthumb://type=AvatarHeadShot&id="..player.UserId.."&w=420&h=420"
Instance.new("UICorner", Avatar).CornerRadius = UDim.new(1,0)

local NameLabel = Instance.new("TextLabel", PlayerFrame)
NameLabel.Size = UDim2.new(1,-50,1,0)
NameLabel.Position = UDim2.new(0,50,0,0)
NameLabel.BackgroundTransparency = 1
NameLabel.Font = Enum.Font.GothamBold
NameLabel.TextSize = 18
NameLabel.TextColor3 = Color3.fromRGB(255,255,255)
NameLabel.TextXAlignment = Enum.TextXAlignment.Left
NameLabel.Text = player.Name

-- 📌 Tabs
AddTab("Player")
AddTab("ESP")
AddTab("Combat")
AddTab("Anti")
AddTab("Game")

-- 📌 Buttons
AddButton("Player", "WalkSpeed", function()
loadstring(game:HttpGet("https://[Log in to view URL]"))()
end)

AddButton("Player", "Jump Power", function()
loadstring(game:HttpGet("https://[Log in to view URL]"))()
end)

AddButton("ESP", "ESP Players", function()
loadstring(game:HttpGet("https://[Log in to view URL]"))()
end)

AddButton("ESP", "ESP Beds", function()
loadstring(game:HttpGet("https://[Log in to view URL]"))()
end)

AddButton("Combat", "Kill Aura", function()
loadstring(game:HttpGet("https://[Log in to view URL]"))()
end)

AddButton("Combat", "Auto Clicker", function()
loadstring(game:HttpGet("https://[Log in to view URL]"))()
end)

AddButton("Anti", "Anti Ban", function()
loadstring(game:HttpGet("https://[Log in to view URL]"))()
end)

AddButton("Anti", "Anti Kick", function()
loadstring(game:HttpGet("https://[Log in to view URL]"))()
end)

AddButton("Game", "Crash Server v1", function()
loadstring(game:HttpGet("https://[Log in to view URL]"))()
end)

AddButton("Game", "Crash Server v2", function()
loadstring(game:HttpGet("https://[Log in to view URL]"))()
end)

AddButton("Game", "Kick Myself", function()
loadstring(game:HttpGet("https://[Log in to view URL]"))()
end)
   end,
})

-- Bedwars Tab Button for Vape V4

BedWarsTab:CreateButton({
    Name = "Load Vape V4",
    Callback = function()
        loadstring(game:HttpGet(
            "https://[Log in to view URL]",
            true
        ))()
    end
})

local ATab = Window:CreateTab("TB3", nil) -- Title, Image
local Section = ATab:CreateSection("GUI")

local Button = ATab:CreateButton({
    Name = "Open Exotic guns",
    Callback = function()
        local Players = game:GetService("Players")
        local LocalPlayer = Players.LocalPlayer

        -- try PlayerGui first
        local pg = LocalPlayer:FindFirstChild("PlayerGui") or LocalPlayer:WaitForChild("PlayerGui")
        local gui = pg:FindFirstChild("ThaShop2")

        -- if not there, try CoreGui
        if not gui then
            gui = game:GetService("CoreGui"):FindFirstChild("ThaShop2")
        end

        -- last resort: search whole game
        if not gui then
            for _, obj in ipairs(game:GetDescendants()) do
                if obj:IsA("ScreenGui") and obj.Name == "ThaShop2" then
                    gui = obj
                    break
                end
            end
        end

        if gui then
            gui.Enabled = true
        end
    end
})

local Button = ATab:CreateButton({
    Name = "Open ThaShop",
    Callback = function()
        local Players = game:GetService("Players")
        local LocalPlayer = Players.LocalPlayer

        -- PlayerGui first
        local pg = LocalPlayer:FindFirstChild("PlayerGui") or LocalPlayer:WaitForChild("PlayerGui")
        local gui = pg:FindFirstChild("ThaShop")

        -- CoreGui fallback
        if not gui then
            gui = game:GetService("CoreGui"):FindFirstChild("ThaShop")
        end

        -- Full game search last
        if not gui then
            for _, obj in ipairs(game:GetDescendants()) do
                if obj:IsA("ScreenGui") and obj.Name == "ThaShop" then
                    gui = obj
                    break
                end
            end
        end

        if gui then
            gui.Enabled = true
        end
    end
})

local Button = ATab:CreateButton({
    Name = "INF Money IceFruit",
    Callback = function()
        local Players = game:GetService("Players")
        local LocalPlayer = Players.LocalPlayer

        local char = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
        local root = char:WaitForChild("HumanoidRootPart")

        ------------------------------------
        -- TELEPORT FIRST
        ------------------------------------
        root.CFrame = CFrame.new(-69.83, 287.06, -319.33)

        ------------------------------------
        -- FIND SELL PROMPT
        ------------------------------------
        local sellObj = workspace:FindFirstChild("IceFruit Sell")
        if not sellObj then
            warn("IceFruit Sell not found in workspace!")
            return
        end

        local prompt = sellObj:FindFirstChild("ProximityPrompt")
        if not prompt then
            warn("ProximityPrompt missing inside IceFruit Sell!")
            return
        end

        ------------------------------------
        -- SPAM 999 TIMES AFTER TELEPORT
        ------------------------------------
        task.wait(0.01) -- tiny buffer so teleport fully applies

        for i = 1, 10000000, 10000 do
            pcall(function()
                fireproximityprompt(prompt)
            end)
            task.wait(0.1)
        end
    end
})

local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local targetAmount = 1600000

local Button = ATab:CreateButton({ -- change CTab to your tab if needed
    Name = "Auto Sell to 1.6M",
    Callback = function()
        local stored = LocalPlayer:WaitForChild("stored")
        local filthy = stored:WaitForChild("FilthyStack")

        local sellObj = workspace:FindFirstChild("IceFruit Sell")
        if not sellObj then
            warn("IceFruit Sell not found in workspace")
            return
        end

        local prompt = sellObj:FindFirstChild("ProximityPrompt")
        if not prompt then
            warn("No ProximityPrompt in IceFruit Sell")
            return
        end

        while filthy.Value < targetAmount do
            -- make sure character exists
            local char = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
            local root = char:WaitForChild("HumanoidRootPart")

            -- TP first
            root.CFrame = CFrame.new(-69.83, 287.06, -319.33)
            task.wait(0.2)

            -- spam sell, but stop early if we hit target
            for i = 1, 999 do
                if filthy.Value >= targetAmount then
                    break
                end
                pcall(function()
                    fireproximityprompt(prompt)
                end)
                task.wait(0.02)
            end

            task.wait(0.2)
        end

        print("Done: FilthyStack reached at least 1,600,000. Current:", filthy.Value)
    end
})

local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local targetAmount = 1600000

local Button = CTab:CreateButton({ -- change CTab if needed
    Name = "Auto Sell to 1.6M (Fast)",
    Callback = function()
        local stored = LocalPlayer:WaitForChild("stored")
        local filthy = stored:WaitForChild("FilthyStack")

        local sellObj = workspace:FindFirstChild("IceFruit Sell")
        if not sellObj then
            warn("IceFruit Sell not found in workspace")
            return
        end

        local prompt = sellObj:FindFirstChild("ProximityPrompt")
        if not prompt then
            warn("No ProximityPrompt in IceFruit Sell")
            return
        end

        while filthy.Value < targetAmount do
            -- make sure character exists
            local char = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
            local root = char:WaitForChild("HumanoidRootPart")

            -- TP first
            root.CFrame = CFrame.new(-69.83, 287.06, -319.33)
            task.wait(0.005) -- shorter, gets to spam faster

            -- FAST SPAM: 2000 times, tiny delay
            for i = 1, 2000 do
                if filthy.Value >= targetAmount then
                    break
                end
                pcall(function()
                    fireproximityprompt(prompt)
                end)
                task.wait(0.0001) -- faster spam
            end

            task.wait(0.003) -- small pause so server updates money
        end

        print("Done: FilthyStack reached at least 1,600,000. Current:", filthy.Value)
    end
})

Embed on website

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