-- leaving open source cause it's not anything crazy im just accessing the module and taking information out of it. local Workspace = game:GetService("Workspace") local RunService = game:GetService("RunService") local ReplicatedStorage = game:GetService("ReplicatedStorage") local ENEMY_FOLDER = Workspace:WaitForChild("Enemies") local ESP_OFFSET = Vector3.new(-8, 5, 0) local ESP_WIDTH = 260 local TITLE_HEIGHT = 26 local EnemyData = require( ReplicatedStorage :WaitForChild("Dictionaries") :WaitForChild("Enemies") ) local function autoSection(parent, bgColor) local frame = Instance.new("Frame") frame.Size = UDim2.new(1, 0, 0, 0) frame.AutomaticSize = Enum.AutomaticSize.Y frame.BackgroundColor3 = bgColor frame.BackgroundTransparency = 0.15 frame.BorderSizePixel = 0 frame.Parent = parent local pad = Instance.new("UIPadding") pad.PaddingTop = UDim.new(0, 6) pad.PaddingBottom = UDim.new(0, 6) pad.PaddingLeft = UDim.new(0, 6) pad.PaddingRight = UDim.new(0, 6) pad.Parent = frame local label = Instance.new("TextLabel") label.Size = UDim2.new(1, 0, 0, 0) label.AutomaticSize = Enum.AutomaticSize.Y label.BackgroundTransparency = 1 label.TextWrapped = true label.TextXAlignment = Enum.TextXAlignment.Left label.TextYAlignment = Enum.TextYAlignment.Top label.Font = Enum.Font.Code label.TextColor3 = Color3.fromRGB(230, 230, 230) label.TextSize = 14 label.Parent = frame return label end local function waitForAdornee(enemy, timeout) timeout = timeout or 5 local start = os.clock() while os.clock() - start < timeout do local part = enemy:FindFirstChildWhichIsA("BasePart") or enemy.PrimaryPart or enemy:FindFirstChild("HumanoidRootPart") if part then return part end task.wait() end end local function createESP(enemy) if not enemy:IsA("Model") then return end if enemy:FindFirstChild("ESPBox") then return end local adornee = waitForAdornee(enemy) if not adornee then return end local billboard = Instance.new("BillboardGui") billboard.Name = "ESPBox" billboard.Adornee = adornee billboard.Size = UDim2.fromOffset(ESP_WIDTH, 100) billboard.StudsOffset = ESP_OFFSET billboard.AlwaysOnTop = true billboard.Enabled = false billboard.Parent = enemy local main = Instance.new("Frame") main.Size = UDim2.new(1, 0, 0, 0) main.AutomaticSize = Enum.AutomaticSize.Y main.BackgroundColor3 = Color3.fromRGB(28, 28, 28) main.BackgroundTransparency = 0.05 main.BorderColor3 = Color3.fromRGB(90, 90, 90) main.BorderSizePixel = 1 main.Parent = billboard local pad = Instance.new("UIPadding") pad.PaddingTop = UDim.new(0, 6) pad.PaddingBottom = UDim.new(0, 6) pad.PaddingLeft = UDim.new(0, 6) pad.PaddingRight = UDim.new(0, 6) pad.Parent = main local title = Instance.new("TextLabel") title.Size = UDim2.new(1, 0, 0, TITLE_HEIGHT) title.BackgroundTransparency = 1 title.Font = Enum.Font.SourceSansBold title.TextScaled = true title.TextXAlignment = Enum.TextXAlignment.Left title.TextColor3 = Color3.new(1, 1, 1) title.Parent = main local content = Instance.new("Frame") content.Position = UDim2.new(0, 0, 0, TITLE_HEIGHT + 6) content.Size = UDim2.new(1, 0, 0, 0) content.AutomaticSize = Enum.AutomaticSize.Y content.BackgroundTransparency = 1 content.Parent = main local layout = Instance.new("UIListLayout") layout.Padding = UDim.new(0, 6) layout.Parent = content local statsLabel = autoSection(content, Color3.fromRGB(45, 45, 45)) local movesLabel = autoSection(content, Color3.fromRGB(35, 45, 65)) local dropsLabel = autoSection(content, Color3.fromRGB(65, 40, 40)) local function resize() billboard.Size = UDim2.fromOffset( ESP_WIDTH, main.AbsoluteSize.Y + 4 ) end layout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(resize) RunService.RenderStepped:Connect(function() if not enemy.Parent then billboard:Destroy() return end billboard.Enabled = enemy:FindFirstChild("HoverHighlight") ~= nil local data = EnemyData[enemy.Name] or {} title.Text = enemy.Name local hp = tonumber(enemy:GetAttribute("HP")) or 0 local maxHp = tonumber(enemy:GetAttribute("MaxHP")) or data.MaxHealth or 0 local energy = tonumber(enemy:GetAttribute("Energy")) or 0 local maxEnergy = tonumber(enemy:GetAttribute("MaxEnergy")) or data.MaxEnergy or 0 local minGold = tonumber(enemy:GetAttribute("MinGoldDrop")) or data.MinGoldDrop or 0 local maxGold = tonumber(enemy:GetAttribute("MaxGoldDrop")) or data.MaxGoldDrop or 0 local exp = tonumber(enemy:GetAttribute("EXPScaling")) or data.EXPScaling or 1 local dodge = tonumber(enemy:GetAttribute("DodgeChance")) or data.DodgeChance or 0 statsLabel.Text = string.format( "HP: %.1f / %.1f\nEnergy: %.1f / %.1f\nGold: %d–%d\nEXP: x%.2f\nDodge: %.1f%%", hp, maxHp, energy, maxEnergy, minGold, maxGold, exp, dodge * 100 ) if data.Abilities then local t = "" for _, a in ipairs(data.Abilities) do t ..= "• " .. a .. "\n" end movesLabel.Text = t else movesLabel.Text = "No abilities" end if data.Drops then local total = 0 for _, w in pairs(data.Drops) do total += w end local t = "" for item, w in pairs(data.Drops) do local p = total > 0 and (w / total) * 100 or 0 t ..= string.format("%s — %.1f%%\n", item, p) end dropsLabel.Text = t else dropsLabel.Text = "No drops" end end) end local function tryCreate(obj) if obj:IsA("Model") and obj.Parent == ENEMY_FOLDER then task.spawn(createESP, obj) end end for _, enemy in ipairs(ENEMY_FOLDER:GetChildren()) do tryCreate(enemy) end ENEMY_FOLDER.DescendantAdded:Connect(tryCreate)