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)