--! UCanFeelThePainInHisDih💔.lua --! Creation Date: 10/27/2025 -- ripped from finobe lolol ezzz -- fixed the hp bar going 1 more pixel local InputService, HttpService, GuiService, RunService, Stats, CoreGui, TweenService, SoundService, Workspace, Players, Lighting = game:GetService("UserInputService"), game:GetService("HttpService"), game:GetService("GuiService"), game:GetService("RunService"), game:GetService("Stats"), game:GetService("CoreGui"), game:GetService("TweenService"), game:GetService("SoundService"), game:GetService("Workspace"), game:GetService("Players"), game:GetService("Lighting") local Camera, LocalPlayer, gui_offset = Workspace.CurrentCamera, Players.LocalPlayer, GuiService:GetGuiInset().Y local Mouse = LocalPlayer:GetMouse() local vec2, vec3, dim2, dim, rect, dim_offset = Vector2.new, Vector3.new, UDim2.new, UDim.new, Rect.new, UDim2.fromOffset local color, rgb, hex, hsv, rgbseq, rgbkey, numseq, numkey = Color3.new, Color3.fromRGB, Color3.fromHex, Color3.fromHSV, ColorSequence.new, ColorSequenceKeypoint.new, NumberSequence.new, NumberSequenceKeypoint.new local angle, empty_cfr, cfr = CFrame.Angles, CFrame.new(), CFrame.new --[[ example: local upd = function() for key, value in pairs(MiscOptions) do Esp.RefreshElements(key, value) end end for _, player in Players:GetPlayers() do if player ~= Players.LocalPlayer then Esp.CreateObject(player) upd() end end Players.PlayerAdded:Connect(function(player) Esp.CreateObject(player) upd() end) Players.PlayerRemoving:Connect(function(player) Esp.RemovePlayer(player) upd() end) ]] local Flags = { ["Players_CHAMS"] = false, ["Players_FILL_CHAMS"] = {Color = rgb(255, 0, 0), Transparency = 0.5}, ["Players_OUTLINE_CHAMS"] = {Color = rgb(0, 255, 0), Transparency = 0.3}, } local FontNames = { ["ProggyClean"] = "ProggyClean.ttf", ["Tahoma"] = "fs-tahoma-8px.ttf", ["Verdana"] = "Verdana-Font.ttf", ["SmallestPixel"] = "smallest_pixel-7.ttf", ["ProggyTiny"] = "ProggyTiny.ttf", ["Minecraftia"] = "Minecraftia-Regular.ttf", ["Tahoma Bold"] = "tahoma_bold.ttf", ["Rubik"] = "Rubik-Regular.ttf" } local FontIndexes = {"ProggyClean", "Tahoma", "Verdana", "SmallestPixel", "ProggyTiny", "Minecraftia", "Tahoma Bold", "Rubik"} local Fonts = {}; do local function RegisterFont(Name, Weight, Style, Asset) if not isfile(Asset.Id) then writefile(Asset.Id, Asset.Font) end if isfile(Name .. ".font") then delfile(Name .. ".font") end local Data = { name = Name, faces = { { name = "Normal", weight = Weight, style = Style, assetId = getcustomasset(Asset.Id), }, }, } writefile(Name .. ".font", HttpService:JSONEncode(Data)) return getcustomasset(Name .. ".font"); end for name, suffix in FontNames do local Weight = 400 if name == "Rubik" then -- fuckin stupid Weight = 900 end local RegisteredFont = RegisterFont(name, Weight, "Normal", { Id = suffix, Font = game:HttpGet("https://github.com/i77lhm/storage/raw/refs/heads/main/fonts/" .. suffix), }) Fonts[name] = Font.new(RegisteredFont, Enum.FontWeight.Regular, Enum.FontStyle.Normal) end end local MiscOptions = { ["Enabled"] = true; ["Render Distance"] = 10000; -- Chams ["ChamsEnabled"] = true; ["Chams Fill"] = { Color = rgb(0, 255, 255), Transparency = 0.9 }; ["Chams Outline"] = { Color = rgb(255, 0, 0), Transparency = 0.4 }; -- Boxes ["Boxes"] = true; ["BoxType"] = "Normal"; ["Box Gradient 1"] = { Color = rgb(0, 255, 255), Transparency = 0.9 }; ["Box Gradient 2"] = { Color = rgb(255, 0, 0), Transparency = 0.4 }; ["Box Gradient Rotation"] = 90; ["Box Fill"] = true; ["Box Fill 1"] = { Color = rgb(0, 255, 255), Transparency = 0.9 }; ["Box Fill 2"] = { Color = rgb(255, 255, 255), Transparency = 0.9 }; ["Box Fill Rotation"] = 0; ["Healthbar"] = true; ["Healthbar_Position"] = "Left"; ["Healthbar_Number"] = true; ["Healthbar_Low"] = { Color = rgb(247, 24, 180), Transparency = 1 }; -- ["Healthbar_Medium"] = { Color = rgb(17, 30, 211), Transparency = 1 }; -- ["Healthbar_Animations"] = true; ["Healthbar_High"] = { Color = rgb(173, 69, 86), Transparency = 1 }; -- ["Healthbar_Font"] = "ProggyClean"; ["Healthbar_Text_Size"] = 12; ["Healthbar_Thickness"] = 1; ["Healthbar_Tween"] = true; ["Healthbar_EasingStyle"] = "Circular"; ["Healthbar_EasingDirection"] = "InOut"; ["Healthbar_Easing_Speed"] = 1; -- Text Based Elements ["Name_Text"] = true; ["Name_Text_Color"] = { Color = rgb(255, 255, 255) }; ["Name_Text_Position"] = "Top"; ["Name_Text_Font"] = "ProggyClean"; ["Name_Text_Size"] = 12; ["Distance_Text"] = true; ["Distance_Text_Color"] = { Color = rgb(255, 255, 255) }; ["Distance_Text_Position"] = "Bottom"; ["Distance_Text_Font"] = "ProggyClean"; ["Distance_Text_Size"] = 12; ["Weapon_Text"] = true, ["Weapon_Text_Color"] = { Color = rgb(255, 255, 255) }; ["Weapon_Text_Position"] = "Bottom"; ["Weapon_Text_Font"] = "ProggyClean"; ["Weapon_Text_Size"] = 12; }; local Options = MiscOptions if getgenv().Esp then getgenv().Esp.Unload() end getgenv().Esp = { Players = {}, PlayersOptions = {}, ScreenGui = Instance.new("ScreenGui", CoreGui), Cache = Instance.new("ScreenGui", gethui()), Connections = {}, }; do Esp.ScreenGui.IgnoreGuiInset = true Esp.ScreenGui.Name = "EspObject" Esp.Cache.Enabled = false function Esp:Create(instance, options) local Ins = Instance.new(instance) for prop, value in options do Ins[prop] = value end return Ins end function Esp:ConvertScreenPoint(world_position) local ViewportSize = Camera.ViewportSize local LocalPos = Camera.CFrame:pointToObjectSpace(world_position) local AspectRatio = ViewportSize.X / ViewportSize.Y local HalfY = -LocalPos.Z * math.tan(math.rad(Camera.FieldOfView / 2)) local HalfX = AspectRatio * HalfY local FarPlaneCorner = Vector3.new(-HalfX, HalfY, LocalPos.Z) local RelativePos = LocalPos - FarPlaneCorner local ScreenX = RelativePos.X / (HalfX * 2) local ScreenY = -RelativePos.Y / (HalfY * 2) local OnScreen = -LocalPos.Z > 0 and ScreenX >= 0 and ScreenX <= 1 and ScreenY >= 0 and ScreenY <= 1 -- returns in pixels as opposed to scale return Vector3.new(ScreenX * ViewportSize.X, ScreenY * ViewportSize.Y, -LocalPos.Z), OnScreen end function Esp:Connection(signal, callback) local Connection = signal:Connect(callback) Esp.Connections[#Esp.Connections + 1] = Connection return Connection end function Esp:BoxSolve(torso) if not torso then return nil, nil, nil end local ViewportTop = torso.Position + (torso.CFrame.UpVector * 1.8) + Camera.CFrame.UpVector local ViewportBottom = torso.Position - (torso.CFrame.UpVector * 2.5) - Camera.CFrame.UpVector local Distance = (torso.Position - Camera.CFrame.p).Magnitude local NewDistance = math.floor(Distance * 0.333) local Top, TopIsRendered = Esp:ConvertScreenPoint(ViewportTop) local Bottom, BottomIsRendered = Esp:ConvertScreenPoint(ViewportBottom) local Width = math.max(math.floor(math.abs(Top.X - Bottom.X)), 8) local Height = math.max(math.floor(math.max(math.abs(Bottom.Y - Top.Y), Width / 2)), 12) local BoxSize = Vector2.new(math.floor(math.max(Height / 1.5, Width)), Height) local BoxPosition = Vector2.new(math.floor(Top.X * 0.5 + Bottom.X * 0.5 - BoxSize.X * 0.5), math.floor(math.min(Top.Y, Bottom.Y))) return BoxSize, BoxPosition, TopIsRendered, NewDistance end function Esp:Lerp(start, finish, t) t = t or 1 / 8 return start * (1 - t) + finish * t end function Esp:Tween(obj, props, info) local tween = TweenService:Create(obj, info, props) tween:Play() return tween end function Esp.CreateObject( player, typechar ) -- IMPORTANT! local Data = { Items = { }, Info = {Character; Humanoid; Health = 0}; Drawings = { }, Type = typechar or "player", Handles = { }, }; Data.Chams = Data.Type == "player" and true or false; local Items = Data.Items; do -- Holder Items.Holder = Esp:Create( "Frame" , { Parent = Esp.ScreenGui; Visible = false; Name = "\0"; BackgroundTransparency = 1; Position = dim2(0.4332570433616638, 0, 0.3255814015865326, 0); BorderColor3 = rgb(0, 0, 0); Size = dim2(0, 211, 0, 240); BorderSizePixel = 0; BackgroundColor3 = rgb(255, 255, 255) }); Items.HolderGradient = Esp:Create( "UIGradient" , { Rotation = 0; Name = "\0"; Color = rgbseq{rgbkey(0, rgb(255, 255, 255)), rgbkey(1, rgb(255, 255, 255))}; Parent = Items.Holder; Enabled = true }); -- All directions have a set default parent of Items.Holder -- Directions Items.Left = Esp:Create( "Frame" , { Parent = Items.Holder; Size = dim2(0, 0, 1, 0); Name = "\0"; BackgroundTransparency = 1; Position = dim2(0, -1, 0, 0); BorderColor3 = rgb(0, 0, 0); ZIndex = 2; BorderSizePixel = 0; BackgroundColor3 = rgb(255, 255, 255) }); Items.HealthbarTextsLeft = Esp:Create( "Frame", { Visible = true; BorderColor3 = rgb(0, 0, 0); Parent = Esp.Cache; Name = "\0"; BackgroundTransparency = 1; LayoutOrder = -100; BorderSizePixel = 0; ZIndex = 0; AutomaticSize = Enum.AutomaticSize.X; BackgroundColor3 = rgb(255, 255, 255) }); Esp:Create( "UIListLayout" , { FillDirection = Enum.FillDirection.Horizontal; HorizontalAlignment = Enum.HorizontalAlignment.Right; VerticalFlex = Enum.UIFlexAlignment.Fill; Parent = Items.Left; Padding = dim(0, 1); SortOrder = Enum.SortOrder.LayoutOrder }); Items.LeftTexts = Esp:Create( "Frame" , { LayoutOrder = -100; Parent = Items.Left; BackgroundTransparency = 1; Name = "\0"; BorderColor3 = rgb(0, 0, 0); BorderSizePixel = 0; AutomaticSize = Enum.AutomaticSize.X; BackgroundColor3 = rgb(255, 255, 255) }); Esp:Create( "UIListLayout" , { Parent = Items.LeftTexts; Padding = dim(0, 1); SortOrder = Enum.SortOrder.LayoutOrder }); Items.Bottom = Esp:Create( "Frame" , { Parent = Items.Holder; Size = dim2(1, 0, 0, 0); Name = "\0"; BackgroundTransparency = 1; Position = dim2(0, 0, 1, 1); BorderColor3 = rgb(0, 0, 0); ZIndex = 2; BorderSizePixel = 0; BackgroundColor3 = rgb(255, 255, 255) }); Items.HealthbarTextsBottom = Esp:Create( "Frame", { Visible = true; BorderColor3 = rgb(0, 0, 0); Parent = Esp.Cache; Name = "\0"; BackgroundTransparency = 1; LayoutOrder = 0; BorderSizePixel = 0; ZIndex = 0; AutomaticSize = Enum.AutomaticSize.Y; BackgroundColor3 = rgb(255, 255, 255) }); Esp:Create( "UIListLayout" , { SortOrder = Enum.SortOrder.LayoutOrder; HorizontalAlignment = Enum.HorizontalAlignment.Center; HorizontalFlex = Enum.UIFlexAlignment.Fill; Parent = Items.Bottom; Padding = dim(0, 1) }); Items.BottomTexts = Esp:Create( "Frame", { LayoutOrder = 1; Parent = Items.Bottom; BackgroundTransparency = 1; Name = "\0"; BorderColor3 = rgb(0, 0, 0); BorderSizePixel = 0; AutomaticSize = Enum.AutomaticSize.XY; BackgroundColor3 = rgb(255, 255, 255) }); Esp:Create( "UIListLayout", { Parent = Items.BottomTexts; Padding = dim(0, 1); SortOrder = Enum.SortOrder.LayoutOrder }); Items.Top = Esp:Create( "Frame" , { Parent = Items.Holder; Size = dim2(1, 0, 0, 0); Name = "\0"; BackgroundTransparency = 1; Position = dim2(0, 0, 0, -1); BorderColor3 = rgb(0, 0, 0); ZIndex = 2; BorderSizePixel = 0; BackgroundColor3 = rgb(255, 255, 255) }); Items.HealthbarTextsTop = Esp:Create( "Frame", { Visible = true; BorderColor3 = rgb(0, 0, 0); Parent = Esp.Cache; Name = "\0"; BackgroundTransparency = 1; LayoutOrder = -100; BorderSizePixel = 0; ZIndex = 0; AutomaticSize = Enum.AutomaticSize.Y; BackgroundColor3 = rgb(255, 255, 255) }); Esp:Create( "UIListLayout" , { VerticalAlignment = Enum.VerticalAlignment.Bottom; SortOrder = Enum.SortOrder.LayoutOrder; HorizontalAlignment = Enum.HorizontalAlignment.Center; HorizontalFlex = Enum.UIFlexAlignment.Fill; Parent = Items.Top; Padding = dim(0, 1) }); Items.TopTexts = Esp:Create( "Frame", { LayoutOrder = -100; Parent = Items.Top; BackgroundTransparency = 1; Name = "\0"; BorderColor3 = rgb(0, 0, 0); BorderSizePixel = 0; AutomaticSize = Enum.AutomaticSize.XY; BackgroundColor3 = rgb(255, 255, 255) }); Esp:Create( "UIListLayout", { Parent = Items.TopTexts; Padding = dim(0, 1); SortOrder = Enum.SortOrder.LayoutOrder }); Items.Right = Esp:Create( "Frame" , { Parent = Esp.Cache; Size = dim2(0, 0, 1, 0); Name = "\0"; BackgroundTransparency = 1; Position = dim2(1, 1, 0, 0); BorderColor3 = rgb(0, 0, 0); ZIndex = 2; BorderSizePixel = 0; BackgroundColor3 = rgb(255, 255, 255) }); Esp:Create( "UIListLayout" , { FillDirection = Enum.FillDirection.Horizontal; VerticalFlex = Enum.UIFlexAlignment.Fill; Parent = Items.Right; Padding = dim(0, 1); SortOrder = Enum.SortOrder.LayoutOrder }); Items.RightTexts = Esp:Create( "Frame" , { LayoutOrder = 100; Parent = Esp.Cache; BackgroundTransparency = 1; Name = "\0"; BorderColor3 = rgb(0, 0, 0); BorderSizePixel = 0; AutomaticSize = Enum.AutomaticSize.X; BackgroundColor3 = rgb(255, 255, 255) }); Esp:Create( "UIListLayout" , { Parent = Items.RightTexts; Padding = dim(0, 1); SortOrder = Enum.SortOrder.LayoutOrder }); Items.HealthbarTextsRight = Esp:Create( "Frame", { Visible = true; BorderColor3 = rgb(0, 0, 0); Parent = Esp.Cache; Name = "\0"; BackgroundTransparency = 1; LayoutOrder = 99; BorderSizePixel = 0; ZIndex = 0; AutomaticSize = Enum.AutomaticSize.X; BackgroundColor3 = rgb(255, 255, 255) }); -- -- -- Corner Boxes Items.Corners = Esp:Create( "Frame", { Parent = Esp.Cache; -- Items.Holder Name = "\0"; BackgroundTransparency = 1; BorderColor3 = rgb(0, 0, 0); Size = dim2(1, 0, 1, 0); BorderSizePixel = 0; BackgroundColor3 = rgb(255, 255, 255) }); Items.BottomLeftX = Esp:Create( "ImageLabel", { ScaleType = Enum.ScaleType.Slice; Parent = Items.Corners; BorderColor3 = rgb(0, 0, 0); Name = "\0"; BackgroundColor3 = rgb(255, 255, 255); Size = dim2(0.4, 0, 0, 3); AnchorPoint = vec2(0, 1); Image = "rbxassetid://83548615999411"; BackgroundTransparency = 1; Position = dim2(0, 0, 1, 0); ZIndex = 2; BorderSizePixel = 0; SliceCenter = rect(vec2(1, 1), vec2(99, 2)) }); Esp:Create( "UIGradient", { Parent = Items.BottomLeftX }); Items.BottomLeftY = Esp:Create( "ImageLabel", { ScaleType = Enum.ScaleType.Slice; Parent = Items.Corners; BorderColor3 = rgb(0, 0, 0); Name = "\0"; BackgroundColor3 = rgb(255, 255, 255); Size = dim2(0, 3, 0.25, 0); AnchorPoint = vec2(0, 1); Image = "rbxassetid://101715268403902"; BackgroundTransparency = 1; Position = dim2(0, 0, 1, -2); ZIndex = 500; BorderSizePixel = 0; SliceCenter = rect(vec2(1, 0), vec2(2, 96)) }); Esp:Create( "UIGradient", { Rotation = -90; Parent = Items.BottomLeftY }); Items.BottomRighX = Esp:Create( "ImageLabel", { ScaleType = Enum.ScaleType.Slice; Parent = Items.Corners; BorderColor3 = rgb(0, 0, 0); Name = "\0"; BackgroundColor3 = rgb(255, 255, 255); Size = dim2(0.4, 0, 0, 3); AnchorPoint = vec2(1, 1); Image = "rbxassetid://83548615999411"; BackgroundTransparency = 1; Position = dim2(1, 0, 1, 0); ZIndex = 2; BorderSizePixel = 0; SliceCenter = rect(vec2(1, 1), vec2(99, 2)) }); Esp:Create( "UIGradient", { Parent = Items.BottomRighX }); Items.BottomLeftY = Esp:Create( "ImageLabel", { ScaleType = Enum.ScaleType.Slice; Parent = Items.Corners; BorderColor3 = rgb(0, 0, 0); Name = "\0"; BackgroundColor3 = rgb(255, 255, 255); Size = dim2(0, 3, 0.25, 0); AnchorPoint = vec2(1, 1); Image = "rbxassetid://101715268403902"; BackgroundTransparency = 1; Position = dim2(1, 0, 1, -2); ZIndex = 500; BorderSizePixel = 0; SliceCenter = rect(vec2(1, 0), vec2(2, 96)) }); Esp:Create( "UIGradient", { Rotation = 90; Parent = Items.BottomLeftY }); Items.TopLeftY = Esp:Create( "ImageLabel", { ScaleType = Enum.ScaleType.Slice; BorderColor3 = rgb(0, 0, 0); Parent = Items.Corners; Name = "\0"; BackgroundColor3 = rgb(255, 255, 255); Size = dim2(0, 3, 0.25, 0); Image = "rbxassetid://102467475629368"; BackgroundTransparency = 1; Position = dim2(0, 0, 0, 2); ZIndex = 500; BorderSizePixel = 0; SliceCenter = rect(vec2(1, 0), vec2(2, 98)) }); Esp:Create( "UIGradient", { Rotation = 90; Parent = Items.TopLeftY }); Items.TopRightY = Esp:Create( "ImageLabel", { ScaleType = Enum.ScaleType.Slice; Parent = Items.Corners; BorderColor3 = rgb(0, 0, 0); Name = "\0"; BackgroundColor3 = rgb(255, 255, 255); Size = dim2(0, 3, 0.25, 0); AnchorPoint = vec2(1, 0); Image = "rbxassetid://102467475629368"; BackgroundTransparency = 1; Position = dim2(1, 0, 0, 2); ZIndex = 500; BorderSizePixel = 0; SliceCenter = rect(vec2(1, 0), vec2(2, 98)) }); Esp:Create( "UIGradient", { Rotation = -90; Parent = Items.TopRightY }); Items.TopRightX = Esp:Create( "ImageLabel", { ScaleType = Enum.ScaleType.Slice; Parent = Items.Corners; BorderColor3 = rgb(0, 0, 0); Name = "\0"; BackgroundColor3 = rgb(255, 255, 255); Size = dim2(0.4, 0, 0, 3); AnchorPoint = vec2(1, 0); Image = "rbxassetid://83548615999411"; BackgroundTransparency = 1; Position = dim2(1, 0, 0, 0); ZIndex = 2; BorderSizePixel = 0; SliceCenter = rect(vec2(1, 1), vec2(99, 2)) }); Esp:Create( "UIGradient", { Parent = Items.TopRightX }); Items.TopLeftX = Esp:Create( "ImageLabel", { ScaleType = Enum.ScaleType.Slice; BorderColor3 = rgb(0, 0, 0); Parent = Items.Corners; Name = "\0"; BackgroundColor3 = rgb(255, 255, 255); Image = "rbxassetid://83548615999411"; BackgroundTransparency = 1; Size = dim2(0.4, 0, 0, 3); ZIndex = 2; BorderSizePixel = 0; SliceCenter = rect(vec2(1, 1), vec2(99, 2)) }); Esp:Create( "UIGradient", { Parent = Items.TopLeftX }); -- -- Normal Box Items.Box = Esp:Create( "Frame" , { Parent = Esp.Cache; -- Items.Holder Name = "\0"; BackgroundTransparency = 1; Position = dim2(0, 1, 0, 1); BorderColor3 = rgb(0, 0, 0); Size = dim2(1, -2, 1, -2); BorderSizePixel = 0; BackgroundColor3 = rgb(255, 255, 255) }); Esp:Create( "UIStroke" , { Parent = Items.Box; LineJoinMode = Enum.LineJoinMode.Miter }); Items.Inner = Esp:Create( "Frame" , { Parent = Items.Box; Name = "\0"; BackgroundTransparency = 1; Position = dim2(0, 1, 0, 1); BorderColor3 = rgb(0, 0, 0); Size = dim2(1, -2, 1, -2); BorderSizePixel = 0; BackgroundColor3 = rgb(255, 255, 255) }); Items.UIStroke = Esp:Create( "UIStroke" , { Color = rgb(255, 255, 255); LineJoinMode = Enum.LineJoinMode.Miter; Parent = Items.Inner }); Items.BoxGradient = Esp:Create( "UIGradient" , { Parent = Items.UIStroke }); Items.Inner2 = Esp:Create( "Frame" , { Parent = Items.Inner; Name = "\0"; BackgroundTransparency = 1; Position = dim2(0, 1, 0, 1); BorderColor3 = rgb(0, 0, 0); Size = dim2(1, -2, 1, -2); BorderSizePixel = 0; BackgroundColor3 = rgb(255, 255, 255) }); Esp:Create( "UIStroke" , { Parent = Items.Inner2; LineJoinMode = Enum.LineJoinMode.Miter }); -- -- Healthbar Items.Healthbar = Esp:Create( "Frame" , { Name = "Left"; Parent = Esp.Cache; BorderColor3 = rgb(0, 0, 0); Size = dim2(0, 3, 0, 3); BorderSizePixel = 0; BackgroundColor3 = rgb(0, 0, 0) }); Items.HealthbarAccent = Esp:Create( "Frame" , { Parent = Items.Healthbar; Name = "\0"; Position = dim2(0, 1, 0, 1); BorderColor3 = rgb(0, 0, 0); Size = dim2(1, -2, 1, -2); BorderSizePixel = 0; BackgroundColor3 = rgb(255, 255, 255) }); Items.HealthbarFade = Esp:Create( "Frame" , { Parent = Items.Healthbar; Name = "\0"; Position = dim2(0, 1, 0, 1); BorderColor3 = rgb(0, 0, 0); Size = dim2(1, -2, 1, -2); BorderSizePixel = 0; BackgroundColor3 = rgb(0, 0, 0) }); Items.HealthbarGradient = Esp:Create( "UIGradient" , { Enabled = true; Parent = Items.HealthbarAccent; Rotation = 90; Color = rgbseq{rgbkey(0, rgb(0, 255, 0)), rgbkey(0.5, rgb(255, 125, 0)), rgbkey(1, rgb(255, 0, 0))} }); Items.HealthbarText = Esp:Create( "TextLabel", { FontFace = Fonts.ProggyClean; TextColor3 = rgb(255, 255, 255); BorderColor3 = rgb(0, 0, 0); Parent = Esp.Cache; -- Items.HealthbarTextsLeft Name = "\0"; Visible = true; BackgroundTransparency = 1; Size = dim2(0, 0, 0, 0); BorderSizePixel = 0; AutomaticSize = Enum.AutomaticSize.XY; TextSize = 12; BackgroundColor3 = rgb(255, 255, 255) }); Esp:Create( "UIStroke", { Parent = Items.HealthbarText; LineJoinMode = Enum.LineJoinMode.Miter }); -- -- Texts Items.Text = Esp:Create( "TextLabel", { FontFace = Fonts.ProggyClean; TextColor3 = rgb(255, 255, 255); BorderColor3 = rgb(0, 0, 0); Parent = Esp.Cache; Name = "Left"; Text = player.Name; BackgroundTransparency = 1; Size = dim2(1, 0, 0, 0); BorderSizePixel = 0; AutomaticSize = Enum.AutomaticSize.XY; TextSize = 9; BackgroundColor3 = rgb(255, 255, 255) }); Esp:Create( "UIStroke", { Parent = Items.Text; LineJoinMode = Enum.LineJoinMode.Miter }); Items.Distance = Esp:Create( "TextLabel", { FontFace = Fonts.ProggyClean; TextColor3 = rgb(255, 255, 255); BorderColor3 = rgb(0, 0, 0); Parent = Esp.Cache; Name = "Left"; BackgroundTransparency = 1; Size = dim2(1, 0, 0, 0); BorderSizePixel = 0; AutomaticSize = Enum.AutomaticSize.XY; TextSize = 9; BackgroundColor3 = rgb(255, 255, 255) }); Esp:Create( "UIStroke", { Parent = Items.Distance; LineJoinMode = Enum.LineJoinMode.Miter }); Items["Weapon"] = Esp:Create( "TextLabel", { FontFace = Fonts.ProggyClean; TextColor3 = rgb(255, 255, 255); BorderColor3 = rgb(0, 0, 0); Parent = Esp.Cache; Text = "[NONE]"; Name = "Wep"; BackgroundTransparency = 1; Size = dim2(1, 0, 0, 0); BorderSizePixel = 0; AutomaticSize = Enum.AutomaticSize.XY; TextSize = 9; BackgroundColor3 = rgb(255, 255, 255) }); Esp:Create( "UIStroke", { Parent = Items.Distance; LineJoinMode = Enum.LineJoinMode.Miter }); -- end Data.RefreshChams = function() local Character = Data.Info.Character local Enabled = Flags["Players_CHAMS"] local FillSettings = Flags["Players_FILL_CHAMS"] local OutlineSettings = Flags["Players_OUTLINE_CHAMS"] if not Data.Highlight then Data.Highlight = Esp:Create( "Highlight", { FillColor = FillSettings.Color; Enabled = Flags["Players_CHAMS"]; OutlineTransparency = OutlineSettings.Transparency; Adornee = Character; FillTransparency = FillSettings.Transparency; OutlineColor = OutlineSettings.Color; Parent = CoreGui }); else Data.Highlight.Adornee = Character end end Data.ToolAdded = function(item) if not item:FindFirstChildOfClass("Tool") then Items["Weapon"].Text = "[NONE]" return end local exists = Data.Info.Character:FindFirstChild(item.Name) Items["Weapon"].Text = "[" .. item.Name .. "]" pcall(function() Items["Weapon"].Parent = exists and Items["Holder"] or Esp.Cache end) -- Refresh end Data.HealthChanged = function(Value) if not MiscOptions.Healthbar then return end local Humanoid = Data.Info.Humanoid local Multiplier = Value / 100 local isHorizontal = MiscOptions.Healthbar_Position == "Top" or MiscOptions.Healthbar_Position == "Bottom" local Color = MiscOptions.Healthbar_Low.Color:Lerp(MiscOptions.Healthbar_Medium.Color, Multiplier) local Color_2 = Color:Lerp(MiscOptions.Healthbar_High.Color, Multiplier) if MiscOptions.Healthbar_Number then if Items.HealthbarText.Parent == Esp.Cache then Options.Healthbar = MiscOptions.Healthbar_Position Options.Healthbar_Number = true end end if MiscOptions.Healthbar_Tween then local Health = Data.Info.Health Esp:Tween(Items.HealthbarFade, { Size = dim2(isHorizontal and 1 - Multiplier or 1, isHorizontal and -2 or -2, isHorizontal and 1 or 1 - Multiplier, -1), Position = dim2(isHorizontal and Multiplier or 0, 1, 0, 1) }, TweenInfo.new(MiscOptions.Healthbar_Easing_Speed, Enum.EasingStyle[MiscOptions.Healthbar_EasingStyle], Enum.EasingDirection[MiscOptions.Healthbar_EasingDirection], 0, false, 0)) Esp:Tween(Items.HealthbarText, { Position = dim2(isHorizontal and Multiplier or 0, isHorizontal and -(Items.HealthbarText.TextBounds.X / 2) or 0, isHorizontal and 0 or 1 - Multiplier, 0), TextColor3 = Color_2 }, TweenInfo.new(MiscOptions.Healthbar_Easing_Speed, Enum.EasingStyle[MiscOptions.Healthbar_EasingStyle], Enum.EasingDirection[MiscOptions.Healthbar_EasingDirection], 0, false, 0)) task.spawn(function() local Start = tick() while true do if not Esp then break end local Elapsed = tick() - Start local Alpha = math.clamp(Elapsed, 0, 1) local Value = Esp:Lerp( Data.Info.Health, Value, TweenService:GetValue( Alpha, Enum.EasingStyle[MiscOptions.Healthbar_EasingStyle], Enum.EasingDirection[MiscOptions.Healthbar_EasingDirection] ) ) Items.HealthbarText.Text = math.floor(Value) if Elapsed >= MiscOptions.Healthbar_Easing_Speed then Data.Info.Health = Value break end task.wait() end end) else Items.HealthbarFade.Size = dim2(isHorizontal and 1 - Multiplier or 1, isHorizontal and -2 or -2, isHorizontal and 1 or 1 - Multiplier, -3) Items.HealthbarFade.Position = dim2(isHorizontal and Multiplier or 0, 1, 0, 1) Items.HealthbarText.Text = math.floor(Value) Items.HealthbarText.Position = dim2(isHorizontal and Multiplier or 0, isHorizontal and -(Items.HealthbarText.TextBounds.X / 2) or 0, isHorizontal and 0 or 1 - Multiplier, 0) Items.HealthbarText.TextColor3 = Color_2 end end Data.RefreshDescendants = function() local Character = (typechar and player) or player.Character or player.CharacterAdded:Wait() local Humanoid = Character:FindFirstChild("Humanoid") or Character:WaitForChild( "Humanoid" ) Data.Info.Character = typechar and player or Character Data.Info.Humanoid = Humanoid Data.Info.RootPart = Humanoid.RootPart Esp:Connection(Humanoid.HealthChanged, Data.HealthChanged) Esp:Connection(Character.ChildAdded, Data.ToolAdded) Esp:Connection(Character.ChildRemoved, Data.ToolAdded) Data.HealthChanged(Data.Info.Humanoid.Health) Data.RefreshChams() end Data.Destroy = function() if Items["Holder"] then Items["Holder"].Parent = nil Items["Holder"]:Destroy() end Data.Highlight:Destroy() if Esp.Players[index] then Esp.Players[index] = nil end end Data.RefreshDescendants() Esp:Connection(Data.Info.Character.ChildAdded, Data.ToolAdded) Esp:Connection(player.CharacterAdded, Data.RefreshDescendants) -- Recaching element holders that arent neccessary <- roblox calculates math for them even if they have no objects in them or invisible ;( for _,ItemParentor in {Items.Left, Items.Right, Items.Top, Items.Bottom} do Esp:Connection(ItemParentor.ChildAdded, function() task.wait(.1) if ItemParentor.Parent == nil then return end ItemParentor.Parent = Items.Holder end) Esp:Connection(ItemParentor.ChildRemoved, function() task.wait(.1) if #ItemParentor:GetChildren() == 0 then if ItemParentor.Parent == nil then return end ItemParentor.Parent = Esp.Cache end end) end for _,HealthHolder in {"Right", "Left", "Top", "Bottom"} do local Parent = Items["HealthbarTexts" .. HealthHolder] Esp:Connection(Parent.ChildAdded, function() task.wait(.1) if Parent.Parent == nil then return end Parent.Parent = Items[HealthHolder] end) Esp:Connection(Parent.ChildRemoved, function() task.wait(.1) if #Parent:GetChildren() == 0 then if Parent.Parent == nil then return end Parent.Parent = Esp.Cache end end) end for _,TextHolder in {"Right", "Left", "Bottom", "Top"} do local Parent = Items[TextHolder .. "Texts"] Esp:Connection(Parent.ChildAdded, function() task.wait(.1) if Parent.Parent == nil then return end Parent.Parent = Items[TextHolder] end) Esp:Connection(Parent.ChildRemoved, function() task.wait(.1) if #Parent:GetChildren() == 0 then if Parent.Parent == nil then return end Parent.Parent = Esp.Cache end end) end Esp.Players[ player.Name ] = Data return Data end function Esp.Update() -- IMPORTANT! if not Esp then return end if not MiscOptions.Enabled then return end for _,Data in Esp.Players do if not Data.Info then continue end local Character = Data.Info.Character if not Character then continue end local Humanoid = Data.Info.Humanoid if not Humanoid then continue end if not (Character or Humanoid) then continue end local Items = Data and Data.Items if not Items then continue end local BoxSize, BoxPos, OnScreen, Distance = Esp:BoxSolve(Humanoid.RootPart) local Holder = Items["Holder"] if not (Holder or MiscOptions["Render Distance"]) then continue end -- some exploits may be using ways to delete and break the box solve, prevents that if Distance == nil then if Holder.Visible then Holder.Visible = false end continue end if Distance > MiscOptions["Render Distance"] and Holder.Visible then Holder.Visible = false continue end if Holder.Visible ~= OnScreen and not (Distance > MiscOptions["Render Distance"]) then Holder.Visible = OnScreen end if not OnScreen then continue end local Pos = dim_offset(BoxPos.X, BoxPos.Y) if Pos ~= Holder.Position then Holder.Position = Pos end local Size = dim2(0, BoxSize.X, 0, BoxSize.Y) if Size ~= Holder.Size then Holder.Size = Size end local DistanceLabel = Items.Distance local Text = tostring( math.round(Distance) ) .. "m" if DistanceLabel.Text ~= Text then DistanceLabel.Text = Text end -- if Options["Box Fill"] and Options["Box Spin"] then -- Items["Holder_gradient"].Rotation += Options["Box Spin Speed"] / 100 -- end -- if Options["Box Gradient"] and Options["Box Gradient Spin"] then -- Items["box_outline_gradient"].Rotation += Options["Box Gradient Spin Speed"] / 100 -- end end end function Esp.RefreshElements(key, value) -- IMPORTANT! for _,Data in Esp.Players do local Items = Data and Data.Items -- These checks are so annoying if not Items then continue end if not Items.Holder then continue end if Items.Holder.Parent == nil then continue end if key == "Enabled" then Items.Holder.Visible = value end -- Boxes if key == "BoxType" then if not (Items.Box.Parent == Items.Holder or Items.Corners.Parent == Items.Holder) then continue end local isCorner = value == "Corner" Items.Box.Parent = isCorner and Esp.Cache or Items.Holder Items.Corners.Parent = isCorner and Items.Holder or Esp.Cache end if key == "Boxes" then local isCorner = Items.Corners.Parent == Items.Holder and true or false local Enabled = value and Items.Holder or Esp.Cache if isCorner then Items.Corners.Parent = Enabled else Items.Box.Parent = Enabled end end if key == "Box Gradient 1" then local Color = rgbseq{ Items.BoxGradient.Color.Keypoints[1], rgbkey(1, value.Color) } for _,corner in Items.Corners:GetChildren() do corner:FindFirstChildOfClass("UIGradient").Color = Color end Items.BoxGradient.Color = Color end if key == "Box Gradient 2" then local Color = rgbseq{ rgbkey(0, value.Color), Items.BoxGradient.Color.Keypoints[2] } for _,corner in Items.Corners:GetChildren() do corner:FindFirstChildOfClass("UIGradient").Color = Color end Items.BoxGradient.Color = Color end if key == "Box Gradient Rotation" then Items.BoxGradient.Rotation = 180 - value for _,corner in Items.Corners:GetChildren() do corner:FindFirstChildOfClass("UIGradient").Rotation = 180 - value end end if key == "Box Fill" then Items.Holder.BackgroundTransparency = value and 0 or 1 end if key == "Box Fill 1" then local Path = Items.HolderGradient Path.Transparency = numseq{ numkey(0, 1 - value.Transparency), Path.Transparency.Keypoints[2] }; Path.Color = rgbseq{ rgbkey(0, value.Color), Path.Color.Keypoints[2] } end if key == "Box Fill 2" then local Path = Items.HolderGradient Path.Transparency = numseq{ Path.Transparency.Keypoints[1], numkey(1, 1 - value.Transparency) }; Path.Color = rgbseq{ Path.Color.Keypoints[1], rgbkey(1, value.Color) }; end if key == "Box Fill Rotation" then Items.HolderGradient.Rotation = value end -- -- Bars if key == "Healthbar" then if Items.Healthbar.Parent == nil then continue end Items.Healthbar.Parent = value and Items[Items.Healthbar.Name] or Esp.Cache Items.HealthbarText.Parent = (Items.HealthbarText.Parent ~= Esp.Cache and value) and Items["HealthbarTexts" .. Items.Healthbar.Name] or Esp.Cache end if key == "Healthbar_Position" then local isEnabled = not (Items.Healthbar.Parent == Esp.Cache) if Items.Healthbar.Parent == nil then return end Items.Healthbar.Parent = isEnabled and Items[value] or Esp.Cache Items.Healthbar.Name = value -- This is super gay Items.HealthbarText.Parent = isEnabled and value and Items.HealthbarText.Parent ~= Esp.Cache and Items["HealthbarTexts" .. Items.Healthbar.Name] or Esp.Cache if value == "Bottom" or value == "Top" then Items.HealthbarGradient.Rotation = -180 else Items.HealthbarGradient.Rotation = 90 end Data.HealthChanged(Data.Info.Humanoid.Health) end if key == "Healthbar_Number" then if Items.Healthbar.Parent == Esp.Cache then continue end local Parent = Items["HealthbarTexts" .. Items.Healthbar.Name] Items.HealthbarText.Parent = value and Parent or Esp.Cache end if key == "Healthbar_Low" then local Color = rgbseq{ Items.HealthbarGradient.Color.Keypoints[1], Items.HealthbarGradient.Color.Keypoints[2], rgbkey(1, value.Color) } Items.HealthbarGradient.Color = Color end if key == "Healthbar_Medium" then local Color = rgbseq{ Items.HealthbarGradient.Color.Keypoints[1], rgbkey(0.5, value.Color), Items.HealthbarGradient.Color.Keypoints[3] } Items.HealthbarGradient.Color = Color end if key == "Healthbar_High" then local Color = rgbseq{ rgbkey(0, value.Color), Items.HealthbarGradient.Color.Keypoints[2], Items.HealthbarGradient.Color.Keypoints[3] } Items.HealthbarGradient.Color = Color end if key == "Healthbar_Thickness" then local Bar = Items.Healthbar local isHorizontal = Bar.Parent == Items.Bottom or Bar.Parent == Items.Top Bar.Size = dim2(0, value + 2, 0, value + 2) end if key == "Healthbar_Text_Size" then Items.HealthbarText.TextSize = value end if key == "Healthbar_Font" then Items.HealthbarText.FontFace = Fonts[value] end -- -- Texts local Text; local Match; if string.match(key, "Name") then Text = Items.Text Match = "Name" elseif string.match(key, "Distance") then Text = Items.Distance Match = "Distance" end if Text then if key == Match .. "_Text" then if Text.Parent == nil then continue end Text.Parent = value and Items[Text.Name .. "Texts"] or Esp.Cache end if key == Match .. "_Text_Position" then local isEnabled = not (Text.Parent == Esp.Cache) if Text.Parent == nil then return end Text.Parent = isEnabled and Items[value .. "Texts"] or Esp.Cache Text.Name = tostring(value) -- This is super gay if value == "Top" or value == "Bottom" then Text.AutomaticSize = Enum.AutomaticSize.Y Text.TextXAlignment = Enum.TextXAlignment.Center else Text.AutomaticSize = Enum.AutomaticSize.XY Text.TextXAlignment = Enum.TextXAlignment[value == "Right" and "Left" or "Right"] end end if key == Match .. "_Text_Color" then Text.TextColor3 = value.Color end if key == Match .. "_Text_Font" then Text.FontFace = Fonts[value] end if key == Match .. "_Text_Size" then Text.TextSize = value end end -- -- Chams if key == "ChamsEnabled" then Data.Highlight.Enabled = value end if key == "Chams Fill" then Data.Highlight.FillColor = value.Color Data.Highlight.FillTransparency = 1 - value.Transparency end if key == "Chams Outline" then Data.Highlight.OutlineColor = value.Color Data.Highlight.OutlineTransparency = 1 - value.Transparency end -- end end function Esp.Unload() for _,player in Players:GetPlayers() do Esp.RemovePlayer(player) end for _,connection in Esp.Connections do connection:Disconnect() connection = nil end if Esp.Loop then RunService:UnbindFromRenderStep("Run Loop") Esp.Loop = nil end Esp.Cache:Destroy() Esp.ScreenGui:Destroy() getgenv().Esp = nil Esp = nil end function Esp.RemovePlayer(player) local Path = Esp.Players[player.Name] if Path then Path.Destroy() end end end Esp.Loop = RunService:BindToRenderStep("Run Loop", 400, Esp.Update)