Run it
Copy the script and paste it into your executor.
Players = :()
UserInputService = :()
TextService = :()
TextChatService = :()
TweenService = :()
RunService = :()
HttpService = :()
ReplicatedStorage = :()
Debris = :()
GuiService = :()
GlobalENV = ()
Typeof =
GUI_TITLE =
GUI_WIDTH =
GUI_HEIGHT =
TOPBAR_HEIGHT =
TOOLBAR_HEIGHT =
screenGui = .()
screenGui.Name =
screenGui.Parent = Players.LocalPlayer:()
screenGui.ZIndexBehavior = .ZIndexBehavior.Global
screenGui.ResetOnSpawn =
mainFrame = .()
mainFrame.Name =
mainFrame.Parent = screenGui
mainFrame.Size = .(, GUI_WIDTH, , GUI_HEIGHT)
mainFrame.Position = .(, -GUI_WIDTH / , , -GUI_HEIGHT / )
mainFrame.BackgroundColor3 = .(, , )
mainFrame.BorderColor3 = .(, , )
mainFrame.BorderSizePixel =
mainFrame.Active =
mainFrame.Draggable =
mainFrame.ClipsDescendants =
topBar = .()
topBar.Name =
topBar.Parent = mainFrame
topBar.Size = .(, , , TOPBAR_HEIGHT)
topBar.BackgroundColor3 = .(, , )
topBar.BorderColor3 = .(, , )
topBar.BorderSizePixel =
titleLabel = .()
titleLabel.Name =
titleLabel.Parent = topBar
titleLabel.Size = .(, -TOPBAR_HEIGHT*, , )
titleLabel.Position = .(, , , )
titleLabel.BackgroundTransparency =
titleLabel.Font = .Font.SourceSansBold
titleLabel.TextColor3 = .(, , )
titleLabel.Text = GUI_TITLE
titleLabel.TextSize =
titleLabel.TextXAlignment = .TextXAlignment.Left
toggleVisibilityButton = .()
toggleVisibilityButton.Name =
toggleVisibilityButton.Parent = topBar
toggleVisibilityButton.Size = .(, TOPBAR_HEIGHT, , )
toggleVisibilityButton.Position = .(, -TOPBAR_HEIGHT*, , )
toggleVisibilityButton.BackgroundTransparency =
toggleVisibilityButton.Font = .Font.SourceSansBold
toggleVisibilityButton.TextColor3 = .(, , )
toggleVisibilityButton.Text =
toggleVisibilityButton.TextSize =
collapseButton = .()
collapseButton.Name =
collapseButton.Parent = topBar
collapseButton.Size = .(, TOPBAR_HEIGHT, , )
collapseButton.Position = .(, -TOPBAR_HEIGHT, , )
collapseButton.BackgroundTransparency =
collapseButton.Font = .Font.SourceSansBold
collapseButton.TextColor3 = .(, , )
collapseButton.Text =
collapseButton.TextSize =
clearLogsButton = .()
clearLogsButton.Name =
clearLogsButton.Parent = topBar
clearLogsButton.Size = .(, TOPBAR_HEIGHT, , )
clearLogsButton.Position = .(, -TOPBAR_HEIGHT*, , )
clearLogsButton.BackgroundTransparency =
clearLogsButton.Font = .Font.SourceSansBold
clearLogsButton.TextColor3 = .(, , )
clearLogsButton.Text =
clearLogsButton.TextSize =
unreadBadge = .()
unreadBadge.Name =
unreadBadge.Parent = clearLogsButton
unreadBadge.Size = .(, , , )
unreadBadge.AnchorPoint = .(, )
unreadBadge.Position = .(, , , -)
unreadBadge.BackgroundColor3 = .(, , )
unreadBadge.BorderColor3 = .(, , )
unreadBadge.BorderSizePixel =
unreadBadge.Font = .Font.SourceSansBold
unreadBadge.TextColor3 = .(, , )
unreadBadge.Text =
unreadBadge.TextSize =
unreadBadge.ZIndex =
unreadBadge.Visible =
unreadBadgeCorner = .()
unreadBadgeCorner.CornerRadius = .(, )
unreadBadgeCorner.Parent = unreadBadge
toolBar = .()
toolBar.Name =
toolBar.Parent = mainFrame
toolBar.Size = .(, , , TOOLBAR_HEIGHT)
toolBar.Position = .(, , , TOPBAR_HEIGHT)
toolBar.BackgroundColor3 = .(, , )
toolBar.BorderSizePixel =
toolBar.ScrollingDirection = .ScrollingDirection.X
toolBar.ScrollBarThickness =
toolBar.ScrollBarImageColor3 = .(, , )
toolBar.ScrollBarImageTransparency =
toolBarLayout = .()
toolBarLayout.Parent = toolBar
toolBarLayout.FillDirection = .FillDirection.Horizontal
toolBarLayout.SortOrder = .SortOrder.LayoutOrder
toolBarLayout.Padding = .(, )
toolBarLayout.VerticalAlignment = .VerticalAlignment.Center
toolBarPadding = .()
toolBarPadding.Parent = toolBar
toolBarPadding.PaddingLeft = .(, )
(name, text, width)
button = .()
button.Name = name
button.Parent = toolBar
button.Size = .(, width, , )
button.BackgroundColor3 = .(, , )
button.BorderColor3 = .(, , )
button.BorderSizePixel =
button.Font = .Font.SourceSansBold
button.TextColor3 = .(, , )
button.Text = text
button.TextSize =
button
chatButton = (, , )
spectateButton = (, , )
teleportButton = (, , )
remoteSpyButton = (, , )
eventSpyButton = (, , )
httpSpyButton = (, , )
toolBar.CanvasSize = .(, toolBarLayout.AbsoluteContentSize.X + , , )
pagesFrame = .()
pagesFrame.Name =
pagesFrame.Parent = mainFrame
pagesFrame.Size = .(, , , -TOPBAR_HEIGHT - TOOLBAR_HEIGHT)
pagesFrame.Position = .(, , , TOPBAR_HEIGHT + TOOLBAR_HEIGHT)
pagesFrame.BackgroundTransparency =
pagesFrame.ClipsDescendants =
(name)
scrollingFrame = .()
scrollingFrame.Name = name
scrollingFrame.Parent = pagesFrame
scrollingFrame.Size = .(, , , )
scrollingFrame.Position = .(, , , )
scrollingFrame.BackgroundColor3 = .(, , )
scrollingFrame.BorderSizePixel =
scrollingFrame.Visible =
scrollingFrame.ScrollBarImageColor3 = .(, , )
scrollingFrame.ScrollBarThickness =
scrollingFrame.ScrollBarImageTransparency =
layout = .()
layout.Parent = scrollingFrame
layout.Padding = .(, )
padding = .()
padding.Parent = scrollingFrame
padding.PaddingLeft = .(, )
padding.PaddingRight = .(, )
padding.PaddingTop = .(, )
padding.PaddingBottom = .(, )
scrollingFrame, layout
logContainer, uiListLayout = ()
dropdownList, dropdownLayout = ()
remoteSpyList, remoteSpyLayout = ()
eventSpyList, eventSpyLayout = ()
httpSpyPage, httpSpyLayout = ()
httpClearButton = .()
httpClearButton.Name =
httpClearButton.Parent = httpSpyPage
httpClearButton.Size = .(, , , )
httpClearButton.BackgroundColor3 = .(, , )
httpClearButton.BorderColor3 = .(, , )
httpClearButton.BorderSizePixel =
httpClearButton.Font = .Font.SourceSansBold
httpClearButton.TextColor3 = .(, , )
httpClearButton.Text =
httpClearButton.TextSize =
httpClearButton.LayoutOrder = -
httpClearButton.MouseButton1Click:(()
_, child (httpSpyPage:())
child.Name ==
child:()
.()
httpSpyPage.CanvasSize = .(, , , httpSpyLayout.AbsoluteContentSize.Y + )
)
isCollapsed =
isVisible =
dropdownMode =
spectatingPlayer =
originalCameraSubject =
unreadMessages =
isAtBottom =
activePage =
spectateCharConn =
firstUnreadMessageFrame =
teleportingToPlayer =
originalPosition =
pages = {
chat = logContainer,
spectate = dropdownList,
teleport = dropdownList,
remote = remoteSpyList,
event = eventSpyList,
= httpSpyPage
}
buttons = {
chat = chatButton,
spectate = spectateButton,
teleport = teleportButton,
remote = remoteSpyButton,
event = eventSpyButton,
= httpSpyButton
}
()
_, child (logContainer:())
child.Name ==
child:()
logContainer.CanvasSize = .(, , , )
unreadMessages =
unreadBadge.Visible =
firstUnreadMessageFrame =
isAtBottom =
(onComplete)
isCollapsed = isCollapsed
targetHeight = isCollapsed TOPBAR_HEIGHT GUI_HEIGHT
collapseButton.Text = isCollapsed
tween = TweenService:(mainFrame, TweenInfo.(, .EasingStyle.Quad, .EasingDirection.Out), {Size = .(, GUI_WIDTH, , targetHeight)})
onComplete
tween.Completed:(onComplete)
tween:()
()
isVisible = isVisible
mainFrame.Visible = isVisible
toggleVisibilityButton.Text = isVisible
()
_, child (dropdownList:())
child:()
child:()
players = Players:()
.(players, (a, b) a.Name:() < b.Name:() )
_, player (players)
player ~= Players.LocalPlayer
playerButton = .()
playerButton.Name = player.Name
playerButton.Parent = dropdownList
playerButton.Size = .(, , , )
playerButton.BackgroundColor3 = .(, , )
playerButton.BorderColor3 = .(, , )
playerButton.BorderSizePixel =
playerButton.Font = .Font.SourceSans
playerButton.TextColor3 = .(, , )
playerButton.Text = .(, player.DisplayName, player.Name)
playerButton.TextSize =
(dropdownMode == spectatingPlayer spectatingPlayer.Name == player.Name)
(dropdownMode == teleportingToPlayer teleportingToPlayer.Name == player.Name)
playerButton.BackgroundColor3 = .(, , )
playerButton.MouseButton1Click:(()
dropdownMode ==
spectatingPlayer spectatingPlayer == player
spectateCharConn spectateCharConn:(); spectateCharConn =
originalCameraSubject .CurrentCamera.CameraSubject = originalCameraSubject
spectatingPlayer, originalCameraSubject = ,
playerButton.BackgroundColor3 = .(, , )
spectatingPlayer originalCameraSubject originalCameraSubject = .CurrentCamera.CameraSubject
spectatingPlayer
oldButton = dropdownList:(spectatingPlayer.Name)
oldButton oldButton.BackgroundColor3 = .(, , )
spectatingPlayer = player
spectateCharConn spectateCharConn:(); spectateCharConn =
(char)
hum = char:() char
.CurrentCamera.CameraSubject = hum
player.Character (player.Character)
spectateCharConn = player.CharacterAdded:(setCamToChar)
playerButton.BackgroundColor3 = .(, , )
dropdownMode ==
localChar = Players.LocalPlayer.Character
localChar localChar:()
localHRP = localChar.HumanoidRootPart
teleportingToPlayer teleportingToPlayer == player
originalPosition
localHRP.CFrame = originalPosition
teleportingToPlayer, originalPosition = ,
playerButton.BackgroundColor3 = .(, , )
targetChar = player.Character
targetChar targetChar:()
targetHRP = targetChar.HumanoidRootPart
teleportingToPlayer
oldButton = dropdownList:(teleportingToPlayer.Name)
oldButton oldButton.BackgroundColor3 = .(, , )
originalPosition
originalPosition = localHRP.CFrame
localHRP.CFrame = targetHRP.CFrame
teleportingToPlayer = player
playerButton.BackgroundColor3 = .(, , )
)
dropdownList.CanvasSize = .(, , , dropdownLayout.AbsoluteContentSize.Y + )
()
_, child (remoteSpyList:()) child:() child:()
allRemotes = {}
_, remote (:())
remote:() remote:() .(allRemotes, remote)
.(allRemotes, (a, b) a:() < b:() )
_, remote (allRemotes)
remoteFrame = .()
remoteFrame.Name = remote.Name; remoteFrame.Parent = remoteSpyList
remoteFrame.Size = .(, , , )
remoteFrame.BackgroundColor3 = .(, , )
remoteFrame.BorderColor3 = .(, , ); remoteFrame.BorderSizePixel =
remotePath = remote:()
remoteType = remote:()
pathLabel = .()
pathLabel.Parent = remoteFrame; pathLabel.Size = .(, -, , )
pathLabel.Position = .(, , , )
pathLabel.BackgroundTransparency = ; pathLabel.Font = .Font.Code
pathLabel.TextColor3 = .(, , ); pathLabel.TextSize =
pathLabel.TextXAlignment = .TextXAlignment.Left
pathLabel.Text = .(, remoteType, remotePath)
pathLabel.TextTruncate = .TextTruncate.AtEnd
fireButton = .()
fireButton.Parent = remoteFrame; fireButton.Size = .(, , , -)
fireButton.Position = .(, -, , )
fireButton.BackgroundColor3 = .(, , )
fireButton.BorderColor3 = .(, , ); fireButton.BorderSizePixel =
fireButton.Font = .Font.SourceSansBold; fireButton.TextColor3 = .(, , )
fireButton.Text = ; fireButton.TextSize =
fireButton.MouseButton1Click:(()
(() remote:() remote:() remote:() )
)
copyPathButton = .()
copyPathButton.Parent = remoteFrame; copyPathButton.Size = .(, , , -)
copyPathButton.Position = .(, -, , )
copyPathButton.BackgroundColor3 = .(, , )
copyPathButton.BorderColor3 = .(, , ); copyPathButton.BorderSizePixel =
copyPathButton.Font = .Font.SourceSansBold; copyPathButton.TextColor3 = .(, , )
copyPathButton.Text = ; copyPathButton.TextSize =
copyPathButton.MouseButton1Click:(() (remotePath) )
remoteSpyList.CanvasSize = .(, , , remoteSpyLayout.AbsoluteContentSize.Y + )
()
_, child (eventSpyList:()) child:() child:()
allEvents = {}
_, event (:())
event:() event:() .(allEvents, event)
.(allEvents, (a, b) a:() < b:() )
_, event (allEvents)
eventFrame = .()
eventFrame.Name = event.Name; eventFrame.Parent = eventSpyList
eventFrame.Size = .(, , , )
eventFrame.BackgroundColor3 = .(, , )
eventFrame.BorderColor3 = .(, , ); eventFrame.BorderSizePixel =
eventPath = event:()
eventType = event:()
pathLabel = .()
pathLabel.Parent = eventFrame; pathLabel.Size = .(, -, , )
pathLabel.Position = .(, , , )
pathLabel.BackgroundTransparency = ; pathLabel.Font = .Font.Code
pathLabel.TextColor3 = .(, , ); pathLabel.TextSize =
pathLabel.TextXAlignment = .TextXAlignment.Left
pathLabel.Text = .(, eventType, eventPath)
pathLabel.TextTruncate = .TextTruncate.AtEnd
fireButton = .()
fireButton.Parent = eventFrame; fireButton.Size = .(, , , -)
fireButton.Position = .(, -, , )
fireButton.BackgroundColor3 = .(, , )
fireButton.BorderColor3 = .(, , ); fireButton.BorderSizePixel =
fireButton.Font = .Font.SourceSansBold; fireButton.TextColor3 = .(, , )
fireButton.Text = ; fireButton.TextSize =
fireButton.MouseButton1Click:(()
(() event:() event:() event:() )
)
copyPathButton = .()
copyPathButton.Parent = eventFrame; copyPathButton.Size = .(, , , -)
copyPathButton.Position = .(, -, , )
copyPathButton.BackgroundColor3 = .(, , )
copyPathButton.BorderColor3 = .(, , ); copyPathButton.BorderSizePixel =
copyPathButton.Font = .Font.SourceSansBold; copyPathButton.TextColor3 = .(, , )
copyPathButton.Text = ; copyPathButton.TextSize =
copyPathButton.MouseButton1Click:(() (eventPath) )
eventSpyList.CanvasSize = .(, , , eventSpyLayout.AbsoluteContentSize.Y + )
(pageName)
pageName == pageName == dropdownMode = pageName; ()
pageName == ()
pageName == ()
activePage = pageName
name, page (pages) page.Visible = (page.Name == pages[pageName].Name)
name, button (buttons) button.BackgroundColor3 = (name == pageName) .(, , ) .(, , )
pageName == isAtBottom
unreadMessages =
unreadBadge.Visible =
firstUnreadMessageFrame =
unreadMessages >
unreadBadge.Visible =
unreadBadge.Visible =
(player, message)
DELETE_BTN_WIDTH =
PADDING =
msgFrame = .()
msgFrame.Name = ; msgFrame.Parent = logContainer
msgFrame.Size = .(, , , ); msgFrame.BackgroundTransparency =
msgFrame.AutomaticSize = .AutomaticSize.Y
deleteButton = .()
deleteButton.Name =
deleteButton.Parent = msgFrame
deleteButton.Size = .(, DELETE_BTN_WIDTH, , DELETE_BTN_WIDTH)
deleteButton.AnchorPoint = .(, )
deleteButton.Position = .(, , , )
deleteButton.BackgroundTransparency =
deleteButton.BorderSizePixel =
deleteButton.Font = .Font.SourceSansBold
deleteButton.TextColor3 = .(, , )
deleteButton.Text =
deleteButton.TextSize =
combinedLabel = .()
combinedLabel.Name = ; combinedLabel.Parent = msgFrame
combinedLabel.Size = .(, -(DELETE_BTN_WIDTH + PADDING), , )
combinedLabel.AutomaticSize = .AutomaticSize.Y
combinedLabel.BackgroundTransparency = ; combinedLabel.Font = .Font.SourceSans
combinedLabel.TextColor3 = .(, , ); combinedLabel.TextSize =
combinedLabel.TextWrapped = ;
combinedLabel.TextXAlignment = .TextXAlignment.Left
combinedLabel.TextYAlignment = .TextYAlignment.Top
combinedLabel.RichText =
combinedLabel.Text = .(, player.Name:(, ), message:(, ))
deleteButton.MouseButton1Click:(()
msgFrame:()
.()
logContainer.CanvasSize = .(, , , uiListLayout.AbsoluteContentSize.Y + )
logContainer.CanvasSize.Y.Offset <= logContainer.AbsoluteSize.Y
isAtBottom =
unreadMessages >
unreadMessages =
unreadBadge.Visible =
firstUnreadMessageFrame =
)
msgFrame.Parent = logContainer
msgFrame.LayoutOrder = ()
logContainer.CanvasSize = .(, , , uiListLayout.AbsoluteContentSize.Y + )
isCollapsed isAtBottom activePage ==
logContainer.CanvasPosition = .(, logContainer.CanvasSize.Y.Offset)
firstUnreadMessageFrame =
firstUnreadMessageFrame firstUnreadMessageFrame.Parent
firstUnreadMessageFrame = msgFrame
unreadMessages = unreadMessages +
unreadBadge.Text = (unreadMessages)
unreadBadge.Visible =
(...)
parts = {...}
fullMessage = .(parts, )
logLabel = .()
logLabel.Name =
logLabel.Parent = httpSpyPage
logLabel.Size = .(, , , )
logLabel.AutomaticSize = .AutomaticSize.Y
logLabel.BackgroundTransparency =
logLabel.Font = .Font.Code
logLabel.TextColor3 = .(, , )
logLabel.Text = fullMessage
logLabel.TextSize =
logLabel.TextWrapped =
logLabel.TextXAlignment = .TextXAlignment.Left
.()
httpSpyPage.CanvasSize = .(, , , httpSpyLayout.AbsoluteContentSize.Y + )
Hook = {}
Http = {}
UrlIntercepts = {
[] = {
Callback = ()
()
,
},
}
(OldFunc, ...)
Args = {...}
Request = Http:(Args)
Request
IsPost = Request.IsPost
IsTable = Request.IsTable
Url = Request.Url
Body = Request.Body
Headers = Request.Headers
Url
(...)
(.(, IsPost , Url))
Body
(.(, (Body)))
Headers
(.(, HttpService:(Headers)))
Responce =
Intercept = Http:(Url)
Intercept Intercept.PassResponce
s, r = (OldFunc, ...)
s (, r)
Responce = r
Intercept Responce
Spoofed = Intercept.Callback
(Spoofed) ==
Intercept.PassResponce
Spoofed = (Responce, Request)
Spoofed = (Request)
IsTable
Base = Responce {}
Hook:(Base, {
[] = Spoofed
})
Spoofed
Http:(Args: {})
Request = {}
Index: number, Arg , Args
(Arg) ==
Request.Url = Arg
(Arg) ==
Url = Arg.Url Arg.url
Url
Body = Arg.Body Arg.body
Request.Url = Url
Request.Body = Body
Request.IsPost = Body
Request.IsTable =
Request.Headers = Arg.Headers
Request
Http:(Url: )
UrlMatch, Data , UrlIntercepts
Url:(UrlMatch)
Data
Hook.Hooks = {}
Hook.Cache = ({}, {__mode = })
Hook.Alliases = {
[] = HttpCallback
}
Hook:() self.Hooks
Hook:(Object: ?) (Object) ==
Hook:() self.Hooks[]
Hook:(, Hooks) self.Hooks[] = Hooks
Hook:() self.Cache[]
Hook:(, Proxy) self.Cache[] = Proxy
Hook:(Object: , Hooks: )
Cached = self:(Object)
Cached Cached
Proxy = ()
Meta = (Proxy)
Meta.__index = (self, Key: )
Hook = Hooks[Key]
Hook Hook
Value = Object[Key]
(Value) ==
(self, ...)
(Object, ...)
Value
Meta.__newindex = (self, Key: , New) Object[Key] = New
Meta.__tostring = () (Object)
Meta.__metatable = (Object)
self:(Object, Proxy)
Proxy
Hook:()
AllHooks = self:()
Alliases = self.Alliases
Object, Data , AllHooks
IsObject = self:(Object)
Hooks = Data.Hooks
Globals = Data.Globals
IsReadOnly =
(Object) == IsReadOnly = .(Object)
IsReadOnly (Object, )
Key: , Value , Hooks
Success, OldValue = (() Object[Key] )
Success
(OldValue) ==
IsObject
OldFunc = OldValue
OldValue = (self, ...) (Object, ...)
(OldValue) OldValue = (OldValue)
(Value) ==
Callback = Alliases[Value]
Callback
Value = (...) (OldValue, ...)
Hooks[Key] = Value
IsObject Object[Key] = Value
IsObject
Proxy = self:(Object, Hooks)
Globals
_, Global: , Globals GlobalENV[Global] = Proxy
IsReadOnly
(Object, )
()
Hook:(, {
Globals = {, },
Hooks = {
[] = ,
[] = ,
[] = ,
[] =
}
})
Hook:(GlobalENV, { Hooks = { [] = , [] = } })
Hook:(, { Hooks = { [] = } })
Hook:(, { Hooks = { [] = } })
TextChatService.OnIncomingMessage = (message)
message.TextSource
p = Players:(message.TextSource.UserId)
p p ~= Players.LocalPlayer (p, message.Text)
TextChatService.SendingMessage:((msg) (Players.LocalPlayer, msg.Text) )
topBar.InputBegan:((input)
input.UserInputType == .UserInputType.MouseButton1 input.UserInputType == .UserInputType.Touch
startPos, frameStartPos = input.Position, mainFrame.Position
moveConn, upConn
moveConn = UserInputService.InputChanged:((c) c.UserInputType == .UserInputType.MouseMovement c.UserInputType == .UserInputType.Touch d = c.Position - startPos; mainFrame.Position = .(frameStartPos.X.Scale, frameStartPos.X.Offset + d.X, frameStartPos.Y.Scale, frameStartPos.Y.Offset + d.Y) )
upConn = UserInputService.InputEnded:((e) e.UserInputType == .UserInputType.MouseButton1 e.UserInputType == .UserInputType.Touch moveConn:(); upConn:() )
)
collapseButton.MouseButton1Click:(() () )
toggleVisibilityButton.MouseButton1Click:(toggleVisibility)
clearLogsButton.MouseButton1Click:(()
unreadMessages >
()
()
firstUnreadMessageFrame firstUnreadMessageFrame.Parent
.()
targetY = firstUnreadMessageFrame.AbsolutePosition.Y - logContainer.AbsolutePosition.Y -
TweenService:(logContainer, TweenInfo.(, .EasingStyle.Quad, .EasingDirection.Out), {CanvasPosition = .(, targetY)}):()
isCollapsed
(scrollToMessage)
()
()
)
chatButton.MouseButton1Click:(() () )
spectateButton.MouseButton1Click:(() () )
teleportButton.MouseButton1Click:(() () )
remoteSpyButton.MouseButton1Click:(() () )
eventSpyButton.MouseButton1Click:(() () )
httpSpyButton.MouseButton1Click:(() () )
UserInputService.InputBegan:((input, processed)
processed input.KeyCode == .KeyCode.RightControl ()
)
(character)
humanoid = character:()
humanoid.Died:(()
spectatingPlayer
spectateCharConn spectateCharConn:(); spectateCharConn =
spectatingPlayer, originalCameraSubject = ,
teleportingToPlayer teleportingToPlayer, originalPosition = ,
activePage == activePage == ()
)
Players.LocalPlayer.Character (Players.LocalPlayer.Character)
Players.LocalPlayer.CharacterAdded:(onCharacterAdded)
Players.PlayerAdded:(()
activePage == activePage == ()
)
Players.PlayerRemoving:((player)
spectatingPlayer == player
originalCameraSubject .CurrentCamera.CameraSubject = originalCameraSubject
spectatingPlayer, originalCameraSubject = ,
teleportingToPlayer == player
originalPosition Players.LocalPlayer.Character Players.LocalPlayer.Character:()
Players.LocalPlayer.Character.HumanoidRootPart.CFrame = originalPosition
teleportingToPlayer, originalPosition = ,
activePage == activePage == ()
)
logContainer:():(()
scrollPos = logContainer.CanvasPosition.Y
isAtBottom = (scrollPos + logContainer.AbsoluteSize.Y) >= (logContainer.CanvasSize.Y.Offset - )
isAtBottom
unreadMessages =
unreadBadge.Visible =
firstUnreadMessageFrame =
)
()
Hook:()
()
()Simple Spy Utility Script - RCTRL to toggle/untoggle GUI - Open-Sourced (For Now) [Features] - Chat Log Allows you to view chat log messages - Specate Allows you to specate players - Teleport Allows you to teleport to players - Remote Spy Allows you to spy on remote events, copy path, and fire event [Buttons] ✉ - Clears all chat logs ▼ - relapses Spy Utility ◐ - Minimizes Spy Utility ► - Collapses Spy Utility