local Fluent = loadstring(game:HttpGet("https://github.com/dawid-scripts/Fluent/releases/latest/download/main.lua"))() local SaveManager = loadstring(game:HttpGet("https://raw.githubusercontent.com/dawid-scripts/Fluent/master/Addons/SaveManager.lua"))() local InterfaceManager = loadstring(game:HttpGet("https://raw.githubusercontent.com/dawid-scripts/Fluent/master/Addons/InterfaceManager.lua"))() local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local Camera = workspace.CurrentCamera local LocalPlayer = Players.LocalPlayer -- Global configuration states for Whistle _G.WhistleToggle = false _G.WhistleDelay = 1.0 -- Table to track active event connections for clean unloading local Hooks = {} -- Movement Exploit States local MovementSettings = { InfiniteJump = false, Noclip = false, WalkSpeedEnabled = false, WalkSpeedValue = 16 } local Drawings = { ESP = {}, Tracers = {}, Boxes = {}, Healthbars = {}, Names = {}, Distances = {}, Snaplines = {}, Skeleton = {} } local Colors = { Enemy = Color3.fromRGB(255, 25, 25), Ally = Color3.fromRGB(25, 255, 25), Neutral = Color3.fromRGB(255, 255, 255), Selected = Color3.fromRGB(255, 210, 0), Health = Color3.fromRGB(0, 255, 0), Distance = Color3.fromRGB(200, 200, 200), Rainbow = nil } local Highlights = {} local Settings = { Enabled = false, TeamCheck = false, ShowTeam = false, VisibilityCheck = true, BoxESP = false, BoxStyle = "Corner", BoxOutline = true, BoxFilled = false, BoxFillTransparency = 0.5, BoxThickness = 1, TracerESP = false, TracerOrigin = "Bottom", TracerStyle = "Line", TracerThickness = 1, HealthESP = false, HealthStyle = "Bar", HealthBarSide = "Left", HealthTextSuffix = "HP", NameESP = false, NameMode = "DisplayName", ShowDistance = true, DistanceUnit = "studs", TextSize = 14, TextFont = 2, RainbowSpeed = 1, MaxDistance = 1000, RefreshRate = 1/144, Snaplines = false, SnaplineStyle = "Straight", RainbowEnabled = false, RainbowBoxes = false, RainbowTracers = false, RainbowText = false, ChamsEnabled = false, ChamsOutlineColor = Color3.fromRGB(255, 255, 255), ChamsFillColor = Color3.fromRGB(255, 0, 0), ChamsOccludedColor = Color3.fromRGB(150, 0, 0), ChamsTransparency = 0.5, ChamsOutlineTransparency = 0, ChamsOutlineThickness = 0.1, SkeletonESP = false, SkeletonColor = Color3.fromRGB(255, 255, 255), SkeletonThickness = 1.5, SkeletonTransparency = 1 } local function CreateESP(player) if player == LocalPlayer then return end local box = { TopLeft = Drawing.new("Line"), TopRight = Drawing.new("Line"), BottomLeft = Drawing.new("Line"), BottomRight = Drawing.new("Line"), Left = Drawing.new("Line"), Right = Drawing.new("Line"), Top = Drawing.new("Line"), Bottom = Drawing.new("Line") } for _, line in pairs(box) do line.Visible = false line.Color = Colors.Enemy line.Thickness = Settings.BoxThickness if line == box.Fill then line.Filled = true line.Transparency = Settings.BoxFillTransparency end end local tracer = Drawing.new("Line") tracer.Visible = false tracer.Color = Colors.Enemy tracer.Thickness = Settings.TracerThickness local healthBar = { Outline = Drawing.new("Square"), Fill = Drawing.new("Square"), Text = Drawing.new("Text") } for _, obj in pairs(healthBar) do obj.Visible = false if obj == healthBar.Fill then obj.Color = Colors.Health obj.Filled = true elseif obj == healthBar.Text then obj.Center = true obj.Size = Settings.TextSize obj.Color = Colors.Health obj.Font = Settings.TextFont end end local info = { Name = Drawing.new("Text"), Distance = Drawing.new("Text") } for _, text in pairs(info) do text.Visible = false text.Center = true text.Size = Settings.TextSize text.Color = Colors.Enemy text.Font = Settings.TextFont text.Outline = true end local snapline = Drawing.new("Line") snapline.Visible = false snapline.Color = Colors.Enemy snapline.Thickness = 1 local highlight = Instance.new("Highlight") highlight.Name = "Fluent_ESP_Cham" highlight.FillColor = Settings.ChamsFillColor highlight.OutlineColor = Settings.ChamsOutlineColor highlight.FillTransparency = Settings.ChamsTransparency highlight.OutlineTransparency = Settings.ChamsOutlineTransparency highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop highlight.Enabled = Settings.ChamsEnabled Highlights[player] = highlight local skeleton = { Head = Drawing.new("Line"), Neck = Drawing.new("Line"), UpperSpine = Drawing.new("Line"), LowerSpine = Drawing.new("Line"), LeftShoulder = Drawing.new("Line"), LeftUpperArm = Drawing.new("Line"), LeftLowerArm = Drawing.new("Line"), LeftHand = Drawing.new("Line"), RightShoulder = Drawing.new("Line"), RightUpperArm = Drawing.new("Line"), RightLowerArm = Drawing.new("Line"), RightHand = Drawing.new("Line"), LeftHip = Drawing.new("Line"), LeftUpperLeg = Drawing.new("Line"), LeftLowerLeg = Drawing.new("Line"), LeftFoot = Drawing.new("Line"), RightHip = Drawing.new("Line"), RightUpperLeg = Drawing.new("Line"), RightLowerLeg = Drawing.new("Line"), RightFoot = Drawing.new("Line") } for _, line in pairs(skeleton) do line.Visible = false line.Color = Settings.SkeletonColor line.Thickness = Settings.SkeletonThickness line.Transparency = Settings.SkeletonTransparency end Drawings.Skeleton[player] = skeleton Drawings.ESP[player] = { Box = box, Tracer = tracer, HealthBar = healthBar, Info = info, Snapline = snapline } end local function RemoveESP(player) local esp = Drawings.ESP[player] if esp then for _, obj in pairs(esp.Box) do obj:Remove() end if esp.Tracer then esp.Tracer:Remove() end for _, obj in pairs(esp.HealthBar) do obj:Remove() end for _, obj in pairs(esp.Info) do obj:Remove() end if esp.Snapline then esp.Snapline:Remove() end Drawings.ESP[player] = nil end local highlight = Highlights[player] if highlight then highlight:Destroy() Highlights[player] = nil end local skeleton = Drawings.Skeleton[player] if skeleton then for _, line in pairs(skeleton) do line:Remove() end Drawings.Skeleton[player] = nil end end local function GetPlayerColor(player) if Settings.RainbowEnabled then if Settings.RainbowBoxes and Settings.BoxESP then return Colors.Rainbow end if Settings.RainbowTracers and Settings.TracerESP then return Colors.Rainbow end if Settings.RainbowText and (Settings.NameESP or Settings.HealthESP) then return Colors.Rainbow end end return player.Team == LocalPlayer.Team and Colors.Ally or Colors.Enemy end local function GetBoxCorners(cf, size) local corners = { Vector3.new(-size.X/2, -size.Y/2, -size.Z/2), Vector3.new(-size.X/2, -size.Y/2, size.Z/2), Vector3.new(-size.X/2, size.Y/2, -size.Z/2), Vector3.new(-size.X/2, size.Y/2, size.Z/2), Vector3.new(size.X/2, -size.Y/2, -size.Z/2), Vector3.new(size.X/2, -size.Y/2, size.Z/2), Vector3.new(size.X/2, size.Y/2, -size.Z/2), Vector3.new(size.X/2, size.Y/2, size.Z/2) } for i, corner in ipairs(corners) do corners[i] = cf:PointToWorldSpace(corner) end return corners end local function GetTracerOrigin() local origin = Settings.TracerOrigin if origin == "Bottom" then return Vector2.new(Camera.ViewportSize.X/2, Camera.ViewportSize.Y) elseif origin == "Top" then return Vector2.new(Camera.ViewportSize.X/2, 0) elseif origin == "Mouse" then return UserInputService:GetMouseLocation() else return Vector2.new(Camera.ViewportSize.X/2, Camera.ViewportSize.Y/2) end end local function UpdateESP(player) if not Settings.Enabled then return end local esp = Drawings.ESP[player] if not esp then return end local character = player.Character if not character then for _, obj in pairs(esp.Box) do obj.Visible = false end esp.Tracer.Visible = false for _, obj in pairs(esp.HealthBar) do obj.Visible = false end for _, obj in pairs(esp.Info) do obj.Visible = false end esp.Snapline.Visible = false local skeleton = Drawings.Skeleton[player] if skeleton then for _, line in pairs(skeleton) do line.Visible = false end end return end local rootPart = character:FindFirstChild("HumanoidRootPart") if not rootPart then for _, obj in pairs(esp.Box) do obj.Visible = false end esp.Tracer.Visible = false for _, obj in pairs(esp.HealthBar) do obj.Visible = false end for _, obj in pairs(esp.Info) do obj.Visible = false end esp.Snapline.Visible = false local skeleton = Drawings.Skeleton[player] if skeleton then for _, line in pairs(skeleton) do line.Visible = false end end return end local _, isOnScreen = Camera:WorldToViewportPoint(rootPart.Position) if not isOnScreen then for _, obj in pairs(esp.Box) do obj.Visible = false end esp.Tracer.Visible = false for _, obj in pairs(esp.HealthBar) do obj.Visible = false end for _, obj in pairs(esp.Info) do obj.Visible = false end esp.Snapline.Visible = false local skeleton = Drawings.Skeleton[player] if skeleton then for _, line in pairs(skeleton) do line.Visible = false end end return end local humanoid = character:FindFirstChild("Humanoid") if not humanoid or humanoid.Health <= 0 then for _, obj in pairs(esp.Box) do obj.Visible = false end esp.Tracer.Visible = false for _, obj in pairs(esp.HealthBar) do obj.Visible = false end for _, obj in pairs(esp.Info) do obj.Visible = false end esp.Snapline.Visible = false local skeleton = Drawings.Skeleton[player] if skeleton then for _, line in pairs(skeleton) do line.Visible = false end end return end local pos, onScreen = Camera:WorldToViewportPoint(rootPart.Position) local distance = (rootPart.Position - Camera.CFrame.Position).Magnitude if not onScreen or distance > Settings.MaxDistance then for _, obj in pairs(esp.Box) do obj.Visible = false end esp.Tracer.Visible = false for _, obj in pairs(esp.HealthBar) do obj.Visible = false end for _, obj in pairs(esp.Info) do obj.Visible = false end esp.Snapline.Visible = false return end if Settings.TeamCheck and player.Team == LocalPlayer.Team and not Settings.ShowTeam then for _, obj in pairs(esp.Box) do obj.Visible = false end esp.Tracer.Visible = false for _, obj in pairs(esp.HealthBar) do obj.Visible = false end for _, obj in pairs(esp.Info) do obj.Visible = false end esp.Snapline.Visible = false return end local color = GetPlayerColor(player) local size = character:GetExtentsSize() local cf = rootPart.CFrame local top, top_onscreen = Camera:WorldToViewportPoint(cf * CFrame.new(0, size.Y/2, 0).Position) local bottom, bottom_onscreen = Camera:WorldToViewportPoint(cf * CFrame.new(0, -size.Y/2, 0).Position) if not top_onscreen or not bottom_onscreen then for _, obj in pairs(esp.Box) do obj.Visible = false end return end local screenSize = bottom.Y - top.Y local boxWidth = screenSize * 0.65 local boxPosition = Vector2.new(top.X - boxWidth/2, top.Y) local boxSize = Vector2.new(boxWidth, screenSize) for _, obj in pairs(esp.Box) do obj.Visible = false end if Settings.BoxESP then if Settings.BoxStyle == "ThreeD" then local front = { TL = Camera:WorldToViewportPoint((cf * CFrame.new(-size.X/2, size.Y/2, -size.Z/2)).Position), TR = Camera:WorldToViewportPoint((cf * CFrame.new(size.X/2, size.Y/2, -size.Z/2)).Position), BL = Camera:WorldToViewportPoint((cf * CFrame.new(-size.X/2, -size.Y/2, -size.Z/2)).Position), BR = Camera:WorldToViewportPoint((cf * CFrame.new(size.X/2, -size.Y/2, -size.Z/2)).Position) } local back = { TL = Camera:WorldToViewportPoint((cf * CFrame.new(-size.X/2, size.Y/2, size.Z/2)).Position), TR = Camera:WorldToViewportPoint((cf * CFrame.new(size.X/2, size.Y/2, size.Z/2)).Position), BL = Camera:WorldToViewportPoint((cf * CFrame.new(-size.X/2, -size.Y/2, size.Z/2)).Position), BR = Camera:WorldToViewportPoint((cf * CFrame.new(size.X/2, -size.Y/2, size.Z/2)).Position) } if not (front.TL.Z > 0 and front.TR.Z > 0 and front.BL.Z > 0 and front.BR.Z > 0 and back.TL.Z > 0 and back.TR.Z > 0 and back.BL.Z > 0 and back.BR.Z > 0) then for _, obj in pairs(esp.Box) do obj.Visible = false end return end local function toVector2(v3) return Vector2.new(v3.X, v3.Y) end front.TL, front.TR = toVector2(front.TL), toVector2(front.TR) front.BL, front.BR = toVector2(front.BL), toVector2(front.BR) back.TL, back.TR = toVector2(back.TL), toVector2(back.TR) back.BL, back.BR = toVector2(back.BL), toVector2(back.BR) esp.Box.TopLeft.From = front.TL esp.Box.TopLeft.To = front.TR esp.Box.TopLeft.Visible = true esp.Box.TopRight.From = front.TR esp.Box.TopRight.To = front.BR esp.Box.TopRight.Visible = true esp.Box.BottomLeft.From = front.BL esp.Box.BottomLeft.To = front.BR esp.Box.BottomLeft.Visible = true esp.Box.BottomRight.From = front.TL esp.Box.BottomRight.To = front.BL esp.Box.BottomRight.Visible = true esp.Box.Left.From = back.TL esp.Box.Left.To = back.TR esp.Box.Left.Visible = true esp.Box.Right.From = back.TR esp.Box.Right.To = back.BR esp.Box.Right.Visible = true esp.Box.Top.From = back.BL esp.Box.Top.To = back.BR esp.Box.Top.Visible = true esp.Box.Bottom.From = back.TL esp.Box.Bottom.To = back.BL esp.Box.Bottom.Visible = true local function drawConnectingLine(from, to, visible) local line = Drawing.new("Line") line.Visible = visible line.Color = color line.Thickness = Settings.BoxThickness line.From = from line.To = to return line end local connectors = { drawConnectingLine(front.TL, back.TL, true), drawConnectingLine(front.TR, back.TR, true), drawConnectingLine(front.BL, back.BL, true), drawConnectingLine(front.BR, back.BR, true) } task.spawn(function() task.wait() for _, line in ipairs(connectors) do line:Remove() end end) elseif Settings.BoxStyle == "Corner" then local cornerSize = boxWidth * 0.2 esp.Box.TopLeft.From = boxPosition esp.Box.TopLeft.To = boxPosition + Vector2.new(cornerSize, 0) esp.Box.TopLeft.Visible = true esp.Box.TopRight.From = boxPosition + Vector2.new(boxSize.X, 0) esp.Box.TopRight.To = boxPosition + Vector2.new(boxSize.X - cornerSize, 0) esp.Box.TopRight.Visible = true esp.Box.BottomLeft.From = boxPosition + Vector2.new(0, boxSize.Y) esp.Box.BottomLeft.To = boxPosition + Vector2.new(cornerSize, boxSize.Y) esp.Box.BottomLeft.Visible = true esp.Box.BottomRight.From = boxPosition + Vector2.new(boxSize.X, boxSize.Y) esp.Box.BottomRight.To = boxPosition + Vector2.new(boxSize.X - cornerSize, boxSize.Y) esp.Box.BottomRight.Visible = true esp.Box.Left.From = boxPosition esp.Box.Left.To = boxPosition + Vector2.new(0, cornerSize) esp.Box.Left.Visible = true esp.Box.Right.From = boxPosition + Vector2.new(boxSize.X, 0) esp.Box.Right.To = boxPosition + Vector2.new(boxSize.X, cornerSize) esp.Box.Right.Visible = true esp.Box.Top.From = boxPosition + Vector2.new(0, boxSize.Y) esp.Box.Top.To = boxPosition + Vector2.new(0, boxSize.Y - cornerSize) esp.Box.Top.Visible = true esp.Box.Bottom.From = boxPosition + Vector2.new(boxSize.X, boxSize.Y) esp.Box.Bottom.To = boxPosition + Vector2.new(boxSize.X, boxSize.Y - cornerSize) esp.Box.Bottom.Visible = true else esp.Box.Left.From = boxPosition esp.Box.Left.To = boxPosition + Vector2.new(0, boxSize.Y) esp.Box.Left.Visible = true esp.Box.Right.From = boxPosition + Vector2.new(boxSize.X, 0) esp.Box.Right.To = boxPosition + Vector2.new(boxSize.X, boxSize.Y) esp.Box.Right.Visible = true esp.Box.Top.From = boxPosition esp.Box.Top.To = boxPosition + Vector2.new(boxSize.X, 0) esp.Box.Top.Visible = true esp.Box.Bottom.From = boxPosition + Vector2.new(0, boxSize.Y) esp.Box.Bottom.To = boxPosition + Vector2.new(boxSize.X, boxSize.Y) esp.Box.Bottom.Visible = true end for _, obj in pairs(esp.Box) do if obj.Visible then obj.Color = color obj.Thickness = Settings.BoxThickness end end end if Settings.TracerESP then esp.Tracer.From = GetTracerOrigin() esp.Tracer.To = Vector2.new(pos.X, pos.Y) esp.Tracer.Color = color esp.Tracer.Visible = true else esp.Tracer.Visible = false end if Settings.HealthESP then local health = humanoid.Health local maxHealth = humanoid.MaxHealth local healthPercent = health/maxHealth local barHeight = screenSize * 0.8 local barWidth = 4 local barPos = Vector2.new(boxPosition.X - barWidth - 2, boxPosition.Y + (screenSize - barHeight)/2) esp.HealthBar.Outline.Size = Vector2.new(barWidth, barHeight) esp.HealthBar.Outline.Position = barPos esp.HealthBar.Outline.Visible = true esp.HealthBar.Fill.Size = Vector2.new(barWidth - 2, barHeight * healthPercent) esp.HealthBar.Fill.Position = Vector2.new(barPos.X + 1, barPos.Y + barHeight * (1-healthPercent)) esp.HealthBar.Fill.Color = Color3.fromRGB(255 - (255 * healthPercent), 255 * healthPercent, 0) esp.HealthBar.Fill.Visible = true if Settings.HealthStyle == "Both" or Settings.HealthStyle == "Text" then esp.HealthBar.Text.Text = math.floor(health) .. Settings.HealthTextSuffix esp.HealthBar.Text.Position = Vector2.new(barPos.X + barWidth + 2, barPos.Y + barHeight/2) esp.HealthBar.Text.Visible = true else esp.HealthBar.Text.Visible = false end else for _, obj in pairs(esp.HealthBar) do obj.Visible = false end end if Settings.NameESP then esp.Info.Name.Text = player.DisplayName esp.Info.Name.Position = Vector2.new(boxPosition.X + boxWidth/2, boxPosition.Y - 20) esp.Info.Name.Color = color esp.Info.Name.Visible = true else esp.Info.Name.Visible = false end if Settings.Snaplines then esp.Snapline.From = Vector2.new(Camera.ViewportSize.X/2, Camera.ViewportSize.Y) esp.Snapline.To = Vector2.new(pos.X, pos.Y) esp.Snapline.Color = color esp.Snapline.Visible = true else esp.Snapline.Visible = false end local highlight = Highlights[player] if highlight then if Settings.ChamsEnabled and character then highlight.Parent = character highlight.FillColor = Settings.ChamsFillColor highlight.OutlineColor = Settings.ChamsOutlineColor highlight.FillTransparency = Settings.ChamsTransparency highlight.OutlineTransparency = Settings.ChamsOutlineTransparency highlight.Enabled = true else highlight.Enabled = false end end if Settings.SkeletonESP then local function getBonePositions(character) if not character then return nil end local bones = { Head = character:FindFirstChild("Head"), UpperTorso = character:FindFirstChild("UpperTorso") or character:FindFirstChild("Torso"), LowerTorso = character:FindFirstChild("LowerTorso") or character:FindFirstChild("Torso"), RootPart = character:FindFirstChild("HumanoidRootPart"), LeftUpperArm = character:FindFirstChild("LeftUpperArm") or character:FindFirstChild("Left Arm"), LeftLowerArm = character:FindFirstChild("LeftLowerArm") or character:FindFirstChild("Left Arm"), LeftHand = character:FindFirstChild("LeftHand") or character:FindFirstChild("Left Arm"), RightUpperArm = character:FindFirstChild("RightUpperArm") or character:FindFirstChild("Right Arm"), RightLowerArm = character:FindFirstChild("RightLowerArm") or character:FindFirstChild("Right Arm"), RightHand = character:FindFirstChild("RightHand") or character:FindFirstChild("Right Arm"), LeftUpperLeg = character:FindFirstChild("LeftUpperLeg") or character:FindFirstChild("Left Leg"), LeftLowerLeg = character:FindFirstChild("LeftLowerLeg") or character:FindFirstChild("Left Leg"), LeftFoot = character:FindFirstChild("LeftFoot") or character:FindFirstChild("Left Leg"), RightUpperLeg = character:FindFirstChild("RightUpperLeg") or character:FindFirstChild("Right Leg"), RightLowerLeg = character:FindFirstChild("RightLowerLeg") or character:FindFirstChild("Right Leg"), RightFoot = character:FindFirstChild("RightFoot") or character:FindFirstChild("Right Leg") } if not (bones.Head and bones.UpperTorso) then return nil end return bones end local function drawBone(from, to, line) if not from or not to then line.Visible = false return end local fromPos = (from.CFrame * CFrame.new(0, 0, 0)).Position local toPos = (to.CFrame * CFrame.new(0, 0, 0)).Position local fromScreen, fromVisible = Camera:WorldToViewportPoint(fromPos) local toScreen, toVisible = Camera:WorldToViewportPoint(toPos) if not (fromVisible and toVisible) or fromScreen.Z < 0 or toScreen.Z < 0 then line.Visible = false return end local screenBounds = Camera.ViewportSize if fromScreen.X < 0 or fromScreen.X > screenBounds.X or fromScreen.Y < 0 or fromScreen.Y > screenBounds.Y or toScreen.X < 0 or toScreen.X > screenBounds.X or toScreen.Y < 0 or toScreen.Y > screenBounds.Y then line.Visible = false return end line.From = Vector2.new(fromScreen.X, fromScreen.Y) line.To = Vector2.new(toScreen.X, toScreen.Y) line.Color = Settings.SkeletonColor line.Thickness = Settings.SkeletonThickness line.Transparency = Settings.SkeletonTransparency line.Visible = true end local bones = getBonePositions(character) if bones then local skeleton = Drawings.Skeleton[player] if skeleton then drawBone(bones.Head, bones.UpperTorso, skeleton.Head) drawBone(bones.UpperTorso, bones.LowerTorso, skeleton.UpperSpine) drawBone(bones.UpperTorso, bones.LeftUpperArm, skeleton.LeftShoulder) drawBone(bones.LeftUpperArm, bones.LeftLowerArm, skeleton.LeftUpperArm) drawBone(bones.LeftLowerArm, bones.LeftHand, skeleton.LeftLowerArm) drawBone(bones.UpperTorso, bones.RightUpperArm, skeleton.RightShoulder) drawBone(bones.RightUpperArm, bones.RightLowerArm, skeleton.RightUpperArm) drawBone(bones.RightLowerArm, bones.RightHand, skeleton.RightLowerArm) drawBone(bones.LowerTorso, bones.LeftUpperLeg, skeleton.LeftHip) drawBone(bones.LeftUpperLeg, bones.LeftLowerLeg, skeleton.LeftUpperLeg) drawBone(bones.LeftLowerLeg, bones.LeftFoot, skeleton.LeftLowerLeg) drawBone(bones.LowerTorso, bones.RightUpperLeg, skeleton.RightHip) drawBone(bones.RightUpperLeg, bones.RightLowerLeg, skeleton.RightUpperLeg) drawBone(bones.RightLowerLeg, bones.RightFoot, skeleton.RightLowerLeg) end end else local skeleton = Drawings.Skeleton[player] if skeleton then for _, line in pairs(skeleton) do line.Visible = false end end end end local function DisableESP() for _, player in ipairs(Players:GetPlayers()) do local esp = Drawings.ESP[player] if esp then for _, obj in pairs(esp.Box) do obj.Visible = false end esp.Tracer.Visible = false for _, obj in pairs(esp.HealthBar) do obj.Visible = false end for _, obj in pairs(esp.Info) do obj.Visible = false end esp.Snapline.Visible = false end end end -- Track hooks properly Hooks.PlayerAdded = Players.PlayerAdded:Connect(CreateESP) Hooks.PlayerRemoving = Players.PlayerRemoving:Connect(RemoveESP) for _, player in ipairs(Players:GetPlayers()) do CreateESP(player) end Hooks.RenderStepped = RunService.RenderStepped:Connect(function() for _, player in ipairs(Players:GetPlayers()) do UpdateESP(player) end end) ---------------------------------------------------------------- -- EXPLOIT LOOPS (Infinite Jump, Noclip & WalkSpeed) ---------------------------------------------------------------- Hooks.JumpRequest = UserInputService.JumpRequest:Connect(function() if MovementSettings.InfiniteJump and LocalPlayer.Character then local humanoid = LocalPlayer.Character:FindFirstChildOfClass("Humanoid") if humanoid then humanoid:ChangeState(Enum.HumanoidStateType.Jumping) end end end) Hooks.Stepped = RunService.Stepped:Connect(function() if LocalPlayer.Character then -- Noclip logic if MovementSettings.Noclip then for _, part in ipairs(LocalPlayer.Character:GetDescendants()) do if part:IsA("BasePart") and part.CanCollide then part.CanCollide = false end end end -- WalkSpeed logic loop to continuously enforce value local humanoid = LocalPlayer.Character:FindFirstChildOfClass("Humanoid") if humanoid then if MovementSettings.WalkSpeedEnabled then humanoid.WalkSpeed = MovementSettings.WalkSpeedValue end end end end) ---------------------------------------------------------------- -- TAUNT INJECTION LOOP ---------------------------------------------------------------- local whistleRunning = true task.spawn(function() local TauntEvent = game:GetService("ReplicatedStorage"):WaitForChild("Remotes"):WaitForChild("TauntEvent") while whistleRunning do if _G.WhistleToggle then TauntEvent:FireServer("Whistle") end task.wait(_G.WhistleDelay) end end) ---------------------------------------------------------------- -- UI LAYOUT GENERATION (Fluent Framework) ---------------------------------------------------------------- local Window = Fluent:CreateWindow({ Title = "[NEW!🔥]Paint Or Seek ESP | Made by Gemini Ai", SubTitle = "promp credit to dgrpip19", TabWidth = 160, Size = UDim2.fromOffset(580, 460), Acrylic = true, Theme = "Dark", MinimizeKey = Enum.KeyCode.LeftControl }) local Tabs = { Visuals = Window:AddTab({ Title = "ESP Visuals", Icon = "eye" }), Misc = Window:AddTab({ Title = "Misc Tools", Icon = "box" }), Settings = Window:AddTab({ Title = "Settings", Icon = "settings" }) } -- ESP Control assignments matching original script settings map Tabs.Visuals:AddToggle("MasterESP", { Title = "Enable ESP System", Default = false }):OnChanged(function(Value) Settings.Enabled = Value if not Value then DisableESP() end end) Tabs.Visuals:AddToggle("BoxToggle", { Title = "Box Outline", Default = false }):OnChanged(function(Value) Settings.BoxESP = Value end) Tabs.Visuals:AddToggle("NameToggle", { Title = "Show Names", Default = false }):OnChanged(function(Value) Settings.NameESP = Value end) -- Movement exploits added into Misc Tab Tabs.Misc:AddToggle("InfJumpToggle", { Title = "Infinite Jump", Default = false }):OnChanged(function(Value) MovementSettings.InfiniteJump = Value end) Tabs.Misc:AddToggle("NoclipToggle", { Title = "Noclip", Default = false }):OnChanged(function(Value) MovementSettings.Noclip = Value end) -- WalkSpeed Controls inside Misc Tab Tabs.Misc:AddToggle("WSToggle", { Title = "Enable WalkSpeed Changer", Default = false }):OnChanged(function(Value) MovementSettings.WalkSpeedEnabled = Value if not Value and LocalPlayer.Character then local humanoid = LocalPlayer.Character:FindFirstChildOfClass("Humanoid") if humanoid then humanoid.WalkSpeed = 16 end end end) Tabs.Misc:AddSlider("WSSlider", { Title = "Custom WalkSpeed", Description = "Adjust your character's travel speed.", Min = 16, Max = 250, Default = 16, Rounding = 0 }):OnChanged(function(Value) MovementSettings.WalkSpeedValue = Value end) -- The added Loop adjustments assigned within the Misc tab Tabs.Misc:AddToggle("WhistleSpam", { Title = "Auto Whistle Loop", Default = false }):OnChanged(function(Value) _G.WhistleToggle = Value end) Tabs.Misc:AddSlider("WhistleSpeed", { Title = "Whistle Delay (Seconds)", Description = "Adjust how fast the event fires on repeat.", Min = 0.1, Max = 5.0, Default = 1.0, Rounding = 1 }):OnChanged(function(Value) _G.WhistleDelay = Value end) ---------------------------------------------------------------- -- UNLOAD EXECUTION ---------------------------------------------------------------- Tabs.Settings:AddButton({ Title = "Unload Script", Description = "Completely removes drawings, loops, and UI hooks.", Callback = function() Window:Destroy() -- Disconnect all engine update links for name, connection in pairs(Hooks) do if connection then connection:Disconnect() end end -- Turn off Whistle Thread execution flag whistleRunning = false _G.WhistleToggle = false -- Restore movement configurations completely MovementSettings.Noclip = false MovementSettings.InfiniteJump = false MovementSettings.WalkSpeedEnabled = false if LocalPlayer.Character then local humanoid = LocalPlayer.Character:FindFirstChildOfClass("Humanoid") if humanoid then humanoid.WalkSpeed = 16 end for _, part in ipairs(LocalPlayer.Character:GetDescendants()) do if part:IsA("BasePart") then part.CanCollide = true end end end -- Fully flush out active graphics drawing references for _, player in ipairs(Players:GetPlayers()) do RemoveESP(player) end end }) Window:SelectTab(Tabs.Visuals)