[open source] simple ESP script summer event update
Key Required

[open source] simple ESP script summer event update

Evade skeeplskeepl 812 views 979 executesUpdated Aug 20, 2026
Unrated
00
Lua Script•630 lines (21216 chars)
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()

Features & Information

Features: - Nextbot ESP - Player ESP - Downed player ESP (with timer) - Bubbles ESP
#Open source

Community Comments (0)

No comments yet for this script.

More Scripts for Evade