Run it
Copy the script and paste it into your executor.
Players = :()
LocalPlayer = Players.LocalPlayer
Camera = .CurrentCamera
RunService = :()
UIS = :()
TweenService = :()
screenGui = .()
screenGui.ResetOnSpawn =
screenGui.ZIndexBehavior = .ZIndexBehavior.Sibling
screenGui.Parent = LocalPlayer:()
mainFrame = .()
mainFrame.Size = .(, , , )
mainFrame.Position = .(, -, , -)
mainFrame.BackgroundColor3 = .(, , )
mainFrame.BackgroundTransparency =
mainFrame.BorderSizePixel =
mainFrame.Parent = screenGui
mainCorner = .()
mainCorner.CornerRadius = .(, )
mainCorner.Parent = mainFrame
borderFrame = .()
borderFrame.Size = .(, , , )
borderFrame.Position = .(, -, , -)
borderFrame.BackgroundColor3 = .(, , )
borderFrame.BackgroundTransparency =
borderFrame.BorderSizePixel =
borderFrame.ZIndex =
borderFrame.Parent = mainFrame
borderCorner = .()
borderCorner.CornerRadius = .(, )
borderCorner.Parent = borderFrame
gradient = .()
gradient.Color = ColorSequence.{
ColorSequenceKeypoint.(, .(, , )),
ColorSequenceKeypoint.(, .(, , ))
}
gradient.Rotation =
gradient.Transparency = NumberSequence.{
NumberSequenceKeypoint.(, ),
NumberSequenceKeypoint.(, )
}
gradient.Parent = mainFrame
titleBar = .()
titleBar.Size = .(, , , )
titleBar.BackgroundTransparency =
titleBar.Parent = mainFrame
titleText = .()
titleText.Size = .(, -, , )
titleText.Position = .(, , , )
titleText.BackgroundTransparency =
titleText.Text =
titleText.Font = .Font.GothamBold
titleText.TextSize =
titleText.TextColor3 = .(, , )
titleText.TextXAlignment = .TextXAlignment.Left
titleText.TextStrokeTransparency =
titleText.Parent = titleBar
playerCount = .()
playerCount.Size = .(, , , )
playerCount.Position = .(, -, , )
playerCount.BackgroundTransparency =
playerCount.Text =
playerCount.Font = .Font.Gotham
playerCount.TextSize =
playerCount.TextColor3 = .(, , )
playerCount.Parent = titleBar
statusDot = .()
statusDot.Size = .(, , , )
statusDot.Position = .(, -, , )
statusDot.BackgroundColor3 = .(, , )
statusDot.BorderSizePixel =
statusDot.Parent = titleBar
dotCorner = .()
dotCorner.CornerRadius = .(, )
dotCorner.Parent = statusDot
dragging =
dragStart, startPos
titleBar.InputBegan:((input)
input.UserInputType == .UserInputType.MouseButton1
dragging =
dragStart = input.Position
startPos = mainFrame.Position
)
titleBar.InputChanged:((input)
input.UserInputType == .UserInputType.MouseMovement dragging
delta = input.Position - dragStart
mainFrame.Position = .(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
)
UIS.InputEnded:((input)
input.UserInputType == .UserInputType.MouseButton1
dragging =
)
contentFrame = .()
contentFrame.Size = .(, -, , -)
contentFrame.Position = .(, , , )
contentFrame.BackgroundTransparency =
contentFrame.Parent = mainFrame
searchContainer = .()
searchContainer.Size = .(, , , )
searchContainer.BackgroundColor3 = .(, , )
searchContainer.BackgroundTransparency =
searchContainer.BorderSizePixel =
searchContainer.Parent = contentFrame
searchCorner = .()
searchCorner.CornerRadius = .(, )
searchCorner.Parent = searchContainer
searchStroke = .()
searchStroke.Color = .(, , )
searchStroke.Thickness =
searchStroke.Transparency =
searchStroke.Parent = searchContainer
searchIcon = .()
searchIcon.Size = .(, , , )
searchIcon.BackgroundTransparency =
searchIcon.Text =
searchIcon.TextSize =
searchIcon.TextTransparency =
searchIcon.Parent = searchContainer
searchBox = .()
searchBox.PlaceholderText =
searchBox.Size = .(, -, , )
searchBox.Position = .(, , , )
searchBox.BackgroundTransparency =
searchBox.TextColor3 = .(, , )
searchBox.PlaceholderColor3 = .(, , )
searchBox.Font = .Font.Gotham
searchBox.TextSize =
searchBox.TextXAlignment = .TextXAlignment.Left
searchBox.ClearTextOnFocus =
searchBox.Parent = searchContainer
playerListContainer = .()
playerListContainer.Size = .(, , , -)
playerListContainer.Position = .(, , , )
playerListContainer.BackgroundColor3 = .(, , )
playerListContainer.BackgroundTransparency =
playerListContainer.BorderSizePixel =
playerListContainer.Parent = contentFrame
listCorner = .()
listCorner.CornerRadius = .(, )
listCorner.Parent = playerListContainer
listStroke = .()
listStroke.Color = .(, , )
listStroke.Thickness =
listStroke.Transparency =
listStroke.Parent = playerListContainer
playerList = .()
playerList.Size = .(, -, , -)
playerList.Position = .(, , , )
playerList.BackgroundTransparency =
playerList.BorderSizePixel =
playerList.ScrollBarThickness =
playerList.ScrollBarImageColor3 = .(, , )
playerList.CanvasSize = .(, , , )
playerList.Parent = playerListContainer
listLayout = .()
listLayout.SortOrder = .SortOrder.Name
listLayout.Padding = .(, )
listLayout.Parent = playerList
listLayout:():(()
playerList.CanvasSize = .(, , , listLayout.AbsoluteContentSize.Y + )
)
stopButton = .()
stopButton.Size = .(, , , )
stopButton.Position = .(, , , -)
stopButton.BackgroundColor3 = .(, , )
stopButton.BorderSizePixel =
stopButton.AutoButtonColor =
stopButton.TextColor3 = .(, , )
stopButton.Font = .Font.GothamBold
stopButton.TextSize =
stopButton.Text =
stopButton.Parent = contentFrame
stopCorner = .()
stopCorner.CornerRadius = .(, )
stopCorner.Parent = stopButton
stopGlow = .()
stopGlow.Color = .(, , )
stopGlow.Thickness =
stopGlow.Transparency =
stopGlow.Parent = stopButton
stopButton.MouseEnter:(()
TweenService:(stopButton, TweenInfo.(), {BackgroundColor3 = .(, , )}):()
TweenService:(stopGlow, TweenInfo.(), {Thickness = }):()
)
stopButton.MouseLeave:(()
TweenService:(stopButton, TweenInfo.(), {BackgroundColor3 = .(, , )}):()
TweenService:(stopGlow, TweenInfo.(), {Thickness = }):()
)
spectating =
spectateLoop =
guiVisible =
playerButtons = {}
(isSpectating)
isSpectating
TweenService:(statusDot, TweenInfo.(), {BackgroundColor3 = .(, , )}):()
TweenService:(statusDot, TweenInfo.(), {BackgroundColor3 = .(, , )}):()
()
spectating =
spectateLoop
spectateLoop:()
spectateLoop =
()
_, btnData (playerButtons)
btnData.button
TweenService:(btnData.button, TweenInfo.(), {
BackgroundColor3 = .(, , )
}):()
TweenService:(btnData.stroke, TweenInfo.(), {
Transparency =
}):()
(()
LocalPlayer.Character LocalPlayer.Character:()
Camera.CameraSubject = LocalPlayer.Character.Humanoid
)
(player)
player == LocalPlayer player
()
spectating = player
()
playerButtons[player.UserId]
TweenService:(playerButtons[player.UserId].button, TweenInfo.(), {
BackgroundColor3 = .(, , )
}):()
TweenService:(playerButtons[player.UserId].stroke, TweenInfo.(), {
Transparency =
}):()
spectateLoop = RunService.Heartbeat:(()
spectating spectating.Parent
()
character = spectating.Character
character character.Parent
humanoid = character:()
humanoid humanoid.Health >
(()
Camera.CameraSubject = humanoid
)
()
)
playerRemoving
playerRemoving = Players.PlayerRemoving:((p)
p == spectating
()
playerRemoving
playerRemoving:()
)
(player)
button = .()
button.Name = player.Name
button.Size = .(, -, , )
button.BackgroundColor3 = .(, , )
button.BackgroundTransparency =
button.BorderSizePixel =
button.AutoButtonColor =
button.Text =
button.Parent = playerList
btnCorner = .()
btnCorner.CornerRadius = .(, )
btnCorner.Parent = button
stroke = .()
stroke.Color = .(, , )
stroke.Thickness =
stroke.Transparency =
stroke.Parent = button
nameLabel = .()
nameLabel.Size = .(, -, , )
nameLabel.Position = .(, , , )
nameLabel.BackgroundTransparency =
nameLabel.Text = player.Name
nameLabel.Font = .Font.GothamMedium
nameLabel.TextSize =
nameLabel.TextColor3 = .(, , )
nameLabel.TextXAlignment = .TextXAlignment.Left
nameLabel.TextTruncate = .TextTruncate.AtEnd
nameLabel.Parent = button
onlineDot = .()
onlineDot.Size = .(, , , )
onlineDot.Position = .(, -, , -)
onlineDot.BackgroundColor3 = .(, , )
onlineDot.BorderSizePixel =
onlineDot.Parent = button
onlineCorner = .()
onlineCorner.CornerRadius = .(, )
onlineCorner.Parent = onlineDot
playerButtons[player.UserId] = {
button = button,
stroke = stroke,
player = player
}
button.MouseEnter:(()
spectating ~= player
TweenService:(button, TweenInfo.(),
{BackgroundColor3 = .(, , ), BackgroundTransparency = }):()
)
button.MouseLeave:(()
spectating ~= player
TweenService:(button, TweenInfo.(),
{BackgroundColor3 = .(, , ), BackgroundTransparency = }):()
)
button.MouseButton1Click:(()
(player)
)
button
(player)
playerButtons[player.UserId]
playerButtons[player.UserId].button
playerButtons[player.UserId].button:()
playerButtons[player.UserId] =
spectating == player
()
()
count = #Players:() -
playerCount.Text = count .. .. (count ~= )
searchBox:():(()
searchText = searchBox.Text:()
_, btnData (playerButtons)
btnData.button
searchText == btnData.player.Name:():(searchText, , )
btnData.button.Visible =
btnData.button.Visible =
)
searchBox.Focused:(()
TweenService:(searchStroke, TweenInfo.(),
{Color = .(, , ), Transparency = , Thickness = }):()
)
searchBox.FocusLost:(()
TweenService:(searchStroke, TweenInfo.(),
{Color = .(, , ), Transparency = , Thickness = }):()
)
stopButton.MouseButton1Click:(()
()
)
Players.PlayerAdded:((player)
.()
player ~= LocalPlayer
(player)
()
)
Players.PlayerRemoving:((player)
(player)
()
)
UIS.InputBegan:((input, gameProcessed)
gameProcessed input.KeyCode == .KeyCode.P
guiVisible = guiVisible
guiVisible
mainFrame.Visible =
TweenService:(mainFrame, TweenInfo.(, .EasingStyle.Back, .EasingDirection.Out),
{Size = .(, , , )}):()
TweenService:(mainFrame, TweenInfo.(, .EasingStyle.Back, .EasingDirection.In),
{Size = .(, , , )}):()
.()
mainFrame.Visible =
)
_, player (Players:())
player ~= LocalPlayer
(player)
()
mainFrame.Size = .(, , , )
.()
TweenService:(mainFrame, TweenInfo.(, .EasingStyle.Back, .EasingDirection.Out),
{Size = .(, , , )}):()
screenGui.Destroying:(()
()
_, btnData (playerButtons)
btnData.button
btnData.button:()
playerButtons = {}
)
Universal