-- Preview: https://cdn.discordapp.com/attachments/796378086446333984/818089455897542687/unknown.png -- Made by Blissful#4992 local Settings = { Box_Color = Color3.fromRGB(255, 0, 0), Tracer_Color = Color3.fromRGB(255, 0, 0), Tracer_Thickness = 1, Box_Thickness = 1, Tracer_Origin = "Bottom", -- Middle or Bottom if FollowMouse is on this won't matter... Tracer_FollowMouse = false, Tracers = true } local Team_Check = { TeamCheck = false, -- if TeamColor is on this won't matter... Green = Color3.fromRGB(0, 255, 0), Red = Color3.fromRGB(255, 0, 0) } local TeamColor = true --// SEPARATION local player = game:GetService("Players").LocalPlayer local camera = game:GetService("Workspace").CurrentCamera local mouse = player:GetMouse() local function NewQuad(thickness, color) local quad = Drawing.new("Quad") quad.Visible = false quad.PointA = Vector2.new(0,0) quad.PointB = Vector2.new(0,0) quad.PointC = Vector2.new(0,0) quad.PointD = Vector2.new(0,0) quad.Color = color quad.Filled = false quad.Thickness = thickness quad.Transparency = 1 return quad end local function NewLine(thickness, color) local line = Drawing.new("Line") line.Visible = false line.From = Vector2.new(0, 0) line.To = Vector2.new(0, 0) line.Color = color line.Thickness = thickness line.Transparency = 1 return line end local function Visibility(state, lib) for u, x in pairs(lib) do x.Visible = state end end local function ToColor3(col) --Function to convert, just cuz c; local r = col.r --Red value local g = col.g --Green value local b = col.b --Blue value return Color3.new(r,g,b); --Color3 datatype, made of the RGB inputs end local black = Color3.fromRGB(0, 0 ,0) local function ESP(plr) local library = { --//Tracer and Black Tracer(black border) blacktracer = NewLine(Settings.Tracer_Thickness*2, black), tracer = NewLine(Settings.Tracer_Thickness, Settings.Tracer_Color), --//Box and Black Box(black border) black = NewQuad(Settings.Box_Thickness*2, black), box = NewQuad(Settings.Box_Thickness, Settings.Box_Color), --//Bar and Green Health Bar (part that moves up/down) healthbar = NewLine(3, black), greenhealth = NewLine(1.5, black) } local function Colorize(color) for u, x in pairs(library) do if x ~= library.healthbar and x ~= library.greenhealth and x ~= library.blacktracer and x ~= library.black then x.Color = color end end end local function Updater() local connection connection = game:GetService("RunService").RenderStepped:Connect(function() if plr.Character ~= nil and plr.Character:FindFirstChild("Humanoid") ~= nil and plr.Character:FindFirstChild("HumanoidRootPart") ~= nil and plr.Character.Humanoid.Health > 0 and plr.Character:FindFirstChild("Head") ~= nil then local HumPos, OnScreen = camera:WorldToViewportPoint(plr.Character.HumanoidRootPart.Position) if OnScreen then local head = camera:WorldToViewportPoint(plr.Character.Head.Position) local DistanceY = math.clamp((Vector2.new(head.X, head.Y) - Vector2.new(HumPos.X, HumPos.Y)).magnitude, 2, math.huge) local function Size(item) item.PointA = Vector2.new(HumPos.X + DistanceY, HumPos.Y - DistanceY*2) item.PointB = Vector2.new(HumPos.X - DistanceY, HumPos.Y - DistanceY*2) item.PointC = Vector2.new(HumPos.X - DistanceY, HumPos.Y + DistanceY*2) item.PointD = Vector2.new(HumPos.X + DistanceY, HumPos.Y + DistanceY*2) end Size(library.box) Size(library.black) --//Tracer if Settings.Tracers then if Settings.Tracer_Origin == "Middle" then library.tracer.From = camera.ViewportSize*0.5 library.blacktracer.From = camera.ViewportSize*0.5 elseif Settings.Tracer_Origin == "Bottom" then library.tracer.From = Vector2.new(camera.ViewportSize.X*0.5, camera.ViewportSize.Y) library.blacktracer.From = Vector2.new(camera.ViewportSize.X*0.5, camera.ViewportSize.Y) end if Settings.Tracer_FollowMouse then library.tracer.From = Vector2.new(mouse.X, mouse.Y+36) library.blacktracer.From = Vector2.new(mouse.X, mouse.Y+36) end library.tracer.To = Vector2.new(HumPos.X, HumPos.Y + DistanceY*2) library.blacktracer.To = Vector2.new(HumPos.X, HumPos.Y + DistanceY*2) else library.tracer.From = Vector2.new(0, 0) library.blacktracer.From = Vector2.new(0, 0) library.tracer.To = Vector2.new(0, 0) library.blacktracer.To = Vector2.new(0, 02) end --// Health Bar local d = (Vector2.new(HumPos.X - DistanceY, HumPos.Y - DistanceY*2) - Vector2.new(HumPos.X - DistanceY, HumPos.Y + DistanceY*2)).magnitude local healthoffset = plr.Character.Humanoid.Health/plr.Character.Humanoid.MaxHealth * d library.greenhealth.From = Vector2.new(HumPos.X - DistanceY - 4, HumPos.Y + DistanceY*2) library.greenhealth.To = Vector2.new(HumPos.X - DistanceY - 4, HumPos.Y + DistanceY*2 - healthoffset) library.healthbar.From = Vector2.new(HumPos.X - DistanceY - 4, HumPos.Y + DistanceY*2) library.healthbar.To = Vector2.new(HumPos.X - DistanceY - 4, HumPos.Y - DistanceY*2) local green = Color3.fromRGB(0, 255, 0) local red = Color3.fromRGB(255, 0, 0) library.greenhealth.Color = red:lerp(green, plr.Character.Humanoid.Health/plr.Character.Humanoid.MaxHealth); if Team_Check.TeamCheck then if plr.TeamColor == player.TeamColor then Colorize(Team_Check.Green) else Colorize(Team_Check.Red) end else library.tracer.Color = Settings.Tracer_Color library.box.Color = Settings.Box_Color end if TeamColor == true then Colorize(plr.TeamColor.Color) end Visibility(true, library) else Visibility(false, library) end else Visibility(false, library) if game.Players:FindFirstChild(plr.Name) == nil then connection:Disconnect() end end end) end coroutine.wrap(Updater)() end for i, v in pairs(game:GetService("Players"):GetPlayers()) do if v.Name ~= player.Name then coroutine.wrap(ESP)(v) end end game.Players.PlayerAdded:Connect(function(newplr) if newplr.Name ~= player.Name then coroutine.wrap(ESP)(newplr) end end)