local Players, UIS, TS, RS, SG = game:GetService("Players"), game:GetService("UserInputService"), game:GetService("TeleportService"), game:GetService("RunService"), game:GetService("StarterGui") local p = Players.LocalPlayer local pg = p and (p:FindFirstChildOfClass("PlayerGui") or p:WaitForChild("PlayerGui", 5)) if not pg then return end if pg:FindFirstChild("TFBGui") then pg.TFBGui:Destroy() end local active, ballCache, lastScan, conns = false, nil, 0, {} local sg = Instance.new("ScreenGui", pg) sg.Name = "TFBGui" sg.ResetOnSpawn = false local f = Instance.new("Frame", sg) f.Size = UDim2.new(0, 200, 0, 100) f.Position = UDim2.new(0.5, -100, 0.4, -50) f.BackgroundColor3 = Color3.fromRGB(20, 20, 20) f.Draggable, f.Active = true, true local function createBtn(text, y, color) local b = Instance.new("TextButton", f) b.Size = UDim2.new(0.9, 0, 0.35, 0) b.Position = UDim2.new(0.05, 0, y, 0) b.Font, b.Text, b.TextSize, b.BackgroundColor3, b.TextColor3 = Enum.Font.SourceSansBold, text, 14, color, Color3.new(1,1,1) return b end local b1 = createBtn("Magnet: OFF", 0.1, Color3.fromRGB(40,40,40)) local b2 = createBtn("Purge & Hop Server", 0.52, Color3.fromRGB(80,20,20)) local function getBall() if ballCache and ballCache.Parent and ballCache:IsDescendantOf(workspace) then return ballCache end if (os.clock() - lastScan) < 0.5 then return nil end lastScan = os.clock() for _, v in ipairs(workspace:GetChildren()) do if v.Name == "SoccerBall" and v:IsA("BasePart") then ballCache = v return v end end local fld = workspace:FindFirstChild("FootballField") or workspace:FindFirstChild("Field") or workspace:FindFirstChild("Game") if fld then for _, v in ipairs(fld:GetChildren()) do if v.Name == "SoccerBall" and v:IsA("BasePart") then ballCache = v return v end end end return nil end local function clean() active = false for _, c in ipairs(conns) do if c then c:Disconnect() end end table.clear(conns) ballCache = nil if sg then sg:Destroy() end pcall(function() SG:SetCoreGuiEnabled(Enum.CoreGuiType.All, false) task.wait() SG:SetCoreGuiEnabled(Enum.CoreGuiType.All, true) end) -- Forces CoreGui & Chat to re-initialize natively end local function tpBall() local b, char = getBall(), p.Character local hrp = char and char:FindFirstChild("HumanoidRootPart") if hrp and b then b.CFrame = hrp.CFrame * CFrame.new(0, 0, -2.5) end end table.insert(conns, b1.MouseButton1Click:Connect(function() active = not active b1.Text = active and "Magnet: ON" or "Magnet: OFF" b1.BackgroundColor3 = active and Color3.fromRGB(20,80,20) or Color3.fromRGB(40,40,40) end)) table.insert(conns, b2.MouseButton1Click:Connect(function() clean() pcall(function() TS:TeleportAsync(game.PlaceId, {p}, Instance.new("TeleportOptions")) end) end)) table.insert(conns, UIS.InputBegan:Connect(function(i, g) if not g and i.KeyCode == Enum.KeyCode.Q then tpBall() end end)) table.insert(conns, sg.Destroying:Connect(clean)) table.insert(conns, RS.Heartbeat:Connect(function() if active and sg and sg.Parent then local b, char = getBall(), p.Character local hrp = char and char:FindFirstChild("HumanoidRootPart") if hrp and b then local dot = (b.Position - hrp.Position).Unit:Dot(hrp.CFrame.LookVector) if (hrp.Position - b.Position).Magnitude < 6 and dot > 0.4 then b.CFrame = hrp.CFrame * CFrame.new(0, -0.6, -1.8) b.AssemblyLinearVelocity, b.AssemblyAngularVelocity = Vector3.zero, Vector3.zero end end end end))