Kali Hub LEAKED SOURCE now keyless
Key Required

Kali Hub LEAKED SOURCE now keyless

[HUGE UPD] Flag Football 🏈WaylonTheEvidentWaylonTheEvident 6.5K views 30.8K executesUpdated Dec 8, 2025
5.0/ 5(2 votes)
20100% Positive
Lua Script•758 lines (20105 chars)
repeat task.wait() until game:IsLoaded()

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local VirtualInputManager = game:GetService("VirtualInputManager")

local cloneref = cloneref or function(v) return v end
local player = Players.LocalPlayer
local Char = player.Character or player.CharacterAdded:Wait()
local Hum = cloneref(Char:WaitForChild("Humanoid")) or cloneref(Char:FindFirstChild("Humanoid"))
local Hrp = cloneref(Char:WaitForChild("HumanoidRootPart")) or cloneref(Char:FindFirstChild("HumanoidRootPart"))

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

local swatEnabled = false
local swatRadius = 80

local cframeWalkEnabled = false
local cframeWalkSpeed = 66

local infiniteJumpEnabled = false
local jumpPowerEnabled = false
local customJumpPower = 100

local autoFlagEnabled = false
local autoFlagRadius = 80

local autoTouchdownEnabled = false
local targetEndzone = "Endzone1"

local pullVectorDistance = 10
local pullVectorEnabled = false

local ballCarrierEnabled = false
local autoCatchEnabled = false
local autoCatchRadius = 15

local freezeTechEnabled = false
local freezeTechDuration = 0.5

local clickTackleEnabled = false
local clickTackleRadius = 80

local cachedBall = nil
local cachedFootball = nil
local cachedEndzone = nil
local lastCacheUpdate = 0
local CACHE_INTERVAL = 0.5

local bcMode = ""

local function findBall()
    if cachedBall and cachedBall.Parent then
        return cachedBall
    end
    
    for _, v in ipairs(workspace:GetChildren()) do
        if v:IsA("MeshPart") and v.Name == "Ball" then
            cachedBall = v
            return v
        end
    end
    
    cachedBall = nil
    return nil
end

local function findFootball()
    if cachedFootball and cachedFootball.Parent then
        return cachedFootball
    end
    
    local football = workspace:FindFirstChild("Football")
    if football and football:IsA("MeshPart") then
        cachedFootball = football
        return football
    end
    
    cachedFootball = nil
    return nil
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.5
    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 Hrp then
        local ball = findBall()
        
        if ball then
            if not hitboxPart then
                createHitbox()
            end
            if hitboxPart then
                hitboxPart.CFrame = ball.CFrame
                hitboxPart.Size = Vector3.new(magnetDistance * 2, magnetDistance * 2, magnetDistance * 2)
            end
        else
            removeHitbox()
        end
    elseif hitboxPart then
        removeHitbox()
    end
end

local function findEndzone()
    if cachedEndzone and cachedEndzone.Parent then
        return cachedEndzone
    end
    
    local minigames = workspace:FindFirstChild("Minigames")
    if not minigames then return nil end
    
    for _, minigame in ipairs(minigames:GetChildren()) do
        local localFolder = minigame:FindFirstChild("Local")
        if localFolder then
            local design = localFolder:FindFirstChild("Design")
            if design then
                local endzone = design:FindFirstChild(targetEndzone)
                if endzone and endzone:IsA("BasePart") then
                    cachedEndzone = endzone
                    return endzone
                end
            end
        end
    end
    
    cachedEndzone = nil
    return nil
end

local function playerHasBall()
    if not Char then return false end
    return Char:FindFirstChild("Ball") ~= nil
end

local function findBallCarrier()
    for _, model in ipairs(workspace:GetChildren()) do
        if model:IsA("Model") and model ~= Char and model:FindFirstChild("Ball") then
            return model
        end
    end
    return nil
end

local function simulateClick()
    local camera = workspace.CurrentCamera
    local viewportSize = camera.ViewportSize
    local centerX = viewportSize.X / 2
    local centerY = viewportSize.Y / 2
    
    VirtualInputManager:SendMouseButtonEvent(centerX, centerY, 0, true, game, 0)
    task.wait(0.01)
    VirtualInputManager:SendMouseButtonEvent(centerX, centerY, 0, false, game, 0)
