Mob Scanner
Key Required

Mob Scanner

An Average Campaign [Alpha v0.5.0]sinslysinsly 7.8K views 656 executesUpdated Dec 14, 2025
3.3/ 5(12 votes)
8467% Positive
Lua Script•197 lines (5611 chars)
-- 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)

Features & Information

Pretty much just a visual HUD, it will give you no advantage in the game besides seeing their moves and the drop rates of shit. I created it solely as an add-on to the game itself and an introduction to a collection of future FREE scripts for this game. -- This game does have very little vulnerabilities but I will still find things to make scripts on.
#ui#mod#cheat#scrpt

Community Comments (9)

sinslysinslyDec 14, 2025

Usage is just simply hovering your mouse over the enemy.

KeycanKeycanDec 14, 2025

i busted to this

GoonJoeGoonJoeDec 14, 2025

this is so hot

KeycanKeycanDec 14, 2025

also you can use AncesteryChanged and check if the newparent is nil instead of checking it through a loop

yomamas148yomamas148Dec 17, 2025

it just says label label label instead of the information what do i do?

ToucherGigglerToucherGigglerDec 19, 2025

ur lowk hot bro

sinslysinslyDec 19, 2025

v2 of Mod Scanner coming out soon

Fair2uFair2uJul 15, 2026

Does this not support all executors or is it just not working anymore? I really needed it.

UmbraEUmbraESep 9, 2026

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

More Scripts for An Average Campaign [Alpha v0.5.0]