Nest And Worms TP
Key Required

Nest And Worms TP

Bird Game 3 [UPDATE]creedalameencreedalameen 1.3K views 38 executesUpdated Dec 4, 2025
5.0/ 5(1 votes)
10100% Positive
Lua Script•504 lines (15818 chars)
local Player = game:GetService("Players").LocalPlayer
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")

local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "DualTeleporter"
ScreenGui.ResetOnSpawn = false
ScreenGui.Parent = Player:WaitForChild("PlayerGui")

local MainContainer = Instance.new("Frame")
MainContainer.Name = "MainContainer"
MainContainer.Size = UDim2.new(0, 620, 0, 450)
MainContainer.Position = UDim2.new(0, 50, 0, 50)
MainContainer.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
MainContainer.BorderSizePixel = 2
MainContainer.BorderColor3 = Color3.fromRGB(80, 80, 80)
MainContainer.Active = true
MainContainer.Draggable = true
MainContainer.Parent = ScreenGui

local TitleBar = Instance.new("Frame")
TitleBar.Name = "TitleBar"
TitleBar.Size = UDim2.new(1, 0, 0, 35)
TitleBar.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
TitleBar.BorderSizePixel = 0
TitleBar.Parent = MainContainer

local Title = Instance.new("TextLabel")
Title.Name = "Title"
Title.Size = UDim2.new(1, -10, 1, 0)
Title.Position = UDim2.new(0, 10, 0, 0)
Title.BackgroundTransparency = 1
Title.Text = "Dual Teleporter"
Title.TextColor3 = Color3.fromRGB(255, 255, 255)
Title.Font = Enum.Font.GothamBold
Title.TextSize = 18
Title.TextXAlignment = Enum.TextXAlignment.Left
Title.Parent = TitleBar

local CloseButton = Instance.new("TextButton")
CloseButton.Name = "CloseButton"
CloseButton.Size = UDim2.new(0, 35, 0, 35)
CloseButton.Position = UDim2.new(1, -35, 0, 0)
CloseButton.BackgroundColor3 = Color3.fromRGB(200, 50, 50)
CloseButton.BorderSizePixel = 0
CloseButton.Text = "X"
CloseButton.TextColor3 = Color3.fromRGB(255, 255, 255)
CloseButton.Font = Enum.Font.GothamBold
CloseButton.TextSize = 16
CloseButton.Parent = TitleBar

CloseButton.MouseButton1Click:Connect(function()
	ScreenGui:Destroy()
end)

local ContentFrame = Instance.new("Frame")
ContentFrame.Name = "ContentFrame"
ContentFrame.Size = UDim2.new(1, -10, 1, -45)
ContentFrame.Position = UDim2.new(0, 5, 0, 40)
ContentFrame.BackgroundTransparency = 1
ContentFrame.Parent = MainContainer

local NestsPanel = Instance.new("Frame")
NestsPanel.Name = "NestsPanel"
NestsPanel.Size = UDim2.new(0.49, -5, 1, 0)
NestsPanel.Position = UDim2.new(0, 0, 0, 0)
NestsPanel.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
NestsPanel.BorderSizePixel = 2
NestsPanel.BorderColor3 = Color3.fromRGB(60, 120, 180)
NestsPanel.Parent = ContentFrame

local NestsTitle = Instance.new("TextLabel")
NestsTitle.Name = "NestsTitle"
NestsTitle.Size = UDim2.new(1, 0, 0, 30)
NestsTitle.Position = UDim2.new(0, 0, 0, 0)
NestsTitle.BackgroundColor3 = Color3.fromRGB(60, 120, 180)
NestsTitle.BorderSizePixel = 0
NestsTitle.Text = "Nests (0)"
NestsTitle.TextColor3 = Color3.fromRGB(255, 255, 255)
NestsTitle.Font = Enum.Font.GothamBold
NestsTitle.TextSize = 16
NestsTitle.Parent = NestsPanel

