Kali Hub LEAKED SOURCE no key
Key Required

Kali Hub LEAKED SOURCE no key

[🏈S1] NFL Universe FootballWaylonTheEvidentWaylonTheEvident 18.4K views 101.9K executesUpdated Dec 8, 2025
5.0/ 5(1 votes)
10100% Positive
Lua Script•4491 lines (163047 chars)
local UserInputService = game:GetService("UserInputService")
local isMobile = UserInputService.TouchEnabled and not UserInputService.KeyboardEnabled

if isMobile then
    local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))()
    
    local Players = game:GetService("Players")
    local RunService = game:GetService("RunService")
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local Workspace = game:GetService("Workspace")
    local plr = Players.LocalPlayer

    getgenv().SecureMode = true

    local mechMod = ReplicatedStorage:FindFirstChild("Assets") 
        and ReplicatedStorage.Assets:FindFirstChild("Modules") 
        and ReplicatedStorage.Assets.Modules:FindFirstChild("Client") 
        and ReplicatedStorage.Assets.Modules.Client:FindFirstChild("Mechanics")
    
    if mechMod then
        mechMod = require(mechMod)
    end

    local ConnectionManager = {}
    ConnectionManager.connections = {}

    function ConnectionManager:Add(name, connection)
        if self.connections[name] then
            self.connections[name]:Disconnect()
        end
        self.connections[name] = connection
    end

    function ConnectionManager:Remove(name)
        if self.connections[name] then
            self.connections[name]:Disconnect()
            self.connections[name] = nil
        end
    end

    function ConnectionManager:CleanupAll()
        for name, conn in pairs(self.connections) do
            if conn then
                conn:Disconnect()
            end
        end
        self.connections = {}
    end

    local pullVectorEnabled = false
    local smoothPullEnabled = false
    local isPullingBall = false
    local isSmoothPulling = false
    local walkSpeedEnabled = false
    local jumpPowerEnabled = false
    local bigheadEnabled = false
    local tackleReachEnabled = false
    local playerHitboxEnabled = false
    local jumpBoostEnabled = false
    local jumpBoostTradeMode = false
    local diveBoostEnabled = false
    local autoFollowBallCarrierEnabled = false
    local pullButtonActive = false
    local legPullButtonActive = false
    local dragButtonsEnabled = false
    local CanDiveBoost = true
    local CanBoost = true
    local isSprinting = false
    

    local offsetDistance = 15
    local magnetSmoothness = 0.20
    local customWalkSpeed = 25
    local customJumpPower = 50
    local bigheadSize = 1
    local bigheadTransparency = 0.5
    local tackleReachDistance = 5
    local playerHitboxSize = 5
    local maxPullDistance = 35
    local autoFollowBlatancy = 0.5
    local BOOST_FORCE_Y = 32
    local BALL_DETECTION_RADIUS = 10
    local BOOST_COOLDOWN = 1
    local DIVE_BOOST_POWER = 15
    local DIVE_BOOST_COOLDOWN = 2

    local jumpConnection = nil
    local bigheadConnection = nil
    local tackleReachConnection = nil
    local playerHitboxConnection = nil
    local walkSpeedConnection = nil
    local autoFollowConnection = nil
    local mobileInputMethod = "Buttons" 
    local isParkMatch = Workspace:FindFirstChild("ParkMatchMap") ~= nil

    local character = plr.Character or plr.CharacterAdded:Wait()
    local humanoidRootPart = character:WaitForChild("HumanoidRootPart")
    local humanoid = character:WaitForChild("Humanoid")
    local head = character:WaitForChild("Head")
    local defaultHeadSize = head.Size
    local defaultHeadTransparency = head.Transparency

    local function onCharacterAdded(char)
        character = char
        humanoidRootPart = char:WaitForChild("HumanoidRootPart")
        humanoid = char:WaitForChild("Humanoid")
        head = char:WaitForChild("Head")
        defaultHeadSize = head.Size
        defaultHeadTransparency = head.Transparency
    end

    ConnectionManager:Add("CharacterAdded", plr.CharacterAdded:Connect(onCharacterAdded))

    local function getFootball()
        local parkMap = Workspace:FindFirstChild("ParkMap")
        if parkMap and parkMap:FindFirstChild("Replicated") then
            local fields = parkMap.Replicated:FindFirstChild("Fields")
            if fields then
                local parkFields = {
                    fields:FindFirstChild("LeftField"),
                    fields:FindFirstChild("RightField"),
                    fields:FindFirstChild("BLeftField"),
                    fields:FindFirstChild("BRightField"),
                    fields:FindFirstChild("HighField"),
                    fields:FindFirstChild("TLeftField"),
                    fields:FindFirstChild("TRightField")
                }
                
                for _, field in ipairs(parkFields) do
                    if field and field:FindFirstChild("Replicated") then
                        local football = field.Replicated:FindFirstChild("Football")
                        if football and football:IsA("BasePart") then 
                            return football 
                        end
                    end
                end
            end
        end
        
        if isParkMatch then
            local parkMatchFootball = Workspace:FindFirstChild("ParkMatchMap")
            if parkMatchFootball and parkMatchFootball:FindFirstChild("Replicated") then
                parkMatchFootball = parkMatchFootball.Replicated:FindFirstChild("Fields")
                if parkMatchFootball and parkMatchFootball:FindFirstChild("MatchField") then
                    parkMatchFootball = parkMatchFootball.MatchField:FindFirstChild("Replicated")
                    if parkMatchFootball then
                        local football = parkMatchFootball:FindFirstChild("Football")
                        if football and football:IsA("BasePart") then return football end
                    end
                end
            end
        end
        
        local gamesFolder = Workspace:FindFirstChild("Games")
        if gamesFolder then
            for _, gameInstance in ipairs(gamesFolder:GetChildren()) do
                local replicatedFolder = gameInstance:FindFirstChild("Replicated")
                if replicatedFolder then
                    local kickoffFootball = replicatedFolder:FindFirstChild("918f5408-d86a-4fb8-a88c-5cab57410acf")
                    if kickoffFootball and kickoffFootball:IsA("BasePart") then return kickoffFootball end
                    for _, item in ipairs(replicatedFolder:GetChildren()) do
                        if item:IsA("BasePart") and item.Name == "Football" then return item end
                    end
                end
            end
        end
        return nil
    end

    local function getBallCarrier()
        for _, player in ipairs(Players:GetPlayers()) do
            if player ~= plr and player.Character then
                local football = player.Character:FindFirstChild("Football")
                if football then
                    return player
                end
            end
        end
        return nil
    end

    local function teleportToBall()
        local ball = getFootball()
        if ball and humanoidRootPart then
            if Workspace:FindFirstChild("ParkMap") then
                local distance = (ball.Position - humanoidRootPart.Position).Magnitude
                
                if distance > maxPullDistance then
                    return
                end
            end
            
            local ballVelocity = ball.Velocity
            local ballPosition = ball.Position
            local direction = ballVelocity.Unit
            local targetPosition = ballPosition + (direction * 12) - Vector3.new(0, 1.5, 0) + Vector3.new(0, 5.197499752044678 / 6, 0)
            local lookDirection = (ballPosition - humanoidRootPart.Position).Unit
            humanoidRootPart.CFrame = CFrame.new(targetPosition, targetPosition + lookDirection)
        end
    end

    local function smoothTeleportToBall()
        local ball = getFootball()
        if ball and humanoidRootPart then
            if Workspace:FindFirstChild("ParkMap") then
                local distance = (ball.Position - humanoidRootPart.Position).Magnitude
                if distance > maxPullDistance then return end
            end
            
            local ballVelocity = ball.Velocity
            local ballSpeed = ballVelocity.Magnitude
            local offset = (ballSpeed > 0) and (ballVelocity.Unit * offsetDistance) or Vector3.new(0, 0, 0)
            local targetPosition = ball.Position + offset + Vector3.new(0, 3, 0)
            local lookDirection = (ball.Position - humanoidRootPart.Position).Unit
            humanoidRootPart.CFrame = humanoidRootPart.CFrame:Lerp(CFrame.new(targetPosition, targetPosition + lookDirection), magnetSmoothness)
        end
    end

    local function applyJumpBoost(rootPart)
        local bv = Instance.new("BodyVelocity")
        bv.Velocity = Vector3.new(0, BOOST_FORCE_Y, 0)
        bv.MaxForce = Vector3.new(0, math.huge, 0)
        bv.P = 5000
        bv.Parent = rootPart
        game:GetService("Debris"):AddItem(bv, 0.2)
    end

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

local TweenService = game:GetService("TweenService")
local lp = game:GetService("Players").LocalPlayer

getgenv().turkeyFarmEnabled = getgenv().turkeyFarmEnabled or false
getgenv().turkeySpeed = getgenv().turkeySpeed or 0.3

local turkeyFarmConnection = nil
local isFarming = false

local function getChar()
return lp.Character, lp.Character and lp.Character:FindFirstChild("HumanoidRootPart")
end

local function basket()
local id = lp.Replicated.TeamID.Value
return id == "AwayTeam" and Vector3.new(137, 372, 0) or Vector3.new(-138, 372, 2)
end

local function getMG()
for _, v in ipairs(workspace.MiniGames:GetChildren()) do
    local r = v:FindFirstChild("Replicated")
    if r and r:FindFirstChild("Turkeys") then
        return r
    end
end
return nil
end

local function isTurkeyValid(turkey)
return turkey and turkey.Parent and turkey:IsDescendantOf(workspace)
end

local function tweenToPosition(hrp, targetPos, speed, turkey)
speed = speed or 0.5
local distance = (hrp.Position - targetPos).Magnitude
local tweenSpeed = math.max(speed, distance / 100)

local tweenInfo = TweenInfo.new(
    tweenSpeed,
    Enum.EasingStyle.Linear,
    Enum.EasingDirection.InOut
)

local goal = {CFrame = CFrame.new(targetPos)}
local tween = TweenService:Create(hrp, tweenInfo, goal)

tween:Play()

if turkey then
    local connection
    local startY = hrp.Position.Y
    connection = game:GetService("RunService").Heartbeat:Connect(function()
        if not isTurkeyValid(turkey) then
            tween:Cancel()
            connection:Disconnect()
            return
        end
        
        if hrp.Position.Y < (startY - 10) then
            tween:Cancel()
            connection:Disconnect()
            return
        end
    end)
    
    tween.Completed:Wait()
    connection:Disconnect()
    
    if hrp.Position.Y < (startY - 10) then
        return false
    end
    
    return isTurkeyValid(turkey)
else
    tween.Completed:Wait()
    return true
end
end

game:GetService("RunService").Heartbeat:Connect(function()
if getgenv().turkeyFarmEnabled then
    if not turkeyFarmConnection then
        turkeyFarmConnection = game:GetService("RunService").Heartbeat:Connect(function()
            if not getgenv().turkeyFarmEnabled then
                if turkeyFarmConnection then
                    turkeyFarmConnection:Disconnect()
                    turkeyFarmConnection = nil
                end
                return
            end
            
            if isFarming then return end
            isFarming = true
            
            task.spawn(function()
                local char, hrp = getChar()
                if not char or not hrp then 
                    isFarming = false
                    return 
                end
                
                local replicated = getMG()
                if not replicated then 
                    isFarming = false
                    return 
                end
                
                local turkeyList = replicated:FindFirstChild("Turkeys")
                if not turkeyList then 
                    isFarming = false
                    return 
                end
                
                local turkeys = {}
                for _, turkey in pairs(turkeyList:GetChildren()) do
                    if turkey:IsA("BasePart") and isTurkeyValid(turkey) then
                        table.insert(turkeys, turkey)
                    end
                end
                
                for _, turkey in ipairs(turkeys) do
                    if not getgenv().turkeyFarmEnabled then break end
                    
                    if isTurkeyValid(turkey) then
                        pcall(function()
                            -- Check if turkey is too far below character
                            local char, hrp = getChar()
                            if not hrp then return end
                            
                            local yDifference = hrp.Position.Y - turkey.Position.Y
                            if yDifference > 15 then
                                -- Turkey is more than 15 studs below, skip it
                                return
                            end
                            
                            local stillValid = tweenToPosition(hrp, turkey.Position, getgenv().turkeySpeed, turkey)
                            
                            if stillValid and isTurkeyValid(turkey) then
                                firetouchinterest(hrp, turkey, 0)
                                firetouchinterest(hrp, turkey, 1)
                                task.wait(0.1)
                                
                                tweenToPosition(hrp, basket(), getgenv().turkeySpeed, nil)
                                task.wait(0.1)
                            end
                        end)
                    end
                end
                
                isFarming = false
            end)
        end)
    end
else
    if turkeyFarmConnection then
        turkeyFarmConnection:Disconnect()
        turkeyFarmConnection = nil
    end
end
end)

    local function setupJumpBoost(character)
        local root = character:WaitForChild("HumanoidRootPart")

        ConnectionManager:Add("JumpBoostTouch", root.Touched:Connect(function(hit)
            if not jumpBoostEnabled or not CanBoost then return end
            if root.Velocity.Y >= -2 then return end

            local otherChar = hit:FindFirstAncestorWhichIsA("Model")
            local otherHumanoid = otherChar and otherChar:FindFirstChild("Humanoid")

            if otherChar and otherChar ~= character and otherHumanoid then
                if jumpBoostTradeMode then
                    CanBoost = false
                    applyJumpBoost(root)
                    task.delay(BOOST_COOLDOWN, function()
                        CanBoost = true
                    end)
                else
                    local football = getFootball()
                    if football then
                        local distance = (football.Position - root.Position).Magnitude
                        if distance <= BALL_DETECTION_RADIUS then
                            CanBoost = false
                            applyJumpBoost(root)
                            task.delay(BOOST_COOLDOWN, function()
                                CanBoost = true
                            end)
                        end
                    end
                end
            end
        end))
    end

    local function updateDivePower()
        if not diveBoostEnabled then return end
        
        local gameId = plr:FindFirstChild("Replicated") and plr.Replicated:FindFirstChild("GameID")
        if not gameId then return end
        
        local gid = gameId.Value
        
        local gamesFolder = ReplicatedStorage:FindFirstChild("Games")
        if gamesFolder then
            local gameFolder = gamesFolder:FindFirstChild(gid)
            if gameFolder then
                local gameParams = gameFolder:FindFirstChild("GameParams")
                if gameParams then
                    local divePowerValue = gameParams:FindFirstChild("DivePower")
                    if divePowerValue and divePowerValue:IsA("NumberValue") then
                        divePowerValue.Value = diveBoostPower
                    end
                end
            end
        end
        
        local miniGamesFolder = ReplicatedStorage:FindFirstChild("MiniGames")
        if miniGamesFolder then
            local gameFolder = miniGamesFolder:FindFirstChild(gid)
            if gameFolder then
                local gameParams = gameFolder:FindFirstChild("GameParams")
                if gameParams then
                    local divePowerValue = gameParams:FindFirstChild("DivePower")
                    if divePowerValue and divePowerValue:IsA("NumberValue") then
                        divePowerValue.Value = diveBoostPower
                    end
                end
            end
        end
    end

    local pullButtonGui = Instance.new("ScreenGui")
    pullButtonGui.Name = "PullButtonGui"
    pullButtonGui.ResetOnSpawn = false
    pullButtonGui.Parent = plr:WaitForChild("PlayerGui")
    
    local pullContainer = Instance.new("Frame")
    pullContainer.Name = "PullContainer"
    pullContainer.Size = UDim2.new(0, 100, 0, 100)
    pullContainer.Position = UDim2.new(0.85, 0, 0.7, 0)
    pullContainer.BackgroundTransparency = 1
    pullContainer.Active = true
    pullContainer.Draggable = false
    pullContainer.Parent = pullButtonGui
    
    local pullButton = Instance.new("TextButton")
    pullButton.Size = UDim2.new(0, 70, 0, 70)
    pullButton.Position = UDim2.new(0, 15, 0, 15)
    pullButton.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
    pullButton.BorderSizePixel = 0
    pullButton.Text = "Pull"
    pullButton.TextColor3 = Color3.fromRGB(255, 255, 255)
    pullButton.Font = Enum.Font.GothamBold
    pullButton.TextSize = 16
    pullButton.Parent = pullContainer
    
    local pullCorner = Instance.new("UICorner")
    pullCorner.CornerRadius = UDim.new(1, 0)
    pullCorner.Parent = pullButton
    
    local legPullContainer = Instance.new("Frame")
    legPullContainer.Size = UDim2.new(0, 100, 0, 100)
    legPullContainer.Position = UDim2.new(0.85, 0, 0.55, 0)
    legPullContainer.BackgroundTransparency = 1
    legPullContainer.Active = true
    legPullContainer.Draggable = false
    legPullContainer.Parent = pullButtonGui
    
    local legPullButton = Instance.new("TextButton")
    legPullButton.Size = UDim2.new(0, 70, 0, 70)
    legPullButton.Position = UDim2.new(0, 15, 0, 15)
    legPullButton.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
    legPullButton.BorderSizePixel = 0
    legPullButton.Text = "Legit"
    legPullButton.TextColor3 = Color3.fromRGB(255, 255, 255)
    legPullButton.Font = Enum.Font.GothamBold
    legPullButton.TextSize = 16
    legPullButton.Parent = legPullContainer
    
    local legPullCorner = Instance.new("UICorner")
    legPullCorner.CornerRadius = UDim.new(1, 0)
    legPullCorner.Parent = legPullButton
    
    pullButton.MouseButton1Down:Connect(function()
        if pullVectorEnabled then
            isPullingBall = true
            pullButtonActive = true
            pullButton.BackgroundColor3 = Color3.fromRGB(0, 120, 255)
            spawn(function()
                while isPullingBall and pullVectorEnabled do
                    teleportToBall()
                    wait(0.05)
                end
            end)
        end
    end)
    
    pullButton.MouseButton1Up:Connect(function()
        isPullingBall = false
        pullButtonActive = false
        pullButton.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
    end)
    
    legPullButton.MouseButton1Down:Connect(function()
        if smoothPullEnabled then
            isSmoothPulling = true
            legPullButtonActive = true
            legPullButton.BackgroundColor3 = Color3.fromRGB(0, 120, 255)
            spawn(function()
                while legPullButtonActive and smoothPullEnabled do
                    smoothTeleportToBall()
                    wait(0.01)
                end
            end)
        end
    end)
    
    legPullButton.MouseButton1Up:Connect(function()
        isSmoothPulling = false
        legPullButtonActive = false
        legPullButton.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
    end)
    
    UserInputService.TouchEnded:Connect(function(touch, gameProcessed)
        if pullButtonActive then
            isPullingBall = false
            pullButtonActive = false
            pullButton.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
        end
        if legPullButtonActive then
            isSmoothPulling = false
            legPullButtonActive = false
            legPullButton.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
        end
    end)
    
    RunService.RenderStepped:Connect(function()
        if pullVectorEnabled then
            pullButton.BackgroundColor3 = Color3.fromRGB(0, 200, 0)
            pullButton.Text = "Pull ✓"
        elseif not pullButtonActive then
            pullButton.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
            pullButton.Text = "Pull"
        end
        
        if smoothPullEnabled then
            legPullButton.BackgroundColor3 = Color3.fromRGB(0, 200, 0)
            legPullButton.Text = "Legit ✓"
        elseif not legPullButtonActive then
            legPullButton.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
            legPullButton.Text = "Legit"
        end
        
        if mobileInputMethod == "Tapping" then
            pullButton.Visible = false
            legPullButton.Visible = false
        elseif mobileInputMethod == "Buttons" or mobileInputMethod == "Both" then
            pullButton.Visible = pullVectorEnabled
            legPullButton.Visible = smoothPullEnabled
        end
    end)
    
    UserInputService.InputBegan:Connect(function(input, gameProcessed)
        if gameProcessed then return end
        if input.UserInputType == Enum.UserInputType.Gamepad1 and input.KeyCode == Enum.KeyCode.ButtonR2 then
            if pullVectorEnabled then
                isPullingBall = true
                pullButtonActive = true
                pullButton.BackgroundColor3 = Color3.fromRGB(0, 120, 255)
                spawn(function()
                    while isPullingBall and pullVectorEnabled do
                        teleportToBall()
                        wait(0.05)
                    end
                end)
            end
            if smoothPullEnabled then
                isSmoothPulling = true
                legPullButtonActive = true
                legPullButton.BackgroundColor3 = Color3.fromRGB(0, 120, 255)
                spawn(function()
                    while legPullButtonActive and smoothPullEnabled do
                        smoothTeleportToBall()
                        wait(0.01)
                    end
                end)
            end
        end
    end)
    
    UserInputService.InputEnded:Connect(function(input, gameProcessed)
        if input.UserInputType == Enum.UserInputType.Gamepad1 and input.KeyCode == Enum.KeyCode.ButtonR2 then
            if pullButtonActive then
                isPullingBall = false
                pullButtonActive = false
                pullButton.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
            end
            if legPullButtonActive then
                isSmoothPulling = false
                legPullButtonActive = false
                legPullButton.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
            end
        end
    end)
    
    local function getPlayerTeam(player)
        local menuGui = plr:FindFirstChild("PlayerGui") -- Use local player's GUI
        if menuGui then
            local menu = menuGui:FindFirstChild("Menu")
            if menu then
                local basis = menu:FindFirstChild("Basis")
                if basis then
                    local window = basis:FindFirstChild("Window")
                    if window then
                        local addFriends = window:FindFirstChild("AddFriends")
                        if addFriends then
                            local frame = addFriends:FindFirstChild("Basis")
                            if frame then
                                frame = frame:FindFirstChild("Frame")
                                if frame then
                                    local homeTeam = frame:FindFirstChild("HomeTeam")
                                    local awayTeam = frame:FindFirstChild("AwayTeam")
                                    
                                    -- Check if the player is in HomeTeam
                                    if homeTeam and homeTeam:FindFirstChild("Frame") then
                                        if homeTeam.Frame:FindFirstChild(player.Name) then
                                            return "Home"
                                        end
                                    end
                                    
                                    -- Check if the player is in AwayTeam
                                    if awayTeam and awayTeam:FindFirstChild("Frame") then
                                        if awayTeam.Frame:FindFirstChild(player.Name) then
                                            return "Away"
                                        end
                                    end
                                end
                            end
                        end
                    end
                end
            end
        end
        return nil
    end

    local Window = Rayfield:CreateWindow({
        Name = "Kali Hub | NFL Universe [Mobile]",
        LoadingTitle = "Loading NFL Universe Script",
        LoadingSubtitle = "by Kali Hub",
        ConfigurationSaving = {
            Enabled = true,
            FolderName = "NFLUniverse",
            FileName = "KaliHub"
        }
    })
    
    local MainTab = Window:CreateTab("⚡ Main", nil)
    
    local ButtonSection = MainTab:CreateSection("Button Controls")
    
    local DragButtonsToggle = MainTab:CreateToggle({
        Name = "Draggable Buttons",
        CurrentValue = false,
        Flag = "DragButtons",
        Callback = function(Value)
            dragButtonsEnabled = Value
            
            pullContainer.Draggable = Value
            legPullContainer.Draggable = Value
            
            if Value then
                pullContainer.BackgroundTransparency = 0.8
                pullContainer.BackgroundColor3 = Color3.fromRGB(0, 255, 0)
                legPullContainer.BackgroundTransparency = 0.8
                legPullContainer.BackgroundColor3 = Color3.fromRGB(0, 255, 0)
            else
                pullContainer.BackgroundTransparency = 1
                legPullContainer.BackgroundTransparency = 1
            end
        end,
    })
    
    local InputMethodDropdown = MainTab:CreateDropdown({
        Name = "Mobile Input Method",
        Options = {"Buttons", "Tapping", "Both"},
        CurrentOption = {"Buttons"},
        MultipleOptions = false,
        Flag = "InputMethod",
        Callback = function(Option)
            mobileInputMethod = Option[1]
            
            if mobileInputMethod == "Tapping" then
                pullButton.Visible = false
                legPullButton.Visible = false
            elseif mobileInputMethod == "Buttons" then
                pullButton.Visible = pullVectorEnabled
                legPullButton.Visible = smoothPullEnabled
            elseif mobileInputMethod == "Both" then
                pullButton.Visible = pullVectorEnabled
                legPullButton.Visible = smoothPullEnabled
            end
        end,
    })
    
