repeat task.wait() until game:IsLoaded() if game.GameId == 6505338302 then local Players = game:GetService("Players") local TweenService = game:GetService("TweenService") local HttpService = game:GetService("HttpService") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local Workspace = game:GetService("Workspace") local player = Players.LocalPlayer local plr = player -- ==================== PULL VECTOR VARIABLES ==================== local pullVectorEnabled = false local smoothPullEnabled = false local isPullingBall = false local isSmoothPulling = false local cframeSpeedEnabled = false local isCFrameMoving = false local hitboxEnabled = false local offsetDistance = 18 local magnetSmoothness = 0.1 local updateInterval = 0.1 local maxPullDistance = 150 local cframeSpeed = 1.5 local hitboxSize = 10 local playerHitboxSize = 5 local playerHitboxTransparency = 0.7 local playerHitboxEnabled = false local playerHitboxConnection = nil -- ==================== PLAYER VARIABLES ==================== local flyEnabled = false local isFlying = false local teleportForwardEnabled = false local jumpPowerEnabled = false local autoKickEnabled = false local isAutoKicking = false local staminaDepletionEnabled = false local staminaDepletionRate = 0 local OldStam = 100 local flySpeed = 50 local customJumpPower = 50 local kickPower = 0.95 local kickAccuracy = 0.08 local flyBodyVelocity = nil local flyBodyGyro = nil local jumpConnection = nil local hitboxParts = {} local visualParts = {} local originalSizes = {} -- ==================== CHARACTER SETUP ==================== local character = plr.Character or plr.CharacterAdded:Wait() local humanoidRootPart = character:WaitForChild("HumanoidRootPart") local humanoid = character:WaitForChild("Humanoid") plr.CharacterAdded:Connect(function(char) character = char humanoidRootPart = char:WaitForChild("HumanoidRootPart") humanoid = char:WaitForChild("Humanoid") end) -- ==================== GET FOOTBALL FUNCTION ==================== local function getFootball() for _, player in ipairs(Players:GetPlayers()) do if player.Character then local charBall = player.Character:FindFirstChild("Football") if charBall then return nil end local gameObjects = Workspace:FindFirstChild(player.Name) if gameObjects then local gameObjectsFolder = gameObjects:FindFirstChild("GAMEOBJECTS") if gameObjectsFolder then local ball = gameObjectsFolder:FindFirstChild("Football") if ball then return nil end end end end end local football = Workspace:FindFirstChild("Football") if football and football:IsA("BasePart") then return football end for _, obj in ipairs(Workspace:GetDescendants()) do if obj.Name == "Football" and obj:IsA("BasePart") then local isInPlayer = false for _, player in ipairs(Players:GetPlayers()) do if player.Character and obj:IsDescendantOf(player.Character) then isInPlayer = true break end end if not isInPlayer then return obj end end end return nils end -- ==================== TELEPORT TO BALL ==================== local function teleportToBall() local ball = getFootball() if ball and humanoidRootPart then local ballPosition = ball.Position local direction = ball.CFrame.LookVector local targetPosition = ballPosition + (direction * offsetDistance) - 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 -- ==================== AUTOKICK FUNCTION ==================== local function performAutoKick() if isAutoKicking then return end isAutoKicking = true spawn(function() local args = {kickAccuracy, kickPower} local success, err = pcall(function() game:GetService("ReplicatedStorage"):WaitForChild("Packages"):WaitForChild("Knit") :WaitForChild("Services"):WaitForChild("ControlService"):WaitForChild("RE") :WaitForChild("KickValues"):FireServer(unpack(args)) end) if not success then warn("Failed to fire KickValues:", err) isAutoKicking = false return end local kickSuccess, kickErr = pcall(function() game:GetService("ReplicatedStorage"):WaitForChild("Packages"):WaitForChild("Knit") :WaitForChild("Services"):WaitForChild("ControlService"):WaitForChild("RE") :WaitForChild("Kick"):FireServer() end) if not kickSuccess then warn("Failed to fire Kick:", kickErr) end wait(0.3) isAutoKicking = false end) end local function startCFrameSpeed() if isCFrameMoving then return end isCFrameMoving = true spawn(function() while cframeSpeedEnabled and isCFrameMoving do if humanoidRootPart and character then local moveDirection = humanoid.MoveDirection if moveDirection.Magnitude > 0 then humanoidRootPart.CFrame = humanoidRootPart.CFrame + (moveDirection * cframeSpeed) end end wait() end isCFrameMoving = false end) end local function stopCFrameSpeed() isCFrameMoving = false end -- ==================== SMOOTH PULL ==================== local function smoothTeleportToBall() local ball = getFootball() if ball and humanoidRootPart then 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 -- ==================== TELEPORT FORWARD FUNCTION ==================== local function teleportForward() if character and humanoidRootPart then humanoidRootPart.CFrame = humanoidRootPart.CFrame + (humanoidRootPart.CFrame.LookVector * 3) end end local function expandHitbox(targetPlayer) if targetPlayer == player then return end local character = targetPlayer.Character if not character then return end local hrp = character:FindFirstChild("HumanoidRootPart") if not hrp then return end if not originalSizes[targetPlayer.UserId] then originalSizes[targetPlayer.UserId] = hrp.Size end hrp.Size = Vector3.new(hitboxSize, hitboxSize, hitboxSize) hrp.Transparency = hitboxTransparency hrp.CanCollide = false end local function restoreHitbox(targetPlayer) local character = targetPlayer.Character if not character then return end local hrp = character:FindFirstChild("HumanoidRootPart") if not hrp then return end if originalSizes[targetPlayer.UserId] then hrp.Size = originalSizes[targetPlayer.UserId] else hrp.Size = Vector3.new(2, 2, 1) end hrp.Transparency = 1 end local function updateAllHitboxes() for _, targetPlayer in ipairs(Players:GetPlayers()) do if targetPlayer ~= player and targetPlayer.Character then expandHitbox(targetPlayer) end end end local function enableHitboxes() for _, targetPlayer in ipairs(Players:GetPlayers()) do if targetPlayer ~= player and targetPlayer.Character then expandHitbox(targetPlayer) end end spawn(function() while hitboxEnabled do for _, targetPlayer in ipairs(Players:GetPlayers()) do if targetPlayer ~= player and targetPlayer.Character then local hrp = targetPlayer.Character:FindFirstChild("HumanoidRootPart") if hrp then hrp.Size = Vector3.new(hitboxSize, hitboxSize, hitboxSize) hrp.Transparency = hitboxTransparency hrp.CanCollide = false end end end wait(0.1) end end) end local function disableHitboxes() for _, targetPlayer in ipairs(Players:GetPlayers()) do if targetPlayer ~= player then restoreHitbox(targetPlayer) end end originalSizes = {} end -- ==================== INPUT HANDLING ==================== 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(updateInterval) end end) end elseif input.UserInputType == Enum.UserInputType.Keyboard then if teleportForwardEnabled and input.KeyCode == Enum.KeyCode.Z then teleportForward() elseif autoKickEnabled and input.KeyCode == Enum.KeyCode.L then performAutoKick() 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) -- ==================== FLUENT UI SETUP ==================== local Library = loadstring(game:HttpGetAsync("https://github.com/ActualMasterOogway/Fluent-Renewed/releases/latest/download/Fluent.luau"))() local SaveManager = loadstring(game:HttpGetAsync("https://raw.githubusercontent.com/ActualMasterOogway/Fluent-Renewed/master/Addons/SaveManager.luau"))() local InterfaceManager = loadstring(game:HttpGetAsync("https://raw.githubusercontent.com/ActualMasterOogway/Fluent-Renewed/master/Addons/InterfaceManager.luau"))() local Window = Library:CreateWindow{ Title = "Kali Hub | Football Legends", SubTitle = "by @wrl11", TabWidth = 160, Size = UDim2.fromOffset(830, 525), Resize = true, MinSize = Vector2.new(470, 380), Acrylic = true, Theme = "Dark", MinimizeKey = Enum.KeyCode.LeftControl } local Tabs = { Main = Window:CreateTab{ Title = "Main", Icon = "phosphor-football-bold" }, Player = Window:CreateTab{ Title = "Player", Icon = "user" }, Settings = Window:CreateTab{ Title = "Settings", Icon = "settings" } } -- ==================== PULL VECTOR UI ==================== local LegitPullSection = Tabs.Main:CreateSection("Legit Pull Vector") LegitPullSection:CreateToggle("SmoothPull", { Title = "Legit Pull Vector (M1)", Default = false, Callback = function(value) smoothPullEnabled = value end }) LegitPullSection:CreateSlider("MagnetSmoothness", { Title = "Vector Smoothing", Description = "Lower = smoother, Higher = faster", Default = 0.05, Min = 0.01, Max = 1.0, Rounding = 2, Callback = function(value) magnetSmoothness = value end }) local PullVectorSection = Tabs.Main:CreateSection("Pull Vector") PullVectorSection:CreateToggle("PullVector", { Title = "Pull Vector (M1)", Default = false, Callback = function(value) pullVectorEnabled = value end }) PullVectorSection:CreateSlider("OffsetDistance", { Title = "Offset Distance", Description = "Distance in front of the ball (5-15 recommended)", Default = 9, Min = 5, Max = 30, Rounding = 0, Callback = function(value) offsetDistance = value end }) PullVectorSection:CreateSlider("MaxPullDistance", { Title = "Max Pull Distance", Description = "Maximum distance to pull from", Default = 150, Min = 1, Max = 300, Rounding = 0, Callback = function(value) maxPullDistance = value end }) -- ==================== PLAYER TAB ==================== local CFrameSpeedSection = Tabs.Player:CreateSection("CFrame Speed") CFrameSpeedSection:CreateToggle("CFrameSpeed", { Title = "CFrame Speed", Description = "Move using CFrame instead of WalkSpeed", Default = false, Callback = function(value) cframeSpeedEnabled = value if value then startCFrameSpeed() else stopCFrameSpeed() end end }) CFrameSpeedSection:CreateSlider("CFrameSpeedValue", { Title = "CFrame Speed", Description = "Speed multiplier for CFrame movement", Default = 1.5, Min = 0.5, Max = 5, Rounding = 1, Callback = function(value) cframeSpeed = value end }) local JumpPowerSection = Tabs.Player:CreateSection("JumpPower") JumpPowerSection:CreateToggle("JumpPowerToggle", { Title = "JumpPower", Description = "Increases your jump height", Default = false, 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 }) JumpPowerSection:CreateSlider("JumpPowerValue", { Title = "Custom JumpPower", Default = 50, Min = 10, Max = 200, Rounding = 0, Callback = function(value) customJumpPower = value end }) local FlySection = Tabs.Player:CreateSection("Fly") FlySection:CreateToggle("FlyToggle", { Title = "Fly", Description = "Allows your character to fly", Default = false, 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 }) FlySection:CreateSlider("FlySpeed", { Title = "Fly Speed", Default = 50, Min = 10, Max = 200, Rounding = 0, Callback = function(value) flySpeed = value end }) local TeleportSection = Tabs.Player:CreateSection("Teleport") TeleportSection:CreateToggle("TeleportForward", { Title = "Teleport Forward (Z)", Description = "Teleports you forward 3 studs", Default = false, Callback = function(value) teleportForwardEnabled = value end }) local AutoKickSection = Tabs.Player:CreateSection("Auto Kick") AutoKickSection:CreateToggle("AutoKick", { Title = "Auto Kick (L)", Description = "Automatically kicks the ball when pressed", Default = false, Callback = function(value) autoKickEnabled = value end }) AutoKickSection:CreateSlider("KickPower", { Title = "Kick Power", Description = "Power of the kick (Recommended 0.95)", Default = 0.95, Min = 0, Max = 1, Rounding = 2, Callback = function(value) kickPower = value end }) AutoKickSection:CreateSlider("KickAccuracy", { Title = "Kick Accuracy", Description = "Accuracy of the kick (Recommended 0.1)", Default = 0.1, Min = 0, Max = 1, Rounding = 2, Callback = function(value) kickAccuracy = value end }) -- ==================== FINALIZE UI ==================== SaveManager:SetLibrary(Library) InterfaceManager:SetLibrary(Library) SaveManager:IgnoreThemeSettings() SaveManager:SetIgnoreIndexes{} InterfaceManager:SetFolder("kalihub") SaveManager:SetFolder("kalihub/football-legends") InterfaceManager:BuildInterfaceSection(Tabs.Settings) SaveManager:BuildConfigSection(Tabs.Settings) Window:SelectTab(1) Library:Notify{ Title = "Kali Hub", Content = "Football Legends loaded!", Duration = 5 } SaveManager:LoadAutoloadConfig() print("✅ Football Legends - Kali Hub by @wrl11 and @aylonthegiant") end