end

local function onBallAdded(ball)
    if not freezeTechEnabled then return end
    if not ball:IsA("MeshPart") then return end
    
    ball.Anchored = true
    if ball:FindFirstChild("BodyVelocity") then
        ball.BodyVelocity:Destroy()
    end
    ball.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
    ball.AssemblyAngularVelocity = Vector3.new(0, 0, 0)
    
    task.wait(freezeTechDuration)
    
    if ball and ball.Parent then
        ball.Anchored = false
    end
end

local lastSwatTime = 0
local lastFlagTime = 0
local SWAT_COOLDOWN = 0.1
local FLAG_COOLDOWN = 0.1

RunService.Heartbeat:Connect(function(deltaTime)
    local currentTime = tick()
    
    if currentTime - lastCacheUpdate > CACHE_INTERVAL then
        lastCacheUpdate = currentTime
        findBall()
        findFootball()
    end
    
    if not Hrp then return end
    
    updateHitbox()
    
    if magnetEnabled then
        local ball = cachedBall
        if ball then
            local dist = (Hrp.Position - ball.Position).Magnitude
            if dist <= magnetDistance then
                firetouchinterest(Hrp, ball, 0)
                firetouchinterest(Hrp, ball, 1)
            end
        end
    end
    
    if swatEnabled and (currentTime - lastSwatTime) > SWAT_COOLDOWN then
        local ball = cachedBall
        if ball then
            local dist = (Hrp.Position - ball.Position).Magnitude
            if dist <= swatRadius then
                lastSwatTime = currentTime
                pcall(function()
                    ReplicatedStorage.Packages.Knit.Services.SessionService.RF.PerformAction:InvokeServer("Swat")
                end)
            end
        end
    end
    
    if autoFlagEnabled and (currentTime - lastFlagTime) > FLAG_COOLDOWN then
        local ball = cachedBall
        if ball then
            local dist = (Hrp.Position - ball.Position).Magnitude
            if dist <= autoFlagRadius then
                lastFlagTime = currentTime
                pcall(function()
                    ReplicatedStorage.Packages.Knit.Services.SessionService.RF.PerformAction:InvokeServer("Reach for Flag")
                end)
            end
        end
    end
    
    if autoTouchdownEnabled and playerHasBall() then
        local endzone = findEndzone()
        if endzone then
            Hrp.CFrame = endzone.CFrame + Vector3.new(0, 5, 0)
        end
    end
    
    if autoCatchEnabled then
        local football = cachedFootball
        if football then
            local dist = (Hrp.Position - football.Position).Magnitude
            if dist <= autoCatchRadius then
                simulateClick()
            end
        end
    end
    
    if cframeWalkEnabled then
        local humanoid = Char and Char:FindFirstChildOfClass("Humanoid")
        if humanoid then
            local moveVec = humanoid.MoveDirection
            if moveVec.Magnitude > 0 then
                Hrp.CFrame = Hrp.CFrame + (moveVec.Unit * cframeWalkSpeed * deltaTime)
            end
        end
    end
    
    if ballCarrierEnabled then
        local carrier = findBallCarrier()
        if carrier and carrier:FindFirstChild("HumanoidRootPart") then
            if bcMode == "Blatant" then
                Hrp.CFrame = carrier.HumanoidRootPart.CFrame * CFrame.new(0, 0, 3)
            elseif bcMode == "Legit" then
                local hum = Hrp.Parent:FindFirstChildOfClass("Humanoid")
                if hum then
                    local target = carrier.HumanoidRootPart.Position
                    local dist = (Hrp.Position - target).Magnitude
                    if dist > 4 then
                        hum:MoveTo(target)
                    end
                end
            end
        end
    end
end)

player.CharacterAdded:Connect(function(character)
    character.ChildAdded:Connect(function(child)
        if child.Name == "Ball" then
            onBallAdded(child)
        end
    end)
    
    local existingBall = character:FindFirstChild("Ball")
    if existingBall then
        onBallAdded(existingBall)
    end
end)

