Back to Scripts
esp reupload
ScriptBlox
Universal
Free
Game: Universal Script ๐
151
Views
0
Likes
0
Dislikes
inverishvh
offline
Features
original; https://github.com/i77lhm/Libraries/blob/main/Octohook/Library.lua
Script Code
--! 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)
Comments (0)
Please login to comment
Login with Discord
Loading comments...