--// CONFIGURATION local AimKey = Enum.UserInputType.MouseButton2 -- Clic Droit local AimPart = "Head" local TeamCheck = true local ESP_Enabled = true local MaxFOV = 500 -- Rayon de détection autour du curseur (en pixels) --// SERVICES local Players = game:GetService("Players") local Player = Players.LocalPlayer local Camera = workspace.CurrentCamera local Mouse = Player:GetMouse() local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local Aiming = false local CurrentTarget = nil --// FONCTION ESP local function ApplyESP(char, color) local highlight = char:FindFirstChild("Highlight") if not highlight then highlight = Instance.new("Highlight") highlight.Name = "Highlight" highlight.Parent = char end highlight.FillColor = color highlight.FillTransparency = 0.5 highlight.OutlineColor = Color3.new(1, 1, 1) end --// LOGIQUE : VISE L'ENNEMI LE PLUS PROCHE DU CURSEUR (POUR ÉVITER DE VISER AU LOIN) local function GetClosestToMouse() local Target = nil local ClosestDistance = MaxFOV for _, v in pairs(Players:GetPlayers()) do if v ~= Player and v.Character and v.Character:FindFirstChild(AimPart) then local hum = v.Character:FindFirstChildOfClass("Humanoid") if hum and hum.Health > 0 then -- Check Team if TeamCheck and v.Team == Player.Team then continue end -- Position sur l'écran local ScreenPos, OnScreen = Camera:WorldToViewportPoint(v.Character[AimPart].Position) if OnScreen then -- Distance entre le curseur et l'ennemi sur l'écran local MousePos = Vector2.new(Mouse.X, Mouse.Y) local TargetPos = Vector2.new(ScreenPos.X, ScreenPos.Y) local Dist = (MousePos - TargetPos).Magnitude if Dist < ClosestDistance then ClosestDistance = Dist Target = v end end end end end return Target end --// INPUTS UserInputService.InputBegan:Connect(function(i) if i.UserInputType == AimKey then Aiming = true end end) UserInputService.InputEnded:Connect(function(i) if i.UserInputType == AimKey then Aiming = false CurrentTarget = nil end end) --// BOUCLE PRINCIPALE RunService.RenderStepped:Connect(function() -- Gestion ESP if ESP_Enabled then for _, p in pairs(Players:GetPlayers()) do if p ~= Player and p.Character then if CurrentTarget and p == CurrentTarget then ApplyESP(p.Character, Color3.new(1, 0, 0)) -- ROUGE quand tu le vises elseif p.Team == Player.Team then ApplyESP(p.Character, Color3.new(0, 0, 1)) -- BLEU coéquipiers else ApplyESP(p.Character, Color3.new(0, 1, 0)) -- VERT ennemis end end end end -- Gestion Aim if Aiming then -- Cherche la cible la plus proche du milieu de l'écran if not CurrentTarget then CurrentTarget = GetClosestToMouse() end if CurrentTarget and CurrentTarget.Character and CurrentTarget.Character:FindFirstChild(AimPart) then -- Verrouille même à travers les murs (pas de check d'obstacle) Camera.CFrame = CFrame.new(Camera.CFrame.Position, CurrentTarget.Character[AimPart].Position) end end end)