local WormsPanel = Instance.new("Frame")
WormsPanel.Name = "WormsPanel"
WormsPanel.Size = UDim2.new(0.49, -5, 1, 0)
WormsPanel.Position = UDim2.new(0.51, 0, 0, 0)
WormsPanel.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
WormsPanel.BorderSizePixel = 2
WormsPanel.BorderColor3 = Color3.fromRGB(180, 80, 60)
WormsPanel.Parent = ContentFrame

local WormsTitle = Instance.new("TextLabel")
WormsTitle.Name = "WormsTitle"
WormsTitle.Size = UDim2.new(1, 0, 0, 30)
WormsTitle.Position = UDim2.new(0, 0, 0, 0)
WormsTitle.BackgroundColor3 = Color3.fromRGB(180, 80, 60)
WormsTitle.BorderSizePixel = 0
WormsTitle.Text = "Worms (0)"
WormsTitle.TextColor3 = Color3.fromRGB(255, 255, 255)
WormsTitle.Font = Enum.Font.GothamBold
WormsTitle.TextSize = 16
WormsTitle.Parent = WormsPanel

local function createScrollFrame(parent, offset)
	local ScrollFrame = Instance.new("ScrollingFrame")
	ScrollFrame.Name = "ScrollFrame"
	ScrollFrame.Size = UDim2.new(1, -10, 1, -(offset + 5))
	ScrollFrame.Position = UDim2.new(0, 5, 0, offset)
	ScrollFrame.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
	ScrollFrame.BorderSizePixel = 0
	ScrollFrame.ScrollBarThickness = 8
	ScrollFrame.CanvasSize = UDim2.new(0, 0, 0, 0)
	ScrollFrame.AutomaticCanvasSize = Enum.AutomaticSize.Y
	ScrollFrame.Parent = parent
	
	local UIListLayout = Instance.new("UIListLayout")
	UIListLayout.Padding = UDim.new(0, 5)
	UIListLayout.Parent = ScrollFrame
	
	UIListLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
		ScrollFrame.CanvasSize = UDim2.new(0, 0, 0, UIListLayout.AbsoluteContentSize.Y + 10)
	end)
	
	return ScrollFrame, UIListLayout
end

local NestsScrollFrame, NestsListLayout = createScrollFrame(NestsPanel, 35)
local WormsScrollFrame, WormsListLayout = createScrollFrame(WormsPanel, 35)

local function teleportToTarget(target)
	local character = Player.Character
	if character then
		local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
		if humanoidRootPart then
			local targetCFrame
			
			if target:IsA("BasePart") then
				targetCFrame = target.CFrame + Vector3.new(0, 5, 0)
			elseif target:IsA("Model") then
				local primaryPart = target.PrimaryPart
				if primaryPart then
					targetCFrame = primaryPart.CFrame + Vector3.new(0, 5, 0)
				else
					local torso = target:FindFirstChild("Torso") or target:FindFirstChild("HumanoidRootPart")
					if torso then
						targetCFrame = torso.CFrame + Vector3.new(0, 5, 0)
					else
						for _, part in pairs(target:GetChildren()) do
							if part:IsA("BasePart") then
								targetCFrame = part.CFrame + Vector3.new(0, 5, 0)
								break
							end
						end
					end
				end
			end
			
			if targetCFrame then
				humanoidRootPart.CFrame = targetCFrame
				return true
			end
		end
	end
	return false
end

