--//Made by Blissful#4992 local settings = { Color = Color3.fromRGB(255, 0, 0), Size = 15, Transparency = 1, -- 1 Visible - 0 Not Visible AutoScale = true } local space = game:GetService("Workspace") local player = game:GetService("Players").LocalPlayer local camera = space.CurrentCamera local function NewText(color, size, transparency) local text = Drawing.new("Text") text.Visible = false text.Text = "" text.Position = Vector2.new(0, 0) text.Color = color text.Size = size text.Center = true text.Transparency = transparency return text end local function Visibility(state, lib) for u, x in pairs(lib) do x.Visible = state end end local function Size(size, lib) for u, x in pairs(lib) do x.Size = size end end for i, v in pairs(game:GetService("Players"):GetPlayers()) do local library = { name = NewText(settings.Color, settings.Size, settings.Transparency) } local function ESP() local connection connection = game:GetService("RunService").RenderStepped:Connect(function() if v.Character ~= nil and v.Character:FindFirstChild("Humanoid") ~= nil and v.Character:FindFirstChild("HumanoidRootPart") ~= nil and v.Name ~= player.Name and v.Character.Humanoid.Health > 0 then local HumanoidRootPart_Pos, OnScreen = camera:WorldToViewportPoint(v.Character.HumanoidRootPart.Position) if OnScreen then library.name.Text = v.Name library.name.Position = Vector2.new(HumanoidRootPart_Pos.X, HumanoidRootPart_Pos.Y) --// AutoScale if settings.AutoScale then local distance = (Vector3.new(camera.CFrame.X, camera.CFrame.Y, camera.CFrame.Z) - v.Character.HumanoidRootPart.Position).magnitude local textsize = math.clamp(1/distance*1000, 2, 30) -- 2 is min text size, 30 is max text size, change to your liking Size(textsize, library) else Size(settings.Size, library) end --//-- Visibility(true, library) else Visibility(false, library) end else Visibility(false, library) if game.Players:FindFirstChild(v.Name) == nil then connection:Disconnect() end end end) end coroutine.wrap(ESP)() end game.Players.PlayerAdded:Connect(function(newplr) print(newplr) local library = { name = NewText(settings.Color, settings.Size, settings.Transparency) } local function ESP() local connection connection = game:GetService("RunService").RenderStepped:Connect(function() if newplr.Character ~= nil and newplr.Character:FindFirstChild("Humanoid") ~= nil and newplr.Character:FindFirstChild("HumanoidRootPart") ~= nil and newplr.Name ~= player.Name and newplr.Character.Humanoid.Health > 0 then local HumanoidRootPart_Pos, OnScreen = camera:WorldToViewportPoint(newplr.Character.HumanoidRootPart.Position) if OnScreen then library.name.Text = newplr.Name library.name.Position = Vector2.new(HumanoidRootPart_Pos.X, HumanoidRootPart_Pos.Y) --// AutoScale if settings.AutoScale then local distance = (Vector3.new(camera.CFrame.X, camera.CFrame.Y, camera.CFrame.Z) - newplr.Character.HumanoidRootPart.Position).magnitude local textsize = math.clamp(1/distance*1000, 2, 30) -- 2 is min text size, 20 is max text size, change to your liking Size(textsize, library) else Size(settings.Size, library) end --//-- Visibility(true, library) else Visibility(false, library) end else Visibility(false, library) if game.Players:FindFirstChild(newplr.Name) == nil then connection:Disconnect() end end end) end coroutine.wrap(ESP)() end) -- Settings local Settings = { Box_Color = Color3.fromRGB(255, 0, 0), Box_Thickness = 2, Team_Check = false, Team_Color = false, Autothickness = true } --Locals local Space = game:GetService("Workspace") local Player = game:GetService("Players").LocalPlayer local Camera = Space.CurrentCamera -- Locals local function NewLine(color, thickness) 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 Vis(lib, state) for i, v in pairs(lib) do v.Visible = state end end local function Colorize(lib, color) for i, v in pairs(lib) do v.Color = color end end local Black = Color3.fromRGB(0, 0, 0) local function Rainbow(lib, delay) for hue = 0, 1, 1/30 do local color = Color3.fromHSV(hue, 0.6, 1) Colorize(lib, color) wait(delay) end Rainbow(lib) end --Main Draw Function local function Main(plr) repeat wait() until plr.Character ~= nil and plr.Character:FindFirstChild("Humanoid") ~= nil local R15 if plr.Character.Humanoid.RigType == Enum.HumanoidRigType.R15 then R15 = true else R15 = false end local Library = { TL1 = NewLine(Settings.Box_Color, Settings.Box_Thickness), TL2 = NewLine(Settings.Box_Color, Settings.Box_Thickness), TR1 = NewLine(Settings.Box_Color, Settings.Box_Thickness), TR2 = NewLine(Settings.Box_Color, Settings.Box_Thickness), BL1 = NewLine(Settings.Box_Color, Settings.Box_Thickness), BL2 = NewLine(Settings.Box_Color, Settings.Box_Thickness), BR1 = NewLine(Settings.Box_Color, Settings.Box_Thickness), BR2 = NewLine(Settings.Box_Color, Settings.Box_Thickness) } coroutine.wrap(Rainbow)(Library, 0.15) local oripart = Instance.new("Part") oripart.Parent = Space oripart.Transparency = 1 oripart.CanCollide = false oripart.Size = Vector3.new(1, 1, 1) oripart.Position = Vector3.new(0, 0, 0) --Updater Loop local function Updater() local c c = 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 Hum = plr.Character local HumPos, vis = Camera:WorldToViewportPoint(Hum.HumanoidRootPart.Position) if vis then oripart.Size = Vector3.new(Hum.HumanoidRootPart.Size.X, Hum.HumanoidRootPart.Size.Y*1.5, Hum.HumanoidRootPart.Size.Z) oripart.CFrame = CFrame.new(Hum.HumanoidRootPart.CFrame.Position, Camera.CFrame.Position) local SizeX = oripart.Size.X local SizeY = oripart.Size.Y local TL = Camera:WorldToViewportPoint((oripart.CFrame * CFrame.new(SizeX, SizeY, 0)).p) local TR = Camera:WorldToViewportPoint((oripart.CFrame * CFrame.new(-SizeX, SizeY, 0)).p) local BL = Camera:WorldToViewportPoint((oripart.CFrame * CFrame.new(SizeX, -SizeY, 0)).p) local BR = Camera:WorldToViewportPoint((oripart.CFrame * CFrame.new(-SizeX, -SizeY, 0)).p) if Settings.Team_Check then if plr.TeamColor == Player.TeamColor then Colorize(Library, Color3.fromRGB(0, 255, 0)) else Colorize(Library, Color3.fromRGB(255, 0, 0)) end end if Settings.Team_Color then Colorize(Library, plr.TeamColor.Color) end local ratio = (Camera.CFrame.p - Hum.HumanoidRootPart.Position).magnitude local offset = math.clamp(1/ratio*750, 2, 300) Library.TL1.From = Vector2.new(TL.X, TL.Y) Library.TL1.To = Vector2.new(TL.X + offset, TL.Y) Library.TL2.From = Vector2.new(TL.X, TL.Y) Library.TL2.To = Vector2.new(TL.X, TL.Y + offset) Library.TR1.From = Vector2.new(TR.X, TR.Y) Library.TR1.To = Vector2.new(TR.X - offset, TR.Y) Library.TR2.From = Vector2.new(TR.X, TR.Y) Library.TR2.To = Vector2.new(TR.X, TR.Y + offset) Library.BL1.From = Vector2.new(BL.X, BL.Y) Library.BL1.To = Vector2.new(BL.X + offset, BL.Y) Library.BL2.From = Vector2.new(BL.X, BL.Y) Library.BL2.To = Vector2.new(BL.X, BL.Y - offset) Library.BR1.From = Vector2.new(BR.X, BR.Y) Library.BR1.To = Vector2.new(BR.X - offset, BR.Y) Library.BR2.From = Vector2.new(BR.X, BR.Y) Library.BR2.To = Vector2.new(BR.X, BR.Y - offset) Vis(Library, true) if Settings.Autothickness then local distance = (Player.Character.HumanoidRootPart.Position - oripart.Position).magnitude local value = math.clamp(1/distance*100, 1, 4) --0.1 is min thickness, 6 is max for u, x in pairs(Library) do x.Thickness = value end else for u, x in pairs(Library) do x.Thickness = Settings.Box_Thickness end end else Vis(Library, false) end else Vis(Library, false) if game:GetService("Players"):FindFirstChild(plr.Name) == nil then for i, v in pairs(Library) do v:Remove() oripart:Destroy() end c:Disconnect() end end end) end coroutine.wrap(Updater)() end -- Draw Boxes for i, v in pairs(game:GetService("Players"):GetPlayers()) do if v.Name ~= Player.Name then coroutine.wrap(Main)(v) end end game:GetService("Players").PlayerAdded:Connect(function(newplr) coroutine.wrap(Main)(newplr) end) local Library = loadstring(game:HttpGet("https://raw.githubusercontent.com/Blissful4992/ESPs/main/UniversalSkeleton.lua"))() local Skeletons = {} for _, Player in next, game.Players:GetChildren() do table.insert(Skeletons, Library:NewSkeleton(Player, true)); end game.Players.PlayerAdded:Connect(function(Player) table.insert(Skeletons, Library:NewSkeleton(Player, true)); end)