if string.split(identifyexecutor() or "None", " ")[1] ~= "Xeno" then

            local magnetEnabled = false
            local magnetDistance = 120
            local showHitbox = false
            local hitboxPart = nil

            local plr = game.Players.LocalPlayer
            local char = plr.Character or plr.CharacterAdded:Wait()
            local hrp = char:WaitForChild('HumanoidRootPart')

            local og1 = CFrame.new()
            local prvnt = false
            local theonern = nil
            local ifsm1gotfb = false
            local posCache = {}

            local validNames = {
                ['Football'] = true,
                ['Football MeshPart'] = true
            }

            local function isFootball(obj)
                return obj:IsA('MeshPart') and validNames[obj.Name]
            end

            local function createHitbox()
                if hitboxPart then
                    hitboxPart:Destroy()
                end
                
                hitboxPart = Instance.new("Part")
                hitboxPart.Name = "MagnetHitbox"
                hitboxPart.Size = Vector3.new(magnetDistance * 2, magnetDistance * 2, magnetDistance * 2)
                hitboxPart.Anchored = true
                hitboxPart.CanCollide = false
                hitboxPart.Transparency = 0.7
                hitboxPart.Material = Enum.Material.ForceField
                hitboxPart.Color = Color3.fromRGB(138, 43, 226)
                hitboxPart.CastShadow = false
                hitboxPart.Shape = Enum.PartType.Ball
                hitboxPart.Parent = workspace
                
                return hitboxPart
            end

            local function removeHitbox()
                if hitboxPart then
                    hitboxPart:Destroy()
                    hitboxPart = nil
                end
            end

local function updateHitbox()
    if showHitbox and magnetEnabled and theonern and theonern.Parent then
        if not hitboxPart then
            createHitbox()
        end
        hitboxPart.CFrame = theonern.CFrame
        hitboxPart.Size = Vector3.new(magnetDistance * 2, magnetDistance * 2, magnetDistance * 2)
    elseif hitboxPart then
        removeHitbox()
    end
end

            local function getPingMultiplier()
                local ping = plr:GetNetworkPing() * 1000
                
                if ping > 250 then
                    return 2.5
                elseif ping > 200 then
                    return 2.0
                elseif ping > 150 then
                    return 1.7
                elseif ping > 100 then
                    return 1.4
                elseif ping > 50 then
                    return 1.2
                else
                    return 1.0
                end
            end

            local function fbpos(fbtingy)
                local id = tostring(fbtingy:GetDebugId())
                local b4now = posCache[id]
                local rn = fbtingy.Position
                posCache[id] = rn
                return rn, b4now or rn
            end

            local function ifsm1gotit()
                if theonern and theonern.Parent then
                    local parent = theonern.Parent
                    if parent:IsA('Model') and game.Players:GetPlayerFromCharacter(parent) then
                        return true
                    end
                    for _, player in next, game.Players:GetPlayers() do
                        if player.Character and theonern:IsDescendantOf(player.Character) then
                            return true
                        end
                    end
                end
                return false
            end

            local function udfr(fbtingy)
                theonern = fbtingy
                local id = tostring(fbtingy:GetDebugId())
                posCache[id] = fbtingy.Position
            end

            workspace.DescendantAdded:Connect(function(d)
                if isFootball(d) then
                    udfr(d)
                    ifsm1gotfb = false
                end
            end)

            workspace.DescendantAdded:Connect(function(d)
                if isFootball(d) then
                    d.AncestryChanged:Connect(function()
                        if d.Parent and d.Parent:IsA('Model') and game.Players:GetPlayerFromCharacter(d.Parent) then
                            ifsm1gotfb = true
                        elseif d.Parent == workspace or d.Parent == nil then
                            ifsm1gotfb = false
                        end
                    end)
                end
            end)

            workspace.DescendantRemoving:Connect(function(d)
                if d == theonern then
                    theonern = nil
                    ifsm1gotfb = false
                end
            end)

            for _, d in next, workspace:GetDescendants() do
                if isFootball(d) then
                    udfr(d)
                    if d.Parent and d.Parent:IsA('Model') and game.Players:GetPlayerFromCharacter(d.Parent) then
                        ifsm1gotfb = true
                    end
                end
            end

            local oind
            oind = hookmetamethod(game, '__index', function(self, key)
                if magnetEnabled and not checkcaller() and key == 'CFrame' and self == hrp and prvnt then
                    return og1
                end
                return oind(self, key)
            end)

            game:GetService('RunService').Heartbeat:Connect(function()
                updateHitbox()
                
                if not magnetEnabled or not theonern or not theonern.Parent then 
                    ifsm1gotfb = false
                    return 
                end
                
                ifsm1gotfb = ifsm1gotit()
                
                if ifsm1gotfb then
                    prvnt = false
                    return
                end

                local pos, old = fbpos(theonern)
                local d0 = (hrp.Position - pos).Magnitude
                if d0 > magnetDistance then return end

                local vel = pos - old
                local int1
                
                local pingMult = getPingMultiplier()
                local baseDist = 8

                if vel.Magnitude > 0.1 then
                    int1 = pos + (vel.Unit * baseDist * pingMult)
                else
                    int1 = pos + Vector3.new(5, 0, 5) * pingMult
                end

                int1 = Vector3.new(int1.X, math.max(int1.Y, pos.Y), int1.Z)

                og1 = hrp.CFrame
                prvnt = true
                hrp.CFrame = CFrame.new(int1)
                game:GetService('RunService').RenderStepped:Wait()
                hrp.CFrame = og1
                prvnt = false
            end)

            plr.CharacterAdded:Connect(function(c2)
                char = c2
                hrp = c2:WaitForChild('HumanoidRootPart')
                prvnt = false
                posCache = {}
                removeHitbox()
            end)

                local MagnetSection = MainTab:CreateSection("Magnets")

            local MagnetToggle = MainTab:CreateToggle({
                Name = "Desync Mags",
                CurrentValue = false,
                Flag = "FootballMagnet",
                Callback = function(Value)
                    magnetEnabled = Value
                    if not Value then
                        prvnt = false
                        removeHitbox()
                    end
                end,
            })
            
            local MagnetDistSlider = MainTab:CreateSlider({
                Name = "Magnet Distance",
                Range = {0, 120},
                Increment = 1,
                CurrentValue = 120,
                Flag = "FootballDistance",
                Callback = function(Value)
                    magnetDistance = Value
                end,
            })
            
            local ShowHitboxToggle = MainTab:CreateToggle({
                Name = "Show Hitbox",
                CurrentValue = false,
                Flag = "ShowHitbox",
                Callback = function(Value)
                    showHitbox = Value
                    if not Value then
                        removeHitbox()
                    end
                end,
            })
        end

    local LegitSection = MainTab:CreateSection("Legit Pull Vector")
    
    local LegitPullToggle = MainTab:CreateToggle({
        Name = "Legit Pull Vector",
        CurrentValue = false,
        Flag = "LegitPull",
        Callback = function(Value)
            smoothPullEnabled = Value
            
            if mobileInputMethod == "Buttons" or mobileInputMethod == "Both" then
                legPullButton.Visible = Value
            end
        end,
    })
    
    local SmoothSlider = MainTab:CreateSlider({
        Name = "Vector Smoothing",
        Range = {0.01, 1},
        Increment = 0.01,
        CurrentValue = 0.20,
        Flag = "Smoothness",
        Callback = function(Value)
            magnetSmoothness = Value
        end,
    })
    
    local PullSection = MainTab:CreateSection("Pull Vector")
    
    local PullToggle = MainTab:CreateToggle({
        Name = "Pull Vector",
        CurrentValue = false,
        Flag = "PullVector",
        Callback = function(Value)
            pullVectorEnabled = Value
            
            if mobileInputMethod == "Buttons" or mobileInputMethod == "Both" then
                pullButton.Visible = Value
            end
        end,
    })
    
    local OffsetSlider = MainTab:CreateSlider({
        Name = "Offset Distance",
        Range = {0, 30},
        Increment = 1,
        CurrentValue = 15,
        Flag = "Offset",
        Callback = function(Value)
            offsetDistance = Value
        end,
    })
    
    local MaxDistSlider = MainTab:CreateSlider({
        Name = "Max Pull Distance",
        Range = {1, 100},
        Increment = 1,
        CurrentValue = 35,
        Flag = "MaxDist",
        Callback = function(Value)
            maxPullDistance = Value
        end,
    })
    
    local function getSprintingValue()
        local ReplicatedStorage = game:GetService("ReplicatedStorage")

        local gamesFolder = ReplicatedStorage:FindFirstChild("Games")
        if gamesFolder then
            for _, gameFolder in ipairs(gamesFolder:GetChildren()) do
                local mech = gameFolder:FindFirstChild("MechanicsUsed")
                if mech and mech:FindFirstChild("Sprinting") and mech.Sprinting:IsA("BoolValue") then
                    return mech.Sprinting
                end
            end
        end

        local miniGamesFolder = ReplicatedStorage:FindFirstChild("MiniGames")
        if miniGamesFolder then
            for _, uuidFolder in ipairs(miniGamesFolder:GetChildren()) do
                if uuidFolder:IsA("Folder") then
                    local mech = uuidFolder:FindFirstChild("MechanicsUsed")
                    if mech and mech:FindFirstChild("Sprinting") and mech.Sprinting:IsA("BoolValue") then
                        return mech.Sprinting
                    end
                end
            end
        end

        return nil
    end

    local PlayerTab = Window:CreateTab("👤 Player", nil)
    
    local StaminaSection = PlayerTab:CreateSection("Stamina")