local function createTeleporterButton(parent, target, buttonColor)
	local Button = Instance.new("TextButton")
	Button.Name = "TeleportButton_" .. target.Name
	Button.Size = UDim2.new(1, -10, 0, 40)
	Button.BackgroundColor3 = buttonColor
	Button.BorderSizePixel = 0
	Button.Text = target.Name
	Button.TextColor3 = Color3.fromRGB(255, 255, 255)
	Button.Font = Enum.Font.Gotham
	Button.TextSize = 14
	Button.Parent = parent
	
	Button.MouseButton1Click:Connect(function()
		if target and target.Parent then
			local success = teleportToTarget(target)
			if success then
				local originalColor = Button.BackgroundColor3
				Button.BackgroundColor3 = Color3.fromRGB(80, 200, 80)
				task.wait(0.3)
				Button.BackgroundColor3 = originalColor
			end
		else
			Button.Text = target.Name .. " (Removed)"
			Button.BackgroundColor3 = Color3.fromRGB(100, 50, 50)
			Button.AutoButtonColor = false
		end
	end)
	
	Button.MouseEnter:Connect(function()
		if target and target.Parent then
			local r, g, b = buttonColor.R * 255, buttonColor.G * 255, buttonColor.B * 255
			Button.BackgroundColor3 = Color3.fromRGB(
				math.min(r + 30, 255),
				math.min(g + 30, 255),
				math.min(b + 30, 255)
			) / 255
		end
	end)
	
	Button.MouseLeave:Connect(function()
		if target and target.Parent then
			Button.BackgroundColor3 = buttonColor
		end
	end)
	
	return Button
end

local folderWatchers = {
	Nests = {
		folder = nil,
		panel = NestsPanel,
		scrollFrame = NestsScrollFrame,
		title = NestsTitle,
		buttonColor = Color3.fromRGB(70, 130, 200),
		buttons = {},
		connections = {}
	},
	Worms = {
		folder = nil,
		panel = WormsPanel,
		scrollFrame = WormsScrollFrame,
		title = WormsTitle,
		buttonColor = Color3.fromRGB(200, 100, 80),
		buttons = {},
		connections = {}
	}
}

local function findFolders()
	local wormsFolder = Workspace:FindFirstChild("Enemies") or 
					   Workspace:FindFirstChild("Worms") or
					   Workspace:FindFirstChild("enemies") or
					   Workspace:FindFirstChild("worms")
	
	folderWatchers.Nests.folder = Workspace:FindFirstChild("Nests") or Workspace:FindFirstChild("nests")
	folderWatchers.Worms.folder = wormsFolder
	
	return folderWatchers.Nests.folder or folderWatchers.Worms.folder
end

local function clearPanel(panelData)
	for _, button in pairs(panelData.buttons) do
		if button and button.Parent then
			button:Destroy()
		end
	end
	panelData.buttons = {}
	
	for _, conn in pairs(panelData.connections) do
		conn:Disconnect()
	end
	panelData.connections = {}
end

local function refreshPanel(panelData)
	clearPanel(panelData)
	
	if not panelData.folder or not panelData.folder.Parent then
		panelData.title.Text = panelData.title.Name .. " (Folder Missing)"
		panelData.panel.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
		return 0
	end
	
	panelData.panel.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
	
	local count = 0
	for _, item in pairs(panelData.folder:GetChildren()) do
		if item:IsA("Model") or item:IsA("BasePart") then
			count = count + 1
			panelData.buttons[item] = createTeleporterButton(panelData.scrollFrame, item, panelData.buttonColor)
		end
	end
	
	panelData.title.Text = panelData.title.Name .. " (" .. count .. ")"
	
	if panelData.folder then
		table.insert(panelData.connections, panelData.folder.ChildAdded:Connect(function()
			refreshPanel(panelData)
		end))
		
		table.insert(panelData.connections, panelData.folder.ChildRemoved:Connect(function()
			refreshPanel(panelData)
		end))
	end
	
	return count
end

local function refreshAllPanels()
	local nestsCount = 0
	local wormsCount = 0
	
	findFolders()
	
	nestsCount = refreshPanel(folderWatchers.Nests)
	wormsCount = refreshPanel(folderWatchers.Worms)
	
	Title.Text = "Dual Teleporter (Nests: " .. nestsCount .. " | Worms: " .. wormsCount .. ")"
	
	return nestsCount + wormsCount
end