if player.Character then
    local character = player.Character
    character.ChildAdded:Connect(function(child)
        if child.Name == "Ball" then
            onBallAdded(child)
        end
    end)
end

UserInputService.InputBegan:Connect(function(input, gameProcessed)
    if gameProcessed then return end
    if not pullVectorEnabled then return end
    if not Hrp then return end
    
    if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
        local ball = workspace:FindFirstChild("Ball")
        if ball and ball:IsA("MeshPart") then
            local direction = (ball.Position - Hrp.Position).Unit
            Hrp.CFrame = CFrame.new(ball.Position - (direction * pullVectorDistance), ball.Position)
        end
    end
end)

UserInputService.JumpRequest:Connect(function()
    if not infiniteJumpEnabled then return end
    if Hum then
        Hum:ChangeState(Enum.HumanoidStateType.Jumping)
    end
end)

local jumpConnection = nil

local function setupJumpPower()
    if jumpConnection then jumpConnection:Disconnect() end
    jumpConnection = Hum.Jumping:Connect(function()
        if jumpPowerEnabled and Hrp then
            local jumpVelocity = Vector3.new(0, customJumpPower, 0)
            Hrp.Velocity = Vector3.new(Hrp.Velocity.X, 0, Hrp.Velocity.Z) + jumpVelocity
        end
    end)
end

player.CharacterAdded:Connect(function(newChar)
    Char = newChar
    Hrp = newChar:WaitForChild('HumanoidRootPart')
    Hum = newChar:WaitForChild('Humanoid')
    removeHitbox()
    cachedBall = nil
    cachedFootball = nil
    cachedEndzone = nil
    if jumpPowerEnabled then
        setupJumpPower()
    end
end)

local function TackleClicked()
    if not clickTackleEnabled then return end
    local Bc = findBallCarrier()
    if not Bc then return end
if Players:FindFirstChild(Bc.Name) and Players:FindFirstChild(Bc.Name) ~= Plr.Name then
    if Bc and Players:FindFirstChild(Bc.Name) then
        local TargetHrp = Players:FindFirstChild(Bc.Name).Character:FindFirstChild("HumanoidRootPart")
        if TargetHrp and Hrp then
            local dist = (Hrp.Position - TargetHrp.Position).Magnitude
            if dist <= clickTackleRadius then
                Hrp.CFrame = TargetHrp.CFrame
            end
            end
        end
    end
end


local function detectClick()
    UserInputService.InputBegan:Connect(function(input, gp)
        if gp then return end

        if input.UserInputType == Enum.UserInputType.MouseButton1 
        or input.UserInputType == Enum.UserInputType.Touch then
            TackleClicked()
        end
    end)
end

local repo = "https://raw.githubusercontent.com/deividcomsono/Obsidian/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 Options = Library.Options
local Toggles = Library.Toggles

local Window = Library:CreateWindow({
    Title = "Kali Hub",
    Footer = "by @wrl11 & @aylonthegiant | discord.gg/epNcR8Ce89",
    NotifySide = "Right",
    ShowCustomCursor = false,
    Mobile = {
        Enabled = true,
        Title = "Kali Hub",
        Icon = "rbxassetid://10723434711"
    }
})

local Tabs = {
    Catching = Window:AddTab("Catching", "hand"),
    Player = Window:AddTab("Player", "user"),
    Misc = Window:AddTab("Misc", "badge-question-mark"),
    ["UI Settings"] = Window:AddTab("UI Settings", "monitor"),
}

local MagnetGroup = Tabs.Catching:AddLeftGroupbox("Mags")
local AutoCatchGroup = Tabs.Catching:AddLeftGroupbox("Auto Catch")
local SwatGroup = Tabs.Catching:AddRightGroupbox("Auto Swat")
local FlagGroup = Tabs.Catching:AddLeftGroupbox("Auto Flag")
local TouchdownGroup = Tabs.Catching:AddRightGroupbox("Auto Touchdown")
local PullVectorGroup = Tabs.Catching:AddLeftGroupbox("Pull Vector")
local FreezeTechGroup = Tabs.Catching:AddRightGroupbox("Freeze Tech")

