
Key Required

-- 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)



Usage is just simply hovering your mouse over the enemy.
i busted to this
this is so hot
also you can use AncesteryChanged and check if the newparent is nil instead of checking it through a loop
it just says label label label instead of the information what do i do?
ur lowk hot bro
v2 of Mod Scanner coming out soon
Does this not support all executors or is it just not working anymore? I really needed it.
new to scripts but fr how do i get this to work? i use zeno and idk what to copy and paste since nothing i do works