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"