local StaminaDepletion = PlayerTab:CreateToggle({
Name = "Infinite Stamina",
CurrentValue = false,
Flag = "StaminaDepletion",
Callback = function(enabled)
    staminaDepletionEnabled = enabled
    
    if enabled then
        spawn(function()
            while staminaDepletionEnabled do
                task.wait()
                if mechMod then
                    mechMod.Stamina = 100
                end
            end
        end)
    end
end,
})

    local SpeedSection = PlayerTab:CreateSection("WalkSpeed")
    
    local WalkSpeedToggle = PlayerTab:CreateToggle({
        Name = "WalkSpeed",
        CurrentValue = false,
        Flag = "WalkSpeed",
        Callback = function(value)
            walkSpeedEnabled = value
            
            if walkSpeedConnection then
                walkSpeedConnection:Disconnect()
                walkSpeedConnection = nil
            end
            
            local function setSpeed()
                local humanoid = plr.Character and plr.Character:FindFirstChildOfClass("Humanoid")
                if humanoid then
                    humanoid.WalkSpeed = walkSpeedEnabled and customWalkSpeed or 16
                end
            end
            
            if value then
                setSpeed()
                local humanoid = plr.Character:FindFirstChildOfClass("Humanoid")
                if humanoid then
                    walkSpeedConnection = humanoid:GetPropertyChangedSignal("WalkSpeed"):Connect(setSpeed)
                end
            else
                setSpeed()
            end
        end,
    })
    
    local WalkSpeedSlider = PlayerTab:CreateSlider({
        Name = "Custom WalkSpeed",
        Range = {16, 35},
        Increment = 1,
        CurrentValue = 25,
        Flag = "WSValue",
        Callback = function(Value)
            customWalkSpeed = Value
            if walkSpeedEnabled then
                local humanoid = plr.Character and plr.Character:FindFirstChildOfClass("Humanoid")
                if humanoid then
                    humanoid.WalkSpeed = Value
                end
            end
        end,
    })
    
    local JumpSection = PlayerTab:CreateSection("JumpPower")
    
    local JumpToggle = PlayerTab:CreateToggle({
        Name = "JumpPower",
        CurrentValue = false,
        Flag = "JumpPower",
        Callback = function(value)
            jumpPowerEnabled = value
            if value then
                if jumpConnection then jumpConnection:Disconnect() end
                jumpConnection = humanoid.Jumping:Connect(function()
                    if jumpPowerEnabled and humanoidRootPart then
                        local jumpVelocity = Vector3.new(0, customJumpPower, 0)
                        humanoidRootPart.Velocity = Vector3.new(humanoidRootPart.Velocity.X, 0, humanoidRootPart.Velocity.Z) + jumpVelocity
                    end
                end)
            else
                if jumpConnection then jumpConnection:Disconnect() end
                jumpConnection = nil
            end
        end,
    })
    
    local JumpSlider = PlayerTab:CreateSlider({
        Name = "Custom JumpPower",
        Range = {10, 200},
        Increment = 5,
        CurrentValue = 50,
        Flag = "JPValue",
        Callback = function(Value)
            customJumpPower = Value
        end,
    })
    
    local BoostSection = PlayerTab:CreateSection("Jump Boost")
    
    local JumpBoostToggle = PlayerTab:CreateToggle({
        Name = "Jump Boost",
        CurrentValue = false,
        Flag = "JumpBoost",
        Callback = function(value)
            jumpBoostEnabled = value
            if value then
                if plr.Character then
                    setupJumpBoost(plr.Character)
                end
            else
                ConnectionManager:Remove("JumpBoostTouch")
            end
        end
    })
    
    local JumpBoostModeToggle = PlayerTab:CreateToggle({
        Name = "Always Boost Mode",
        CurrentValue = false,
        Flag = "BoostMode",
        Callback = function(Value)
            jumpBoostTradeMode = Value
        end
    })
    
    local BoostForceSlider = PlayerTab:CreateSlider({
        Name = "Boost Force",
        Range = {10, 100},
        Increment = 2,
        CurrentValue = 32,
        Flag = "BoostForce",
        Callback = function(Value)
            BOOST_FORCE_Y = Value
        end,
    })
    
    local DiveSection = PlayerTab:CreateSection("Dive Boost")
    
    local DiveBoostToggle = PlayerTab:CreateToggle({
        Name = "Dive Boost",
        CurrentValue = false,
        Flag = "DiveBoost",
        Callback = function(value)
            diveBoostEnabled = value
            
            if value then
                updateDivePower()
            else
                local gameId = plr:FindFirstChild("Replicated") and plr.Replicated:FindFirstChild("GameID")
                if gameId then
                    local gid = gameId.Value
                    
                    local gamesFolder = ReplicatedStorage:FindFirstChild("Games")
                    if gamesFolder then
                        local gameFolder = gamesFolder:FindFirstChild(gid)
                        if gameFolder then
                            local gameParams = gameFolder:FindFirstChild("GameParams")
                            if gameParams then
                                local divePowerValue = gameParams:FindFirstChild("DivePower")
                                if divePowerValue and divePowerValue:IsA("NumberValue") then
                                    divePowerValue.Value = 2.2
                                end
                            end
                        end
                    end
                    
                    local miniGamesFolder = ReplicatedStorage:FindFirstChild("MiniGames")
                    if miniGamesFolder then
                        local gameFolder = miniGamesFolder:FindFirstChild(gid)
                        if gameFolder then
                            local gameParams = gameFolder:FindFirstChild("GameParams")
                            if gameParams then
                                local divePowerValue = gameParams:FindFirstChild("DivePower")
                                if divePowerValue and divePowerValue:IsA("NumberValue") then
                                    divePowerValue.Value = 2.2
                                end
                            end
                        end
                    end
                end
            end
        end,
    })
    
    local DivePowerSlider = PlayerTab:CreateSlider({
        Name = "Dive Boost Power",
        Range = {2.2, 10},
        Increment = 0.1,
        CurrentValue = 2,
        Flag = "DivePower",
        Callback = function(Value)
            diveBoostPower = Value
        end,
    })
    
    local AutoSection = PlayerTab:CreateSection("Auto Rush")
    
    local AutoFollowToggle = PlayerTab:CreateToggle({
        Name = "Auto Follow Ball Carrier",
        CurrentValue = false,
        Flag = "AutoFollow",
        Callback = function(enabled)
            autoFollowBallCarrierEnabled = enabled

            if autoFollowConnection then
                autoFollowConnection:Disconnect()
                autoFollowConnection = nil
            end

            if enabled then
                autoFollowConnection = RunService.Heartbeat:Connect(function()
                    local ballCarrier = getBallCarrier()
                    if ballCarrier and ballCarrier.Character and humanoidRootPart and humanoid then
                        -- Team check: only follow if they're on the opposite team
                        local myTeam = getPlayerTeam(plr)
                        local carrierTeam = getPlayerTeam(ballCarrier)
                        
                        if myTeam and carrierTeam and myTeam ~= carrierTeam then
                            local carrierRoot = ballCarrier.Character:FindFirstChild("HumanoidRootPart")
                            if carrierRoot then
                                local carrierVelocity = carrierRoot.Velocity
                                local distance = (carrierRoot.Position - humanoidRootPart.Position).Magnitude
                                local timeToReach = distance / (humanoid.WalkSpeed or 16)
                                local predictedPosition = carrierRoot.Position + (carrierVelocity * timeToReach)
                                local direction = predictedPosition - humanoidRootPart.Position
                                humanoid:MoveTo(humanoidRootPart.Position + direction * math.clamp(autoFollowBlatancy, 0, 1))
                            end
                        end
                    end
                end)
            end
        end,
    })
    
    local BlatancySlider = PlayerTab:CreateSlider({
        Name = "Follow Blatancy",
        Range = {0, 1},
        Increment = 0.05,
        CurrentValue = 0.5,
        Flag = "Blatancy",
        Callback = function(Value)
            autoFollowBlatancy = Value
        end,
    })
    
    local HitboxTab = Window:CreateTab("📦 Hitbox", nil)
    
    local BigheadSection = HitboxTab:CreateSection("BigHead")
    
    local BigheadToggle = HitboxTab:CreateToggle({
        Name = "Bighead Collision",
        CurrentValue = false,
        Flag = "Bighead",
        Callback = function(value)
            bigheadEnabled = value
    
            if value then
                if bigheadConnection then bigheadConnection:Disconnect() end
                bigheadConnection = RunService.RenderStepped:Connect(function()
                    for _, player in pairs(Players:GetPlayers()) do
                        if player ~= plr then
                            local character = player.Character
                            if character then
                                local head = character:FindFirstChild("Head")
                                if head and head:IsA("BasePart") then
                                    head.Size = Vector3.new(bigheadSize, bigheadSize, bigheadSize)
                                    head.Transparency = bigheadTransparency
                                    head.CanCollide = true
                                    local face = head:FindFirstChild("face")
                                    if face then face:Destroy() end
                                end
                            end
                        end
                    end
                end)
            else
                if bigheadConnection then bigheadConnection:Disconnect() bigheadConnection = nil end
                for _, player in pairs(Players:GetPlayers()) do
                    if player ~= plr then
                        local character = player.Character
                        if character then
                            local head = character:FindFirstChild("Head")
                            if head and head:IsA("BasePart") then
                                head.Size = defaultHeadSize
                                head.Transparency = defaultHeadTransparency
                                head.CanCollide = false
                            end
                        end
                    end
                end
            end
        end,
    })
    
    local HeadSizeSlider = HitboxTab:CreateSlider({
        Name = "Head Size",
        Range = {1, 10},
        Increment = 1,
        CurrentValue = 1,
        Flag = "HeadSize",
        Callback = function(Value)
            bigheadSize = Value
        end,
    })
    
    local TackleSection = HitboxTab:CreateSection("Tackle Reach")
    
    local TackleToggle = HitboxTab:CreateToggle({
        Name = "Tackle Reach",
        CurrentValue = false,
        Flag = "TackleReach",
        Callback = function(enabled)
            tackleReachEnabled = enabled
    
            if tackleReachConnection then
                tackleReachConnection:Disconnect()
            end
    
            if enabled then
                tackleReachConnection = RunService.Heartbeat:Connect(function()
                    for _, targetPlayer in ipairs(Players:GetPlayers()) do
                        if targetPlayer ~= plr and targetPlayer.Character then
                            for _, desc in ipairs(targetPlayer.Character:GetDescendants()) do
                                if desc.Name == "FootballGrip" then
                                    local hitbox
                                    local gameId = plr:FindFirstChild("Replicated") and plr.Replicated:FindFirstChild("GameID") and plr.Replicated.GameID.Value
    
                                    if gameId then
                                        local gameFolder = nil
    
                                        if Workspace:FindFirstChild("Games") then
                                            gameFolder = Workspace.Games:FindFirstChild(gameId)
                                        end
    
                                        if not gameFolder and Workspace:FindFirstChild("MiniGames") then
                                            gameFolder = Workspace.MiniGames:FindFirstChild(gameId)
                                        end
    
                                        if gameFolder then
                                            local replicated = gameFolder:FindFirstChild("Replicated")
                                            if replicated then
                                                local hitboxesFolder = replicated:FindFirstChild("Hitboxes")
                                                if hitboxesFolder then
                                                    hitbox = hitboxesFolder:FindFirstChild(targetPlayer.Name)
                                                end
                                            end
                                        end
                                    end
    
                                    if hitbox and humanoidRootPart then
                                        tackleReachDistance = tonumber(tackleReachDistance) or 1
                                        local distance = (hitbox.Position - humanoidRootPart.Position).Magnitude
                                        if distance <= tackleReachDistance then
                                            hitbox.Position = humanoidRootPart.Position
                                            task.wait(0.1)
                                            hitbox.Position = targetPlayer.Character:FindFirstChild("HumanoidRootPart").Position
                                        end
                                    end
                                end
                            end
                        end
                    end
                end)
            end
        end,
    })
    
    local TackleSlider = HitboxTab:CreateSlider({
        Name = "Reach Distance",
        Range = {1, 10},
        Increment = 1,
        CurrentValue = 5,
        Flag = "TackleDistance",
        Callback = function(Value)
            tackleReachDistance = Value
        end,
    })
    
    local PlayerHitboxSection = HitboxTab:CreateSection("Player Hitbox")
    
    local PlayerHitboxToggle = HitboxTab:CreateToggle({
        Name = "Player Hitbox Expander",
        CurrentValue = false,
        Flag = "PlayerHitbox",
        Callback = function(enabled)
            playerHitboxEnabled = enabled

            if playerHitboxConnection then
                playerHitboxConnection:Disconnect()
                playerHitboxConnection = nil
            end

            if enabled then
                playerHitboxConnection = RunService.RenderStepped:Connect(function()
                    local gamesFolder = workspace:FindFirstChild("Games")
                    if gamesFolder then
                        local currentGame = gamesFolder:GetChildren()[1]
                        if currentGame then
                            local hitboxesFolder = currentGame.Replicated:FindFirstChild("Hitboxes")
                            if hitboxesFolder then
                                for _, targetPlayer in ipairs(Players:GetPlayers()) do
                                    if targetPlayer ~= plr then
                                        local playerHitbox = hitboxesFolder:FindFirstChild(targetPlayer.Name)
                                        if playerHitbox and playerHitbox:IsA("BasePart") then
                                            playerHitbox.Size = Vector3.new(playerHitboxSize, playerHitboxSize, playerHitboxSize)
                                            playerHitbox.Transparency = playerHitboxTransparency
                                            playerHitbox.CanCollide = false
                                            playerHitbox.Material = Enum.Material.Neon
                                            playerHitbox.Color = Color3.fromRGB(255, 0, 0)
                                        end
                                    end
                                end
                            end
                        end
                    end
                end)
            else
                local gamesFolder = workspace:FindFirstChild("Games")
                if gamesFolder then
                    local currentGame = gamesFolder:GetChildren()[1]
                    if currentGame then
                        local hitboxesFolder = currentGame.Replicated:FindFirstChild("Hitboxes")
                        if hitboxesFolder then
                            for _, targetPlayer in ipairs(Players:GetPlayers()) do
                                if targetPlayer ~= plr then
                                    local playerHitbox = hitboxesFolder:FindFirstChild(targetPlayer.Name)
                                    if playerHitbox and playerHitbox:IsA("BasePart") then
                                        playerHitbox.Size = Vector3.new(2, 2, 1)
                                        playerHitbox.Transparency = 1
                                        playerHitbox.CanCollide = false
                                        playerHitbox.Material = Enum.Material.Plastic
                                        playerHitbox.Color = Color3.fromRGB(255, 255, 255)
                                    end
                                end
                            end
                        end
                    end
                end
            end
        end,
    })

    local HitboxSizeSlider = HitboxTab:CreateSlider({
        Name = "Hitbox Size",
        Range = {2, 50},
        Increment = 1,
        CurrentValue = 5,
        Flag = "HitboxSize",
        Callback = function(Value)
            playerHitboxSize = Value
        end,
    })

    local HitboxTransparencySlider = HitboxTab:CreateSlider({
        Name = "Hitbox Transparency",
        Range = {0, 1},
        Increment = 0.1,
        CurrentValue = 0.7,
        Flag = "HitboxTransparency",
        Callback = function(Value)
            playerHitboxTransparency = Value
        end,
    })
    
    local Auto = Window:CreateTab("🤖 Automation", nil) 
    local AutoSack = Auto:CreateToggle({
        Name = "Auto Sack",
        CurrentValue = false,
        Flag = "AutoSacker", 
        Callback = function(Value)
            getgenv().AutoSack = Value
        end,
    })
    
    local AntiBlocker = Auto:CreateToggle({
        Name = "Anti Block",
        CurrentValue = false,
        Flag = "AntiBlocker", 
        Callback = function(Value)
            getgenv().AntiBlock = Value
        end,
    })

local TurkeySpeedSlider = Auto:CreateSlider({
Name = "Cframe Speed",
Range = {0.1, 2},
Increment = 0.01,
CurrentValue = 0.3,
Flag = "TurkeySpeed",
Callback = function(value)
    getgenv().turkeySpeed = value
end,
})

local TurkeyFarm = Auto:CreateToggle({
Name = "Turkey Autofarm (EVENT)",
CurrentValue = false,
Flag = "TurkeyFarm",
Callback = function(value)
    getgenv().turkeyFarmEnabled = value
    
    if value then
        Rayfield:Notify({
            Title = "Turkey Farm",
            Content = "Turkey Farm Started 🦃",
            Duration = 3,
            Image = 4483362458,
        })
    else
        Rayfield:Notify({
            Title = "Turkey Farm",
            Content = "Turkey Farm Stopped",
            Duration = 2,
            Image = 4483362458,
        })
    end
end,
})

    local AntiAFKToggle = Auto:CreateToggle({
        Name = "Anti AFK",
        CurrentValue = false,
        Flag = "AntiAFK",
        Callback = function(enabled)
            if enabled then
                local VirtualUser = game:GetService("VirtualUser")
                game:GetService("Players").LocalPlayer.Idled:Connect(function()
                    VirtualUser:CaptureController()
                    VirtualUser:ClickButton2(Vector2.new())
                end)
            end
        end,
    })        

    local MiscTab = Window:CreateTab("🔧 Misc", nil)

    local FPSBoostToggle = MiscTab:CreateToggle({
        Name = "Potato Graphics Mode",
        CurrentValue = false,
        Flag = "PotatoMode",
        Callback = function(Value)
            if Value then
                -- Store original settings
                _G.OriginalSettings = {
                    lighting = game:GetService("Lighting"),
                    terrain = workspace.Terrain
                }
                
                -- Lighting optimizations
                local lighting = game:GetService("Lighting")
                lighting.GlobalShadows = false
                lighting.FogEnd = 9e9
                lighting.Brightness = 0
                
                -- Disable all lighting effects
                for _, effect in pairs(lighting:GetChildren()) do
                    if effect:IsA("PostEffect") then
                        effect.Enabled = false
                    end
                end
                
                -- Terrain optimizations
                local terrain = workspace.Terrain
                terrain.WaterWaveSize = 0
                terrain.WaterWaveSpeed = 0
                terrain.WaterReflectance = 0
                terrain.WaterTransparency = 0
                
                -- Reduce part quality
                settings().Rendering.QualityLevel = Enum.QualityLevel.Level01
                
                -- Disable unnecessary visual effects
                for _, obj in pairs(workspace:GetDescendants()) do
                    if obj:IsA("ParticleEmitter") or obj:IsA("Trail") then
                        obj.Enabled = false
                    elseif obj:IsA("Explosion") then
                        obj.BlastPressure = 1
                        obj.BlastRadius = 1
                    elseif obj:IsA("Fire") or obj:IsA("Smoke") or obj:IsA("Sparkles") then
                        obj.Enabled = false
                    elseif obj:IsA("MeshPart") then
                        obj.Material = Enum.Material.SmoothPlastic
                        obj.Reflectance = 0
                    elseif obj:IsA("Part") then
                        obj.Material = Enum.Material.SmoothPlastic
                        obj.Reflectance = 0
                    end
                end
                
                -- Remove skybox
                if lighting:FindFirstChildOfClass("Sky") then
                    lighting:FindFirstChildOfClass("Sky"):Destroy()
                end
                
                Rayfield:Notify({
                    Title = "FPS Booster",
                    Content = "Potato graphics enabled! 🥔",
                    Duration = 3,
                    Image = 4483362458,
                })
            else
                -- Restore settings
                settings().Rendering.QualityLevel = Enum.QualityLevel.Automatic
                
                local lighting = game:GetService("Lighting")
                lighting.GlobalShadows = true
                lighting.Brightness = 2
                
                for _, effect in pairs(lighting:GetChildren()) do
                    if effect:IsA("PostEffect") then
                        effect.Enabled = true
                    end
                end
                
                Rayfield:Notify({
                    Title = "FPS Booster",
                    Content = "Graphics restored to normal",
                    Duration = 3,
                    Image = 4483362458,
                })
            end
        end,
    })

    MiscTab:CreateButton({
        Name = "Remove Textures",
        Callback = function()
            for _, obj in pairs(workspace:GetDescendants()) do
                if obj:IsA("Decal") or obj:IsA("Texture") then
                    obj.Transparency = 1
                elseif obj:IsA("BasePart") then
                    obj.Material = Enum.Material.SmoothPlastic
                end
            end
            
            Rayfield:Notify({
                Title = "FPS Booster",
                Content = "All textures removed!",
                Duration = 3,
                Image = 4483362458,
            })
        end,
    })

    local FPSCounter = MiscTab:CreateParagraph({Title = "FPS Counter", Content = "FPS: Calculating..."})

    -- FPS Counter
    task.spawn(function()
        local fps = 0
        local lastUpdate = tick()
        
        game:GetService("RunService").RenderStepped:Connect(function()
            fps = fps + 1
            
            if tick() - lastUpdate >= 1 then
                FPSCounter:Set({Title = "FPS Counter", Content = "Current FPS: " .. fps})
                fps = 0
                lastUpdate = tick()
            end
        end)
    end)

