local ESP_TAG = "__ORB_ESP__"
local orbFolder = workspace
local orbESP = {}
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local hrp
local function updateHRP()
local char = player.Character or player.CharacterAdded:Wait()
hrp = char:FindFirstChild("HumanoidRootPart") or char:WaitForChild("HumanoidRootPart")
end
if player.Character then updateHRP() end
player.CharacterAdded:Connect(function() task.wait(0.1); updateHRP() end)
local function getDistance(part)
if not hrp or not part then return math.huge end
return math.floor((hrp.Position - part.Position).Magnitude)
end
local function getOrbColor(orb)
local glow = orb:FindFirstChild("Glow")
if glow and glow:IsA("ParticleEmitter") and #glow.Color.Keypoints>0 then
return glow.Color.Keypoints[1].Value
end
local em = orb:FindFirstChild("Emitter") or orb:FindFirstChildWhichIsA("ParticleEmitter", true)
if em and em:IsA("ParticleEmitter") and #em.Color.Keypoints>0 then
return em.Color.Keypoints[1].Value
end
local sp = orb:FindFirstChild("Sparkles")
if sp and sp:IsA("Sparkles") then
return sp.SparkleColor
end
return Color3.new(1,1,1)
end
local function getRarity(c)
local r,g,b = c.R*255, c.G*255, c.B*255
if r>230 and g>230 and b>230 then return "Common" end
if g>230 and r<150 and b<150 then return "Uncommon" end
if r>200 and g<150 and b>200 then return "Rare" end
if g>230 and b>230 then return "Epic" end
if r>230 and g>230 and b<150 then return "Legendary" end
if r>230 and g<150 and b<150 then return "Ultimate" end
return "Unknown"
end
local function makeESP(orb)
if not orb or not orb:IsA("BasePart") then return end
if orbESP[orb] then return end
local color = getOrbColor(orb)
local rarity = getRarity(color)
local bb = Instance.new("BillboardGui")
bb.Name = ESP_TAG
bb.Adornee = orb
bb.Size = UDim2.new(0, 100, 0, 28)
bb.AlwaysOnTop = true
bb.StudsOffset = Vector3.new(0, 2, 0)
bb.Parent = orb
local txt = Instance.new("TextLabel")
txt.Name = "OrbInfo"
txt.BackgroundTransparency = 1
txt.Size = UDim2.new(1,0,1,0)
txt.TextScaled = true
txt.TextColor3 = color
txt.TextStrokeTransparency = 0
txt.Font = Enum.Font.GothamBold
txt.Text = rarity .. " | 0m"
txt.Parent = bb
local hl = Instance.new("Highlight")
hl.Name = ESP_TAG
hl.FillTransparency = 1
hl.OutlineTransparency = 0
hl.OutlineColor = color
hl.Parent = orb
orbESP[orb] = { orb = orb, rarity = rarity, txt = txt }
task.spawn(function()
while orb:IsDescendantOf(workspace) and orbESP[orb] do
local dist = getDistance(orb)
if orbESP[orb] and orbESP[orb].txt then
orbESP[orb].txt.Text = rarity .. " | " .. tostring(dist) .. "m"
end
task.wait(0.2)
end
if orbESP[orb] then
orbESP[orb] = nil
end
end)
end
local function removeESP(orb)
if not orb then return end
for _, child in ipairs(orb:GetChildren()) do
if child.Name == ESP_TAG then
pcall(function() child:Destroy() end)
end
end
if orbESP[orb] then orbESP[orb] = nil end
end
local function isOrb(part)
return part and part:IsA("BasePart") and part:FindFirstChild("OrbScript")
end
local function tryOrb(obj)
if isOrb(obj) then
makeESP(obj)
obj.Destroying:Connect(function()
removeESP(obj)
end)
end
end
for _, o in ipairs(orbFolder:GetDescendants()) do
tryOrb(o)
end
orbFolder.DescendantAdded:Connect(tryOrb)
local rarities = { "Common", "Uncommon", "Rare", "Epic", "Legendary", "Ultimate" }
local screen = Instance.new("ScreenGui")
screen.Name = "ProbTom"
screen.ResetOnSpawn = false
screen.Parent = player:WaitForChild("PlayerGui")
local frame = Instance.new("Frame")
frame.Size = UDim2.new(0, 170, 0, 34 + #rarities * 34)
frame.Position = UDim2.new(0, 12, 0.5, -( (34 + #rarities*34)/2 ))
frame.BackgroundColor3 = Color3.fromRGB(18,18,18)
frame.BorderSizePixel = 0
frame.Parent = screen
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1,0,0,30)
title.BackgroundTransparency = 1
title.Text = "Orb Teleport"
title.TextScaled = true
title.Font = Enum.Font.GothamBold
title.TextColor3 = Color3.fromRGB(230,230,230)
title.Parent = frame
local uiList = Instance.new("UIListLayout")
uiList.Parent = frame
uiList.Padding = UDim.new(0, 6)
uiList.SortOrder = Enum.SortOrder.LayoutOrder
uiList.HorizontalAlignment = Enum.HorizontalAlignment.Center
uiList.VerticalAlignment = Enum.VerticalAlignment.Top
uiList.FillDirection = Enum.FillDirection.Vertical
local function getClosestOrb(rarity)
local closest, dist = nil, math.huge
for orb, data in pairs(orbESP) do
if data and data.rarity == rarity and data.orb and data.orb.Parent then
local d = getDistance(data.orb)
if d < dist then
dist = d
closest = data.orb
end
end
end
return closest
end
local tpDebounce = false
local function tpToOrb(orb)
if tpDebounce then return end
if not orb or not hrp then return end
tpDebounce = true
local targetCFrame = CFrame.new(orb.Position + Vector3.new(0, 3, 0))
hrp.CFrame = targetCFrame
task.wait(0.2)
tpDebounce = false
end
local function createButton(rarity)
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, -12, 0, 30)
btn.BackgroundColor3 = Color3.fromRGB(40,40,40)
btn.TextColor3 = Color3.fromRGB(240,240,240)
btn.TextScaled = true
btn.Font = Enum.Font.GothamBold
btn.Text = "TP → " .. rarity
btn.Parent = frame
task.spawn(function()
while btn.Parent do
local count = 0
for _, data in pairs(orbESP) do
if data and data.rarity == rarity then count = count + 1 end
end
if count > 0 then
btn.Text = "TP → " .. rarity .. " (" .. tostring(count) .. ")"
btn.AutomaticSize = Enum.AutomaticSize.None
btn.Active = true
btn.AutoButtonColor = true
btn.BackgroundColor3 = Color3.fromRGB(40,40,40)
else
btn.Text = "TP → " .. rarity .. " (0)"
btn.Active = true
btn.AutoButtonColor = false
btn.BackgroundColor3 = Color3.fromRGB(70,70,70)
end
task.wait(0.6)
end
end)
btn.MouseButton1Click:Connect(function()
local orb = getClosestOrb(rarity)
if orb then
tpToOrb(orb)
else
local old = btn.Text
btn.Text = rarity .. " (none)"
task.wait(0.6)
btn.Text = old
end
end)
end
for _, r in ipairs(rarities) do
createButton(r)
end
local refresh = Instance.new("TextButton")
refresh.Size = UDim2.new(1, -12, 0, 28)
refresh.TextScaled = true
refresh.Font = Enum.Font.Gotham
refresh.Text = "Refresh ESP"
refresh.BackgroundColor3 = Color3.fromRGB(60,60,60)
refresh.TextColor3 = Color3.fromRGB(230,230,230)
refresh.Parent = frame
refresh.MouseButton1Click:Connect(function()
for _, obj in ipairs(orbFolder:GetDescendants()) do
if isOrb(obj) then
makeESP(obj)
end
end
end)
Comments
не рабоатет