local SpeedGroup = Tabs.Player:AddLeftGroupbox("Speed")
local JumpGroup = Tabs.Player:AddRightGroupbox("Jumping")

local BallCarrierGroup = Tabs.Misc:AddLeftGroupbox("Ball Carrier")
local ClickTackleGroup = Tabs.Misc:AddRightGroupbox("Click Tackle")

local MenuGroup = Tabs["UI Settings"]:AddLeftGroupbox("Menu")

MagnetGroup:AddToggle("BallMagnet", {
    Text = "Football Magnet",
    Default = false,
    Callback = function(value)
        magnetEnabled = value
        if not value then
            removeHitbox()
        end
    end
})

MagnetGroup:AddSlider("MagnetDistance", {
    Text = "Magnet Distance",
    Default = 80,
    Min = 10,
    Max = 100,
    Rounding = 0,
    Callback = function(value)
        magnetDistance = value
    end
})

MagnetGroup:AddToggle("ShowHitbox", {
    Text = "Visualize Mag Hitbox",
    Default = false,
    Callback = function(value)
        showHitbox = value
        if not value then
            removeHitbox()
        end
    end
})

AutoCatchGroup:AddToggle("AutoCatch", {
    Text = "Auto Catch",
    Default = false,
    Callback = function(value)
        autoCatchEnabled = value
    end
})

AutoCatchGroup:AddSlider("AutoCatchRadius", {
    Text = "Catch Radius",
    Default = 15,
    Min = 5,
    Max = 50,
    Rounding = 0,
    Callback = function(value)
        autoCatchRadius = value
    end
})

FreezeTechGroup:AddToggle("FreezeTech", {
    Text = "Freeze Tech",
    Default = false,
    Callback = function(value)
        freezeTechEnabled = value
    end
})

FreezeTechGroup:AddSlider("FreezeTechDuration", {
    Text = "Freeze Duration",
    Default = 0.5,
    Min = 0.1,
    Max = 2,
    Rounding = 1,
    Callback = function(value)
        freezeTechDuration = value
    end
})

SwatGroup:AddToggle("AutoSwat", {
    Text = "Auto Swat",
    Default = false,
    Callback = function(value)
        swatEnabled = value
    end
})

SwatGroup:AddSlider("SwatRadius", {
    Text = "Swat Radius",
    Default = 80,
    Min = 10,
    Max = 100,
    Rounding = 0,
    Callback = function(value)
        swatRadius = value
    end
})

FlagGroup:AddToggle("AutoFlag", {
    Text = "Auto Flag Pull",
    Default = false,
    Callback = function(value)
        autoFlagEnabled = value
    end
})

FlagGroup:AddSlider("FlagRadius", {
    Text = "Pull Radius",
    Default = 80,
    Min = 10,
    Max = 100,
    Rounding = 0,
    Callback = function(value)
        autoFlagRadius = value
    end
})

TouchdownGroup:AddToggle("AutoTouchdown", {
    Text = "Auto Touchdown",
    Default = false,
    Callback = function(value)
        autoTouchdownEnabled = value
    end
})

TouchdownGroup:AddDropdown("EndzoneSelect", {
    Values = { "Endzone1", "Endzone2" },
    Default = "Endzone1",
    Text = "Target Endzone",
    Callback = function(value)
        targetEndzone = value
        cachedEndzone = nil
    end
})

PullVectorGroup:AddToggle("PullVectorToggle", {
    Text = "Enable Pull Vector [M1]",
    Default = false,
    Callback = function(value)
        pullVectorEnabled = value
    end
})

PullVectorGroup:AddSlider("PullVectorDistance", {
    Text = "Pull Distance",
    Default = 10,
    Min = 5,
    Max = 50,
    Rounding = 0,
    Callback = function(value)
        pullVectorDistance = value
    end
})

SpeedGroup:AddToggle("CFrameWalk", {
    Text = "CFrame Walk",
    Default = false,
    Callback = function(value)
        cframeWalkEnabled = value
    end
})

SpeedGroup:AddSlider("CFrameSpeed", {
    Text = "CFrame Speed",
    Default = 66,
    Min = 16,
    Max = 80,
    Rounding = 0,
    Callback = function(value)
        cframeWalkSpeed = value
    end
})

JumpGroup:AddToggle("InfiniteJump", {
    Text = "Infinite Jump",
    Default = false,
    Callback = function(value)
        infiniteJumpEnabled = value
    end
})

JumpGroup:AddToggle("JumpPower", {
    Text = "Jump Power",
    Default = false,
    Callback = function(value)
        jumpPowerEnabled = value
        if value then
            setupJumpPower()
        else
            if jumpConnection then jumpConnection:Disconnect() end
            jumpConnection = nil
        end
    end
})

JumpGroup:AddSlider("JumpHeight", {
    Text = "Jump Height",
    Default = 100,
    Min = 10,
    Max = 250,
    Rounding = 0,
    Callback = function(value)
        customJumpPower = value
    end
})

BallCarrierGroup:AddToggle("BallCarrier", {
    Text = "Follow Ball Carrier",
    Default = false,
    Callback = function(v)
        ballCarrierEnabled = v
    end
})

BallCarrierGroup:AddDropdown("BallCarrierMode", {
    Values = { "Blatant", "Legit" },
    Default = "",
    Text = "Follow Mode",
    Tooltip = "Choose how to follow the ball carrier",
    Callback = function(v)
        bcMode = v
    end
})

ClickTackleGroup:AddToggle("ClickTackle", {
    Text = "Click Tackle",
    Default = false,
    Callback = function(value)
        clickTackleEnabled = value
        if value then
            detectClick()
        end
    end
})

ClickTackleGroup:AddSlider("ClickTackleRadius", {
    Text = "Tackle Radius",
    Default = 80,
    Min = 10,
    Max = 150,
    Rounding = 0,
    Callback = function(value)
        clickTackleRadius = value
    end
})

MenuGroup:AddToggle("KeybindMenuOpen", {
    Default = Library.KeybindFrame.Visible,
    Text = "Open Keybind Menu",
    Callback = function(value)
        Library.KeybindFrame.Visible = value
    end,
})

MenuGroup:AddToggle("ShowCustomCursor", {
    Text = "Custom Cursor",
    Default = false,
    Callback = function(Value)
        Library.ShowCustomCursor = Value
    end,
})

MenuGroup:AddDropdown("NotificationSide", {
    Values = { "Left", "Right" },
    Default = "Right",
    Text = "Notification Side",
    Callback = function(Value)
        Library:SetNotifySide(Value)
    end,
})

MenuGroup:AddDivider()
MenuGroup:AddLabel("Menu bind"):AddKeyPicker("MenuKeybind", { 
    Default = "LeftControl", 
    NoUI = true, 
    Text = "Menu keybind" 
})

MenuGroup:AddButton({
    Text = "Unload",
    Func = function()
        Library:Unload()
    end
})

Library.ToggleKeybind = Options.MenuKeybind

ThemeManager:SetLibrary(Library)
SaveManager:SetLibrary(Library)
SaveManager:IgnoreThemeSettings()
SaveManager:SetIgnoreIndexes({ "MenuKeybind" })
ThemeManager:SetFolder("Kali Hub")
SaveManager:SetFolder("KaliHub/Game")

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

Library:Notify({
    Title = "Kali Hub",
    Description = "Script loaded successfully!",
    Time = 5,
})

Library:OnUnload(function()
    magnetEnabled = false
    swatEnabled = false
    autoFlagEnabled = false
    autoTouchdownEnabled = false
    pullVectorEnabled = false
    cframeWalkEnabled = false
    infiniteJumpEnabled = false
    jumpPowerEnabled = false
    ballCarrierEnabled = false
    autoCatchEnabled = false
    freezeTechEnabled = false
    clickTackleEnabled = false
    
    if jumpConnection then
        jumpConnection:Disconnect()
    end
    removeHitbox()
end)

Features & Information

Kali Hub Is Now leaked -Aylon

Community Comments (3)

rutherfordaydenrutherfordaydenJan 1, 2026

plz help meeeeeeee

TOCOOLFORUTOCOOLFORUMar 6, 2026

Can u pls help mee

libertebill686libertebill686Apr 15, 2026

How do I get it

More Scripts for [HUGE UPD] Flag Football 🏈