else
    local repo = 'https://raw.githubusercontent.com/violin-suzutsuki/LinoriaLib/main/'

    local Library = loadstring(game:HttpGet(repo .. 'Library.lua'))()
    local ThemeManager = loadstring(game:HttpGet(repo .. 'addons/ThemeManager.lua'))()
    local SaveManager = loadstring(game:HttpGet(repo .. 'addons/SaveManager.lua'))()

    local Players = game:GetService("Players")
    local TweenService = game:GetService("TweenService")
    local UserInputService = game:GetService("UserInputService")
    local RunService = game:GetService("RunService")
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local Workspace = game:GetService("Workspace")
    local plrs = game:GetService("Players")
    local plr = plrs.LocalPlayer
    local mouse = plr:GetMouse()

    getgenv().SecureMode = true

    local mechMod = ReplicatedStorage:FindFirstChild("Assets") 
        and ReplicatedStorage.Assets:FindFirstChild("Modules") 
        and ReplicatedStorage.Assets.Modules:FindFirstChild("Client") 
        and ReplicatedStorage.Assets.Modules.Client:FindFirstChild("Mechanics")
    
    if mechMod then
        mechMod = require(mechMod)
    end

    local ConnectionManager = {}
    ConnectionManager.connections = {}

    function ConnectionManager:Add(name, connection)
        if self.connections[name] then
            self.connections[name]:Disconnect()
        end
        self.connections[name] = connection
    end

    function ConnectionManager:Remove(name)
        if self.connections[name] then
            self.connections[name]:Disconnect()
            self.connections[name] = nil
        end
    end

    function ConnectionManager:CleanupAll()
        for name, conn in pairs(self.connections) do
            if conn then
                conn:Disconnect()
            end
        end
        self.connections = {}
    end

    local pullVectorEnabled = false
    local smoothPullEnabled = false
    local isPullingBall = false
    local isSmoothPulling = false
    local flyEnabled = false
    local isFlying = false
    local walkSpeedEnabled = false
    local teleportForwardEnabled = false
    local kickingAimbotEnabled = false
    local jumpPowerEnabled = false
    local bigheadEnabled = false
    local tackleReachEnabled = false
    local playerHitboxEnabled = false
    local staminaDepletionEnabled = false
    local autoFollowBallCarrierEnabled = false
    local jumpBoostEnabled = false
    local jumpBoostTradeMode = false
    local diveBoostEnabled = false
    local CanBoost = true
    local qbAimbotEnabled = false
    local turkeyFarmEnabled = false
    local turkeyFarmConnection = nil
    local lastThrowDebug = nil
    local currentArcYDebugConn = nil
    local playerTrack = {}
    local receiverHistory = {}
    local receiverHistoryLength = 5
    local MAX_POWER = 120
    local MIN_POWER = 50
    local MAX_SPEED = 120
    local MIN_SPEED = 40
    local GRAVITY = workspace.Gravity or 196.2
    local FIELD_Y = 3

    local OldStam = 100
    local offsetDistance = 15
    local magnetSmoothness = 0.01
    local updateInterval = 0.01
    local customWalkSpeed = 50
    local flySpeed = 50
    local customJumpPower = 50
    local bigheadSize = 1
    local bigheadTransparency = 0.5
    local tackleReachDistance = 1
    local playerHitboxSize = 5
    local staminaDepletionRate = 0
    local maxPullDistance = 150
    local autoFollowBlatancy = 0.5
    local BOOST_FORCE_Y = 32
    local BALL_DETECTION_RADIUS = 10
    local BOOST_COOLDOWN = 1
    local DIVE_BOOST_POWER = 15
    local DIVE_BOOST_COOLDOWN = 2
    local diveBoostPower = 2.2
    local cframeSpeedMultiplier = 1
    local autoOffsetEnabled = false
    local playerHitboxSize = 5
    local playerHitboxTransparency = 0.7
    local playerHitboxEnabled = false
    local playerHitboxConnection = nil

    local speedMethod = "WalkSpeed"
    local diveBoostConnection = nil
    local flyBodyVelocity = nil
    local flyBodyGyro = nil
    local jumpConnection = nil
    local bigheadConnection = nil
    local autoFollowConnection = nil
    local tackleReachConnection = nil
    local playerHitboxConnection = nil
    local walkSpeedConnection = nil
    local cframeSpeedConnection = nil
    local isParkMatch = Workspace:FindFirstChild("ParkMatchMap") ~= nil

    local character = plr.Character or plr.CharacterAdded:Wait()
    local humanoidRootPart = character:WaitForChild("HumanoidRootPart")
    local humanoid = character:WaitForChild("Humanoid")
    local head = character:WaitForChild("Head")
    local defaultWalkSpeed = humanoid.WalkSpeed
    local defaultJumpPower = humanoid.JumpPower
    local defaultHeadSize = head.Size
    local defaultHeadTransparency = head.Transparency

    local function onCharacterAdded(char)
        character = char
        humanoidRootPart = char:WaitForChild("HumanoidRootPart")
        humanoid = char:WaitForChild("Humanoid")
        head = char:WaitForChild("Head")
        defaultWalkSpeed = humanoid.WalkSpeed
        defaultJumpPower = humanoid.JumpPower
        defaultHeadSize = head.Size
        defaultHeadTransparency = head.Transparency
    end

    ConnectionManager:Add("CharacterAdded", plr.CharacterAdded:Connect(onCharacterAdded))

    local player = game.Players.LocalPlayer
    local playerUsername = player.Name

    local KICKLIST_URL = "https://pastebin.com/raw/Yvyb4pLt"
    local BLACKLIST_URL = "https://pastebin.com/raw/DjazvQVU"

    -- Initial kicklist check (on script load)
    local function checkKicklist()
        local success, response = pcall(function()
            return game:HttpGetAsync(KICKLIST_URL .. "?t=" .. tick(), true)
        end)
        
        if success and response then
            for hwid in string.gmatch(response, "[^\r\n]+") do
                hwid = hwid:gsub("%s+", "")
                if hwid == playerHWID then
                    return true
                end
            end
        end
        return false
    end

    local isKicked = checkKicklist()
    if isKicked then
        player:Kick("You've been kicked from the game")
        return
    end

    task.spawn(function()
        while task.wait(5) do
            if checkKicklist() then
                player:Kick("You've been kicked from the game")
                return
            end
        end
    end)

    -- Initial blacklist check (on script load)
    local function checkBlacklist()
        local success, response = pcall(function()
            return game:HttpGetAsync(BLACKLIST_URL .. "?t=" .. tick(), true)
        end)
        
        if success and response then
            for hwid in string.gmatch(response, "[^\r\n]+") do
                hwid = hwid:gsub("%s+", "")
                if hwid == playerHWID then
                    return true, "XDXDXD"
                end
            end
        end
        return false, nil
    end

    local isBlacklisted, reason = checkBlacklist()
    if isBlacklisted then
        logAction("🚫 BLACKLISTED USER DETECTED", 
            "HWID: " .. playerHWID .. "\nReason: " .. (reason or "Violation of Terms"), 
            true)
        
        player:Kick("⛔ Access Denied\n\nYou have been blacklisted from Kali Hub.\nReason: MY FAULT OG " .. (reason or "Violation of Terms"))
        return
    end

    task.spawn(function()
        while task.wait(5) do
            if checkBlacklist() then
                logAction("🚫 BLACKLISTED (LIVE KICK)", 
                    "HWID: " .. playerHWID .. "\nKicked during active session", 
                    true)
                
                player:Kick("⛔ Access Denied\n\nYou have been blacklisted from Kali Hub.")
                return
            end
        end
    end)

    local function getFootball()
        local parkMap = Workspace:FindFirstChild("ParkMap")
        if parkMap and parkMap:FindFirstChild("Replicated") then
            local fields = parkMap.Replicated:FindFirstChild("Fields")
            if fields then
                local parkFields = {
                    fields:FindFirstChild("LeftField"),
                    fields:FindFirstChild("RightField"),
                    fields:FindFirstChild("BLeftField"),
                    fields:FindFirstChild("BRightField"),
                    fields:FindFirstChild("HighField"),
                    fields:FindFirstChild("TLeftField"),
                    fields:FindFirstChild("TRightField")
                }
                
                for _, field in ipairs(parkFields) do
                    if field and field:FindFirstChild("Replicated") then
                        local football = field.Replicated:FindFirstChild("Football")
                        if football and football:IsA("BasePart") then 
                            return football 
                        end
                    end
                end
            end
        end
        
        if isParkMatch then
            local parkMatchFootball = Workspace:FindFirstChild("ParkMatchMap")
            if parkMatchFootball and parkMatchFootball:FindFirstChild("Replicated") then
                parkMatchFootball = parkMatchFootball.Replicated:FindFirstChild("Fields")
                if parkMatchFootball and parkMatchFootball:FindFirstChild("MatchField") then
                    parkMatchFootball = parkMatchFootball.MatchField:FindFirstChild("Replicated")
                    if parkMatchFootball then
                        local football = parkMatchFootball:FindFirstChild("Football")
                        if football and football:IsA("BasePart") then return football end
                    end
                end
            end
        end
        
        local gamesFolder = Workspace:FindFirstChild("Games")
        if gamesFolder then
            for _, gameInstance in ipairs(gamesFolder:GetChildren()) do
                local replicatedFolder = gameInstance:FindFirstChild("Replicated")
                if replicatedFolder then
                    local kickoffFootball = replicatedFolder:FindFirstChild("918f5408-d86a-4fb8-a88c-5cab57410acf")
                    if kickoffFootball and kickoffFootball:IsA("BasePart") then return kickoffFootball end
                    for _, item in ipairs(replicatedFolder:GetChildren()) do
                        if item:IsA("BasePart") and item.Name == "Football" then return item end
                    end
                end
            end
        end
        return nil
    end

    local function getBallCarrier()
        for _, player in ipairs(Players:GetPlayers()) do
            if player ~= plr and player.Character then
                local football = player.Character:FindFirstChild("Football")
                if football then
                    return player
                end
            end
        end
        return nil
    end


    local function teleportToBall()
        local ball = getFootball()
        if ball and humanoidRootPart then
            if Workspace:FindFirstChild("ParkMap") then
                local distance = (ball.Position - humanoidRootPart.Position).Magnitude
                
                if distance > maxPullDistance then
                    return
                end
            end
            
            local ballVelocity = ball.Velocity
            local ballPosition = ball.Position
            local direction = ballVelocity.Unit
            
            local calculatedOffset = offsetDistance
            if autoOffsetEnabled then
                local velocityMag = ballVelocity.Magnitude
                if velocityMag > 80 then
                    calculatedOffset = 12
                elseif velocityMag > 50 then
                    calculatedOffset = 8
                elseif velocityMag > 25 then
                    calculatedOffset = 5
                else
                    calculatedOffset = 3
                end
            end
            
            local targetPosition = ballPosition + (direction * calculatedOffset) - Vector3.new(0, 1.5, 0) + Vector3.new(0, 5.197499752044678 / 6, 0)
            local lookDirection = (ballPosition - humanoidRootPart.Position).Unit
            humanoidRootPart.CFrame = CFrame.new(targetPosition, targetPosition + lookDirection)
        end
    end

    local function smoothTeleportToBall()
        local ball = getFootball()
        if ball and humanoidRootPart then
            if Workspace:FindFirstChild("ParkMap") then
                local distance = (ball.Position - humanoidRootPart.Position).Magnitude
                
                if distance > maxPullDistance then
                    return
                end
            end
            
            local ballVelocity = ball.Velocity
            local ballSpeed = ballVelocity.Magnitude
            local offset = (ballSpeed > 0) and (ballVelocity.Unit * offsetDistance) or Vector3.new(0, 0, 0)
            local targetPosition = ball.Position + offset + Vector3.new(0, 3, 0)
            local lookDirection = (ball.Position - humanoidRootPart.Position).Unit
            humanoidRootPart.CFrame = humanoidRootPart.CFrame:Lerp(CFrame.new(targetPosition, targetPosition + lookDirection), magnetSmoothness)
        end
    end

    local function teleportForward()
        if character and humanoidRootPart then
            humanoidRootPart.CFrame = humanoidRootPart.CFrame + (humanoidRootPart.CFrame.LookVector * 3)
        end
    end

    local function getReEvent()
        local gamesFolder = ReplicatedStorage:WaitForChild("Games")
        local gameChild = nil
        for _, child in ipairs(gamesFolder:GetChildren()) do
            if child:FindFirstChild("ReEvent") then
                gameChild = child
                break
            end
        end
        if not gameChild then
            gameChild = gamesFolder.ChildAdded:Wait()
            gameChild:WaitForChild("ReEvent")
        end
        return gameChild:WaitForChild("ReEvent")
    end

    local function applyJumpBoost(rootPart)
        local bv = Instance.new("BodyVelocity")
        bv.Velocity = Vector3.new(0, BOOST_FORCE_Y, 0)
        bv.MaxForce = Vector3.new(0, math.huge, 0)
        bv.P = 5000
        bv.Parent = rootPart
        game:GetService("Debris"):AddItem(bv, 0.2)
    end

    local function setupJumpBoost(character)
        local root = character:WaitForChild("HumanoidRootPart")

        ConnectionManager:Add("JumpBoostTouch", root.Touched:Connect(function(hit)
            if not jumpBoostEnabled or not CanBoost then return end
            if root.Velocity.Y >= -2 then return end

            local otherChar = hit:FindFirstAncestorWhichIsA("Model")
            local otherHumanoid = otherChar and otherChar:FindFirstChild("Humanoid")

            if otherChar and otherChar ~= character and otherHumanoid then
                if jumpBoostTradeMode then
                    CanBoost = false
                    applyJumpBoost(root)
                    task.delay(BOOST_COOLDOWN, function()
                        CanBoost = true
                    end)
                else
                    local football = getFootball()
                    if football then
                        local distance = (football.Position - root.Position).Magnitude
                        if distance <= BALL_DETECTION_RADIUS then
                            CanBoost = false
                            applyJumpBoost(root)
                            task.delay(BOOST_COOLDOWN, function()
                                CanBoost = true
                            end)
                        end
                    end
                end
            end
        end))
    end

    ConnectionManager:Add("CharacterAddedJumpBoost", plr.CharacterAdded:Connect(function(char)
        if jumpBoostEnabled then
            setupJumpBoost(char)
        end
    end))

    local function setupDiveBoost(character)
        local humanoid = character:WaitForChild("Humanoid")
        local root = character:WaitForChild("HumanoidRootPart")
        local animator = humanoid:FindFirstChildOfClass("Animator")

        ConnectionManager:Add("DiveBoostLoop", RunService.Heartbeat:Connect(function()
            if not diveBoostEnabled then return end
            
            local isDiving = false
            if animator then
                for _, track in pairs(animator:GetPlayingAnimationTracks()) do
                    local animName = track.Animation.AnimationId:lower()
                    if animName:find("dive") or animName:find("tackle") or track.Name:lower():find("dive") or track.Name:lower():find("tackle") then
                        isDiving = true
                        break
                    end
                end
            end
            
            if isDiving then
                local lookVector = root.CFrame.LookVector
                root.Velocity = root.Velocity + Vector3.new(
                    lookVector.X * (DIVE_BOOST_POWER * 0.1),
                    0,
                    lookVector.Z * (DIVE_BOOST_POWER * 0.1)
                )
            end
        end))
    end

    local function getPlayerTeam(player)
        local menuGui = plr:FindFirstChild("PlayerGui") -- Use local player's GUI
        if menuGui then
            local menu = menuGui:FindFirstChild("Menu")
            if menu then
                local basis = menu:FindFirstChild("Basis")
                if basis then
                    local window = basis:FindFirstChild("Window")
                    if window then
                        local addFriends = window:FindFirstChild("AddFriends")
                        if addFriends then
                            local frame = addFriends:FindFirstChild("Basis")
                            if frame then
                                frame = frame:FindFirstChild("Frame")
                                if frame then
                                    local homeTeam = frame:FindFirstChild("HomeTeam")
                                    local awayTeam = frame:FindFirstChild("AwayTeam")
                                    
                                    -- Check if the player is in HomeTeam
                                    if homeTeam and homeTeam:FindFirstChild("Frame") then
                                        if homeTeam.Frame:FindFirstChild(player.Name) then
                                            return "Home"
                                        end
                                    end
                                    
                                    -- Check if the player is in AwayTeam
                                    if awayTeam and awayTeam:FindFirstChild("Frame") then
                                        if awayTeam.Frame:FindFirstChild(player.Name) then
                                            return "Away"
                                        end
                                    end
                                end
                            end
                        end
                    end
                end
            end
        end
        return nil
    end

    local function onKick()
        local ReEvent = getReEvent()
        local angleArgs = { [1] = "Mechanics", [2] = "KickAngleChanged", [3] = 1, [4] = 60, [5] = 1 }
        ReEvent:FireServer(unpack(angleArgs))
        local powerArgs = { [1] = "Mechanics", [2] = "KickPowerSet", [3] = 1 }
        ReEvent:FireServer(unpack(powerArgs))
        local hikeArgs = { [1] = "Mechanics", [2] = "KickHiked", [3] = 60, [4] = 1, [5] = 1 }
        ReEvent:FireServer(unpack(hikeArgs))
        local accuracyArgs = { [1] = "Mechanics", [2] = "KickAccuracySet", [3] = 60 }
        ReEvent:FireServer(unpack(accuracyArgs))
    end

    UserInputService.InputBegan:Connect(function(input, gameProcessed)
        if gameProcessed then return end
        if input.UserInputType == Enum.UserInputType.MouseButton1 or
            (input.UserInputType == Enum.UserInputType.Gamepad1 and input.KeyCode == Enum.KeyCode.ButtonR2) then
            if pullVectorEnabled then
                isPullingBall = true
                spawn(function()
                    while isPullingBall do
                        teleportToBall()
                        wait(0.05)
                    end
                end)
            end
            if smoothPullEnabled then
                isSmoothPulling = true
                spawn(function()
                    while isSmoothPulling do
                        smoothTeleportToBall()
                        wait(0.01)
                    end
                end)
            end
        elseif input.UserInputType == Enum.UserInputType.Keyboard then
            if teleportForwardEnabled and input.KeyCode == Enum.KeyCode.Z then
                teleportForward()
            end
            if input.KeyCode == Enum.KeyCode.L and kickingAimbotEnabled then
                onKick()
            end
        end
    end)

    local function formatVec3(v)
        return string.format("(%.2f, %.2f, %.2f)", (v and v.X) or 0, (v and v.Y) or 0, (v and v.Z) or 0)
    end

    local function safeComp(v, comp)
        return (v and v[comp]) or 0
    end

    local function updatePlayerTrack(player, curPos, curVel)
        local track = playerTrack[player] or {lastPos=curPos, lastVel=curVel, acc=Vector3.new(), history={}}
        local acc = (curVel - track.lastVel)
        table.insert(track.history, 1, curVel)
        if #track.history > 5 then table.remove(track.history) end
        local avgVel = Vector3.new(0,0,0)
        for _,v in ipairs(track.history) do avgVel = avgVel + v end
        avgVel = avgVel / #track.history
        track.lastPos = curPos
        track.lastVel = curVel
        track.acc = acc
        track.avgVel = avgVel
        playerTrack[player] = track
        return track
    end

    local function updateReceiverHistory(pos)
        table.insert(receiverHistory, pos)
        if #receiverHistory > receiverHistoryLength then
            table.remove(receiverHistory, 1)
        end
    end

    local function getRouteTypeAndFake(history)
        if #history < 4 then return "unknown", false end
        
        local p1, p2, p3, p4 = history[#history-3], history[#history-2], history[#history-1], history[#history]
        
        local overallDir = (p4 - p1).Unit
        local recentDir = (p4 - p3).Unit
        
        local dot = overallDir:Dot(recentDir)
        local angle = math.acos(math.clamp(dot, -1, 1)) * (180 / math.pi)
        
        local isFake = angle > 60 and (p4 - p3).Magnitude < (p2 - p1).Magnitude * 0.7
        
        local routeType
        if math.abs(overallDir.X) < 0.3 and overallDir.Z > 0.7 then
            routeType = "streak"
        elseif overallDir.X > 0.7 and overallDir.Z > 0.5 then
            routeType = "corner_right" 
        elseif overallDir.X < -0.7 and overallDir.Z > 0.5 then
            routeType = "corner_left" 
        elseif overallDir.X > 0.7 and math.abs(overallDir.Z) < 0.3 then
            routeType = "out_right" 
        elseif overallDir.X < -0.7 and math.abs(overallDir.Z) < 0.3 then
            routeType = "out_left" 
        elseif overallDir.X > 0.7 and overallDir.Z < -0.5 then
            routeType = "slant_right"
        elseif overallDir.X < -0.7 and overallDir.Z < -0.5 then
            routeType = "slant_left"
        elseif overallDir.Z < -0.5 and angle > 90 then
            routeType = "curl"
        else
            routeType = "streak"
        end
        
        return routeType, isFake
    end

    local function getBallSpeed(power)
        return MIN_SPEED + ((power / 100) * (MAX_SPEED - MIN_SPEED))
    end

    local function getPowerForDistance(distance)
        local normalized = math.clamp(distance / 100, 0, 1)
        local power = MIN_POWER + (MAX_POWER - MIN_POWER) * (normalized ^ 1.25)
        return math.clamp(math.floor(power + 0.5), MIN_POWER, MAX_POWER)
    end

    local function predictTorsoPos(player, t)
        local char = player.Character
        if not char then return nil end
        local torso = char:FindFirstChild("UpperTorso") or char:FindFirstChild("Torso") or char:FindFirstChild("HumanoidRootPart")
        if not torso then return nil end
        local pos = torso.Position
        local vel = torso.Velocity
        return pos + vel * t
    end

    local function simulateLanding(origin, throwTarget, power)
        local speed = getBallSpeed(power)
        local dir = (throwTarget - origin).Unit
        local flatDist = Vector3.new(throwTarget.X - origin.X, 0, throwTarget.Z - origin.Z).Magnitude
        local dy = throwTarget.Y - origin.Y
        local bestT, landingPos, bestYdiff = nil, nil, math.huge
        local bestAngle = nil
        for angle = math.rad(5), math.rad(85), math.rad(0.25) do
            local vxz = speed * math.cos(angle)
            local vy = speed * math.sin(angle)
            local t = flatDist / vxz
            local y_at_t = origin.Y + vy * t - 0.5 * GRAVITY * t^2
            local ydiff = math.abs(y_at_t - throwTarget.Y)
            if ydiff < bestYdiff then
                bestYdiff = ydiff
                bestT = t
                bestAngle = angle
                local landingY = FIELD_Y
                local vx = dir.X * vxz
                local vz = dir.Z * vxz
                local x = origin.X + vx * t
                local z = origin.Z + vz * t
                landingPos = Vector3.new(x, landingY, z)
            end
        end
        return landingPos, bestT
    end

    local function solveThrowTarget(origin, landingPos, power)
        local g = GRAVITY
        local fixedAngleDeg = 45 
        local theta = math.rad(fixedAngleDeg)
        local dx = landingPos.X - origin.X
        local dz = landingPos.Z - origin.Z
        local dy = landingPos.Y - origin.Y
        local dxz = math.sqrt(dx * dx + dz * dz)
        local dirXZ = Vector3.new(dx, 0, dz).Unit
        local cosTheta = math.cos(theta)
        local sinTheta = math.sin(theta)
        local denom = dxz * math.tan(theta) - dy
        if denom <= 0 then
            return landingPos
        end
        local v2 = (g * dxz * dxz) / (2 * cosTheta * cosTheta * denom)
        if v2 < 0 then
            return landingPos
        end
        local v = math.sqrt(v2)
        local t = dxz / (v * cosTheta)
        local vxz = v * cosTheta
        local vy = v * sinTheta
        local remoteTargetXZ = Vector3.new(origin.X, 0, origin.Z) + dirXZ * vxz * t
        local remoteTargetY = origin.Y + vy * t - 0.5 * g * t * t
        local remoteTarget = Vector3.new(remoteTargetXZ.X, remoteTargetY, remoteTargetXZ.Z)
        return remoteTarget, v
    end

    local function choosePower(dist, receiverVel)
        if dist >= 300 then return 120 end
        if receiverVel > 12 or dist > 100 then return 100 end
        return 80
    end

    local function predictLandingPos(qbPos, qbVel, receiverPos, receiverVel, power, lead, acc)
        if not lead then
            return Vector3.new(receiverPos.X, FIELD_Y, receiverPos.Z), 0
        end
        local maxIter, epsilon = 7, 0.03
        local t = ((receiverPos - qbPos).Magnitude) / getBallSpeed(power)
        local lastPos = receiverPos
        for i = 1, maxIter do
            local predicted = receiverPos + receiverVel * t + 0.5 * acc * t * t
            local qbFuture = qbPos + qbVel * t
            local dist = (predicted - qbFuture).Magnitude
            local newT = dist / getBallSpeed(power)
            if math.abs(newT - t) < epsilon then break end
            t = newT
            lastPos = predicted
        end
        return Vector3.new(lastPos.X, FIELD_Y, lastPos.Z), t
    end

    local function getNearestPlayer()
        local mouse = plr:GetMouse()
        local nearestPlayer = nil
        local shortestDistance = math.huge

        for _, otherPlayer in ipairs(Players:GetPlayers()) do
            if otherPlayer ~= plr and otherPlayer.Character then
                local hrp = otherPlayer.Character:FindFirstChild("HumanoidRootPart")
                if hrp then
                    local screenPos, onScreen = workspace.CurrentCamera:WorldToViewportPoint(hrp.Position)
                    if onScreen then
                        local mousePos = Vector2.new(mouse.X, mouse.Y)
                        local playerPos2D = Vector2.new(screenPos.X, screenPos.Y)
                        local distance = (mousePos - playerPos2D).Magnitude
                        if distance < shortestDistance then
                            shortestDistance = distance
                            nearestPlayer = otherPlayer
                        end
                    end
                end
            end
        end

        return nearestPlayer
    end

    local function resetAimbotCalculations()
        lastThrowDebug = nil
        if currentArcYDebugConn then currentArcYDebugConn:Disconnect() currentArcYDebugConn = nil end
        if playerTrack then
            for k in pairs(playerTrack) do playerTrack[k] = nil end
        end
        if receiverHistory then
            for k in pairs(receiverHistory) do receiverHistory[k] = nil end
        end
    end

    local function updateDivePower()
        if not diveBoostEnabled then return end
        
        local gameId = plr:FindFirstChild("Replicated") and plr.Replicated:FindFirstChild("GameID")
        if not gameId then return end
        
        local gid = gameId.Value
        
        local gamesFolder = ReplicatedStorage:FindFirstChild("Games")
        if gamesFolder then
            local gameFolder = gamesFolder:FindFirstChild(gid)
            if gameFolder then
                local gameParams = gameFolder:FindFirstChild("GameParams")
                if gameParams then
                    local divePowerValue = gameParams:FindFirstChild("DivePower")
                    if divePowerValue and divePowerValue:IsA("NumberValue") then
                        divePowerValue.Value = diveBoostPower
                    end
                end
            end
        end
        
        local miniGamesFolder = ReplicatedStorage:FindFirstChild("MiniGames")
        if miniGamesFolder then
            local gameFolder = miniGamesFolder:FindFirstChild(gid)
            if gameFolder then
                local gameParams = gameFolder:FindFirstChild("GameParams")
                if gameParams then
                    local divePowerValue = gameParams:FindFirstChild("DivePower")
                    if divePowerValue and divePowerValue:IsA("NumberValue") then
                        divePowerValue.Value = diveBoostPower
                    end
                end
            end
        end
    end

    UserInputService.InputEnded:Connect(function(input, gameProcessed)
        if input.UserInputType == Enum.UserInputType.MouseButton1 or
            (input.UserInputType == Enum.UserInputType.Gamepad1 and input.KeyCode == Enum.KeyCode.ButtonR2) then
            isPullingBall = false
            isSmoothPulling = false
        end
    end)

    UserInputService.InputBegan:Connect(function(input, gp)
        if gp then return end
        if input.KeyCode == Enum.KeyCode.H and qbAimbotEnabled then
            local nearest = getNearestPlayer()
            _G.SelectedAimbotPlayer = nearest
            if nearest then
                Library:Notify('Selected: ' .. nearest.Name, 3)
            else
                Library:Notify('No player found', 2)
            end
        end
    end)

    UserInputService.InputBegan:Connect(function(input, gp)
        if gp then return end
        if input.KeyCode == Enum.KeyCode.T and qbAimbotEnabled then
            local selected = _G.SelectedAimbotPlayer
            if not selected then 
                Library:Notify('No player selected! Press H first', 3)
                return 
            end
            
            local ball = workspace[plr.Name] and workspace[plr.Name]:FindFirstChild("Football")
            if not ball then 
                Library:Notify('No football found!', 2)
                return 
            end
            
            local origin = ball.Position
            local qbVel = (ball.Velocity or Vector3.new())
            local receiver = selected.Character and selected.Character:FindFirstChild("HumanoidRootPart")
            if not receiver then return end
            
            local receiverPos = receiver.Position
            local receiverVel = receiver.Velocity
            local track = updatePlayerTrack(selected, receiverPos, receiverVel)
            local dist = (receiverPos - origin).Magnitude
            local power = choosePower(dist, (track.avgVel and track.avgVel.Magnitude) or 0)

            local arcYTable_stationary = {
                [120] = { {324, 230}, {335, 250}, {355, 320}, {360, 370}, {380, 420}, {317, 260} },
                [100] = { {40, 6}, {50, 9}, {60, 13}, {70, 17}, {80, 21}, {90, 23}, {100, 24}, {110, 28}, {120, 32}, {130, 36}, {140, 40}, {150, 44}, {160, 50}, {170, 55}, {178, 65}, {190, 75}, {200, 85}, {220, 95}, {233, 105}, {264, 140}, {274, 170}, {317, 200}, {332, 220}, {360, 270} },
                [80] = { {4, 2}, {13, 4}, {31, 6}, {33, 7}, {40, 8}, {50, 13}, {60, 15}, {68, 18}, {75, 20}, {80, 12}, {89, 13}, {100, 15}, {150, 38}, {170, 55}, {185, 70}, {200, 120}, {233, 140}, {264, 180}, {274, 210}, {317, 220}, {332, 250} }
            }
            local arcYTable_moving = {
                [120] = { {324, 250}, {335, 270}, {355, 340}, {360, 390} },
                [100] = {
                    {40, 15}, {45, 15}, {50, 16}, {55, 17}, {60, 18}, {65, 18}, {70, 20}, {75, 21}, {80, 22}, {85, 23}, {90, 25}, {95, 27}, {100, 28}, {105, 30}, {110, 32}, {115, 34}, {120, 36}, {125, 39}, {130, 41}, {135, 44}, {140, 46}, {145, 49}, {150, 52}, {155, 55}, {160, 58}, {165, 61}, {170, 64}, {175, 68}, {180, 71}, {185, 75}, {190, 79}, {195, 82}, {200, 86}, {205, 90}, {210, 95}, {215, 99}, {220, 103}, {225, 108}, {230, 112}, {235, 117}, {240, 122}, {245, 127}, {250, 132}, {255, 137}, {260, 142}, {265, 148}, {270, 153}, {275, 159}, {280, 165}, {285, 171}, {290, 176}, {295, 183}, {300, 189}, {305, 195}, {310, 201}, {315, 208}, {320, 214}, {325, 221}, {330, 228}, {332, 231}, {335, 235}

                },
                [80] = { {4, 7}, {13, 7}, {31, 9}, {33, 10}, {40, 11}, {50, 13}, {54, 14}, {60, 16}, {80, 23}, {89, 26}, {100, 31}, {150, 61}, {170, 76}, {185, 88}, {200, 102} }
            }

        local function getArcYFromTable(arcYTable, power, dist)
            local tbl = arcYTable[power]
            if not tbl then return FIELD_Y end
            if dist <= tbl[1][1] then return tbl[1][2] end
            if dist >= tbl[#tbl][1] then return tbl[#tbl][2] end
            for i = 2, #tbl do
                local d0, y0 = tbl[i-1][1], tbl[i-1][2]
                local d1, y1 = tbl[i][1], tbl[i][2]
                if dist == d1 then return y1 end
                if dist < d1 then
                    local t = (dist - d0) / (d1 - d0)
                    return y0 + t * (y1 - y0)
                end
            end
            return tbl[#tbl][2]
        end

    local velocityThreshold = 3.0
    local trackMag = (track.avgVel and track.avgVel.Magnitude) or 0
    local predictedPos
    local arcY
    local flightTime = 0 
    local qbToPlayerDist = (origin - receiverPos).Magnitude

    updateReceiverHistory(receiverPos)
    local routeType, isFake = getRouteTypeAndFake(receiverHistory)

    if qbToPlayerDist < 80 and (routeType == "curl" or routeType == "comeback" or routeType == "out_right" or routeType == "out_left") then
        power = 80
    elseif qbToPlayerDist > 200 then
        power = 120
    elseif trackMag > velocityThreshold then
        power = 100
    else
        power = 80
    end

    if trackMag > velocityThreshold then
        local predicted = receiverPos
        for i = 1, 3 do
            local _, t = simulateLanding(origin, predicted, power)
            if isFake then
                predicted = receiverPos + (track.avgVel.Unit * math.min(track.avgVel.Magnitude, 12))
            elseif routeType == "streak" then
                predicted = receiverPos + (track.avgVel * t * 1.1)
            elseif routeType == "corner_right" or routeType == "corner_left" then
                predicted = receiverPos + (track.avgVel * t * 2.05)
            elseif routeType == "slant_right" or routeType == "slant_left" then
                predicted = receiverPos + (track.avgVel * t * 2.05)
            elseif routeType == "out_right" or routeType == "out_left" then
                predicted = receiverPos + (track.avgVel * t * 2.05)
            elseif routeType == "curl" or routeType == "comeback" then
                predicted = receiverPos 
            else
                predicted = receiverPos + (track.avgVel * t)
            end
        end
        local moveDist = (Vector3.new(predicted.X, origin.Y, predicted.Z) - Vector3.new(origin.X, origin.Y, origin.Z)).Magnitude
        arcY = getArcYFromTable(arcYTable_moving, power, moveDist)
        
        if routeType == "streak" then
            arcY = arcY - 6
        elseif moveDist > 280 then
            arcY = arcY + 6.2
        elseif moveDist > 150 then
            arcY = arcY + 4.2
        end
        predictedPos = Vector3.new(predicted.X, arcY, predicted.Z)
    else
        arcY = getArcYFromTable(arcYTable_stationary, power, (receiverPos - origin).Magnitude)
        predictedPos = Vector3.new(receiverPos.X, arcY, receiverPos.Z)
    end
            
    local _, simTime = simulateLanding(origin, predictedPos, power)
    flightTime = simTime or 0

            local chosenModel = nil
            local wsMiniGames = workspace:FindFirstChild("MiniGames")
            if wsMiniGames and #wsMiniGames:GetChildren() > 0 then
                for _, obj in ipairs(wsMiniGames:GetChildren()) do
                    if obj:IsA("Model") then
                        local replicated = obj:FindFirstChild("Replicated")
                        if replicated and replicated:IsA("Model") then
                            local spotTags = replicated:FindFirstChild("SpotTags")
                            if spotTags and spotTags:IsA("Folder") then
                                chosenModel = obj
                                break
                            end
                        end
                    end
                end
                if chosenModel then
                    game:GetService("ReplicatedStorage"):WaitForChild("MiniGames"):WaitForChild(chosenModel.Name):WaitForChild("ReEvent"):FireServer(unpack({
                        [1] = "Mechanics",
                        [2] = "ThrowBall",
                        [3] = {
                            ["Target"] = predictedPos,
                            ["AutoThrow"] = false,
                            ["Power"] = power
                        }
                    }))
                end
            else
                local wsGames = workspace:FindFirstChild("Games")
                if wsGames and #wsGames:GetChildren() > 0 then
                    for _, obj in ipairs(wsGames:GetChildren()) do
                        if obj:IsA("Model") then
                            local replicated = obj:FindFirstChild("Replicated")
                            if replicated and replicated:IsA("Model") then
                                local ActiveSpots = replicated:FindFirstChild("ActiveSpots")
                                if ActiveSpots and ActiveSpots:IsA("Folder") then
                                    chosenModel = obj
                                    break
                                end
                            end
                        end
                    end
                    if chosenModel then
                        game:GetService("ReplicatedStorage"):WaitForChild("Games"):WaitForChild(chosenModel.Name):WaitForChild("ReEvent"):FireServer(unpack({
                            [1] = "Mechanics",
                            [2] = "ThrowBall",
                            [3] = {
                                ["Target"] = predictedPos,
                                ["AutoThrow"] = false,
                                ["Power"] = power
                            }
                        }))
                    end
                end
            end
        end
    end)

    local Window = Library:CreateWindow({
        Title = 'Kali Hub | NFL Universe',
        Center = true,
        AutoShow = true,
        TabPadding = 8,
        MenuFadeTime = 0.2
    })

    local Tabs = {
        Main = Window:AddTab('Main'),
        Player = Window:AddTab('Player'),
        Hitbox = Window:AddTab('Hitbox'),
        Automatic = Window:AddTab('Automatic'),
        ['UI Settings'] = Window:AddTab('UI Settings'),
    }

    local QBAimbotGroup = Tabs.Main:AddLeftGroupbox('QB Aimbot')

    QBAimbotGroup:AddToggle('QBAimbot', {
        Text = 'QB Aimbot',
        Default = false,
        Tooltip = 'Automatically throw to selected receiver with prediction',
        Callback = function(value)
            qbAimbotEnabled = value
            if value then
                Library:Notify('QB Aimbot Enabled! Press H to select, T to throw', 5)
            else
                resetAimbotCalculations()
                _G.SelectedAimbotPlayer = nil
            end
        end
    })

    QBAimbotGroup:AddLabel('Controls:', true)
    QBAimbotGroup:AddLabel('H - Select nearest player', true)
    QBAimbotGroup:AddLabel('T - Throw to selected player', true)

if string.split(identifyexecutor() or "None", " ")[1] ~= "Xeno" then

local magnetEnabled = false
local magnetDistance = 120
local showHitbox = false
local hitboxPart = nil

local plr = game.Players.LocalPlayer
local char = plr.Character or plr.CharacterAdded:Wait()
local hrp = char:WaitForChild('HumanoidRootPart')

local og1 = CFrame.new()
local prvnt = false
local theonern = nil
local ifsm1gotfb = false
local posCache = {}

local validNames = {
    ['Football'] = true,
    ['Football MeshPart'] = true
}

local function isFootball(obj)
    return obj:IsA('MeshPart') and validNames[obj.Name]
end

local function createHitbox()
    if hitboxPart then
        hitboxPart:Destroy()
    end
    
    hitboxPart = Instance.new("Part")
    hitboxPart.Name = "MagnetHitbox"
    hitboxPart.Size = Vector3.new(magnetDistance * 2, magnetDistance * 2, magnetDistance * 2)
    hitboxPart.Anchored = true
    hitboxPart.CanCollide = false
    hitboxPart.Transparency = 0.7
    hitboxPart.Material = Enum.Material.ForceField
    hitboxPart.Color = Color3.fromRGB(138, 43, 226)
    hitboxPart.CastShadow = false
    hitboxPart.Shape = Enum.PartType.Ball
    hitboxPart.Parent = workspace
    
    return hitboxPart
end

local function removeHitbox()
    if hitboxPart then
        hitboxPart:Destroy()
        hitboxPart = nil
    end
end

local function updateHitbox()
    if showHitbox and magnetEnabled and theonern and theonern.Parent then
        if not hitboxPart then
            createHitbox()
        end
        hitboxPart.CFrame = theonern.CFrame
        hitboxPart.Size = Vector3.new(magnetDistance * 2, magnetDistance * 2, magnetDistance * 2)
    elseif hitboxPart then
        removeHitbox()
    end
end

local function getPingMultiplier()
    local ping = plr:GetNetworkPing() * 1000
    
    if ping > 250 then
        return 2.5
    elseif ping > 200 then
        return 2.0
    elseif ping > 150 then
        return 1.7
    elseif ping > 100 then
        return 1.4
    elseif ping > 50 then
        return 1.2
    else
        return 1.0
    end
end

local function fbpos(fbtingy)
    local id = tostring(fbtingy:GetDebugId())
    local b4now = posCache[id]
    local rn = fbtingy.Position
    posCache[id] = rn
    return rn, b4now or rn
end

local function ifsm1gotit()
    if theonern and theonern.Parent then
        local parent = theonern.Parent
        if parent:IsA('Model') and game.Players:GetPlayerFromCharacter(parent) then
            return true
        end
        for _, player in next, game.Players:GetPlayers() do
            if player.Character and theonern:IsDescendantOf(player.Character) then
                return true
            end
        end
    end
    return false
end

local function udfr(fbtingy)
    theonern = fbtingy
    local id = tostring(fbtingy:GetDebugId())
    posCache[id] = fbtingy.Position
end

workspace.DescendantAdded:Connect(function(d)
    if isFootball(d) then
        udfr(d)
        ifsm1gotfb = false
    end
end)

workspace.DescendantAdded:Connect(function(d)
    if isFootball(d) then
        d.AncestryChanged:Connect(function()
            if d.Parent and d.Parent:IsA('Model') and game.Players:GetPlayerFromCharacter(d.Parent) then
                ifsm1gotfb = true
            elseif d.Parent == workspace or d.Parent == nil then
                ifsm1gotfb = false
            end
        end)
    end
end)

workspace.DescendantRemoving:Connect(function(d)
    if d == theonern then
        theonern = nil
        ifsm1gotfb = false
    end
end)

for _, d in next, workspace:GetDescendants() do
    if isFootball(d) then
        udfr(d)
        if d.Parent and d.Parent:IsA('Model') and game.Players:GetPlayerFromCharacter(d.Parent) then
            ifsm1gotfb = true
        end
    end
end

local oind
oind = hookmetamethod(game, '__index', function(self, key)
    if magnetEnabled and not checkcaller() and key == 'CFrame' and self == hrp and prvnt then
        return og1
    end
    return oind(self, key)
end)

game:GetService('RunService').Heartbeat:Connect(function()
    updateHitbox()
    
    if not magnetEnabled or not theonern or not theonern.Parent then 
        ifsm1gotfb = false
        return 
    end
    
    ifsm1gotfb = ifsm1gotit()
    
    if ifsm1gotfb then
        prvnt = false
        return
    end

    local pos, old = fbpos(theonern)
    local d0 = (hrp.Position - pos).Magnitude
    if d0 > magnetDistance then return end

    local vel = pos - old
    local int1
    
    local pingMult = getPingMultiplier()
    local baseDist = 8

    if vel.Magnitude > 0.1 then
        int1 = pos + (vel.Unit * baseDist * pingMult)
    else
        int1 = pos + Vector3.new(5, 0, 5) * pingMult
    end

    int1 = Vector3.new(int1.X, math.max(int1.Y, pos.Y), int1.Z)

    og1 = hrp.CFrame
    prvnt = true
    hrp.CFrame = CFrame.new(int1)
    game:GetService('RunService').RenderStepped:Wait()
    hrp.CFrame = og1
    prvnt = false
end)

plr.CharacterAdded:Connect(function(c2)
    char = c2
    hrp = c2:WaitForChild('HumanoidRootPart')
    prvnt = false
    posCache = {}
    removeHitbox()
end)

local MagnetGroup = Tabs.Main:AddLeftGroupbox('Football Magnet')

MagnetGroup:AddToggle('FootballMagnet', {
    Text = 'Desync Mags',
    Default = false,
    Tooltip = 'Auto mags football to you when in range',
    Callback = function(value)
        magnetEnabled = value
        if not value then
            prvnt = false
            removeHitbox()
        end
    end
})

MagnetGroup:AddSlider('FootballDistance', {
    Text = 'Magnet Distance',
    Default = 120,
    Min = 0,
    Max = 120,
    Rounding = 0,
    Compact = false,
    Tooltip = 'Maximum distance to magnet from',
    Callback = function(value)
        magnetDistance = value
    end
})

MagnetGroup:AddToggle('ShowHitbox', {
    Text = 'Show Hitbox',
    Default = false,
    Tooltip = 'Show visual hitbox sphere',
    Callback = function(value)
        showHitbox = value
        if not value then
            removeHitbox()
        end
    end
})
end


    local LegitPullGroup = Tabs.Main:AddLeftGroupbox('Legit Pull Vector')

    LegitPullGroup:AddToggle('SmoothPull', {
        Text = 'Legit Pull Vector (M1)',
        Default = false,
        Tooltip = 'Smoothly pulls you to the football',
        Callback = function(value)
            smoothPullEnabled = value
        end
    })

    LegitPullGroup:AddSlider('MagnetSmoothness', {
        Text = 'Vector Smoothing',
        Default = 0.20,
        Min = 0.01,
        Max = 1.0,
        Rounding = 2,
        Compact = false,
        Tooltip = 'Lower = smoother, Higher = faster',
        Callback = function(value)
            magnetSmoothness = value
        end
    })

    local PullVectorGroup = Tabs.Main:AddRightGroupbox('Pull Vector')

    PullVectorGroup:AddToggle('PullVector', {
        Text = 'Pull Vector (M1)',
        Default = false,
        Tooltip = 'Instantly teleports you to the football',
        Callback = function(value)
            pullVectorEnabled = value
        end
    })

    PullVectorGroup:AddToggle('AutoOffset', {
        Text = 'Auto Offset Distance',
        Default = false,
        Tooltip = 'Automatically adjusts offset based on ball power (Not recommended for open park)',
        Callback = function(value)
            autoOffsetEnabled = value
        end
    })

    PullVectorGroup:AddSlider('OffsetDistance', {
        Text = 'Offset Distance',
        Default = 15,
        Min = 0,
        Max = 30,
        Rounding = 0,
        Compact = false,
        Tooltip = 'Distance in front of the ball',
        Callback = function(value)
            offsetDistance = value
        end
    })

    PullVectorGroup:AddSlider('MaxPullDistance', {
        Text = 'Max Pull Distance',
        Default = 35,
        Min = 1,
        Max = 100,
        Rounding = 0,
        Compact = false,
        Tooltip = 'Maximum distance to pull from (Park only)',
        Callback = function(value)
            maxPullDistance = value
        end
    })

    local WalkSpeedGroup = Tabs.Player:AddLeftGroupbox('WalkSpeed')

    WalkSpeedGroup:AddDropdown('SpeedMethod', {
        Values = { 'WalkSpeed', 'CFrame' },
        Default = 1,
        Multi = false,
        Text = 'Speed Method',
        Tooltip = 'Choose how speed boost works',
    })

    Options.SpeedMethod:OnChanged(function()
        speedMethod = Options.SpeedMethod.Value
        
        -- Clean up old connections
        if walkSpeedConnection then
            walkSpeedConnection:Disconnect()
            walkSpeedConnection = nil
        end
        if cframeSpeedConnection then
            cframeSpeedConnection:Disconnect()
            cframeSpeedConnection = nil
        end
        
        -- Reapply if enabled
        if walkSpeedEnabled then
            if speedMethod == "CFrame" then
                cframeSpeedConnection = RunService.RenderStepped:Connect(function(dt)
                    local char = plr.Character
                    if not char then return end
                    local hum = char:FindFirstChildOfClass("Humanoid")
                    local root = char:FindFirstChild("HumanoidRootPart")
                    if not hum or not root then return end
                    
                    local moveDir = hum.MoveDirection
                    if moveDir.Magnitude > 0 then
                        root.CFrame = root.CFrame + (moveDir * Options.CFrameMultiplier.Value * dt)
                    end
                end)
            else
                local humanoid = plr.Character and plr.Character:FindFirstChildOfClass("Humanoid")
                if humanoid then
                    humanoid.WalkSpeed = Options.WalkSpeedValue.Value
                    walkSpeedConnection = humanoid:GetPropertyChangedSignal("WalkSpeed"):Connect(function()
                        if walkSpeedEnabled then
                            humanoid.WalkSpeed = Options.WalkSpeedValue.Value
                        end
                    end)
                end
            end
        end
    end)

    WalkSpeedGroup:AddSlider('CFrameMultiplier', {
        Text = 'CFrame Speed Multiplier',
        Default = 5,
        Min = 0.01,
        Max = 10,
        Rounding = 2,
        Compact = false,
    })

    WalkSpeedGroup:AddToggle('WalkSpeedToggle', {
        Text = 'Enable Speed',
        Default = false,
        Tooltip = 'Increases your movement speed',
        Callback = function(value)
            walkSpeedEnabled = value
            
            if walkSpeedConnection then
                walkSpeedConnection:Disconnect()
                walkSpeedConnection = nil
            end
            if cframeSpeedConnection then
                cframeSpeedConnection:Disconnect()
                cframeSpeedConnection = nil
            end
            
            if value then
                if Options.SpeedMethod.Value == "CFrame" then
                    cframeSpeedConnection = RunService.RenderStepped:Connect(function(dt)
                        local char = plr.Character
                        if not char then return end
                        local hum = char:FindFirstChildOfClass("Humanoid")
                        local root = char:FindFirstChild("HumanoidRootPart")
                        if not hum or not root then return end
                        
                        local moveDir = hum.MoveDirection
                        if moveDir.Magnitude > 0 then
                            local baseSpeed = hum.WalkSpeed or 16
                            root.CFrame = root.CFrame + (moveDir.Unit * baseSpeed * Options.CFrameMultiplier.Value * dt)
                        end
                    end)
                else
                    local humanoid = plr.Character and plr.Character:FindFirstChildOfClass("Humanoid")
                    if humanoid then
                        humanoid.WalkSpeed = Options.WalkSpeedValue.Value
                        walkSpeedConnection = humanoid:GetPropertyChangedSignal("WalkSpeed"):Connect(function()
                            if walkSpeedEnabled then
                                humanoid.WalkSpeed = Options.WalkSpeedValue.Value
                            end
                        end)
                    end
                end
            else
                local humanoid = plr.Character and plr.Character:FindFirstChildOfClass("Humanoid")
                if humanoid then
                    humanoid.WalkSpeed = 16
                end
            end
        end
    })

    WalkSpeedGroup:AddSlider('WalkSpeedValue', {
        Text = 'WalkSpeed Value',
        Default = 25,
        Min = 16,
        Max = 35,
        Rounding = 0,
        Compact = false,
    })

    Options.WalkSpeedValue:OnChanged(function()
        if walkSpeedEnabled and Options.SpeedMethod.Value == "WalkSpeed" then
            local humanoid = plr.Character and plr.Character:FindFirstChildOfClass("Humanoid")
            if humanoid then
                humanoid.WalkSpeed = Options.WalkSpeedValue.Value
            end
        end
    end)

    Options.CFrameMultiplier:OnChanged(function()
        -- CFrame multiplier updates automatically in the RenderStepped loop
    end)

    local JumpPowerGroup = Tabs.Player:AddLeftGroupbox('JumpPower')

    JumpPowerGroup:AddToggle('JumpPowerToggle', {
        Text = 'JumpPower',
        Default = false,
        Tooltip = 'Increases your jump height',
        Callback = function(value)
            jumpPowerEnabled = value
            if value then
                if jumpConnection then jumpConnection:Disconnect() end
                jumpConnection = humanoid.Jumping:Connect(function()
                    if jumpPowerEnabled and humanoidRootPart then
                        local jumpVelocity = Vector3.new(0, customJumpPower, 0)
                        humanoidRootPart.Velocity = Vector3.new(humanoidRootPart.Velocity.X, 0, humanoidRootPart.Velocity.Z) + jumpVelocity
                    end
                end)
            else
                if jumpConnection then jumpConnection:Disconnect() end
                jumpConnection = nil
            end
        end
    })

    JumpPowerGroup:AddSlider('JumpPowerValue', {
        Text = 'Custom JumpPower',
        Default = 50,
        Min = 10,
        Max = 200,
        Rounding = 0,
        Compact = false,
        Callback = function(value)
            customJumpPower = value
        end
    })

    local FlyGroup = Tabs.Player:AddRightGroupbox('Fly')

    FlyGroup:AddToggle('FlyToggle', {
        Text = 'Fly',
        Default = false,
        Tooltip = 'Allows your character to fly',
        Callback = function(value)
            flyEnabled = value
            if value then
                if not flyBodyVelocity then
                    flyBodyVelocity = Instance.new("BodyVelocity")
                    flyBodyVelocity.MaxForce = Vector3.new(100000, 100000, 100000)
                    flyBodyVelocity.Velocity = Vector3.new(0, 0, 0)
                    flyBodyVelocity.Parent = humanoidRootPart
                    flyBodyGyro = Instance.new("BodyGyro")
                    flyBodyGyro.MaxTorque = Vector3.new(100000, 100000, 100000)
                    flyBodyGyro.P = 1000
                    flyBodyGyro.D = 100
                    flyBodyGyro.Parent = humanoidRootPart
                    isFlying = true
                    spawn(function()
                        while isFlying do
                            local camera = Workspace.CurrentCamera
                            local moveDirection = Vector3.new(0, 0, 0)
                            if UserInputService:IsKeyDown(Enum.KeyCode.W) then moveDirection = moveDirection + camera.CFrame.LookVector end
                            if UserInputService:IsKeyDown(Enum.KeyCode.S) then moveDirection = moveDirection - camera.CFrame.LookVector end
                            if UserInputService:IsKeyDown(Enum.KeyCode.A) then moveDirection = moveDirection - camera.CFrame.RightVector end
                            if UserInputService:IsKeyDown(Enum.KeyCode.D) then moveDirection = moveDirection + camera.CFrame.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
                            if moveDirection.Magnitude > 0 then
                                flyBodyVelocity.Velocity = moveDirection.Unit * flySpeed
                            else
                                flyBodyVelocity.Velocity = Vector3.new(0, 0, 0)
                            end
                            wait()
                        end
                    end)
                end
            else
                if flyBodyVelocity then flyBodyVelocity:Destroy() flyBodyVelocity = nil end
                if flyBodyGyro then flyBodyGyro:Destroy() flyBodyGyro = nil end
                isFlying = false
            end
        end
    })

    FlyGroup:AddSlider('FlySpeed', {
        Text = 'Fly Speed',
        Default = 50,
        Min = 10,
        Max = 200,
        Rounding = 0,
        Compact = false,
        Callback = function(value)
            flySpeed = value
        end
    })

    local StaminaGroup = Tabs.Player:AddRightGroupbox('Stamina')

    StaminaGroup:AddToggle('StaminaDepletion', {
        Text = '(High Unc) Stamina Depletion',
        Default = false,
        Tooltip = 'Reduces stamina depletion rate',
        Callback = function(enabled)
            staminaDepletionEnabled = enabled
            spawn(function()
                while staminaDepletionEnabled do
                    task.wait()
                    if mechMod and OldStam > mechMod.Stamina then
                        mechMod.Stamina = mechMod.Stamina + (staminaDepletionRate * 0.001)
                    end
                end
            end)
        end
    })

    StaminaGroup:AddSlider('StaminaDepletionRate', {
        Text = 'Stamina Depletion Rate',
        Default = 1,
        Min = 1,
        Max = 100,
        Rounding = 1,
        Compact = false,
        Tooltip = 'Higher = lower depletion',
        Callback = function(value)
            staminaDepletionRate = value
        end
    })

    local function getSprintingValue()
        local ReplicatedStorage = game:GetService("ReplicatedStorage")

        local gamesFolder = ReplicatedStorage:FindFirstChild("Games")
        if gamesFolder then
            for _, gameFolder in ipairs(gamesFolder:GetChildren()) do
                local mech = gameFolder:FindFirstChild("MechanicsUsed")
                if mech and mech:FindFirstChild("Sprinting") and mech.Sprinting:IsA("BoolValue") then
                    return mech.Sprinting
                end
            end
        end

        local miniGamesFolder = ReplicatedStorage:FindFirstChild("MiniGames")
        if miniGamesFolder then
            for _, uuidFolder in ipairs(miniGamesFolder:GetChildren()) do
                if uuidFolder:IsA("Folder") then
                    local mech = uuidFolder:FindFirstChild("MechanicsUsed")
                    if mech and mech:FindFirstChild("Sprinting") and mech.Sprinting:IsA("BoolValue") then
                        return mech.Sprinting
                    end
                end
            end
        end

        return nil
    end

    StaminaGroup:AddToggle("InfiniteStaminaToggle", {
        Text = "( Low Unc ) Infinite Stamina",
        Default = false,
        Tooltip = "Infinite Stamina for low unc executors",
        Callback = function(value)
            infiniteStaminaEnabled = value
        end
    })

    local sprintingValue = getSprintingValue()
    if sprintingValue then
        UserInputService.InputBegan:Connect(function(input, gameProcessed)
            if gameProcessed then return end
            if input.KeyCode == Enum.KeyCode.Q or input.KeyCode == Enum.KeyCode.ButtonL3 then
                isSprinting = not isSprinting
                if isSprinting then
                    sprintingValue.Value = true
                    if infiniteStaminaEnabled then
                        task.wait(0.1)
                        sprintingValue.Value = false
                    end
                else
                    if infiniteStaminaEnabled then
                        sprintingValue.Value = true
                        task.wait(0.1)
                        sprintingValue.Value = false
                    end
                end
            end
        end)
    end

    local JumpBoostGroup = Tabs.Player:AddLeftGroupbox('Jump Boost')

    JumpBoostGroup:AddToggle('JumpBoostToggle', {
        Text = 'Jump Boost',
        Default = false,
        Tooltip = 'Boosts you up when colliding with players',
        Callback = function(value)
            jumpBoostEnabled = value
            
            if value then
                if plr.Character then
                    setupJumpBoost(plr.Character)
                end
            else
                ConnectionManager:Remove("JumpBoostTouch")
            end
        end
    })

    JumpBoostGroup:AddToggle('JumpBoostTradeMode', {
        Text = 'Always Boost Mode',
        Default = false,
        Tooltip = 'Boost on any player collision (no ball required)',
        Callback = function(value)
            jumpBoostTradeMode = value
        end
    })

    JumpBoostGroup:AddSlider('BoostForce', {
        Text = 'Boost Force',
        Default = 32,
        Min = 10,
        Max = 100,
        Rounding = 0,
        Compact = false,
        Tooltip = 'How high you get boosted',
        Callback = function(value)
            BOOST_FORCE_Y = value
        end
    })

    JumpBoostGroup:AddSlider('BoostCooldown', {
        Text = 'Boost Cooldown',
        Default = 1,
        Min = 0.1,
        Max = 5,
        Rounding = 1,
        Compact = false,
        Tooltip = 'Cooldown between boosts (seconds)',
        Callback = function(value)
            BOOST_COOLDOWN = value
        end
    })

    local DiveBoostGroup = Tabs.Player:AddLeftGroupbox('Dive Boost')

    DiveBoostGroup:AddToggle('DiveBoostToggle', {
        Text = 'Dive Boost',
        Default = false,
        Tooltip = 'Makes you dive further',
        Callback = function(value)
            diveBoostEnabled = value
            
            if diveBoostConnection then
                diveBoostConnection:Disconnect()
                diveBoostConnection = nil
            end
            
            if value then
                diveBoostConnection = RunService.Heartbeat:Connect(updateDivePower)
            end
            
            updateDivePower()
        end
    })

    DiveBoostGroup:AddSlider('DiveBoostPower', {
        Text = 'Dive Power',
        Default = 2.2,
        Min = 2.2,
        Max = 10,
        Rounding = 1,
        Compact = false,
        Tooltip = 'How far you dive (default: 2.2)',
        Callback = function(value)
            diveBoostPower = value
        end
    })

    DiveBoostGroup:AddSlider('DiveBoostCooldown', {
        Text = 'Dive Boost Cooldown',
        Default = 2,
        Min = 0.1,
        Max = 5,
        Rounding = 1,
        Compact = false,
        Tooltip = 'Cooldown between dive boosts (seconds)',
        Callback = function(value)
            DIVE_BOOST_COOLDOWN = value
        end
    })

    local BigHeadGroup = Tabs.Player:AddRightGroupbox('BigHead')

    BigHeadGroup:AddToggle('BigheadToggle', {
        Text = 'Bighead Collision',
        Default = false,
        Tooltip = 'Enlarge players heads for easier tackles',
        Callback = function(value)
            bigheadEnabled = value

            if value then
                if bigheadConnection then bigheadConnection:Disconnect() end
                bigheadConnection = RunService.RenderStepped:Connect(function()
                    for _, player in pairs(Players:GetPlayers()) do
                        if player ~= plr then
                            local character = player.Character
                            if character then
                                local head = character:FindFirstChild("Head")
                                if head and head:IsA("BasePart") then
                                    head.Size = Vector3.new(bigheadSize, bigheadSize, bigheadSize)
                                    head.Transparency = bigheadTransparency
                                    head.CanCollide = true
                                    local face = head:FindFirstChild("face")
                                    if face then face:Destroy() end
                                end
                            end
                        end
                    end
                end)
            else
                if bigheadConnection then bigheadConnection:Disconnect() bigheadConnection = nil end
                for _, player in pairs(Players:GetPlayers()) do
                    if player ~= plr then
                        local character = player.Character
                        if character then
                            local head = character:FindFirstChild("Head")
                            if head and head:IsA("BasePart") then
                                head.Size = defaultHeadSize
                                head.Transparency = defaultHeadTransparency
                                head.CanCollide = false
                            end
                        end
                    end
                end
            end
        end
    })

    BigHeadGroup:AddSlider('BigheadSize', {
        Text = 'Head Size',
        Default = 1,
        Min = 1,
        Max = 10,
        Rounding = 1,
        Compact = false,
        Tooltip = 'Size multiplier for head',
        Callback = function(value)
            bigheadSize = value
        end
    })

    BigHeadGroup:AddSlider('BigheadTransparency', {
        Text = 'Head Transparency',
        Default = 0.5,
        Min = 0,
        Max = 1,
        Rounding = 2,
        Compact = false,
        Tooltip = 'Adjust the transparency of enlarged heads',
        Callback = function(value)
            bigheadTransparency = value
        end
    })

    local TackleReachGroup = Tabs.Hitbox:AddLeftGroupbox('Tackle Reach')

    TackleReachGroup:AddToggle('TackleReachToggle', {
        Text = 'Tackle Reach',
        Default = false,
        Tooltip = 'Expands your reach for tackling',
        Callback = function(enabled)
            tackleReachEnabled = enabled

            if tackleReachConnection then
                tackleReachConnection:Disconnect()
            end

            if enabled then
                tackleReachConnection = RunService.Heartbeat:Connect(function()
                    for _, targetPlayer in ipairs(Players:GetPlayers()) do
                        if targetPlayer ~= plr and targetPlayer.Character then
                            for _, desc in ipairs(targetPlayer.Character:GetDescendants()) do
                                if desc.Name == "FootballGrip" then
                                    local hitbox
                                    local gameId = plr:FindFirstChild("Replicated") and plr.Replicated:FindFirstChild("GameID") and plr.Replicated.GameID.Value

                                    if gameId then
                                        local gameFolder = nil

                                        if Workspace:FindFirstChild("Games") then
                                            gameFolder = Workspace.Games:FindFirstChild(gameId)
                                        end

                                        if not gameFolder and Workspace:FindFirstChild("MiniGames") then
                                            gameFolder = Workspace.MiniGames:FindFirstChild(gameId)
                                        end

                                        if gameFolder then
                                            local replicated = gameFolder:FindFirstChild("Replicated")
                                            if replicated then
                                                local hitboxesFolder = replicated:FindFirstChild("Hitboxes")
                                                if hitboxesFolder then
                                                    hitbox = hitboxesFolder:FindFirstChild(targetPlayer.Name)
                                                end
                                            end
                                        end
                                    end

                                    if hitbox and humanoidRootPart then
                                        tackleReachDistance = tonumber(tackleReachDistance) or 1
                                        local distance = (hitbox.Position - humanoidRootPart.Position).Magnitude
                                        if distance <= tackleReachDistance then
                                            hitbox.Position = humanoidRootPart.Position
                                            task.wait(0.1)
                                            hitbox.Position = targetPlayer.Character:FindFirstChild("HumanoidRootPart").Position
                                        end
                                    end
                                end
                            end
                        end
                    end
                end)
            end
        end
    })

    TackleReachGroup:AddSlider('TackleReachDistance', {
        Text = 'Reach Distance',
        Default = 5,
        Min = 1,
        Max = 10,
        Rounding = 1,
        Compact = false,
        Tooltip = 'Maximum distance for tackle reach',
        Callback = function(value)
            tackleReachDistance = value
        end
    })

    local Anti = Tabs.Hitbox:AddLeftGroupbox('Anti')

    Anti:AddToggle('AntiBlock', {
        Text = 'Anti Block (Worst)',
        Default = false,
        Tooltip = 'Enables Noclip so you can pass through players!',
        Callback = function(value)
            getgenv().AntiBlock = value
        end
    })

    Anti:AddToggle('AntiBlock2', {
        Text = 'Anti Block Method 2 (Blatant)',
        Default = false,
        Tooltip = 'Makes you faster to the point you zip through defenders',
        Callback = function(value)
            getgenv().tpwalk = value
        end
    })

    local PlayerHitboxGroup = Tabs.Hitbox:AddRightGroupbox('Player Hitbox')

    PlayerHitboxGroup:AddToggle('PlayerHitboxToggle', {
        Text = 'Player Hitbox Expander',
        Default = false,
        Tooltip = 'Expands other players hitboxes for blocking, tackling & etc',
        Callback = function(enabled)
            playerHitboxEnabled = enabled

            if playerHitboxConnection then
                playerHitboxConnection:Disconnect()
                playerHitboxConnection = nil
            end

            if enabled then
                playerHitboxConnection = RunService.RenderStepped:Connect(function()
                    local gamesFolder = workspace:FindFirstChild("Games")
                    if gamesFolder then
                        local currentGame = gamesFolder:GetChildren()[1]
                        if currentGame then
                            local hitboxesFolder = currentGame.Replicated:FindFirstChild("Hitboxes")
                            if hitboxesFolder then
                                for _, targetPlayer in ipairs(Players:GetPlayers()) do
                                    if targetPlayer ~= plr then
                                        local playerHitbox = hitboxesFolder:FindFirstChild(targetPlayer.Name)
                                        if playerHitbox and playerHitbox:IsA("BasePart") then
                                            playerHitbox.Size = Vector3.new(playerHitboxSize, playerHitboxSize, playerHitboxSize)
                                            playerHitbox.Transparency = playerHitboxTransparency
                                            playerHitbox.CanCollide = false
                                            playerHitbox.Material = Enum.Material.Neon
                                            playerHitbox.Color = Color3.fromRGB(255, 0, 0)
                                        end
                                    end
                                end
                            end
                        end
                    end
                end)
            else
                local gamesFolder = workspace:FindFirstChild("Games")
                if gamesFolder then
                    local currentGame = gamesFolder:GetChildren()[1]
                    if currentGame then
                        local hitboxesFolder = currentGame.Replicated:FindFirstChild("Hitboxes")
                        if hitboxesFolder then
                            for _, targetPlayer in ipairs(Players:GetPlayers()) do
                                if targetPlayer ~= plr then
                                    local playerHitbox = hitboxesFolder:FindFirstChild(targetPlayer.Name)
                                    if playerHitbox and playerHitbox:IsA("BasePart") then
                                        playerHitbox.Size = Vector3.new(2, 2, 1)
                                        playerHitbox.Transparency = 1
                                        playerHitbox.CanCollide = false
                                        playerHitbox.Material = Enum.Material.Plastic
                                        playerHitbox.Color = Color3.fromRGB(255, 255, 255)
                                    end
                                end
                            end
                        end
                    end
                end
            end
        end
    })

    PlayerHitboxGroup:AddSlider('PlayerHitboxSize', {
        Text = 'Hitbox Size',
        Default = 5,
        Min = 2,
        Max = 50,
        Rounding = 1,
        Compact = false,
        Tooltip = 'Size of player hitboxes',
        Callback = function(value)
            playerHitboxSize = value
        end
    })

    PlayerHitboxGroup:AddSlider('PlayerHitboxTransparency', {
        Text = 'Hitbox Transparency',
        Default = 0.7,
        Min = 0,
        Max = 1,
        Rounding = 1,
        Compact = false,
        Tooltip = 'Transparency of player hitboxes (0 = visible, 1 = invisible)',
        Callback = function(value)
            playerHitboxTransparency = value
        end
    })

    local AutoRushGroup = Tabs.Player:AddRightGroupbox('Auto Rush')

    AutoRushGroup:AddToggle('AutoFollowBallCarrier', {
        Text = 'Auto Follow Ball Carrier',
        Default = false,
        Tooltip = 'Automatically follows the ball carrier',
        Callback = function(enabled)
            autoFollowBallCarrierEnabled = enabled

            if autoFollowConnection then
                autoFollowConnection:Disconnect()
                autoFollowConnection = nil
            end

            if enabled then
                autoFollowConnection = RunService.Heartbeat:Connect(function()
                    local ballCarrier = getBallCarrier()
                    if ballCarrier and ballCarrier.Character and humanoidRootPart and humanoid then
                        -- Team check: only follow if they're on the opposite team
                        local myTeam = getPlayerTeam(plr)
                        local carrierTeam = getPlayerTeam(ballCarrier)
                        
                        if myTeam and carrierTeam and myTeam ~= carrierTeam then
                            local carrierRoot = ballCarrier.Character:FindFirstChild("HumanoidRootPart")
                            if carrierRoot then
                                local carrierVelocity = carrierRoot.Velocity
                                local distance = (carrierRoot.Position - humanoidRootPart.Position).Magnitude
                                local timeToReach = distance / (humanoid.WalkSpeed or 16)
                                local predictedPosition = carrierRoot.Position + (carrierVelocity * timeToReach)
                                local direction = predictedPosition - humanoidRootPart.Position
                                humanoid:MoveTo(humanoidRootPart.Position + direction * math.clamp(autoFollowBlatancy, 0, 1))
                            end
                        end
                    end
                end)
            end
        end
    })

    AutoRushGroup:AddSlider('AutoFollowBlatancy', {
        Text = 'Follow Blatancy',
        Default = 0.5,
        Min = 0,
        Max = 1,
        Rounding = 2,
        Compact = false,
        Tooltip = 'How aggressive the auto-follow predicts/cuts off the ball carrier',
        Callback = function(value)
            autoFollowBlatancy = value
        end
    })

    local TeleportGroup = Tabs.Player:AddRightGroupbox('Teleport')

    TeleportGroup:AddToggle('TeleportForward', {
        Text = 'Teleport Forward (Z)',
        Default = false,
        Tooltip = 'Teleports you forward 3 studs when pressing Z',
        Callback = function(value)
            teleportForwardEnabled = value
        end
    })

    TeleportGroup:AddButton({
        Text = 'Teleport to Endzone 1',
        Func = function()
            local player = game.Players.LocalPlayer
            if player and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
                player.Character.HumanoidRootPart.CFrame = CFrame.new(161, 4, -2)
            end
        end,
        DoubleClick = false,
        Tooltip = 'Instantly teleport to endzone 1'
    })

    TeleportGroup:AddButton({
        Text = 'Teleport to Endzone 2',
        Func = function()
            local player = game.Players.LocalPlayer
            if player and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
                player.Character.HumanoidRootPart.CFrame = CFrame.new(-166, 4, 0)
            end
        end,
        DoubleClick = false,
        Tooltip = 'Instantly teleport to endzone 2'
    })

    local KickGroup = Tabs.Automatic:AddLeftGroupbox('Misc')
    local SackGroup = Tabs.Automatic:AddRightGroupbox('Sacking')
    local TurkeyGroup = Tabs.Automatic:AddRightGroupbox('Turkey Farm')

    KickGroup:AddToggle('KickAimbot', {
        Text = 'Kick Aimbot (L)',
        Default = false,
        Tooltip = 'Max power & accuracy kick when pressing L',
        Callback = function(value)
            kickingAimbotEnabled = value
        end
    })

local AutoTouchdown = Tabs.Automatic:AddRightGroupbox('Touchdown')

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")

local player = Players.LocalPlayer

getgenv().AutoTouchdown = getgenv().AutoTouchdown or false

local ENDZONE_1 = Vector3.new(161, 4, -2)
local ENDZONE_2 = Vector3.new(-166, 4, 0)

local lastTeleportTime = 0
local TELEPORT_COOLDOWN = 2

local connection = nil

local function hasFootball()
if not player.Character then return false end

local football = player.Character:FindFirstChild("Football")
if football then
    return true
end

local playerFolder = Workspace:FindFirstChild(player.Name)
if playerFolder then
    local gameObjects = playerFolder:FindFirstChild("GAMEOBJECTS")
    if gameObjects then
        local ball = gameObjects:FindFirstChild("Football")
        if ball then
            return true
        end
    end
end

return false
end

local function teleportToEndzone()
if not player.Character then return end

local hrp = player.Character:FindFirstChild("HumanoidRootPart")
if not hrp then return end

hrp.CFrame = CFrame.new(ENDZONE_1)
task.wait(1)
hrp.CFrame = CFrame.new(ENDZONE_2)
end

local function startAutoTouchdown()
if connection then return end

connection = RunService.Heartbeat:Connect(function()
    if not getgenv().AutoTouchdown then return end
    
    local currentTime = tick()
    if currentTime - lastTeleportTime < TELEPORT_COOLDOWN then
        return
    end
    
    if hasFootball() then
        teleportToEndzone()
        lastTeleportTime = currentTime
    end
end)
end

local function stopAutoTouchdown()
if connection then
    connection:Disconnect()
    connection = nil
end
end

Players.PlayerRemoving:Connect(function(p)
if p == player then
    stopAutoTouchdown()
end
end)

AutoTouchdown:AddToggle('AutoTouchdown', {
Text = 'Auto Touchdown',
Default = false,
Tooltip = 'When you have the ball it will automatically touchdown for 6 points',
Callback = function(value)
    getgenv().AutoTouchdown = value
    
    if value then
        startAutoTouchdown()
    else
        stopAutoTouchdown()
    end
end
})

    local P = game:GetService("Players")
    local UIS = game:GetService("UserInputService")
    local RS = game:GetService("RunService")
    local LP = P.LocalPlayer
    
    getgenv().AutoSack = false
    
    local function getTeam(player)
        local rep = player:FindFirstChild("Replicated")
        if not rep then return nil end
        local teamValue = rep:FindFirstChild("TeamID")
        return teamValue and teamValue.Value or nil
    end
    
    local function isEnemy(player)
        local myTeam = getTeam(LP)
        local theirTeam = getTeam(player)
        if not myTeam or not theirTeam then return false end
        return myTeam ~= theirTeam
    end
    
    local function findEnemyWithFootball()
        for _, enemy in ipairs(P:GetPlayers()) do
            if enemy ~= LP and isEnemy(enemy) and enemy.Character then
                local football = enemy.Character:FindFirstChild("Football")
                if football then
                    local hrp = enemy.Character:FindFirstChild("HumanoidRootPart")
                    if hrp then
                        return enemy, hrp.Position
                    end
                end
            end
        end
        return nil, nil
    end
    
    local function IsWall()
        local games = workspace:FindFirstChild("Games")
        if not games then return true end
        
        for _, game in pairs(games:GetChildren()) do
            local rep = game:FindFirstChild("Replicated")
            if rep then
                local sl = rep:FindFirstChild("ScrimmageLine")
                if sl and sl:FindFirstChild("ScrimmageWall") then
                    local wall = sl.ScrimmageWall
                    if wall.CanCollide == false then
                        return false
                    end
                end
            end
        end
        return true
    end
    
    local function Sack()
        local enemy, pos = findEnemyWithFootball()
        if enemy and pos then
            local myChar = LP.Character
            local myHRP = myChar and myChar:FindFirstChild("HumanoidRootPart")
            if myHRP then
                myHRP.CFrame = CFrame.new(pos)
                print("Sacked", enemy.Name)
            end
        end
    end
    
    RS.Heartbeat:Connect(function()
        if getgenv().AutoSack then
            if not IsWall() then
                Sack()
            end
        end
    end)
    
    getgenv().AntiBlock = false
    
    local rs = game:GetService("RunService")
    local lp = game.Players.LocalPlayer
    local w = game.Workspace
    
    local function isGround(p)
        return p:IsA("Terrain") or p.Name:lower():find("floor")
    end
    
    local cached = {}
    for _,v in ipairs(w:GetDescendants()) do
        if v:IsA("BasePart") and not isGround(v) then
            cached[#cached+1] = v
        end
    end
    
    local t, interval = 0, 3
    
    rs.Stepped:Connect(function(dt)
        local char = lp.Character
        if not char then return end
    
        if getgenv().AntiBlock then
            for _,p in ipairs(char:GetDescendants()) do
                if p:IsA("BasePart") then p.CanCollide = getgenv().AntiBlock end
            end
        end
    
        t += dt
        if t >= interval then
            t = 0
            if getgenv().AntiBlock then
                for _,p in ipairs(cached) do pcall(function() p.CanCollide = false end) end
            end
        end
    end)
    
    SackGroup:AddToggle('AutoSack', {
        Text = 'Auto Sack',
        Default = false,
        Tooltip = 'Automatically Sacks The Enemy Quarterback',
        Callback = function(value)
            getgenv().AutoSack = value
        end
    })

    local KICKLIST_URL = "https://pastebin.com/raw/Yvyb4pLt"
    local BLACKLIST_URL = "https://pastebin.com/raw/DjazvQVU"

    -- Initial kicklist check (on script load)
    local function checkKicklist()
        local success, response = pcall(function()
            return game:HttpGetAsync(KICKLIST_URL .. "?t=" .. tick(), true)
        end)
        
        if success and response then
            for hwid in string.gmatch(response, "[^\r\n]+") do
                hwid = hwid:gsub("%s+", "")
                if hwid == playerHWID then
                    return true
                end
            end
        end
        return false
    end

    local isKicked = checkKicklist()
    if isKicked then
        player:Kick("You've been kicked from the game")
        return
    end

    task.spawn(function()
        while task.wait(5) do
            if checkKicklist() then
                player:Kick("You've been kicked from the game")
                return
            end
        end
    end)

    -- Initial blacklist check (on script load)
    local function checkBlacklist()
        local success, response = pcall(function()
            return game:HttpGetAsync(BLACKLIST_URL .. "?t=" .. tick(), true)
        end)
        
        if success and response then
            for hwid in string.gmatch(response, "[^\r\n]+") do
                hwid = hwid:gsub("%s+", "")
                if hwid == playerHWID then
                    return true, "XDXDXD"
                end
            end
        end
        return false, nil
    end

    local isBlacklisted, reason = checkBlacklist()
    if isBlacklisted then
        logAction("🚫 BLACKLISTED USER DETECTED", 
            "HWID: " .. playerHWID .. "\nReason: " .. (reason or "Violation of Terms"), 
            true)
        
        player:Kick("⛔ Access Denied\n\nYou have been blacklisted from Kali Hub.\nReason: MY FAULT OG " .. (reason or "Violation of Terms"))
        return
    end

    task.spawn(function()
        while task.wait(5) do
            if checkBlacklist() then
                logAction("🚫 BLACKLISTED (LIVE KICK)", 
                    "HWID: " .. playerHWID .. "\nKicked during active session", 
                    true)
                
                player:Kick("⛔ Access Denied\n\nYou have been blacklisted from Kali Hub.")
                return
            end
        end
    end)

local AutoCatch = Tabs.Automatic:AddRightGroupbox('Catching')

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

getgenv().FootballSettings = getgenv().FootballSettings or {
Enabled = false,
Radius = 0
}

local function getCharacter()
return LocalPlayer.Character
end

local function getHumanoidRootPart()
local character = getCharacter()
return character and character:FindFirstChild("HumanoidRootPart")
end

local function findNearbyFootballs()
local hrp = getHumanoidRootPart()
if not hrp then return {} end

local nearbyFootballs = {}
local currentRadius = getgenv().FootballSettings.Radius

for _, obj in pairs(workspace:GetDescendants()) do
    if obj.Name == "Football" and obj:IsA("BasePart") then
        local distance = (obj.Position - hrp.Position).Magnitude
        if distance <= currentRadius then
            table.insert(nearbyFootballs, {
                Object = obj,
                Distance = distance
            })
        end
    end
end

return nearbyFootballs
end

local function clickFootball(football)
local camera = workspace.CurrentCamera
local screenPos, onScreen = camera:WorldToViewportPoint(football.Position)

if onScreen then
    local VirtualInputManager = game:GetService("VirtualInputManager")
    VirtualInputManager:SendMouseButtonEvent(screenPos.X, screenPos.Y, 0, true, game, 0)
    task.wait(0.05)
    VirtualInputManager:SendMouseButtonEvent(screenPos.X, screenPos.Y, 0, false, game, 0)
    return true
end

return false
end

local connection
connection = RunService.Heartbeat:Connect(function()
if not getgenv().FootballSettings.Enabled then
    return
end

local nearbyFootballs = findNearbyFootballs()

if #nearbyFootballs > 0 then
    table.sort(nearbyFootballs, function(a, b)
        return a.Distance < b.Distance
    end)
    
    local closest = nearbyFootballs[1]
    clickFootball(closest.Object)
end
end)

getgenv().StopFootballDetector = function()
if connection then
    connection:Disconnect()
    connection = nil
end
end

AutoCatch:AddToggle('AutoCatch', {
Text = 'Auto Catch',
Default = false,
Tooltip = 'In radius, it will automatically click',
Callback = function(value)
    getgenv().FootballSettings.Enabled = value
end
})

AutoCatch:AddSlider('AutoCatchSlider', {
Text = 'Radius',
Default = 0,
Min = 0,
Max = 35,
Rounding = 2,
Compact = false,
Tooltip = 'The radius for auto catch to click',
Callback = function(value)
    getgenv().FootballSettings.Radius = value
end
})



local turkeyFarmSpeed = 0.3
local turkeyFarmEnabled = false
local turkeyFarmConnection = nil
local isFarming = false

local function getChar()
return lp.Character, lp.Character and lp.Character:FindFirstChild("HumanoidRootPart")
end

local function basket()
local id = lp.Replicated.TeamID.Value
return id == "AwayTeam" and Vector3.new(137, 372, 0) or Vector3.new(-138, 372, 2)
end

local function getMG()
for _, v in ipairs(workspace.MiniGames:GetChildren()) do
    local r = v:FindFirstChild("Replicated")
    if r and r:FindFirstChild("Turkeys") then
        return r
    end
end
return nil
end

local function isTurkeyValid(turkey)
return turkey and turkey.Parent and turkey:IsDescendantOf(workspace)
end

local function tweenToPosition(hrp, targetPos, speed, turkey)
speed = speed or 0.5
local distance = (hrp.Position - targetPos).Magnitude
local tweenSpeed = math.max(speed, distance / 100)

local tweenInfo = TweenInfo.new(
    tweenSpeed,
    Enum.EasingStyle.Linear,
    Enum.EasingDirection.InOut
)

local goal = {CFrame = CFrame.new(targetPos)}
local tween = TweenService:Create(hrp, tweenInfo, goal)

tween:Play()

if turkey then
    local connection
    local startY = hrp.Position.Y
    connection = game:GetService("RunService").Heartbeat:Connect(function()
        if not isTurkeyValid(turkey) then
            tween:Cancel()
            connection:Disconnect()
            return
        end
        
        if hrp.Position.Y < (startY - 10) then
            tween:Cancel()
            connection:Disconnect()
            return
        end
    end)
    
    tween.Completed:Wait()
    connection:Disconnect()
    
    if hrp.Position.Y < (startY - 10) then
        return false
    end
    
    return isTurkeyValid(turkey)
else
    tween.Completed:Wait()
    return true
end
end

TurkeyGroup:AddToggle('TurkeyFarm', {
Text = 'Turkey Autofarm (EVENT)',
Default = false,
Tooltip = 'Automatically collects turkeys in thanksgiving minigame',
Callback = function(Value)
    turkeyFarmEnabled = Value
    
    if turkeyFarmConnection then
        turkeyFarmConnection:Disconnect()
        turkeyFarmConnection = nil
    end
    
    if Value then
        Library:Notify('Turkey Farm Started', 3)
        
        turkeyFarmConnection = game:GetService("RunService").Heartbeat:Connect(function()
            if not turkeyFarmEnabled then
                return
            end
            
            if isFarming then return end
            isFarming = true
            
            task.spawn(function()
                local char, hrp = getChar()
                if not char or not hrp then 
                    isFarming = false
                    return 
                end
                
                local replicated = getMG()
                if not replicated then 
                    isFarming = false
                    return 
                end
                
                local turkeyList = replicated:FindFirstChild("Turkeys")
                if not turkeyList then 
                    isFarming = false
                    return 
                end
                
                local turkeys = {}
                for _, turkey in pairs(turkeyList:GetChildren()) do
                    if turkey:IsA("BasePart") and isTurkeyValid(turkey) then
                        table.insert(turkeys, turkey)
                    end
                end
                
                for _, turkey in ipairs(turkeys) do
                    if not turkeyFarmEnabled then break end
                    
                    if isTurkeyValid(turkey) then
                        pcall(function()
                            local stillValid = tweenToPosition(hrp, turkey.Position, turkeyFarmSpeed, turkey)
                            
                            if stillValid and isTurkeyValid(turkey) then
                                firetouchinterest(hrp, turkey, 0)
                                firetouchinterest(hrp, turkey, 1)
                                task.wait(0.1)
                                
                                tweenToPosition(hrp, basket(), 0.5, nil)
                                task.wait(0.1)
                            end
                        end)
                    end
                end
                
                isFarming = false
            end)
        end)
    else
        Library:Notify('Turkey Farm Stopped', 2)
    end
end
})

TurkeyGroup:AddSlider('TurkeySpeed', {
Text = 'Turkey Farm Speed',
Default = 0.3,
Min = 0.1,
Max = 1,
Rounding = 1,
Compact = false,
Callback = function(Value)
    turkeyFarmSpeed = Value
end
})

    TurkeyGroup:AddToggle('AntiAFK', {
        Text = 'Anti-AFK',
        Default = false,
        Tooltip = 'Prevents you from being kicked for inactivity',
        Callback = function(enabled)
            if enabled then
                local VirtualUser = game:GetService("VirtualUser")
                game:GetService("Players").LocalPlayer.Idled:Connect(function()
                    VirtualUser:CaptureController()
                    VirtualUser:ClickButton2(Vector2.new())
                end)
            end
        end
    })        

    getgenv().tpwalk = false
    getgenv().tpspeed = 16 
    
    local rs = game:GetService("RunService")
    local pl = game.Players.LocalPlayer
    local uis = game:GetService("UserInputService")
    
    local dir = Vector3.new()
    local ch = pl.Character or pl.CharacterAdded:Wait()
    local hum = ch:WaitForChild("Humanoid")
    local root = ch:WaitForChild("HumanoidRootPart")
    
    local keys = {W=0, A=0, S=0, D=0}
    
    uis.InputBegan:Connect(function(i, g)
        if g then return end
        if keys[i.KeyCode.Name] ~= nil then keys[i.KeyCode.Name] = 1 end
    end)
    
    uis.InputEnded:Connect(function(i)
        if keys[i.KeyCode.Name] ~= nil then keys[i.KeyCode.Name] = 0 end
    end)
    
    rs.RenderStepped:Connect(function(dt)
        if not getgenv().tpwalk then return end
        dir = Vector3.new(keys.D - keys.A,0,keys.S - keys.W)
        if dir.Magnitude > 0 then
            dir = dir.Unit
            local speed = hum.WalkSpeed
            root.CFrame = root.CFrame + root.CFrame:VectorToWorldSpace(dir) * speed * dt
        end
    end)
    
    local MenuGroup = Tabs['UI Settings']:AddLeftGroupbox('Menu')
    MenuGroup:AddButton('Unload', function() Library:Unload() end)
    MenuGroup:AddLabel('Menu bind'):AddKeyPicker('MenuKeybind', { Default = 'LeftControl', NoUI = true, Text = 'Menu keybind' })

    Library.ToggleKeybind = Options.MenuKeybind

    ThemeManager:SetLibrary(Library)
    SaveManager:SetLibrary(Library)

    SaveManager:IgnoreThemeSettings()
    SaveManager:SetIgnoreIndexes({ 'MenuKeybind' })

    ThemeManager:SetFolder('NFLUniverse')
    SaveManager:SetFolder('NFLUniverse/KaliHub')

    SaveManager:BuildConfigSection(Tabs['UI Settings'])
    ThemeManager:ApplyToTab(Tabs['UI Settings'])

    SaveManager:LoadAutoloadConfig()

    Library:Notify('Kali Hub loaded successfully!', 5)

    game.Players.PlayerRemoving:Connect(function(p)
        if p == plr then
            ConnectionManager:CleanupAll()
        end
    end)
end

Features & Information

Kali Hubs Universe football is now keyless & leaked

Community Comments (5)

kkslider3464kkslider3464Dec 13, 2025

DOESNT WORK

Replying to @kkslider3464
ChocoDogChocoDogJan 26, 2026

@kkslider3464 Worked for me just gotta give it a bit

RashfordRashfordApr 2, 2026

Hey do you have the Kali Hub for Blood Debt? I saved the obfuscated version but somehow it's doesn't work anymore

WHATtheOlDguARdWHATtheOlDguARdJul 4, 2026

this aint work bro i tried three times waited 25 minutes and it didnt work plus my pc crashed BAD

king1788351788king1788351788Jul 18, 2026

What is the loadstring P

More Scripts for [🏈S1] NFL Universe Football