local ControlPanel = Instance.new("Frame")
ControlPanel.Name = "ControlPanel"
ControlPanel.Size = UDim2.new(1, -10, 0, 50)
ControlPanel.Position = UDim2.new(0, 5, 1, -55)
ControlPanel.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
ControlPanel.BorderSizePixel = 1
ControlPanel.BorderColor3 = Color3.fromRGB(70, 70, 70)
ControlPanel.Parent = ContentFrame

local SearchButton = Instance.new("TextButton")
SearchButton.Name = "SearchButton"
SearchButton.Size = UDim2.new(0.3, -5, 0, 25)
SearchButton.Position = UDim2.new(0, 5, 0, 5)
SearchButton.BackgroundColor3 = Color3.fromRGB(80, 120, 200)
SearchButton.BorderSizePixel = 0
SearchButton.Text = "Find Folders"
SearchButton.TextColor3 = Color3.fromRGB(255, 255, 255)
SearchButton.Font = Enum.Font.Gotham
SearchButton.TextSize = 12
SearchButton.Parent = ControlPanel

local ManualRefreshButton = Instance.new("TextButton")
ManualRefreshButton.Name = "ManualRefresh"
ManualRefreshButton.Size = UDim2.new(0.3, -5, 0, 25)
ManualRefreshButton.Position = UDim2.new(0.33, 5, 0, 5)
ManualRefreshButton.BackgroundColor3 = Color3.fromRGB(80, 80, 150)
ManualRefreshButton.BorderSizePixel = 0
ManualRefreshButton.Text = "Refresh Now"
ManualRefreshButton.TextColor3 = Color3.fromRGB(255, 255, 255)
ManualRefreshButton.Font = Enum.Font.Gotham
ManualRefreshButton.TextSize = 12
ManualRefreshButton.Parent = ControlPanel

local ToggleGUIButton = Instance.new("TextButton")
ToggleGUIButton.Name = "ToggleGUI"
ToggleGUIButton.Size = UDim2.new(0.3, -5, 0, 25)
ToggleGUIButton.Position = UDim2.new(0.67, 0, 0, 5)
ToggleGUIButton.BackgroundColor3 = Color3.fromRGB(120, 80, 150)
ToggleGUIButton.BorderSizePixel = 0
ToggleGUIButton.Text = "Hide GUI (T)"
ToggleGUIButton.TextColor3 = Color3.fromRGB(255, 255, 255)
ToggleGUIButton.Font = Enum.Font.Gotham
ToggleGUIButton.TextSize = 12
ToggleGUIButton.Parent = ControlPanel

local StatusLabel = Instance.new("TextLabel")
StatusLabel.Name = "StatusLabel"
StatusLabel.Size = UDim2.new(1, -10, 0, 15)
StatusLabel.Position = UDim2.new(0, 5, 0.6, 0)
StatusLabel.BackgroundTransparency = 1
StatusLabel.Text = "Click 'Find Folders' to start"
StatusLabel.TextColor3 = Color3.fromRGB(180, 180, 180)
StatusLabel.Font = Enum.Font.Gotham
StatusLabel.TextSize = 11
StatusLabel.TextXAlignment = Enum.TextXAlignment.Center
StatusLabel.Parent = ControlPanel

SearchButton.MouseButton1Click:Connect(function()
	StatusLabel.Text = "Searching for folders..."
	SearchButton.BackgroundColor3 = Color3.fromRGB(100, 140, 220)
	
	local totalItems = refreshAllPanels()
	
	if totalItems > 0 then
		StatusLabel.Text = "Found " .. totalItems .. " items"
	else
		StatusLabel.Text = "No items found. Check folder names."
	end
	
	task.wait(0.3)
	SearchButton.BackgroundColor3 = Color3.fromRGB(80, 120, 200)
end)

ManualRefreshButton.MouseButton1Click:Connect(function()
	StatusLabel.Text = "Refreshing..."
	ManualRefreshButton.BackgroundColor3 = Color3.fromRGB(100, 100, 180)
	
	local totalItems = refreshAllPanels()
	StatusLabel.Text = "Refreshed: " .. totalItems .. " items"
	
	task.wait(0.3)
	ManualRefreshButton.BackgroundColor3 = Color3.fromRGB(80, 80, 150)
end)

