local Players = game:GetService("Players") local LocalPlayer = Players.LocalPlayer -- GUI Setup local screenGui = Instance.new("ScreenGui") screenGui.Name = "ESPGui" screenGui.ResetOnSpawn = false screenGui.Parent = LocalPlayer:WaitForChild("PlayerGui") local toggleButton = Instance.new("TextButton") toggleButton.Size = UDim2.new(0, 120, 0, 40) toggleButton.Position = UDim2.new(0, 20, 0, 100) toggleButton.Text = "ESP: OFF" toggleButton.BackgroundColor3 = Color3.fromRGB(0, 85, 255) -- Blue GUI toggleButton.TextColor3 = Color3.new(1, 1, 1) toggleButton.Active = true toggleButton.Draggable = true toggleButton.Parent = screenGui -- ESP Logic local espEnabled = false -- Starts OFF local espBoxes = {} local function applyESPToCharacter(player, character) if not espEnabled then return end if espBoxes[player] then espBoxes[player]:Destroy() end local highlight = Instance.new("Highlight") highlight.Name = "PlayerESP" highlight.FillColor = Color3.fromRGB(255, 0, 0) highlight.OutlineColor = Color3.fromRGB(255, 255, 255) highlight.FillTransparency = 0.5 highlight.OutlineTransparency = 0 highlight.Adornee = character highlight.Parent = character espBoxes[player] = highlight end local function trackPlayer(player) if player == LocalPlayer then return end -- When character is added (or respawned) player.CharacterAdded:Connect(function(character) if espEnabled then wait(0.5) applyESPToCharacter(player, character) end end) -- Initial character if player.Character and espEnabled then applyESPToCharacter(player, player.Character) end end local function updateAllESP() for _, player in ipairs(Players:GetPlayers()) do if player ~= LocalPlayer then if espEnabled and player.Character then applyESPToCharacter(player, player.Character) elseif not espEnabled and espBoxes[player] then espBoxes[player]:Destroy() espBoxes[player] = nil end end end end -- Listen to new players joining Players.PlayerAdded:Connect(function(player) trackPlayer(player) end) -- Clean up ESP when a player leaves Players.PlayerRemoving:Connect(function(player) if espBoxes[player] then espBoxes[player]:Destroy() espBoxes[player] = nil end end) -- Toggle ESP on button click toggleButton.MouseButton1Click:Connect(function() espEnabled = not espEnabled toggleButton.Text = espEnabled and "ESP: ON" or "ESP: OFF" updateAllESP() end) -- Initial ESP setup for already present players for _, player in ipairs(Players:GetPlayers()) do trackPlayer(player) end