local Workspace = game:GetService("Workspace") local Players = game:GetService("Players") local RunService = game:GetService("RunService") local CoreGui = game:GetService("CoreGui") local LocalPlayer = Players.LocalPlayer local BotFolder = Workspace:WaitForChild("Players", 10) local EffectsFolder = Workspace:WaitForChild("Effects", 10) local TicketsFolder = Workspace:WaitForChild("Tickets", 10) if not TicketsFolder and EffectsFolder then TicketsFolder = EffectsFolder:WaitForChild("Tickets", 10) end if not BotFolder then return end if not EffectsFolder then return end if not TicketsFolder then return end local abs, atan2, cos, sin, floor, clamp, max = math.abs, math.atan2, math.cos, math.sin, math.floor, math.clamp, math.max local InstNew = Instance.new local Col3RGB = Color3.fromRGB local Col3New = Color3.new local BOT_SPEED = 33 local DOWNED_HIDE_DISTANCE = 4 local DOWNED_HIDE_DURATION = 2 local ticketESPConnections = {} local function getESPContainer() local success, result = pcall(function() local container = CoreGui:FindFirstChild("ESP_Container") if not container then container = InstNew("Folder") container.Name = "ESP_Container" container.Parent = CoreGui end return container end) if success and result then return result end local pg = LocalPlayer:FindFirstChild("PlayerGui") or LocalPlayer:WaitForChild("PlayerGui", 5) if pg then local container = pg:FindFirstChild("ESP_Container") if not container then container = InstNew("Folder") container.Name = "ESP_Container" container.Parent = pg end return container end return nil end local espContainer = getESPContainer() if not espContainer then return end local activeESPElements = {} local function cleanupESP(object) local uniqueId = object:GetDebugId() if activeESPElements[uniqueId] then for _, element in ipairs(activeESPElements[uniqueId]) do if element and element.Parent then element:Destroy() end end activeESPElements[uniqueId] = nil end for _, child in ipairs(espContainer:GetChildren()) do if string.find(child.Name, "_" .. uniqueId) then child:Destroy() end end end local function registerESPElement(object, element) local uniqueId = object:GetDebugId() if not activeESPElements[uniqueId] then activeESPElements[uniqueId] = {} end table.insert(activeESPElements[uniqueId], element) end local function getModelBoundingBoxSize(model) local cf, size = model:GetBoundingBox() return size end local function applyTicketESP(object) if not object or (not object:IsA("BasePart") and not object:IsA("Model")) then return end local existingHighlight = object:FindFirstChild("TicketESP_Highlight") local existingBillboard = object:FindFirstChild("TicketESP_Billboard") if existingHighlight then existingHighlight:Destroy() end if existingBillboard then existingBillboard:Destroy() end if ticketESPConnections[object] then ticketESPConnections[object]:Disconnect() ticketESPConnections[object] = nil end local targetPart = object if object:IsA("Model") then targetPart = object:FindFirstChildWhichIsA("BasePart") or object.PrimaryPart if not targetPart then return end end local highlight = InstNew("Highlight") highlight.Name = "TicketESP_Highlight" highlight.Adornee = object highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop highlight.FillColor = Col3RGB(0, 150, 255) highlight.OutlineColor = Col3RGB(255, 255, 255) highlight.FillTransparency = 0.6 highlight.OutlineTransparency = 0 highlight.Parent = espContainer local bgui = InstNew("BillboardGui") bgui.Name = "TicketESP_Billboard" bgui.Adornee = targetPart bgui.Size = UDim2.new(0, 100, 0, 25) bgui.StudsOffset = Vector3.new(0, 2, 0) bgui.AlwaysOnTop = true bgui.Parent = espContainer local textLabel = InstNew("TextLabel") textLabel.BackgroundTransparency = 1 textLabel.Size = UDim2.new(1, 0, 1, 0) textLabel.TextColor3 = Col3RGB(0, 150, 255) textLabel.TextStrokeColor3 = Col3New(0, 0, 0) textLabel.TextStrokeTransparency = 0 textLabel.TextSize = 12 textLabel.Font = Enum.Font.SourceSansBold textLabel.Text = "bubbles" textLabel.Parent = bgui local conn = object.AncestryChanged:Connect(function(_, parent) if not parent then highlight:Destroy() bgui:Destroy() if ticketESPConnections[object] then ticketESPConnections[object]:Disconnect() ticketESPConnections[object] = nil end end end) ticketESPConnections[object] = conn end local function setupTicketsESP() for _, child in ipairs(TicketsFolder:GetChildren()) do applyTicketESP(child) end TicketsFolder.ChildAdded:Connect(function(child) task.wait(0.1) applyTicketESP(child) end) end local function applyFinalHybridESP(object) if object.Name == LocalPlayer.Name then return end local root = object:FindFirstChild("HumanoidRootPart") or object:FindFirstChildWhichIsA("BasePart") if not root then return end cleanupESP(object) local teamAttr = object:GetAttribute("Team") if not teamAttr then local attrSignal attrSignal = object:GetAttributeChangedSignal("Team"):Connect(function() teamAttr = object:GetAttribute("Team") if teamAttr then attrSignal:Disconnect() end end) local elapsed = 0 while not teamAttr and elapsed < 2 and object and object.Parent do task.wait(0.1) elapsed += 0.1 teamAttr = object:GetAttribute("Team") end if attrSignal and attrSignal.Connected then attrSignal:Disconnect() end end local isNextbot = teamAttr == "Nextbot" local isPlayerTeam = teamAttr == "PlayerTeam" if not isNextbot and not isPlayerTeam then return end if isPlayerTeam then local uniqueId = object:GetDebugId() local humanoid = object:FindFirstChildWhichIsA("Humanoid") if not humanoid then local hConn hConn = object.ChildAdded:Connect(function(c) if c:IsA("Humanoid") then humanoid = c; hConn:Disconnect() end end) local waitTime = 0 while not humanoid and waitTime < 3 and object and object.Parent do task.wait(0.1); waitTime += 0.1 humanoid = object:FindFirstChildWhichIsA("Humanoid") end if hConn and hConn.Connected then hConn:Disconnect() end end local weldTarget = root or object:FindFirstChild("Right Leg") or object:FindFirstChild("RightLowerLeg") or object:FindFirstChild("RightFoot") local proxyPart = InstNew("Part") proxyPart.Name = "ESP_Proxy_" .. uniqueId proxyPart.Shape = Enum.PartType.Block local baseSize = weldTarget.Size proxyPart.Size = Vector3.new( max(baseSize.X, 2) + 1, max(baseSize.Y, 5) + 1, max(baseSize.Z, 1) + 1 ) proxyPart.Transparency = 0.99 proxyPart.Material = Enum.Material.ForceField proxyPart.CanCollide = false proxyPart.Massless = true proxyPart.Anchored = false proxyPart.CFrame = weldTarget.CFrame proxyPart.Parent = object local weld = InstNew("WeldConstraint") weld.Part0 = proxyPart weld.Part1 = weldTarget weld.Parent = proxyPart registerESPElement(object, proxyPart) local highlight = InstNew("Highlight") highlight.Name = "BotHighlight_" .. uniqueId highlight.Adornee = proxyPart highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop highlight.FillColor = Col3RGB(0, 255, 255) highlight.OutlineColor = Col3RGB(255, 255, 255) highlight.FillTransparency = 0.9 highlight.OutlineTransparency = 0 highlight.Parent = espContainer registerESPElement(object, highlight) local ancestryConn ancestryConn = object.AncestryChanged:Connect(function(_, parent) if not parent or not object:IsDescendantOf(Workspace) then ancestryConn:Disconnect() cleanupESP(object) end end) local rootDestroyedConn rootDestroyedConn = root.Destroying:Connect(function() rootDestroyedConn:Disconnect() cleanupESP(object) end) local healthConn if humanoid then healthConn = humanoid.HealthChanged:Connect(function(health) if not highlight or not highlight.Parent then return end if health <= 0 then highlight.FillColor = Col3RGB(255, 0, 0) highlight.OutlineColor = Col3RGB(255, 0, 0) highlight.FillTransparency = 0.5 else highlight.FillColor = Col3RGB(0, 255, 255) highlight.OutlineColor = Col3RGB(255, 255, 255) highlight.FillTransparency = 0.9 end end) if humanoid.Health <= 0 then highlight.FillColor = Col3RGB(255, 0, 0) highlight.OutlineColor = Col3RGB(255, 0, 0) highlight.FillTransparency = 0.5 end end task.spawn(function() local cam = Workspace.CurrentCamera while not cam and object and object.Parent do cam = Workspace.CurrentCamera if not cam then task.wait(0.1) end end if not cam then return end local nearbyTimer = 0 local downedLabelHidden = false local accumulatedDownedTime = 0 local lastTickTime = nil local timerPaused = true while object and object.Parent and highlight and highlight.Parent and object:IsDescendantOf(Workspace) and root and root.Parent do local downed = humanoid and humanoid.Health <= 0 local isCarried = object:GetAttribute("Carried") if downed then highlight.FillColor = Col3RGB(255, 0, 0) highlight.OutlineColor = Col3RGB(255, 0, 0) highlight.FillTransparency = 0.5 if isCarried then local dl = espContainer:FindFirstChild("DownedLabel_" .. uniqueId) if dl then dl:Destroy() end nearbyTimer = 0 downedLabelHidden = false timerPaused = true lastTickTime = nil else local closestNonDownedDist = math.huge for _, otherObj in ipairs(BotFolder:GetChildren()) do if otherObj ~= object and otherObj:GetAttribute("Team") == "PlayerTeam" then local otherHumanoid = otherObj:FindFirstChildWhichIsA("Humanoid") local otherRoot = otherObj:FindFirstChild("HumanoidRootPart") if otherHumanoid and otherHumanoid.Health > 0 and otherRoot then local dist = (root.Position - otherRoot.Position).Magnitude if dist < closestNonDownedDist then closestNonDownedDist = dist end end end end if closestNonDownedDist <= DOWNED_HIDE_DISTANCE then nearbyTimer += 0.5 else nearbyTimer = 0 downedLabelHidden = false end if nearbyTimer >= DOWNED_HIDE_DURATION then downedLabelHidden = true end if downedLabelHidden then timerPaused = true lastTickTime = nil local dl = espContainer:FindFirstChild("DownedLabel_" .. uniqueId) if dl then dl:Destroy() end else if timerPaused then timerPaused = false lastTickTime = os.clock() end if not espContainer:FindFirstChild("DownedLabel_" .. uniqueId) then if object:GetAttribute("WasCarried") then task.wait(2) object:SetAttribute("WasCarried", nil) if not (humanoid and humanoid.Health <= 0) or object:GetAttribute("Carried") then continue end end local screenGui = InstNew("ScreenGui") screenGui.Name = "DownedLabel_" .. uniqueId screenGui.IgnoreGuiInset = true screenGui.Parent = espContainer registerESPElement(object, screenGui) local container = InstNew("Frame") container.Name = "IndicatorContainer" container.AnchorPoint = Vector2.new(0.5, 0.5) container.BackgroundColor3 = Col3New(0, 0, 0) container.BackgroundTransparency = 0.5 container.BorderSizePixel = 0 container.AutomaticSize = Enum.AutomaticSize.XY container.Parent = screenGui local layout = InstNew("UIListLayout") layout.FillDirection = Enum.FillDirection.Horizontal layout.VerticalAlignment = Enum.VerticalAlignment.Center layout.Padding = UDim.new(0, 4) layout.Parent = container local padding = InstNew("UIPadding") padding.PaddingLeft = UDim.new(0, 5) padding.PaddingRight = UDim.new(0, 5) padding.PaddingTop = UDim.new(0, 2) padding.PaddingBottom = UDim.new(0, 2) padding.Parent = container local icon = InstNew("ImageLabel") icon.Size = UDim2.new(0, 16, 0, 16) icon.BackgroundTransparency = 1 icon.Image = "rbxassetid://134857111376422" icon.ImageColor3 = Col3RGB(255, 0, 0) icon.Parent = container local textLabel = InstNew("TextLabel") textLabel.BackgroundTransparency = 1 textLabel.AutomaticSize = Enum.AutomaticSize.XY textLabel.TextColor3 = Col3RGB(255, 0, 0) textLabel.TextStrokeTransparency = 0 textLabel.TextSize = 14 textLabel.Font = Enum.Font.SourceSansBold textLabel.Parent = container task.spawn(function() while screenGui and screenGui.Parent and object and object.Parent and humanoid and humanoid.Health <= 0 and not object:GetAttribute("Carried") and object:IsDescendantOf(Workspace) and root and root.Parent do if not timerPaused and lastTickTime then local now = os.clock() accumulatedDownedTime += (now - lastTickTime) lastTickTime = now end textLabel.Text = string.format("%.0fs", accumulatedDownedTime) if root and root.Parent then local viewportSize = cam.ViewportSize local pos, onScreen = cam:WorldToViewportPoint(root.Position) if onScreen then container.Position = UDim2.new(0, pos.X, 0, pos.Y) else local center = viewportSize / 2 local direction = (Vector2.new(pos.X, pos.Y) - center).Unit if pos.Z < 0 then direction = -direction end local rads = atan2(direction.Y, direction.X) local c, s = cos(rads), sin(rads) local m_x, m_y = (viewportSize.X / 2) - 45, (viewportSize.Y / 2) - 45 local x_val = m_y * (c / abs(s)) local y_val = m_x * (s / abs(c)) local finalPos = abs(x_val) < m_x and (center + Vector2.new(x_val, m_y * (s / abs(s)))) or (center + Vector2.new(m_x * (c / abs(c)), y_val)) container.Position = UDim2.new(0, finalPos.X, 0, finalPos.Y) end end task.wait(0.03) end if screenGui and screenGui.Parent then screenGui:Destroy() end end) end end end else highlight.FillColor = Col3RGB(0, 255, 255) highlight.OutlineColor = Col3RGB(255, 255, 255) highlight.FillTransparency = 0.9 local dl = espContainer:FindFirstChild("DownedLabel_" .. uniqueId) if dl then dl:Destroy() end nearbyTimer = 0 downedLabelHidden = false accumulatedDownedTime = 0 lastTickTime = nil timerPaused = true end if isCarried then object:SetAttribute("WasCarried", true) end pcall(function() local currentBaseSize = weldTarget.Size proxyPart.Size = Vector3.new( max(currentBaseSize.X, 2) + 1, max(currentBaseSize.Y, 5) + 1, max(currentBaseSize.Z, 1) + 1 ) end) task.wait(0.5) end if healthConn and healthConn.Connected then healthConn:Disconnect() end cleanupESP(object) end) return end local isVisible = false for _, part in ipairs(object:GetChildren()) do if part:IsA("BasePart") and part.Transparency < 1 then isVisible = true; break end end local targetToAdorn if isVisible then targetToAdorn = object else local internalHitbox = object:FindFirstChild("Hitbox") local nbProxy = InstNew("Part") nbProxy.Name = "ESPHitbox" nbProxy.Shape = Enum.PartType.Block nbProxy.Size = (internalHitbox and internalHitbox:IsA("BasePart")) and internalHitbox.Size or Vector3.new(10, 10, 10) nbProxy.Transparency = 0.99 nbProxy.Material = Enum.Material.ForceField nbProxy.CanCollide = false nbProxy.Massless = true local weld = InstNew("WeldConstraint") weld.Part0, weld.Part1 = nbProxy, root nbProxy.CFrame = root.CFrame weld.Parent, nbProxy.Parent = nbProxy, object targetToAdorn = nbProxy end local highlight = InstNew("Highlight") highlight.Name = "BotHighlight" highlight.Adornee = targetToAdorn highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop highlight.FillColor = Col3RGB(255, 255, 0) highlight.OutlineColor = Col3RGB(255, 255, 255) highlight.FillTransparency = 0.92 highlight.OutlineTransparency = 0 highlight.Parent = object local bgui = InstNew("BillboardGui") bgui.Name = "BotLabels" bgui.Adornee = root bgui.Size = UDim2.new(0, 100, 0, 40) bgui.AlwaysOnTop = true bgui.ZIndexBehavior = Enum.ZIndexBehavior.Global local textLabel = InstNew("TextLabel") textLabel.BackgroundTransparency = 1 textLabel.Size = UDim2.new(1, 0, 1, 0) textLabel.TextColor3 = Col3RGB(255, 255, 0) textLabel.TextStrokeTransparency = 0 textLabel.TextSize = 10 textLabel.Font = Enum.Font.SourceSansBold textLabel.Text = object.Name .. "\n[Checking...]" textLabel.Parent = bgui bgui.Parent = object task.spawn(function() local offScreenIndicator = nil local cam = Workspace.CurrentCamera while not cam and object and object.Parent do cam = Workspace.CurrentCamera if not cam then task.wait(0.1) end end if not cam then return end while object and object.Parent and bgui and bgui.Parent do local char = LocalPlayer.Character local myRoot = char and char:FindFirstChild("HumanoidRootPart") if myRoot then local dist = (myRoot.Position - root.Position).Magnitude local ping = LocalPlayer:GetNetworkPing() local pingBuffer = clamp(ping * BOT_SPEED, 0, 50) local dynamicDanger = 37 + pingBuffer local dynamicWarning = 100 + pingBuffer local currentColor = Col3RGB(255, 255, 0) local currentHighlightColor = Col3RGB(255, 255, 0) local currentOutlineColor = Col3RGB(255, 255, 255) if dist <= dynamicDanger then currentColor = Col3RGB(255, 0, 0) currentHighlightColor = Col3RGB(255, 0, 0) currentOutlineColor = Col3RGB(255, 0, 0) elseif dist <= dynamicWarning then currentColor = Col3RGB(255, 165, 0) currentHighlightColor = Col3RGB(255, 165, 0) currentOutlineColor = Col3RGB(255, 165, 0) end highlight.FillColor = currentHighlightColor highlight.OutlineColor = currentOutlineColor textLabel.TextColor3 = currentColor textLabel.Text = string.format("%s\n[%d studs]", object.Name, floor(dist)) if dist <= dynamicWarning then local viewportSize = cam.ViewportSize local pos, onScreen = cam:WorldToViewportPoint(root.Position) if not onScreen then if not offScreenIndicator then local screenGui = InstNew("ScreenGui") screenGui.Name = "OffScreen_" .. object.Name screenGui.IgnoreGuiInset = true local success = pcall(function() screenGui.Parent = CoreGui end) if not success then local pg = LocalPlayer:FindFirstChild("PlayerGui") or LocalPlayer:WaitForChild("PlayerGui", 5) if pg then screenGui.Parent = pg end end local indicator = InstNew("TextLabel") indicator.Size = UDim2.new(0, 0, 0, 0) indicator.AutomaticSize = Enum.AutomaticSize.XY indicator.BackgroundTransparency = 0.5 indicator.BackgroundColor3 = Col3New(0, 0, 0) indicator.TextSize = 12 indicator.Font = Enum.Font.SourceSansBold indicator.AnchorPoint = Vector2.new(0.5, 0.5) indicator.BorderSizePixel = 0 local padding = InstNew("UIPadding") padding.PaddingLeft = UDim.new(0, 8) padding.PaddingRight = UDim.new(0, 8) padding.PaddingTop = UDim.new(0, 4) padding.PaddingBottom = UDim.new(0, 4) padding.Parent = indicator indicator.Parent = screenGui offScreenIndicator = screenGui end local indicatorLabel = offScreenIndicator:FindFirstChildWhichIsA("TextLabel") if indicatorLabel then indicatorLabel.TextColor3 = currentColor indicatorLabel.Text = string.format("⚠ %s [%dm]", object.Name, floor(dist)) local center = viewportSize / 2 local direction = (Vector2.new(pos.X, pos.Y) - center).Unit if pos.Z < 0 then direction = -direction end local rads = atan2(direction.Y, direction.X) local c, s = cos(rads), sin(rads) local m_x, m_y = (viewportSize.X / 2) - 50, (viewportSize.Y / 2) - 50 local x_val = m_y * (c / abs(s)) local y_val = m_x * (s / abs(c)) local finalPos = abs(x_val) < m_x and (center + Vector2.new(x_val, m_y * (s / abs(s)))) or (center + Vector2.new(m_x * (c / abs(c)), y_val)) indicatorLabel.Position = UDim2.new(0, finalPos.X, 0, finalPos.Y) end elseif offScreenIndicator then offScreenIndicator:Destroy() offScreenIndicator = nil end elseif offScreenIndicator then offScreenIndicator:Destroy() offScreenIndicator = nil end end task.wait(0.03) end if offScreenIndicator then offScreenIndicator:Destroy() end end) end local function setupBot(child) applyFinalHybridESP(child) child:GetAttributeChangedSignal("Team"):Connect(function() applyFinalHybridESP(child) end) end for _, child in ipairs(BotFolder:GetChildren()) do setupBot(child) end BotFolder.ChildAdded:Connect(function(child) task.wait(0.5) setupBot(child) end) BotFolder.ChildRemoved:Connect(function(child) cleanupESP(child) end) setupTicketsESP()