-- Script criado por felip3nag do roblox local Players = game:GetService("Players") local RunService = game:GetService("RunService") local Teams = game:GetService("Teams") local UserInputService = game:GetService("UserInputService") local LocalPlayer = Players.LocalPlayer if not LocalPlayer then Players.PlayerAdded:Wait() LocalPlayer = Players.LocalPlayer if not LocalPlayer then return end end local PlayerGui = LocalPlayer:WaitForChild("PlayerGui") local ESP_ENABLED = true local ESP_COLOR_ENEMY = Color3.fromRGB(255, 0, 0) local ESP_COLOR_NEUTRAL = Color3.fromRGB(255, 255, 0) local TEAM_CHECK_ENABLED = true local ESP_BOX_WIDTH = 45 local ESP_BOX_HEIGHT = 25 local NAME_LABEL_HEIGHT = 12 local BOX_BORDER_SIZE = 1 local ESP_ScreenGui = PlayerGui:FindFirstChild("ESP_UI_Final") if ESP_ScreenGui then ESP_ScreenGui:Destroy() end ESP_ScreenGui = Instance.new("ScreenGui") ESP_ScreenGui.Name = "ESP_UI_Final" ESP_ScreenGui.ResetOnSpawn = false ESP_ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling ESP_ScreenGui.Parent = PlayerGui local ESP_Container = Instance.new("Frame") ESP_Container.Name = "ESP_Container" ESP_Container.BackgroundTransparency = 1 ESP_Container.Size = UDim2.new(1, 0, 1, 0) ESP_Container.Parent = ESP_ScreenGui local ToggleButton = Instance.new("TextButton") ToggleButton.Name = "ToggleButton" ToggleButton.Text = "ESP: ON" ToggleButton.TextColor3 = Color3.fromRGB(0, 255, 0) ToggleButton.BackgroundColor3 = Color3.fromRGB(50, 50, 50) ToggleButton.BorderColor3 = Color3.fromRGB(200, 200, 200) ToggleButton.BorderSizePixel = 1 ToggleButton.Size = UDim2.new(0, 100, 0, 30) ToggleButton.Position = UDim2.new(0, 10, 0, 10) ToggleButton.Font = Enum.Font.SourceSans ToggleButton.TextScaled = true ToggleButton.Parent = ESP_ScreenGui ToggleButton.MouseButton1Click:Connect(function() ESP_ENABLED = not ESP_ENABLED if ESP_ENABLED then ToggleButton.Text = "ESP: ON" ToggleButton.TextColor3 = Color3.fromRGB(0, 255, 0) else ToggleButton.Text = "ESP: OFF" ToggleButton.TextColor3 = Color3.fromRGB(255, 0, 0) for _, child in ipairs(ESP_Container:GetChildren()) do if child:IsA("Frame") and string.find(child.Name, "_ESP") then child:Destroy() end end end end) local function updateESP(targetPlayer) if not ESP_ENABLED then return end if targetPlayer == LocalPlayer then return end local character = targetPlayer.Character local humanoid = character and character:FindFirstChildOfClass("Humanoid") local rootPart = character and character:FindFirstChild("HumanoidRootPart") local espFrameName = targetPlayer.Name .. "_ESP" local espFrame = ESP_Container:FindFirstChild(espFrameName) if not humanoid or humanoid.Health <= 0 or not rootPart then if espFrame then espFrame:Destroy() end return end local isEnemy = true if TEAM_CHECK_ENABLED then local localTeam = LocalPlayer.Team local targetTeam = targetPlayer.Team if localTeam and targetTeam then if localTeam == targetTeam then isEnemy = false end elseif not localTeam and not targetTeam then isEnemy = false end end if TEAM_CHECK_ENABLED and not isEnemy then if espFrame then espFrame:Destroy() end return end local camera = workspace.CurrentCamera if not camera then return end local worldPosition = rootPart.Position local screenPosition, onScreen = camera:WorldToScreenPoint(worldPosition) if onScreen then local espColor = (TEAM_CHECK_ENABLED and isEnemy) and ESP_COLOR_ENEMY or ESP_COLOR_NEUTRAL if not espFrame then espFrame = Instance.new("Frame") espFrame.Name = espFrameName espFrame.Size = UDim2.new(0, ESP_BOX_WIDTH, 0, ESP_BOX_HEIGHT) espFrame.BackgroundTransparency = 1 espFrame.BorderSizePixel = 0 espFrame.ClipsDescendants = false espFrame.Parent = ESP_Container local box = Instance.new("Frame") box.Name = "Box" box.Size = UDim2.new(1, 0, 1, 0) box.BackgroundTransparency = 1 box.BorderSizePixel = BOX_BORDER_SIZE box.BorderColor3 = espColor box.Parent = espFrame local nameLabel = Instance.new("TextLabel") nameLabel.Name = "NameLabel" nameLabel.Size = UDim2.new(1, 20, 0, NAME_LABEL_HEIGHT) nameLabel.Position = UDim2.new(0, -10, 0, -NAME_LABEL_HEIGHT) nameLabel.BackgroundTransparency = 1 nameLabel.TextColor3 = Color3.fromRGB(255, 255, 255) nameLabel.TextScaled = true nameLabel.Text = targetPlayer.Name nameLabel.Font = Enum.Font.SourceSansSemibold nameLabel.TextStrokeTransparency = 0.5 nameLabel.TextStrokeColor3 = Color3.fromRGB(0,0,0) nameLabel.Parent = espFrame end espFrame.Position = UDim2.new(0, screenPosition.X - ESP_BOX_WIDTH / 2, 0, screenPosition.Y - ESP_BOX_HEIGHT / 2 - NAME_LABEL_HEIGHT) espFrame.Visible = true local box = espFrame:FindFirstChild("Box") if box then box.BorderColor3 = espColor end local nameLabel = espFrame:FindFirstChild("NameLabel") if nameLabel then nameLabel.Text = targetPlayer.Name end else if espFrame then espFrame.Visible = false end end end RunService.RenderStepped:Connect(function() if not ESP_ENABLED then if #ESP_Container:GetChildren() > 0 then for _, child in ipairs(ESP_Container:GetChildren()) do if child:IsA("Frame") and string.find(child.Name, "_ESP") then child:Destroy() end end end return end local allPlayers = Players:GetPlayers() for _, player in ipairs(allPlayers) do pcall(updateESP, player) end for _, espElement in ipairs(ESP_Container:GetChildren()) do if espElement:IsA("Frame") and string.find(espElement.Name, "_ESP") then local playerName = string.gsub(espElement.Name, "_ESP", "") if not Players:FindFirstChild(playerName) then espElement:Destroy() end end end end)