local guiVisible = true
ToggleGUIButton.MouseButton1Click:Connect(function()
	guiVisible = not guiVisible
	MainContainer.Visible = guiVisible
	ToggleGUIButton.Text = guiVisible and "Hide GUI (T)" or "Show GUI (T)"
end)

local autoRefreshEnabled = false
local refreshConnection
local lastRefreshTime = 0
local REFRESH_INTERVAL = 1.0

local function startAutoRefresh()
	if refreshConnection then
		refreshConnection:Disconnect()
	end
	
	autoRefreshEnabled = true
	refreshConnection = RunService.Heartbeat:Connect(function()
		local currentTime = tick()
		if currentTime - lastRefreshTime >= REFRESH_INTERVAL then
			lastRefreshTime = currentTime
			refreshAllPanels()
			StatusLabel.Text = "Auto-refresh: " .. os.date("%X")
		end
	end)
end

local AutoRefreshButton = Instance.new("TextButton")
AutoRefreshButton.Name = "AutoRefresh"
AutoRefreshButton.Size = UDim2.new(0.48, -5, 0, 20)
AutoRefreshButton.Position = UDim2.new(0, 5, 1, -25)
AutoRefreshButton.BackgroundColor3 = Color3.fromRGB(60, 100, 60)
AutoRefreshButton.BorderSizePixel = 0
AutoRefreshButton.Text = "Auto Refresh: OFF"
AutoRefreshButton.TextColor3 = Color3.fromRGB(255, 255, 255)
AutoRefreshButton.Font = Enum.Font.Gotham
AutoRefreshButton.TextSize = 11
AutoRefreshButton.Parent = MainContainer

AutoRefreshButton.MouseButton1Click:Connect(function()
	autoRefreshEnabled = not autoRefreshEnabled
	
	if autoRefreshEnabled then
		AutoRefreshButton.BackgroundColor3 = Color3.fromRGB(60, 120, 60)
		AutoRefreshButton.Text = "Auto Refresh: ON"
		startAutoRefresh()
	else
		AutoRefreshButton.BackgroundColor3 = Color3.fromRGB(120, 60, 60)
		AutoRefreshButton.Text = "Auto Refresh: OFF"
		if refreshConnection then
			refreshConnection:Disconnect()
			refreshConnection = nil
		end
		StatusLabel.Text = "Auto-refresh disabled"
	end
end)

local UserInputService = game:GetService("UserInputService")
local dragging
local dragInput
local dragStart
local startPos

local function update(input)
	local delta = input.Position - dragStart
	MainContainer.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end

MainContainer.InputBegan:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
		dragging = true
		dragStart = input.Position
		startPos = MainContainer.Position
		
		input.Changed:Connect(function()
			if input.UserInputState == Enum.UserInputState.End then
				dragging = false
			end
		end)
	end
end)

MainContainer.InputChanged:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
		dragInput = input
	end
end)

UserInputService.InputChanged:Connect(function(input)
	if input == dragInput and dragging then
		update(input)
	end
end)

UserInputService.InputBegan:Connect(function(input, gameProcessed)
	if not gameProcessed and input.KeyCode == Enum.KeyCode.T then
		guiVisible = not guiVisible
		MainContainer.Visible = guiVisible
		ToggleGUIButton.Text = guiVisible and "Hide GUI (T)" or "Show GUI (T)"
	end
end)

ScreenGui.Destroying:Connect(function()
	if refreshConnection then
		refreshConnection:Disconnect()
	end
end)

StatusLabel.Text = "Click 'Find Folders' to search for Nests and Worms"

Features & Information

Searches For Nests In "game:GetService("Workspace").Nests" Searches For Worms In "game:GetService("Workspace").Enemies" Execute The Script And Click "Find Folders"

Community Comments (1)

*sry*sryDec 4, 2025

Don’t work

More Scripts for Bird Game 3 [UPDATE]