--[[
╔══════════════════════════════════════════════════════╗
║ 🔍 ULTIMATE ROBLOX SCANNER v1.0 ║
║ ⚔️ Weapons | ❤️ Health | 🪙 AC | 📍 Locations ║
║ drag · tab · auto-rescan · console log ║
╚══════════════════════════════════════════════════════╝
]]
-- ═══════════════════════════════════════════════
-- ⚙️ CONFIG — edit keywords here
-- ═══════════════════════════════════════════════
local CONFIG = {
weaponKeywords = {
"sword","gun","knife","blade","rifle","pistol","shotgun","bow",
"axe","hammer","weapon","dagger","spear","staff","wand","launcher",
"cannon","musket","sniper","smg","ak","m4","glock","uzi","revolver",
"crossbow","flamethrower","grenade","bomb","explosive","saber","katana",
},
healthKeywords = {
"health","medkit","heal","hp","potion","aid","bandage","regen",
"medipack","firstaid","kit","life","cure","antidote","food","drink",
"flask","elixir","berry","fruit","mushroom","meat","bread",
},
acKeywords = {
"coin","gem","crystal","orb","pickup","collect","loot","token",
"shard","fragment","star","cash","money","gold","silver","ring",
"pearl","chest","drop","reward","item","xp","exp","soul","core",
"essence","rune","badge","trophy","collectible","egg","seed",
},
locationKeywords = {
"spawn","checkpoint","waypoint","gate","door","portal","region",
"zone","area","base","flag","point","node","objective","marker",
"platform","lobby","teleport","exit","entrance","hub","warp",
"shop","npc","vendor","boss","arena","safe","vault","tower",
},
scanInterval = 5, -- seconds between auto-rescans
maxResults = 500, -- cap per category
showInConsole = true, -- also print to output
}
-- ═══════════════════════════════════════════════
-- 🔧 SERVICES
-- ═══════════════════════════════════════════════
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local lp = Players.LocalPlayer
-- ═══════════════════════════════════════════════
-- 🛠️ UTILITY
-- ═══════════════════════════════════════════════
local function matchKW(name, kws)
local low = name:lower()
for _, kw in ipairs(kws) do
if low:find(kw, 1, true) then return true end
end
return false
end
local function getPos(obj)
if obj:IsA("BasePart") then
return obj.Position
elseif obj:IsA("Model") then
local r = obj:FindFirstChild("HumanoidRootPart")
or obj:FindFirstChildWhichIsA("BasePart")
if r then return r.Position end
local ok, cf = pcall(function() return obj:GetModelCFrame() end)
if ok and cf then return cf.Position end
elseif obj:IsA("Tool") then
local h = obj:FindFirstChild("Handle")
if h then return h.Position end
end
return nil
end
local function vStr(v)
if not v then return "N/A" end
return string.format("(%.1f, %.1f, %.1f)", v.X, v.Y, v.Z)
end
local function dist(pos)
if not pos then return 99999 end
local c = lp.Character
if not c then return 99999 end
local r = c:FindFirstChild("HumanoidRootPart")
if not r then return 99999 end
return (r.Position - pos).Magnitude
end
-- ═══════════════════════════════════════════════
-- 🔍 SCANNERS
-- ═══════════════════════════════════════════════
-- ⚔️ WEAPONS
local function scanWeapons()
local out = {}
for _, obj in pairs(game:GetDescendants()) do
if #out >= CONFIG.maxResults then break end
local hit = obj:IsA("Tool") or obj:IsA("HopperBin")
if not hit then hit = matchKW(obj.Name, CONFIG.weaponKeywords) end
if hit then
local p = getPos(obj)
table.insert(out, {
name = obj.Name,
class = obj.ClassName,
parent = obj.Parent and obj.Parent.Name or "?",
pos = p,
dist = dist(p),
})
end
end
table.sort(out, function(a,b) return a.dist < b.dist end)
return out
end
-- ❤️ HEALTH
local function scanHealth()
local out = {}
for _, obj in pairs(game:GetDescendants()) do
if #out >= CONFIG.maxResults then break end
if obj:IsA("Humanoid") then
local par = obj.Parent
local p = getPos(par)
table.insert(out, {
name = par and par.Name or "Unknown",
class = "Humanoid",
hp = string.format("%.0f / %.0f", obj.Health, obj.MaxHealth),
pos = p,
dist = dist(p),
isNPC = par ~= lp.Character,
})
elseif matchKW(obj.Name, CONFIG.healthKeywords) then
local p = getPos(obj)
table.insert(out, {
name = obj.Name,
class = obj.ClassName,
hp = "pickup",
pos = p,
dist = dist(p),
isNPC = false,
})
end
end
table.sort(out, function(a,b) return a.dist < b.dist end)
return out
end
-- 🪙 AUTO-COLLECT
local function scanAC()
local out = {}
for _, obj in pairs(game:GetDescendants()) do
if #out >= CONFIG.maxResults then break end
if matchKW(obj.Name, CONFIG.acKeywords) then
local p = getPos(obj)
if p then
table.insert(out, {
name = obj.Name,
class = obj.ClassName,
parent = obj.Parent and obj.Parent.Name or "?",
pos = p,
dist = dist(p),
})
end
end
end
table.sort(out, function(a,b) return a.dist < b.dist end)
return out
end
-- 📍 LOCATIONS
local function scanLocations()
local out = {}
for _, obj in pairs(game:GetDescendants()) do
if #out >= CONFIG.maxResults then break end
local hit = obj:IsA("SpawnLocation")
if not hit then hit = matchKW(obj.Name, CONFIG.locationKeywords) end
if hit then
local p = getPos(obj)
table.insert(out, {
name = obj.Name,
class = obj.ClassName,
parent = obj.Parent and obj.Parent.Name or "?",
pos = p,
dist = dist(p),
})
end
end
table.sort(out, function(a,b) return a.dist < b.dist end)
return out
end
-- ═══════════════════════════════════════════════
-- 🖥️ GUI
-- ═══════════════════════════════════════════════
local function buildGUI()
if lp.PlayerGui:FindFirstChild("UltraScanner") then
lp.PlayerGui.UltraScanner:Destroy()
end
local sg = Instance.new("ScreenGui")
sg.Name = "UltraScanner"
sg.ResetOnSpawn = false
sg.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
sg.Parent = lp.PlayerGui
-- ── MAIN FRAME ──────────────────────────────
local main = Instance.new("Frame")
main.Name = "Main"
main.Size = UDim2.new(0, 560, 0, 500)
main.Position = UDim2.new(0.5, -280, 0.5, -250)
main.BackgroundColor3 = Color3.fromRGB(12, 12, 18)
main.BorderSizePixel = 0
main.ClipsDescendants = true
main.Parent = sg
do
local c = Instance.new("UICorner"); c.CornerRadius = UDim.new(0,10); c.Parent = main
local s = Instance.new("UIStroke"); s.Color = Color3.fromRGB(70,70,110); s.Thickness = 1; s.Parent = main
end
-- ── TITLE BAR ───────────────────────────────
local titleBar = Instance.new("Frame")
titleBar.Size = UDim2.new(1, 0, 0, 38)
titleBar.BackgroundColor3 = Color3.fromRGB(18, 18, 28)
titleBar.BorderSizePixel = 0
titleBar.Parent = main
local title = Instance.new("TextLabel")
title.Text = "🔍 ULTIMATE SCANNER v1.0"
title.Font = Enum.Font.GothamBold
title.TextSize = 14
title.TextColor3 = Color3.fromRGB(190, 190, 255)
title.BackgroundTransparency = 1
title.Size = UDim2.new(1, -50, 1, 0)
title.Position = UDim2.new(0, 12, 0, 0)
title.TextXAlignment = Enum.TextXAlignment.Left
title.Parent = titleBar
local closeBtn = Instance.new("TextButton")
closeBtn.Text = "✕"
closeBtn.Font = Enum.Font.GothamBold
closeBtn.TextSize = 14
closeBtn.TextColor3 = Color3.fromRGB(255, 90, 90)
closeBtn.BackgroundTransparency = 1
closeBtn.Size = UDim2.new(0, 38, 0, 38)
closeBtn.Position = UDim2.new(1, -38, 0, 0)
closeBtn.Parent = titleBar
closeBtn.MouseButton1Click:Connect(function() sg:Destroy() end)
-- drag
local dragging, dragStart, startPos
titleBar.InputBegan:Connect(function(i)
if i.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = true; dragStart = i.Position; startPos = main.Position
end
end)
UserInputService.InputChanged:Connect(function(i)
if dragging and i.UserInputType == Enum.UserInputType.MouseMovement then
local d = i.Position - dragStart
main.Position = UDim2.new(
startPos.X.Scale, startPos.X.Offset + d.X,
startPos.Y.Scale, startPos.Y.Offset + d.Y)
end
end)
UserInputService.InputEnded:Connect(function(i)
if i.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end
end)
-- ── TAB BAR ─────────────────────────────────
local tabBar = Instance.new("Frame")
tabBar.Size = UDim2.new(1, 0, 0, 36)
tabBar.Position = UDim2.new(0, 0, 0, 38)
tabBar.BackgroundColor3 = Color3.fromRGB(16, 16, 24)
tabBar.BorderSizePixel = 0
tabBar.Parent = main
do
local l = Instance.new("UIListLayout")
l.FillDirection = Enum.FillDirection.Horizontal
l.SortOrder = Enum.SortOrder.LayoutOrder
l.Parent = tabBar
end
-- ── CONTENT AREA ────────────────────────────
local content = Instance.new("Frame")
content.Size = UDim2.new(1, 0, 1, -114)
content.Position = UDim2.new(0, 0, 0, 74)
content.BackgroundTransparency = 1
content.Parent = main
-- ── BOTTOM BAR ──────────────────────────────
local botBar = Instance.new("Frame")
botBar.Size = UDim2.new(1, 0, 0, 40)
botBar.Position = UDim2.new(0, 0, 1, -40)
botBar.BackgroundColor3 = Color3.fromRGB(16, 16, 24)
botBar.BorderSizePixel = 0
botBar.Parent = main
local scanBtn = Instance.new("TextButton")
scanBtn.Text = "🔄 SCAN NOW"
scanBtn.Font = Enum.Font.GothamBold
scanBtn.TextSize = 12
scanBtn.TextColor3 = Color3.fromRGB(130, 255, 130)
scanBtn.BackgroundColor3= Color3.fromRGB(20, 45, 20)
scanBtn.Size = UDim2.new(0, 130, 0, 28)
scanBtn.Position = UDim2.new(0, 8, 0.5, -14)
scanBtn.Parent = botBar
do local c = Instance.new("UICorner"); c.CornerRadius = UDim.new(0,5); c.Parent = scanBtn end
local statusLbl = Instance.new("TextLabel")
statusLbl.Text = "idle — press scan"
statusLbl.Font = Enum.Font.Gotham
statusLbl.TextSize = 11
statusLbl.TextColor3 = Color3.fromRGB(110, 110, 140)
statusLbl.BackgroundTransparency = 1
statusLbl.Size = UDim2.new(1, -150, 1, 0)
statusLbl.Position = UDim2.new(0, 148, 0, 0)
statusLbl.TextXAlignment = Enum.TextXAlignment.Left
statusLbl.Parent = botBar
-- ── TABS DATA ───────────────────────────────
local TABS = {
{ id="weapons", label="⚔️ Weapons", color=Color3.fromRGB(255,185,80) },
{ id="health", label="❤️ Health", color=Color3.fromRGB(255,100,100) },
{ id="ac", label="🪙 A-Collect", color=Color3.fromRGB(255,225,80) },
{ id="locations", label="📍 Locations", color=Color3.fromRGB(80,190,255) },
}
local tabFrames = {}
local tabButtons = {}
local activeTab = TABS[1].id
-- build scroll frames
local function mkFrame(id)
local sf = Instance.new("ScrollingFrame")
sf.Name = id
sf.Size = UDim2.new(1, 0, 1, 0)
sf.BackgroundTransparency = 1
sf.BorderSizePixel = 0
sf.ScrollBarThickness = 4
sf.ScrollBarImageColor3= Color3.fromRGB(80, 80, 120)
sf.CanvasSize = UDim2.new(0, 0, 0, 0)
sf.AutomaticCanvasSize = Enum.AutomaticSize.Y
sf.Visible = false
sf.Parent = content
local lay = Instance.new("UIListLayout")
lay.SortOrder = Enum.SortOrder.LayoutOrder
lay.Padding = UDim.new(0, 2)
lay.Parent = sf
local pad = Instance.new("UIPadding")
pad.PaddingLeft = UDim.new(0, 8)
pad.PaddingRight = UDim.new(0, 8)
pad.PaddingTop = UDim.new(0, 6)
pad.Parent = sf
tabFrames[id] = sf
end
for _, t in ipairs(TABS) do mkFrame(t.id) end
-- switch tab
local function switchTab(id)
activeTab = id
for _, t in ipairs(TABS) do
tabButtons[t.id].BackgroundColor3 =
t.id == id and Color3.fromRGB(22,22,36) or Color3.fromRGB(16,16,24)
tabButtons[t.id].TextColor3 =
t.id == id and t.color or Color3.fromRGB(90,90,110)
tabFrames[t.id].Visible = (t.id == id)
end
end
-- build tab buttons
for _, t in ipairs(TABS) do
local btn = Instance.new("TextButton")
btn.Text = t.label
btn.Font = Enum.Font.GothamSemibold
btn.TextSize = 11
btn.TextColor3 = Color3.fromRGB(90, 90, 110)
btn.BackgroundColor3 = Color3.fromRGB(16, 16, 24)
btn.BorderSizePixel = 0
btn.Size = UDim2.new(0.25, 0, 1, 0)
btn.Parent = tabBar
btn.MouseButton1Click:Connect(function() switchTab(t.id) end)
tabButtons[t.id] = btn
end
switchTab(activeTab)
-- ── ROW / HEADER BUILDERS ────────────────────
local function mkHeader(parent, txt, color, order)
local f = Instance.new("Frame")
f.Size = UDim2.new(1, 0, 0, 26)
f.BackgroundColor3 = Color3.fromRGB(25, 25, 40)
f.BorderSizePixel = 0
f.LayoutOrder = order
f.Parent = parent
do local c = Instance.new("UICorner"); c.CornerRadius=UDim.new(0,4); c.Parent=f end
local l = Instance.new("TextLabel")
l.Text = txt
l.Font = Enum.Font.GothamBold
l.TextSize = 12
l.TextColor3 = color
l.BackgroundTransparency = 1
l.Size = UDim2.new(1,-10,1,0)
l.Position = UDim2.new(0,10,0,0)
l.TextXAlignment = Enum.TextXAlignment.Left
l.Parent = f
end
local function mkRow(parent, txt, color, order)
local f = Instance.new("Frame")
f.Size = UDim2.new(1, 0, 0, 20)
f.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
f.BorderSizePixel = 0
f.LayoutOrder = order
f.Parent = parent
do local c = Instance.new("UICorner"); c.CornerRadius=UDim.new(0,3); c.Parent=f end
local l = Instance.new("TextLabel")
l.Text = txt
l.Font = Enum.Font.Code
l.TextSize = 11
l.TextColor3 = color or Color3.fromRGB(200,200,200)
l.BackgroundTransparency = 1
l.Size = UDim2.new(1,-10,1,0)
l.Position = UDim2.new(0,10,0,0)
l.TextXAlignment = Enum.TextXAlignment.Left
l.TextTruncate = Enum.TextTruncate.AtEnd
l.Parent = f
end
local function clearFrame(id)
for _, c in pairs(tabFrames[id]:GetChildren()) do
if c:IsA("Frame") then c:Destroy() end
end
end
-- ── POPULATE FUNCTIONS ───────────────────────
local function popWeapons(r)
clearFrame("weapons")
local f = tabFrames["weapons"]
mkHeader(f, string.format("⚔️ WEAPONS ─ %d found", #r), Color3.fromRGB(255,185,80), 0)
if #r == 0 then mkRow(f, " nothing found.", Color3.fromRGB(90,90,110), 1); return end
for i, v in ipairs(r) do
mkRow(f,
string.format("🗡️ %-22s | 📁 %-14s | 📍 %-28s | 📏 %.0fm",
v.name, v.parent, vStr(v.pos), v.dist),
Color3.fromRGB(255,210,120), i)
end
end
local function popHealth(r)
clearFrame("health")
local f = tabFrames["health"]
mkHeader(f, string.format("❤️ HEALTH ─ %d found", #r), Color3.fromRGB(255,100,100), 0)
if #r == 0 then mkRow(f, " nothing found.", Color3.fromRGB(90,90,110), 1); return end
for i, v in ipairs(r) do
local tag = v.isNPC and "👾" or (v.hp == "pickup" and "💊" or "👤")
mkRow(f,
string.format("%s %-22s | HP: %-12s | 📍 %-22s | 📏 %.0fm",
tag, v.name, v.hp, vStr(v.pos), v.dist),
v.isNPC and Color3.fromRGB(255,150,150) or Color3.fromRGB(150,255,150), i)
end
end
local function popAC(r)
clearFrame("ac")
local f = tabFrames["ac"]
mkHeader(f, string.format("🪙 AUTO-COLLECT ─ %d found", #r), Color3.fromRGB(255,225,80), 0)
if #r == 0 then mkRow(f, " nothing found.", Color3.fromRGB(90,90,110), 1); return end
for i, v in ipairs(r) do
mkRow(f,
string.format("💰 %-22s | 📁 %-14s | 📍 %-28s | 📏 %.0fm",
v.name, v.parent, vStr(v.pos), v.dist),
Color3.fromRGB(255,240,160), i)
end
end
local function popLocations(r)
clearFrame("locations")
local f = tabFrames["locations"]
mkHeader(f, string.format("📍 LOCATIONS ─ %d found", #r), Color3.fromRGB(80,190,255), 0)
if #r == 0 then mkRow(f, " nothing found.", Color3.fromRGB(90,90,110), 1); return end
for i, v in ipairs(r) do
mkRow(f,
string.format("📌 %-22s | 📁 %-14s | 📍 %-28s | 📏 %.0fm",
v.name, v.parent, vStr(v.pos), v.dist),
Color3.fromRGB(160,215,255), i)
end
end
-- ── RUN SCAN ─────────────────────────────────
local scanning = false
local function runScan()
if scanning then return end
scanning = true
scanBtn.Text = "⏳ scanning..."
statusLbl.Text = "🔄 scanning all..."
local w = scanWeapons()
local h = scanHealth()
local a = scanAC()
local l = scanLocations()
popWeapons(w)
popHealth(h)
popAC(a)
popLocations(l)
statusLbl.Text = string.format(
"✅ ⚔️%d ❤️%d 🪙%d 📍%d",
#w, #h, #a, #l)
scanBtn.Text = "🔄 SCAN NOW"
scanning = false
if CONFIG.showInConsole then
print("\n╔══════════════════════════════════════╗")
print("║ 🔍 ULTRA SCANNER — RESULTS ║")
print("╚══════════════════════════════════════╝")
print(string.format("\n⚔️ WEAPONS (%d)", #w))
for _, v in ipairs(w) do
print(string.format(" 🗡️ %s [%s] @ %s (%.0fm)", v.name, v.parent, vStr(v.pos), v.dist))
end
print(string.format("\n❤️ HEALTH (%d)", #h))
for _, v in ipairs(h) do
print(string.format(" 💉 %s HP:%s @ %s (%.0fm)", v.name, v.hp, vStr(v.pos), v.dist))
end
print(string.format("\n🪙 AUTO-COLLECT (%d)", #a))
for _, v in ipairs(a) do
print(string.format(" 💰 %s [%s] @ %s (%.0fm)", v.name, v.parent, vStr(v.pos), v.dist))
end
print(string.format("\n📍 LOCATIONS (%d)", #l))
for _, v in ipairs(l) do
print(string.format(" 📌 %s [%s] @ %s (%.0fm)", v.name, v.parent, vStr(v.pos), v.dist))
end
print("─────────────────────────────────────────")
end
end
scanBtn.MouseButton1Click:Connect(runScan)
-- auto-rescan loop
task.spawn(function()
task.wait(0.5)
runScan()
while sg and sg.Parent do
task.wait(CONFIG.scanInterval)
if sg and sg.Parent then runScan() end
end
end)
end
buildGUI()
--standalonehere
--[[ ⚔️ WEAPONS SCANNER — standalone console ]]
local lp = game:GetService("Players").LocalPlayer
local KEYWORDS = {
"sword","gun","knife","blade","rifle","pistol","shotgun","bow",
"axe","hammer","weapon","dagger","spear","staff","wand","launcher",
"cannon","musket","sniper","smg","revolver","crossbow","grenade","saber",
}
local function match(name)
local low = name:lower()
for _, kw in ipairs(KEYWORDS) do
if low:find(kw,1,true) then return true end
end
return false
end
local function getPos(obj)
if obj:IsA("BasePart") then return obj.Position end
if obj:IsA("Tool") then
local h = obj:FindFirstChild("Handle"); if h then return h.Position end
end
if obj:IsA("Model") then
local r = obj:FindFirstChild("HumanoidRootPart") or obj:FindFirstChildWhichIsA("BasePart")
if r then return r.Position end
end
end
local function dist(pos)
local c = lp.Character; if not c then return 0 end
local r = c:FindFirstChild("HumanoidRootPart"); if not r then return 0 end
return pos and (r.Position - pos).Magnitude or 0
end
local results = {}
for _, obj in pairs(game:GetDescendants()) do
if obj:IsA("Tool") or obj:IsA("HopperBin") or match(obj.Name) then
local p = getPos(obj)
table.insert(results, { name=obj.Name, class=obj.ClassName,
parent=obj.Parent and obj.Parent.Name or "?", pos=p, dist=dist(p) })
end
end
table.sort(results, function(a,b) return a.dist < b.dist end)
print("\n⚔️ ══════════ WEAPONS SCANNER ══════════ ⚔️")
print(string.format(" found: %d weapons\n", #results))
for i, v in ipairs(results) do
print(string.format(" [%02d] 🗡️ %-20s | 📁 %-12s | 📍 (%.0f, %.0f, %.0f) | 📏 %.0fm",
i, v.name, v.parent,
v.pos and v.pos.X or 0, v.pos and v.pos.Y or 0, v.pos and v.pos.Z or 0,
v.dist))
end
print("\n⚔️ ═══════════════════════════════════════ ⚔️")
--[[ ❤️ HEALTH SCANNER — standalone console ]]
local lp = game:GetService("Players").LocalPlayer
local KEYWORDS = {
"health","medkit","heal","hp","potion","aid","bandage","regen",
"medipack","firstaid","kit","life","cure","food","drink","flask","elixir",
}
local function dist(pos)
local c = lp.Character; if not c then return 0 end
local r = c:FindFirstChild("HumanoidRootPart"); if not r then return 0 end
return pos and (r.Position - pos).Magnitude or 0
end
local function getPos(obj)
if obj:IsA("BasePart") then return obj.Position end
if obj:IsA("Model") then
local r = obj:FindFirstChild("HumanoidRootPart") or obj:FindFirstChildWhichIsA("BasePart")
if r then return r.Position end
end
end
local function match(name)
local low = name:lower()
for _, kw in ipairs(KEYWORDS) do if low:find(kw,1,true) then return true end end
end
local results = {}
for _, obj in pairs(game:GetDescendants()) do
if obj:IsA("Humanoid") then
local par = obj.Parent
local p = getPos(par)
table.insert(results, {
name = par and par.Name or "?",
hp = string.format("%.0f/%.0f", obj.Health, obj.MaxHealth),
pos = p, dist = dist(p),
isNPC = par ~= lp.Character,
class = "Humanoid",
})
elseif match(obj.Name) then
local p = getPos(obj)
table.insert(results, {
name = obj.Name, hp="pickup",
pos = p, dist = dist(p),
isNPC = false, class = obj.ClassName,
})
end
end
table.sort(results, function(a,b) return a.dist < b.dist end)
print("\n❤️ ══════════ HEALTH SCANNER ══════════ ❤️")
print(string.format(" found: %d entries\n", #results))
for i, v in ipairs(results) do
local tag = v.isNPC and "👾 NPC" or (v.hp=="pickup" and "💊 item" or "👤 player")
print(string.format(" [%02d] %s %-18s | HP: %-10s | 📍 (%.0f,%.0f,%.0f) | 📏 %.0fm",
i, tag, v.name, v.hp,
v.pos and v.pos.X or 0, v.pos and v.pos.Y or 0, v.pos and v.pos.Z or 0,
v.dist))
end
print("\n❤️ ══════════════════════════════════════ ❤️")
--[[ 🪙 AUTO-COLLECT SCANNER — standalone console ]]
local lp = game:GetService("Players").LocalPlayer
local KEYWORDS = {
"coin","gem","crystal","orb","pickup","collect","loot","token",
"shard","fragment","star","cash","money","gold","silver","ring",
"pearl","chest","drop","reward","item","xp","exp","soul","core",
"essence","rune","badge","egg","seed","collectible",
}
local function match(name)
local low = name:lower()
for _, kw in ipairs(KEYWORDS) do if low:find(kw,1,true) then return true end end
end
local function getPos(obj)
if obj:IsA("BasePart") then return obj.Position end
if obj:IsA("Model") then
local r = obj:FindFirstChild("HumanoidRootPart") or obj:FindFirstChildWhichIsA("BasePart")
if r then return r.Position end
end
end
local function dist(pos)
local c = lp.Character; if not c then return 0 end
local r = c:FindFirstChild("HumanoidRootPart"); if not r then return 0 end
return pos and (r.Position - pos).Magnitude or 0
end
local results = {}
for _, obj in pairs(game:GetDescendants()) do
if match(obj.Name) then
local p = getPos(obj)
if p then
table.insert(results, {
name=obj.Name, class=obj.ClassName,
parent=obj.Parent and obj.Parent.Name or "?",
pos=p, dist=dist(p),
})
end
end
end
table.sort(results, function(a,b) return a.dist < b.dist end)
print("\n🪙 ════════ AUTO-COLLECT SCANNER ════════ 🪙")
print(string.format(" found: %d collectibles\n", #results))
for i, v in ipairs(results) do
print(string.format(" [%02d] 💰 %-20s | 📁 %-12s | 📍 (%.0f,%.0f,%.0f) | 📏 %.0fm",
i, v.name, v.parent,
v.pos.X, v.pos.Y, v.pos.Z, v.dist))
end
print("\n🪙 ══════════════════════════════════════ 🪙")
--[[ 📍 LOCATIONS SCANNER — standalone console ]]
local lp = game:GetService("Players").LocalPlayer
local KEYWORDS = {
"spawn","checkpoint","waypoint","gate","door","portal","region",
"zone","area","base","flag","point","node","objective","marker",
"platform","lobby","teleport","exit","entrance","hub","warp",
"shop","vendor","boss","arena","safe","vault","tower","npc",
}
local function match(name)
local low = name:lower()
for _, kw in ipairs(KEYWORDS) do if low:find(kw,1,true) then return true end end
end
local function getPos(obj)
if obj:IsA("BasePart") then return obj.Position end
if obj:IsA("Model") then
local r = obj:FindFirstChild("HumanoidRootPart") or obj:FindFirstChildWhichIsA("BasePart")
if r then return r.Position end
end
end
local function dist(pos)
local c = lp.Character; if not c then return 0 end
local r = c:FindFirstChild("HumanoidRootPart"); if not r then return 0 end
return pos and (r.Position - pos).Magnitude or 0
end
local results = {}
for _, obj in pairs(game:GetDescendants()) do
local hit = obj:IsA("SpawnLocation") or match(obj.Name)
if hit then
local p = getPos(obj)
table.insert(results, {
name=obj.Name, class=obj.ClassName,
parent=obj.Parent and obj.Parent.Name or "?",
pos=p, dist=dist(p),
})
end
end
table.sort(results, function(a,b) return a.dist < b.dist end)
print("\n📍 ════════ LOCATIONS SCANNER ════════ 📍")
print(string.format(" found: %d locations\n", #results))
for i, v in ipairs(results) do
print(string.format(" [%02d] 📌 %-20s | 📁 %-12s | 📍 (%.0f,%.0f,%.0f) | 📏 %.0fm",
i, v.name, v.parent,
v.pos and v.pos.X or 0, v.pos and v.pos.Y or 0, v.pos and v.pos.Z or 0,
v.dist))
end
print("\n📍 ══════════════════════════════════════ 📍")
To embed this project on your website, copy the following code and paste it into your website's HTML: