--[[ HS FOOTBALL OP SCRIPT Made by HIM ]] repeat task.wait() until game:IsLoaded() -- // Services local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") -- // Locals local cloneref = cloneref or function(v) return v end local player = Players.LocalPlayer -- // Character local Char, Hum, Hrp local function setupCharacter() Char = player.Character or player.CharacterAdded:Wait() Hum = cloneref(Char:WaitForChild("Humanoid")) Hrp = cloneref(Char:WaitForChild("HumanoidRootPart")) end setupCharacter() -- ============================================================ -- // STATE -- ============================================================ local State = { MagnetEnabled = false, MagnetRange = 10, ShowHitbox = false, InterceptMode = false, InterceptRange = 30, SpeedEnabled = false, SpeedValue = 1.0, JumpEnabled = false, JumpBoost = 50, AntiTackle = false, TackleEnabled = false, TackleRange = 15, NoClipEnabled = false, PullEnabled = false, PullPower = 10, } -- ============================================================ -- // UTILITY -- ============================================================ local function findBall() for _, obj in ipairs(workspace:GetDescendants()) do if obj.Name == "Football" and obj:IsA("BasePart") then local model = obj:FindFirstAncestorOfClass("Model") if model and Players:GetPlayerFromCharacter(model) then continue end return obj end end end local function findBallCarrier(maxDist) local myHrp = player.Character and player.Character:FindFirstChild("HumanoidRootPart") if not myHrp then return nil end local closest, closestDist = nil, maxDist or State.TackleRange for _, plr in ipairs(Players:GetPlayers()) do if plr == player then continue end local c = plr.Character if not c then continue end local hrp = c:FindFirstChild("HumanoidRootPart") if not hrp then continue end local hasball = false for _, obj in ipairs(c:GetChildren()) do if obj.Name:find("Football") then hasball = true break end end if not hasball then continue end local d = (myHrp.Position - hrp.Position).Magnitude if d < closestDist then closestDist = d; closest = c end end return closest end -- ============================================================ -- // HITBOX SYSTEM -- ============================================================ local hitboxParts = {} local function clearHitboxes() for _, hb in pairs(hitboxParts) do if hb and hb.Parent then hb:Destroy() end end hitboxParts = {} end local function createHitbox(ball) if hitboxParts[ball] then return end local hb = Instance.new("Part") hb.Name = "KaliHitbox" hb.Anchored = true hb.CanCollide = false hb.Transparency = 0.35 hb.Material = Enum.Material.ForceField hb.Color = Color3.fromRGB(0, 200, 255) hb.Shape = Enum.PartType.Ball hb.CastShadow = false hb.Size = Vector3.new(State.MagnetRange, State.MagnetRange, State.MagnetRange) hb.CFrame = ball.CFrame hb.Parent = workspace hitboxParts[ball] = hb RunService.Heartbeat:Connect(function() if not ball or not ball.Parent or not State.ShowHitbox then if hb and hb.Parent then hb:Destroy() end hitboxParts[ball] = nil return end hb.CFrame = ball.CFrame hb.Size = Vector3.new(State.MagnetRange, State.MagnetRange, State.MagnetRange) end) end -- ============================================================ -- // PULL BUTTON GUI -- ============================================================ local pullHeld = false local PullGui = Instance.new("ScreenGui") PullGui.Name = "KaliPullGui" PullGui.ResetOnSpawn = false PullGui.IgnoreGuiInset = true PullGui.Parent = player:WaitForChild("PlayerGui") local PullFrame = Instance.new("Frame") PullFrame.Size = UDim2.new(0, 85, 0, 85) PullFrame.Position = UDim2.new(0.85, 0, 0.75, 0) PullFrame.BackgroundTransparency = 1 PullFrame.Active = true PullFrame.Draggable = true PullFrame.Parent = PullGui local PullBtn = Instance.new("TextButton") PullBtn.Size = UDim2.new(1, 0, 1, 0) PullBtn.BackgroundColor3 = Color3.fromRGB(25, 25, 25) PullBtn.BorderSizePixel = 0 PullBtn.Text = "PULL" PullBtn.TextColor3 = Color3.fromRGB(255, 255, 255) PullBtn.Font = Enum.Font.GothamBold PullBtn.TextSize = 15 PullBtn.AutoButtonColor = false PullBtn.Visible = false PullBtn.Parent = PullFrame Instance.new("UICorner", PullBtn).CornerRadius = UDim.new(1, 0) local function setPullActive(v) pullHeld = v PullBtn.BackgroundColor3 = v and Color3.fromRGB(0, 140, 255) or Color3.fromRGB(25, 25, 25) PullBtn.Text = v and "● PULL" or "PULL" end PullBtn.MouseButton1Down:Connect(function() if State.PullEnabled then setPullActive(true) end end) PullBtn.MouseButton1Up:Connect(function() setPullActive(false) end) PullBtn.TouchTap:Connect(function() if State.PullEnabled then setPullActive(not pullHeld) end end) UserInputService.InputEnded:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 then setPullActive(false) end end) -- ============================================================ -- // SPEED -- ============================================================ local speedConn = nil local function startSpeed() if speedConn then return end speedConn = RunService.Heartbeat:Connect(function(dt) if not State.SpeedEnabled then return end local c = player.Character if not c then return end local hrp = c:FindFirstChild("HumanoidRootPart") local hum = c:FindFirstChild("Humanoid") if hrp and hum and hum.MoveDirection.Magnitude > 0 then hrp.CFrame = hrp.CFrame + hum.MoveDirection * (State.SpeedValue * 16.5) * dt end end) end local function stopSpeed() if speedConn then speedConn:Disconnect() speedConn = nil end end -- ============================================================ -- // JUMP BOOST -- ============================================================ local function setupJump(char) if not char then return end local hum = char:WaitForChild("Humanoid") local hrp = char:WaitForChild("HumanoidRootPart") hum.StateChanged:Connect(function(_, new) if new == Enum.HumanoidStateType.Jumping and State.JumpEnabled then task.wait(0.05) hrp.AssemblyLinearVelocity += Vector3.new(0, State.JumpBoost - 50, 0) end end) end -- ============================================================ -- // ANTI-TACKLE -- ============================================================ local antiTackleConn = nil local function startAntiTackle() if antiTackleConn then return end antiTackleConn = RunService.Heartbeat:Connect(function() if not State.AntiTackle then return end local c = player.Character if not c then return end local hrp = c:FindFirstChild("HumanoidRootPart") if not hrp then return end for _, plr in ipairs(Players:GetPlayers()) do if plr == player then continue end local ec = plr.Character if not ec then continue end local ehrp = ec:FindFirstChild("HumanoidRootPart") if not ehrp then continue end if (hrp.Position - ehrp.Position).Magnitude < 4 then hrp.AssemblyLinearVelocity = Vector3.new( hrp.AssemblyLinearVelocity.X * 1.5, math.max(hrp.AssemblyLinearVelocity.Y, 5), hrp.AssemblyLinearVelocity.Z * 1.5 ) end end end) end local function stopAntiTackle() if antiTackleConn then antiTackleConn:Disconnect() antiTackleConn = nil end end -- ============================================================ -- // INTERCEPT -- ============================================================ local interceptConn = nil local function startIntercept() if interceptConn then return end interceptConn = RunService.Heartbeat:Connect(function() if not State.InterceptMode then return end local c = player.Character if not c then return end local hrp = c:FindFirstChild("HumanoidRootPart") if not hrp then return end local ball = findBall() if not ball then return end if (ball.Position - hrp.Position).Magnitude <= State.InterceptRange then hrp.CFrame = CFrame.new(ball.Position) ball.CanCollide = false pcall(firetouchinterest, hrp, ball, 0) pcall(firetouchinterest, hrp, ball, 0) end end) end local function stopIntercept() if interceptConn then interceptConn:Disconnect() interceptConn = nil end end -- ============================================================ -- // NOCLIP -- ============================================================ local noClipConn = nil local function startNoClip() if noClipConn then return end noClipConn = RunService.Stepped:Connect(function() if not State.NoClipEnabled then return end local c = player.Character if not c then return end for _, part in ipairs(c:GetDescendants()) do if part:IsA("BasePart") then part.CanCollide = false end end end) end local function stopNoClip() if noClipConn then noClipConn:Disconnect() noClipConn = nil end local c = player.Character if not c then return end for _, part in ipairs(c:GetDescendants()) do if part:IsA("BasePart") and part.Name ~= "HumanoidRootPart" then part.CanCollide = true end end end -- ============================================================ -- // TACKLE -- ============================================================ local tackleConn = nil local function enableTackle() if tackleConn then return end tackleConn = UserInputService.InputBegan:Connect(function(input, gp) if gp then return end if input.UserInputType ~= Enum.UserInputType.MouseButton1 and input.UserInputType ~= Enum.UserInputType.Touch then return end local target = findBallCarrier(State.TackleRange) if target then local myHrp = player.Character and player.Character:FindFirstChild("HumanoidRootPart") local tHrp = target:FindFirstChild("HumanoidRootPart") if myHrp and tHrp then myHrp.CFrame = tHrp.CFrame end end end) end local function disableTackle() if tackleConn then tackleConn:Disconnect() tackleConn = nil end end -- ============================================================ -- // MAIN RENDER LOOP -- ============================================================ RunService.RenderStepped:Connect(function() if State.MagnetEnabled then local c = player.Character if c then local hrp = c:FindFirstChild("HumanoidRootPart") if hrp then for _, obj in ipairs(workspace:GetChildren()) do if obj.Name == "Football" and obj:IsA("BasePart") then local model = obj:FindFirstAncestorOfClass("Model") if model and Players:GetPlayerFromCharacter(model) then continue end obj.CanCollide = false if (obj.Position - hrp.Position).Magnitude <= State.MagnetRange then obj.CFrame = hrp.CFrame pcall(firetouchinterest, hrp, obj, 0) pcall(firetouchinterest, hrp, obj, 0) end if State.ShowHitbox then createHitbox(obj) end end end end end end if not State.ShowHitbox then clearHitboxes() end end) -- Pull loop task.spawn(function() while task.wait(0.05) do if State.PullEnabled and pullHeld then local c = player.Character if not c then continue end local hrp = c:FindFirstChild("HumanoidRootPart") if not hrp then continue end local ball = findBall() if ball then local dir = ball.Position - hrp.Position if dir.Magnitude > 0.1 then hrp.Velocity = dir.Unit * (State.PullPower * 5) end end end end end) -- Character hooks player.CharacterAdded:Connect(function(char) setupCharacter() setupJump(char) end) if player.Character then setupJump(player.Character) end -- ============================================================ -- // RAYFIELD UI -- ============================================================ local Rayfield = loadstring(game:HttpGet("https://sirius.menu/rayfield"))() local Window = Rayfield:CreateWindow({ Name = "🏈 HS FOOTBALL OP SCRIPT", LoadingTitle = "HS FOOTBALL OP SCRIPT", LoadingSubtitle = "Made by HIM", Theme = "Default", DisableRayfieldPrompts = false, DisableBuildWarnings = false, ConfigurationSaving = { Enabled = true, FolderName = "HSFootball", FileName = "Config" }, KeySystem = false, }) -- ============================================================ -- TAB: MAGNETS -- ============================================================ local MagTab = Window:CreateTab("🧲 Magnets", 4483362458) MagTab:CreateToggle({ Name = "Enable Magnets", CurrentValue = false, Flag = "MagnetEnabled", Callback = function(v) State.MagnetEnabled = v if not v then clearHitboxes() end end }) MagTab:CreateToggle({ Name = "Show Hitbox", CurrentValue = false, Flag = "ShowHitbox", Callback = function(v) State.ShowHitbox = v if not v then clearHitboxes() end end }) MagTab:CreateSlider({ Name = "Magnet Range", Range = {1, 100}, Increment = 1, Suffix = " studs", CurrentValue = 10, Flag = "MagnetRange", Callback = function(v) State.MagnetRange = v end }) MagTab:CreateSection("Intercept") MagTab:CreateToggle({ Name = "Intercept Mode", CurrentValue = false, Flag = "InterceptMode", Callback = function(v) State.InterceptMode = v if v then startIntercept() else stopIntercept() end end }) MagTab:CreateSlider({ Name = "Intercept Range", Range = {5, 80}, Increment = 1, Suffix = " studs", CurrentValue = 30, Flag = "InterceptRange", Callback = function(v) State.InterceptRange = v end }) -- ============================================================ -- TAB: PULL -- ============================================================ local PullTab = Window:CreateTab("🔵 Pull", 4483362458) PullTab:CreateToggle({ Name = "Enable Pull", CurrentValue = false, Flag = "PullEnabled", Callback = function(v) State.PullEnabled = v PullBtn.Visible = v if not v then setPullActive(false) end end }) PullTab:CreateSlider({ Name = "Pull Power", Range = {1, 25}, Increment = 0.5, Suffix = "x", CurrentValue = 10, Flag = "PullPower", Callback = function(v) State.PullPower = v end }) PullTab:CreateLabel("Hold the PULL button (bottom-right) to dash toward the football.") -- ============================================================ -- TAB: PHYSICS -- ============================================================ local PhysTab = Window:CreateTab("⚡ Physics", 4483362458) PhysTab:CreateSection("CFrame Speed") PhysTab:CreateToggle({ Name = "CFrame Speed", CurrentValue = false, Flag = "SpeedEnabled", Callback = function(v) State.SpeedEnabled = v if v then startSpeed() else stopSpeed() end end }) PhysTab:CreateSlider({ Name = "Speed Multiplier", Range = {0.1, 10}, Increment = 0.1, Suffix = "x", CurrentValue = 1.0, Flag = "SpeedValue", Callback = function(v) State.SpeedValue = v end }) PhysTab:CreateSection("Jump") PhysTab:CreateToggle({ Name = "Jump Boost", CurrentValue = false, Flag = "JumpEnabled", Callback = function(v) State.JumpEnabled = v end }) PhysTab:CreateSlider({ Name = "Jump Power", Range = {50, 200}, Increment = 1, Suffix = "", CurrentValue = 50, Flag = "JumpBoost", Callback = function(v) State.JumpBoost = v end }) PhysTab:CreateSection("Tackle") PhysTab:CreateToggle({ Name = "Click Tackle", CurrentValue = false, Flag = "TackleEnabled", Callback = function(v) State.TackleEnabled = v if v then enableTackle() else disableTackle() end end }) PhysTab:CreateSlider({ Name = "Tackle Range", Range = {1, 60}, Increment = 1, Suffix = " studs", CurrentValue = 15, Flag = "TackleRange", Callback = function(v) State.TackleRange = v end }) PhysTab:CreateSection("Defense") PhysTab:CreateToggle({ Name = "Anti-Tackle", CurrentValue = false, Flag = "AntiTackle", Callback = function(v) State.AntiTackle = v if v then startAntiTackle() else stopAntiTackle() end end }) PhysTab:CreateSection("Movement") PhysTab:CreateToggle({ Name = "NoClip", CurrentValue = false, Flag = "NoClipEnabled", Callback = function(v) State.NoClipEnabled = v if v then startNoClip() else stopNoClip() end end }) -- ============================================================ -- TAB: SETTINGS -- ============================================================ local SettingsTab = Window:CreateTab("⚙️ Settings", 4483362458) SettingsTab:CreateButton({ Name = "🔔 Test Notification", Callback = function() Rayfield:Notify({ Title = "HS FOOTBALL OP SCRIPT", Content = "Working perfectly! 🏈", Duration = 3, Image = 4483362458, }) end }) SettingsTab:CreateButton({ Name = "❌ Unload Script", Callback = function() State.MagnetEnabled = false State.SpeedEnabled = false State.JumpEnabled = false State.PullEnabled = false State.TackleEnabled = false State.AntiTackle = false State.InterceptMode = false State.NoClipEnabled = false clearHitboxes() stopSpeed() disableTackle() stopAntiTackle() stopIntercept() stopNoClip() setPullActive(false) PullGui:Destroy() Rayfield:Destroy() end }) Rayfield:Notify({ Title = "🏈 HS FOOTBALL OP SCRIPT", Content = "Made by HIM", Duration = 5, Image = 4483362458, })