loadstring([[ local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local CoreGui = game:GetService("CoreGui") local Camera = workspace.CurrentCamera local LocalPlayer = Players.LocalPlayer -- ===================== -- VARIABLES -- ===================== local ESPEnabled = true local RainbowEnabled = false local TracersEnabled = true local BoxEnabled = true local NameEnabled = true local DistanceEnabled = true local HealthEnabled = true local HeadDotEnabled = true local TeamCheck = false local MaxDistance = 1000 local FillColor = Color3.fromRGB(255, 50, 50) local OutlineColor = Color3.fromRGB(200, 0, 0) local FillTransparency = 0.5 local highlights = {} local drawings = {} local tracers = {} local rainbowHue = 0 local menuRainbowHue = 0 -- ===================== -- UI -- ===================== local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "UniversalESP" ScreenGui.ResetOnSpawn = false ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling pcall(function() ScreenGui.Parent = CoreGui end) if not ScreenGui.Parent then ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui") end -- Bouton flottant local OpenBtn = Instance.new("TextButton") OpenBtn.Size = UDim2.new(0, 44, 0, 44) OpenBtn.Position = UDim2.new(1, -58, 0.5, -22) OpenBtn.BackgroundColor3 = Color3.fromRGB(25, 25, 40) OpenBtn.Text = "ESP" OpenBtn.Font = Enum.Font.GothamBold OpenBtn.TextSize = 12 OpenBtn.TextColor3 = Color3.fromRGB(255, 255, 255) OpenBtn.Parent = ScreenGui Instance.new("UICorner", OpenBtn).CornerRadius = UDim.new(1, 0) local os = Instance.new("UIStroke", OpenBtn) os.Color = Color3.fromRGB(80, 80, 140) os.Thickness = 1.5 -- Menu (plus large + moins haut) local Main = Instance.new("Frame") Main.Size = UDim2.new(0, 300, 0, 340) Main.Position = UDim2.new(0.5, -150, 0.5, -170) Main.BackgroundColor3 = Color3.fromRGB(14, 14, 20) Main.BorderSizePixel = 0 Main.Visible = true Main.Active = true Main.Parent = ScreenGui Instance.new("UICorner", Main).CornerRadius = UDim.new(0, 10) local MainStroke = Instance.new("UIStroke") MainStroke.Thickness = 2 MainStroke.Parent = Main -- Title local Title = Instance.new("TextLabel") Title.Size = UDim2.new(1, 0, 0, 32) Title.BackgroundColor3 = Color3.fromRGB(22, 22, 34) Title.BorderSizePixel = 0 Title.Text = " Universal ESP" Title.Font = Enum.Font.GothamBold Title.TextSize = 14 Title.TextColor3 = Color3.fromRGB(255, 255, 255) Title.TextXAlignment = Enum.TextXAlignment.Left Title.Parent = Main Instance.new("UICorner", Title).CornerRadius = UDim.new(0, 10) local tf = Instance.new("Frame", Title) tf.Size = UDim2.new(1, 0, 0, 10) tf.Position = UDim2.new(0, 0, 1, -10) tf.BackgroundColor3 = Color3.fromRGB(22, 22, 34) tf.BorderSizePixel = 0 local CloseBtn = Instance.new("TextButton") CloseBtn.Size = UDim2.new(0, 28, 0, 28) CloseBtn.Position = UDim2.new(1, -30, 0, 2) CloseBtn.BackgroundTransparency = 1 CloseBtn.Text = "×" CloseBtn.Font = Enum.Font.GothamBold CloseBtn.TextSize = 18 CloseBtn.TextColor3 = Color3.fromRGB(200, 200, 200) CloseBtn.Parent = Title -- Helpers UI local function Section(text, y) local lbl = Instance.new("TextLabel") lbl.Size = UDim2.new(1, -16, 0, 16) lbl.Position = UDim2.new(0, 8, 0, y) lbl.BackgroundTransparency = 1 lbl.Text = text lbl.Font = Enum.Font.GothamBold lbl.TextSize = 11 lbl.TextColor3 = Color3.fromRGB(140, 140, 170) lbl.TextXAlignment = Enum.TextXAlignment.Left lbl.Parent = Main return y + 18 end local function CreateBtn(text, x, y, w, defaultOn) local btn = Instance.new("TextButton") btn.Size = UDim2.new(0, w, 0, 26) btn.Position = UDim2.new(0, x, 0, y) btn.BackgroundColor3 = defaultOn and Color3.fromRGB(28, 105, 48) or Color3.fromRGB(115, 32, 38) btn.Text = text btn.Font = Enum.Font.GothamMedium btn.TextSize = 11 btn.TextColor3 = Color3.fromRGB(235, 235, 235) btn.AutoButtonColor = false btn.Parent = Main Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 5) return btn end -- ===== MAIN ===== local y = 38 y = Section("MAIN", y) local ESPBtn = CreateBtn("ESP : ON", 8, y, 138, true) local RainbowBtn = CreateBtn("Rainbow : OFF", 154, y, 138, false) y = y + 30 local TracerBtn = CreateBtn("Lignes : ON", 8, y, 138, true) local TeamBtn = CreateBtn("Team Check : OFF", 154, y, 138, false) y = y + 34 -- ===== VISUELS ===== y = Section("VISUELS", y) local BoxBtn = CreateBtn("Box : ON", 8, y, 90, true) local NameBtn = CreateBtn("Noms : ON", 104, y, 90, true) local DistBtn = CreateBtn("Dist : ON", 200, y, 92, true) y = y + 30 local HealthBtn = CreateBtn("Vie : ON", 8, y, 90, true) local HeadBtn = CreateBtn("Head Dot : ON", 104, y, 188, true) y = y + 34 -- ===== FILTRES ===== y = Section("FILTRES", y) local DistMaxBtn = CreateBtn("Max Distance : 1000", 8, y, 284, true) y = y + 34 -- ===== COULEURS ===== y = Section("COULEURS", y) local colors = { Color3.fromRGB(255, 50, 50), Color3.fromRGB(50, 120, 255), Color3.fromRGB(50, 220, 100), Color3.fromRGB(255, 150, 0), Color3.fromRGB(180, 60, 255), Color3.fromRGB(255, 80, 180), Color3.fromRGB(0, 220, 255), Color3.fromRGB(255, 255, 255), } for i, color in ipairs(colors) do local btn = Instance.new("TextButton") btn.Size = UDim2.new(0, 28, 0, 22) btn.Position = UDim2.new(0, 8 + (i-1)*36, 0, y) btn.BackgroundColor3 = color btn.Text = "" btn.Parent = Main Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 4) local s = Instance.new("UIStroke", btn) s.Color = Color3.fromRGB(60, 60, 85) s.Thickness = 1 btn.MouseButton1Click:Connect(function() FillColor = color OutlineColor = color:Lerp(Color3.new(0,0,0), 0.28) end) end y = y + 28 local TransBtn = CreateBtn("Transparence : 50%", 8, y, 284, true) -- ===================== -- LOGIQUE BOUTONS -- ===================== local function setBtn(btn, state, onText, offText) btn.Text = state and onText or offText btn.BackgroundColor3 = state and Color3.fromRGB(28, 105, 48) or Color3.fromRGB(115, 32, 38) end ESPBtn.MouseButton1Click:Connect(function() ESPEnabled = not ESPEnabled setBtn(ESPBtn, ESPEnabled, "ESP : ON", "ESP : OFF") end) RainbowBtn.MouseButton1Click:Connect(function() RainbowEnabled = not RainbowEnabled setBtn(RainbowBtn, RainbowEnabled, "Rainbow : ON", "Rainbow : OFF") end) TracerBtn.MouseButton1Click:Connect(function() TracersEnabled = not TracersEnabled setBtn(TracerBtn, TracersEnabled, "Lignes : ON", "Lignes : OFF") end) TeamBtn.MouseButton1Click:Connect(function() TeamCheck = not TeamCheck setBtn(TeamBtn, TeamCheck, "Team Check : ON", "Team Check : OFF") end) BoxBtn.MouseButton1Click:Connect(function() BoxEnabled = not BoxEnabled setBtn(BoxBtn, BoxEnabled, "Box : ON", "Box : OFF") end) NameBtn.MouseButton1Click:Connect(function() NameEnabled = not NameEnabled setBtn(NameBtn, NameEnabled, "Noms : ON", "Noms : OFF") end) DistBtn.MouseButton1Click:Connect(function() DistanceEnabled = not DistanceEnabled setBtn(DistBtn, DistanceEnabled, "Dist : ON", "Dist : OFF") end) HealthBtn.MouseButton1Click:Connect(function() HealthEnabled = not HealthEnabled setBtn(HealthBtn, HealthEnabled, "Vie : ON", "Vie : OFF") end) HeadBtn.MouseButton1Click:Connect(function() HeadDotEnabled = not HeadDotEnabled setBtn(HeadBtn, HeadDotEnabled, "Head Dot : ON", "Head Dot : OFF") end) DistMaxBtn.MouseButton1Click:Connect(function() if MaxDistance == 500 then MaxDistance = 1000 elseif MaxDistance == 1000 then MaxDistance = 2000 elseif MaxDistance == 2000 then MaxDistance = 5000 else MaxDistance = 500 end DistMaxBtn.Text = "Max Distance : " .. MaxDistance end) TransBtn.MouseButton1Click:Connect(function() FillTransparency += 0.15 if FillTransparency > 0.85 then FillTransparency = 0.2 end TransBtn.Text = "Transparence : " .. math.floor(FillTransparency * 100) .. "%" end) CloseBtn.MouseButton1Click:Connect(function() Main.Visible = false end) OpenBtn.MouseButton1Click:Connect(function() Main.Visible = not Main.Visible end) UserInputService.InputBegan:Connect(function(input, gpe) if gpe then return end if input.KeyCode == Enum.KeyCode.RightShift then Main.Visible = not Main.Visible end end) -- Drag local dragging, dragStart, startPos Title.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = Main.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) UserInputService.InputChanged:Connect(function(input) if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then local delta = input.Position - dragStart Main.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) -- ===================== -- ESP CORE -- ===================== local function getColor(player) if RainbowEnabled then return Color3.fromHSV(rainbowHue, 1, 1) end if player.Team and player.Team.TeamColor then return player.Team.TeamColor.Color end return FillColor end local function isValid(player) if not ESPEnabled then return false end if TeamCheck and player.Team and LocalPlayer.Team and player.Team == LocalPlayer.Team then return false end return true end local function createHighlight(char) if not char then return end if highlights[char] and highlights[char].Parent then return highlights[char] end local hl = Instance.new("Highlight") hl.Name = "UESP" hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop hl.FillTransparency = FillTransparency hl.OutlineTransparency = 0 hl.Parent = char highlights[char] = hl return hl end local function removeHighlight(char) if highlights[char] then highlights[char]:Destroy() highlights[char] = nil end end local function createDrawings(player) if drawings[player] then return drawings[player] end local t = {} local function safe(type) local ok, obj = pcall(function() return Drawing.new(type) end) return ok and obj or nil end t.box = safe("Square") if t.box then t.box.Thickness = 1 t.box.Filled = false t.box.Visible = false end t.name = safe("Text") if t.name then t.name.Size = 13 t.name.Center = true t.name.Outline = true t.name.Visible = false end t.dist = safe("Text") if t.dist then t.dist.Size = 12 t.dist.Center = true t.dist.Outline = true t.dist.Visible = false end t.healthBar = safe("Line") if t.healthBar then t.healthBar.Thickness = 3 t.healthBar.Visible = false end t.headDot = safe("Circle") if t.headDot then t.headDot.Thickness = 1 t.headDot.Filled = true t.headDot.NumSides = 12 t.headDot.Radius = 3 t.headDot.Visible = false end drawings[player] = t return t end local function removeDrawings(player) if drawings[player] then for _, obj in pairs(drawings[player]) do if obj then pcall(function() obj:Remove() end) end end drawings[player] = nil end end local function createTracer(player) if tracers[player] then return tracers[player] end local ok, line = pcall(function() return Drawing.new("Line") end) if ok and line then line.Thickness = 1.3 line.Transparency = 0.85 line.Visible = false tracers[player] = line return line end end local function removeTracer(player) if tracers[player] then tracers[player]:Remove() tracers[player] = nil end end local function onCharacter(player, char) if player == LocalPlayer then return end task.wait(0.3) createHighlight(char) createDrawings(player) createTracer(player) char.AncestryChanged:Connect(function(_, parent) if not parent then removeHighlight(char) end end) end local function onPlayer(player) if player == LocalPlayer then return end player.CharacterAdded:Connect(function(char) onCharacter(player, char) end) if player.Character then onCharacter(player, player.Character) end end for _, p in ipairs(Players:GetPlayers()) do onPlayer(p) end Players.PlayerAdded:Connect(onPlayer) Players.PlayerRemoving:Connect(function(p) if p.Character then removeHighlight(p.Character) end removeDrawings(p) removeTracer(p) end) -- ===================== -- BOUCLE -- ===================== RunService.RenderStepped:Connect(function() menuRainbowHue = (menuRainbowHue + 0.008) % 1 MainStroke.Color = Color3.fromHSV(menuRainbowHue, 1, 1) rainbowHue = (rainbowHue + 0.004) % 1 local screenSize = Camera.ViewportSize local fromPos = Vector2.new(screenSize.X / 2, screenSize.Y) for _, player in ipairs(Players:GetPlayers()) do if player == LocalPlayer then continue end local char = player.Character local root = char and char:FindFirstChild("HumanoidRootPart") local head = char and char:FindFirstChild("Head") local humanoid = char and char:FindFirstChildOfClass("Humanoid") local hl = char and highlights[char] local d = drawings[player] local line = tracers[player] local valid = isValid(player) and root local distance = valid and (root.Position - Camera.CFrame.Position).Magnitude or 9999 local tooFar = distance > MaxDistance local pos, onScreen = Vector3.zero, false if root then pos, onScreen = Camera:WorldToViewportPoint(root.Position) end -- Highlight if valid and not tooFar then if not hl or not hl.Parent then hl = createHighlight(char) end if hl then hl.Enabled = true hl.FillTransparency = FillTransparency local c = getColor(player) hl.FillColor = c hl.OutlineColor = c:Lerp(Color3.new(0,0,0), 0.3) end elseif hl then hl.Enabled = false end -- Drawings if d then -- Box if d.box then if valid and not tooFar and onScreen and BoxEnabled then local size = 1800 / distance d.box.Size = Vector2.new(size * 1.35, size * 2.1) d.box.Position = Vector2.new(pos.X - d.box.Size.X/2, pos.Y - d.box.Size.Y/2) d.box.Color = getColor(player) d.box.Visible = true else d.box.Visible = false end end -- Name if d.name then if valid and not tooFar and onScreen and NameEnabled then d.name.Text = player.Name d.name.Position = Vector2.new(pos.X, pos.Y - (d.box and d.box.Size.Y/2 or 35) - 12) d.name.Color = getColor(player) d.name.Visible = true else d.name.Visible = false end end -- Distance if d.dist then if valid and not tooFar and onScreen and DistanceEnabled then d.dist.Text = math.floor(distance) .. "m" d.dist.Position = Vector2.new(pos.X, pos.Y + (d.box and d.box.Size.Y/2 or 25) + 4) d.dist.Color = Color3.fromRGB(220, 220, 220) d.dist.Visible = true else d.dist.Visible = false end end -- Health if d.healthBar and humanoid then if valid and not tooFar and onScreen and HealthEnabled then local hp = math.clamp(humanoid.Health / humanoid.MaxHealth, 0, 1) local h = (d.box and d.box.Size.Y or 45) * hp local bx = pos.X - (d.box and d.box.Size.X/2 or 22) - 5 local by = pos.Y + (d.box and d.box.Size.Y/2 or 22) d.healthBar.From = Vector2.new(bx, by) d.healthBar.To = Vector2.new(bx, by - h) d.healthBar.Color = Color3.fromRGB(255*(1-hp), 255*hp, 40) d.healthBar.Visible = true else d.healthBar.Visible = false end end -- Head Dot if d.headDot then local headPos = head and Camera:WorldToViewportPoint(head.Position + Vector3.new(0,0.4,0)) if valid and not tooFar and headPos and HeadDotEnabled then d.headDot.Position = Vector2.new(headPos.X, headPos.Y) d.headDot.Color = getColor(player) d.headDot.Visible = true else d.headDot.Visible = false end end end -- Tracer if line then if valid and not tooFar and TracersEnabled and onScreen then line.From = fromPos line.To = Vector2.new(pos.X, pos.Y) line.Color = getColor(player) line.Visible = true else line.Visible = false end end end end) print("Universal ESP Pro (Mobile Optimized) chargé") ]])()