local Players = game:GetService("Players") local RunService = game:GetService("RunService") local LocalPlayer = Players.LocalPlayer local Camera = workspace.CurrentCamera -- Variables local following = false local followConnection = nil local index = 1 local currentTarget = nil local listOpen = false -- Create UI local ScreenGui = Instance.new("ScreenGui") local MainFrame = Instance.new("Frame") local UICorner = Instance.new("UICorner") local Title = Instance.new("TextLabel") local NextBtn = Instance.new("TextButton") local PrevBtn = Instance.new("TextButton") local StopBtn = Instance.new("TextButton") local FollowBtn = Instance.new("TextButton") local ListBtn = Instance.new("TextButton") local MinBtn = Instance.new("TextButton") local TargetName = Instance.new("TextLabel") local PlayerScroll = Instance.new("ScrollingFrame") local ListLayout = Instance.new("UIListLayout") local ListPadding = Instance.new("UIPadding") -- Floating Button (Minimize Feature) local OpenBtn = Instance.new("TextButton") local OpenCorner = Instance.new("UICorner") ScreenGui.Parent = game.CoreGui MainFrame.Name = "SPECTATE_PLAYER_V5_INF6" MainFrame.Parent = ScreenGui MainFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 25) MainFrame.Position = UDim2.new(0.5, -110, 0.5, -90) MainFrame.Size = UDim2.new(0, 220, 0, 185) MainFrame.Active = true MainFrame.Draggable = true UICorner.CornerRadius = UDim.new(0, 10) UICorner.Parent = MainFrame -- Update Title with your specific name Title.Parent = MainFrame Title.Text = " SPECTATE PLAYER V5 INF6" Title.Size = UDim2.new(1, 0, 0, 30) Title.TextColor3 = Color3.new(1, 1, 1) Title.BackgroundColor3 = Color3.fromRGB(40, 40, 40) Title.TextXAlignment = Enum.TextXAlignment.Left local TitleCorner = Instance.new("UICorner") TitleCorner.Parent = Title MinBtn.Parent = MainFrame MinBtn.Text = "_" MinBtn.Size = UDim2.new(0, 30, 0, 30) MinBtn.Position = UDim2.new(1, -30, 0, 0) MinBtn.BackgroundTransparency = 1 MinBtn.TextColor3 = Color3.new(1, 1, 1) MinBtn.TextSize = 20 -- Floating "Open" button logic OpenBtn.Parent = ScreenGui OpenBtn.Size = UDim2.new(0, 60, 0, 30) OpenBtn.Position = UDim2.new(0, 10, 0.5, 0) OpenBtn.BackgroundColor3 = Color3.fromRGB(40, 40, 40) OpenBtn.TextColor3 = Color3.new(1, 1, 1) OpenBtn.Text = "Open" OpenBtn.Visible = false OpenBtn.Active = true OpenBtn.Draggable = true OpenCorner.Parent = OpenBtn TargetName.Parent = MainFrame TargetName.Text = "Status: Idle" TargetName.Position = UDim2.new(0, 0, 0, 35) TargetName.Size = UDim2.new(1, 0, 0, 25) TargetName.TextColor3 = Color3.fromRGB(0, 255, 180) TargetName.BackgroundTransparency = 1 -- Player Scroll with Fixed Scrolling PlayerScroll.Parent = MainFrame PlayerScroll.Size = UDim2.new(0, 210, 0, 200) PlayerScroll.Position = UDim2.new(1, 10, 0, 0) PlayerScroll.BackgroundColor3 = Color3.fromRGB(30, 30, 30) PlayerScroll.Visible = false PlayerScroll.ScrollBarThickness = 6 PlayerScroll.ScrollingEnabled = true PlayerScroll.AutomaticCanvasSize = Enum.AutomaticSize.Y -- Correct Scrolling Fix local ScrollCorner = Instance.new("UICorner") ScrollCorner.Parent = PlayerScroll ListLayout.Parent = PlayerScroll ListLayout.Padding = UDim.new(0, 5) ListLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center ListPadding.Parent = PlayerScroll ListPadding.PaddingTop = UDim.new(0, 5) ListPadding.PaddingBottom = UDim.new(0, 5) local function styleButton(btn, pos, text, color) btn.Parent = MainFrame btn.Size = UDim2.new(0, 65, 0, 30) btn.Position = pos btn.Text = text btn.BackgroundColor3 = color or Color3.fromRGB(55, 55, 55) btn.TextColor3 = Color3.new(1, 1, 1) btn.BorderSizePixel = 0 local btnCorner = Instance.new("UICorner") btnCorner.CornerRadius = UDim.new(0, 6) btnCorner.Parent = btn end styleButton(PrevBtn, UDim2.new(0, 5, 0, 65), "Prev") styleButton(StopBtn, UDim2.new(0, 75, 0, 65), "Reset") styleButton(NextBtn, UDim2.new(0, 145, 0, 65), "Next") styleButton(ListBtn, UDim2.new(0, 5, 0, 105), "Toggle Player List", Color3.fromRGB(45, 65, 95)) ListBtn.Size = UDim2.new(0, 210, 0, 30) styleButton(FollowBtn, UDim2.new(0, 5, 0, 145), "Follow Player", Color3.fromRGB(40, 90, 40)) FollowBtn.Size = UDim2.new(0, 210, 0, 35) --- Logic Functions --- local function stopFollowing() following = false FollowBtn.Text = "Follow Player" FollowBtn.BackgroundColor3 = Color3.fromRGB(40, 90, 40) if followConnection then followConnection:Disconnect() followConnection = nil end end local function selectPlayer(p) if p and p.Character and p.Character:FindFirstChild("Humanoid") then currentTarget = p Camera.CameraSubject = p.Character.Humanoid TargetName.Text = "Viewing: " .. p.Name stopFollowing() end end MinBtn.MouseButton1Click:Connect(function() MainFrame.Visible = false OpenBtn.Visible = true end) OpenBtn.MouseButton1Click:Connect(function() MainFrame.Visible = true OpenBtn.Visible = false end) local function refreshList() for _, child in pairs(PlayerScroll:GetChildren()) do if child:IsA("Frame") then child:Destroy() end end for _, p in pairs(Players:GetPlayers()) do if p ~= LocalPlayer then local pFrame = Instance.new("Frame") pFrame.Size = UDim2.new(0, 195, 0, 45) pFrame.BackgroundColor3 = Color3.fromRGB(45, 45, 45) pFrame.Parent = PlayerScroll local fCorner = Instance.new("UICorner") fCorner.Parent = pFrame local pImg = Instance.new("ImageLabel") pImg.Size = UDim2.new(0, 35, 0, 35) pImg.Position = UDim2.new(0, 5, 0, 5) pImg.BackgroundTransparency = 1 pImg.Parent = pFrame local iCorner = Instance.new("UICorner") iCorner.CornerRadius = UDim.new(1, 0) iCorner.Parent = pImg task.spawn(function() pImg.Image = Players:GetUserThumbnailAsync(p.UserId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size48x48) end) local pBtn = Instance.new("TextButton") pBtn.Size = UDim2.new(1, -50, 1, 0) pBtn.Position = UDim2.new(0, 50, 0, 0) pBtn.Text = p.Name pBtn.BackgroundTransparency = 1 pBtn.TextColor3 = Color3.new(1, 1, 1) pBtn.TextXAlignment = Enum.TextXAlignment.Left pBtn.Parent = pFrame pBtn.MouseButton1Click:Connect(function() selectPlayer(p) PlayerScroll.Visible = false listOpen = false end) end end end ListBtn.MouseButton1Click:Connect(function() listOpen = not listOpen PlayerScroll.Visible = listOpen if listOpen then refreshList() end end) NextBtn.MouseButton1Click:Connect(function() local plrs = {} for _, p in pairs(Players:GetPlayers()) do if p ~= LocalPlayer then table.insert(plrs, p) end end if #plrs == 0 then return end index = (index % #plrs) + 1 selectPlayer(plrs[index]) end) PrevBtn.MouseButton1Click:Connect(function() local plrs = {} for _, p in pairs(Players:GetPlayers()) do if p ~= LocalPlayer then table.insert(plrs, p) end end if #plrs == 0 then return end index = (index - 2) % #plrs + 1 selectPlayer(plrs[index]) end) StopBtn.MouseButton1Click:Connect(function() stopFollowing() currentTarget = nil Camera.CameraSubject = LocalPlayer.Character:FindFirstChild("Humanoid") or LocalPlayer.Character TargetName.Text = "Status: Idle" end) FollowBtn.MouseButton1Click:Connect(function() if following then stopFollowing() else if currentTarget and currentTarget.Character then following = true FollowBtn.Text = "Following..." FollowBtn.BackgroundColor3 = Color3.fromRGB(20, 120, 20) followConnection = RunService.Heartbeat:Connect(function() if following and currentTarget and currentTarget.Character then local myChar = LocalPlayer.Character local targetChar = currentTarget.Character if myChar and targetChar:FindFirstChild("HumanoidRootPart") then myChar.Humanoid:MoveTo(targetChar.HumanoidRootPart.Position - (targetChar.HumanoidRootPart.CFrame.LookVector * 5)) if targetChar.Humanoid.Jump then myChar.Humanoid.Jump = true end end else stopFollowing() end end) end end end)