Run it
Copy the script and paste it into your executor.
player = .Players.LocalPlayer
playerGui = player:()
UserInputService = :()
TweenService = :()
screenGui = .()
screenGui.Name =
screenGui.Parent = playerGui
screenGui.ResetOnSpawn =
screenGui.DisplayOrder =
mainFrame = .()
mainFrame.Parent = screenGui
mainFrame.Size = .(, , , )
mainFrame.Position = .(, , , )
mainFrame.BackgroundColor3 = .(, , )
mainFrame.BorderSizePixel =
dragBar = .()
dragBar.Parent = mainFrame
dragBar.Size = .(, , , )
dragBar.BackgroundColor3 = .(, , )
dragBar.BorderSizePixel =
dragBar.Position = .(, , , )
dragTitle = .()
dragTitle.Parent = dragBar
dragTitle.Size = .(, , , )
dragTitle.BackgroundTransparency =
dragTitle.Text =
dragTitle.TextColor3 = .(, , )
dragTitle.TextSize =
dragTitle.Font = .Font.SourceSansBold
dragTitle.TextXAlignment = .TextXAlignment.Center
dragTitle.BorderSizePixel =
minimizeButton = .()
minimizeButton.Parent = dragBar
minimizeButton.Size = .(, , , )
minimizeButton.Position = .(, , , )
minimizeButton.BackgroundColor3 = .(, , )
minimizeButton.Text =
minimizeButton.TextColor3 = .(, , )
minimizeButton.TextSize =
minimizeButton.Font = .Font.SourceSansBold
minimizeButton.BorderSizePixel =
minCorner = .()
minCorner.CornerRadius = .(, )
minCorner.Parent = minimizeButton
closeButton = .()
closeButton.Parent = dragBar
closeButton.Size = .(, , , )
closeButton.Position = .(, -, , )
closeButton.BackgroundColor3 = .(, , )
closeButton.Text =
closeButton.TextColor3 = .(, , )
closeButton.TextSize =
closeButton.Font = .Font.SourceSansBold
closeButton.BorderSizePixel =
closeCorner = .()
closeCorner.CornerRadius = .(, )
closeCorner.Parent = closeButton
explorerFrame = .()
explorerFrame.Parent = mainFrame
explorerFrame.Size = .(, , , )
explorerFrame.BackgroundTransparency =
explorerFrame.Position = .(, , , )
scrollingFrame = .()
scrollingFrame.Parent = explorerFrame
scrollingFrame.Position = .(, , , )
scrollingFrame.Size = .(, , , )
scrollingFrame.BackgroundTransparency =
scrollingFrame.BorderSizePixel =
scrollingFrame.ScrollBarThickness =
scrollingFrame.ScrollBarImageColor3 = .(, , )
scrollingFrame.CanvasSize = .(, , , )
listLayout = .()
listLayout.Parent = scrollingFrame
listLayout.SortOrder = .SortOrder.LayoutOrder
listLayout.Padding = .(, )
listLayout:():(()
scrollingFrame.CanvasSize = .(, , , listLayout.AbsoluteContentSize.Y)
)
propertiesFrame = .()
propertiesFrame.Parent = mainFrame
propertiesFrame.Size = .(, , , )
propertiesFrame.Position = .(, , , )
propertiesFrame.BackgroundColor3 = .(, , )
propertiesFrame.BorderSizePixel =
propCorner = .()
propCorner.CornerRadius = .(, )
propCorner.Parent = propertiesFrame
propertiesDragBar = .()
propertiesDragBar.Parent = propertiesFrame
propertiesDragBar.Size = .(, , , )
propertiesDragBar.BackgroundColor3 = .(, , )
propertiesDragBar.BorderSizePixel =
propertiesTitle = .()
propertiesTitle.Parent = propertiesDragBar
propertiesTitle.Size = .(, , , )
propertiesTitle.BackgroundTransparency =
propertiesTitle.Text =
propertiesTitle.TextColor3 = .(, , )
propertiesTitle.TextSize =
propertiesTitle.Font = .Font.SourceSansBold
propertiesTitle.TextXAlignment = .TextXAlignment.Center
propertiesTitle.BorderSizePixel =
propertiesSearch = .()
propertiesSearch.Parent = propertiesFrame
propertiesSearch.Size = .(, -, , )
propertiesSearch.Position = .(, , , )
propertiesSearch.BackgroundColor3 = .(, , )
propertiesSearch.Text =
propertiesSearch.TextColor3 = .(, , )
propertiesSearch.TextSize =
propertiesSearch.Font = .Font.SourceSans
propertiesSearch.BorderSizePixel =
searchCorner = .()
searchCorner.CornerRadius = .(, )
searchCorner.Parent = propertiesSearch
propertiesScrolling = .()
propertiesScrolling.Parent = propertiesFrame
propertiesScrolling.Position = .(, , , )
propertiesScrolling.Size = .(, -, , -)
propertiesScrolling.BackgroundTransparency =
propertiesScrolling.BorderSizePixel =
propertiesScrolling.ScrollBarThickness =
propertiesScrolling.ScrollBarImageColor3 = .(, , )
propertiesScrolling.CanvasSize = .(, , , )
propertiesLayout = .()
propertiesLayout.Parent = propertiesScrolling
propertiesLayout.SortOrder = .SortOrder.LayoutOrder
propertiesLayout.Padding = .(, )
propertiesLayout:():(()
propertiesScrolling.CanvasSize = .(, , , propertiesLayout.AbsoluteContentSize.Y)
)
resizing
resizeInput
resizeStart
startSize
resizeHandle = .()
resizeHandle.Parent = mainFrame
resizeHandle.Size = .(, , , )
resizeHandle.Position = .(, -, , -)
resizeHandle.BackgroundColor3 = .(, , )
resizeHandle.BorderSizePixel =
resizeCorner = .()
resizeCorner.CornerRadius = .(, )
resizeCorner.Parent = resizeHandle
resizeHandle.InputBegan:((input)
input.UserInputType == .UserInputType.MouseButton1
resizing =
resizeStart = input.Position
startSize = mainFrame.Size
input.Changed:(()
input.UserInputState == .UserInputState.End
resizing =
)
)
resizeHandle.InputChanged:((input)
input.UserInputType == .UserInputType.MouseMovement
resizeInput = input
)
UserInputService.InputChanged:((input)
input == resizeInput resizing
delta = input.Position - resizeStart
newWidth = .(, startSize.X.Offset + delta.X)
newHeight = .(, startSize.Y.Offset + delta.Y)
mainFrame.Size = .(, newWidth, , newHeight)
explorerFrame.Size = .(, , , )
propertiesFrame.Size = .(, , , )
propertiesFrame.Position = .(, , , )
resizeHandle.Position = .(, -, , -)
)
dragging
dragInput
dragStart
startPos
dragBar.InputBegan:((input)
input.UserInputType == .UserInputType.MouseButton1
dragging =
dragStart = input.Position
startPos = mainFrame.Position
input.Changed:(()
input.UserInputState == .UserInputState.End
dragging =
)
)
dragBar.InputChanged:((input)
input.UserInputType == .UserInputType.MouseMovement
dragInput = input
)
UserInputService.InputChanged:((input)
input == dragInput dragging
delta = input.Position - dragStart
mainFrame.Position = .(
startPos.X.Scale,
startPos.X.Offset + delta.X,
startPos.Y.Scale,
startPos.Y.Offset + delta.Y
)
)
propDragging
propDragInput
propDragStart
propStartPos
propertiesDragBar.InputBegan:((input)
input.UserInputType == .UserInputType.MouseButton1
propDragging =
propDragStart = input.Position
propStartPos = propertiesFrame.Position
input.Changed:(()
input.UserInputState == .UserInputState.End
propDragging =
)
)
propertiesDragBar.InputChanged:((input)
input.UserInputType == .UserInputType.MouseMovement
propDragInput = input
)
UserInputService.InputChanged:((input)
input == propDragInput propDragging
delta = input.Position - propDragStart
newY = .(, propStartPos.Y.Offset + delta.Y)
newY + propertiesFrame.Size.Y.Offset <= mainFrame.Size.Y.Offset
propertiesFrame.Position = .(, , , newY)
explorerFrame.Size = .(, , , mainFrame.Size.Y.Offset - propertiesFrame.Size.Y.Offset)
)
selectedInstance =
selectedNode =
isMinimized =
defaultIcon =
(className)
iconMap = {
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
}
iconMap[className] defaultIcon
(className)
offsets = {
[] = .(, ),
[] = .(, ),
[] = .(, ),
[] = .(, ),
[] = .(, ),
[] = .(, ),
[] = .(, ),
[] = .(, ),
[] = .(, ),
[] = .(, ),
[] = .(, ),
[] = .(, ),
[] = .(, ),
[] = .(, ),
[] = .(, ),
[] = .(, ),
[] = .(, ),
[] = .(, ),
[] = .(, ),
}
offsets[className] .(, )
contextMenuGui = .()
contextMenuGui.Name =
contextMenuGui.Parent = playerGui
contextMenuGui.ResetOnSpawn =
contextMenuGui.ZIndexBehavior = .ZIndexBehavior.Sibling
contextMenuGui.DisplayOrder =
contextMenuFrame = .()
contextMenuFrame.Parent = contextMenuGui
contextMenuFrame.Size = .(, , , )
contextMenuFrame.BackgroundColor3 = .(, , )
contextMenuFrame.BorderSizePixel =
contextMenuFrame.Visible =
contextCorner = .()
contextCorner.CornerRadius = .(, )
contextCorner.Parent = contextMenuFrame
deleteButton = .()
deleteButton.Parent = contextMenuFrame
deleteButton.Size = .(, , , )
deleteButton.BackgroundTransparency =
deleteButton.Text =
deleteButton.TextColor3 = .(, , )
deleteButton.TextSize =
deleteButton.Font = .Font.SourceSansBold
deleteButton.BorderSizePixel =
deleteButton.ZIndex =
deleteIcon = .()
deleteIcon.Parent = contextMenuFrame
deleteIcon.Size = .(, , , )
deleteIcon.Position = .(, , , -)
deleteIcon.Image =
deleteIcon.BackgroundTransparency =
deleteIcon.ZIndex =
connections = {}
(position, targetInstance)
(, position.X, position.Y, , targetInstance targetInstance.Name )
contextMenuFrame.Position = .(, .(position.X, , screenGui.AbsoluteSize.X - ), , .(position.Y, , screenGui.AbsoluteSize.Y - ))
contextMenuFrame.Visible =
(, contextMenuFrame.Position.X.Offset, contextMenuFrame.Position.Y.Offset, , contextMenuFrame.Visible)
selectedInstance = targetInstance
deleteConnection = deleteButton.MouseButton1Click:(()
(, selectedInstance selectedInstance.Name )
selectedInstance
selectedInstance:()
contextMenuFrame.Visible =
()
_, conn (connections)
conn:()
connections = {}
)
.(connections, deleteConnection)
closeConnection = UserInputService.InputBegan:((input)
input.UserInputType == .UserInputType.MouseButton1 contextMenuFrame:():(input.UserInputService:())
()
contextMenuFrame.Visible =
_, conn (connections)
conn:()
connections = {}
)
.(connections, closeConnection)
()
_, child (propertiesScrolling:())
child:()
child:()
selectedInstance
commonProperties = {
, , , , , , , ,
, , , , , , ,
, , , , , ,
, , , , ,
, , , , ,
, , , ,
, , , , , ,
, , , , , ,
}
_, propName (commonProperties)
row = .()
row.Parent = propertiesScrolling
row.Size = .(, , , )
row.BackgroundTransparency =
propLabel = .()
propLabel.Parent = row
propLabel.Size = .(, , , )
propLabel.BackgroundTransparency =
propLabel.Text = propName
propLabel.TextColor3 = .(, , )
propLabel.TextSize =
propLabel.Font = .Font.SourceSans
propLabel.TextXAlignment = .TextXAlignment.Left
propLabel.BorderSizePixel =
valueBox
success, value = (()
selectedInstance[propName]
)
success
value =
(value) ==
valueBox = .()
valueBox.Text = value
valueBox.TextColor3 = value .(, , ) .(, , )
valueBox.MouseButton1Click:(()
selectedInstance[propName] = value
()
)
(value) == (value) ==
valueBox = .()
valueBox.Text = (value)
valueBox.TextColor3 = .(, , )
valueBox.TextSize =
valueBox.Font = .Font.SourceSans
valueBox.TextXAlignment = .TextXAlignment.Left
valueBox.BorderSizePixel =
propName ==
valueBox.FocusLost:((enterPressed)
enterPressed
selectedInstance.Name = valueBox.Text
()
)
valueBox = .()
valueBox.Text = (value)
valueBox.TextColor3 = .(, , )
valueBox.TextSize =
valueBox.Font = .Font.SourceSans
valueBox.TextXAlignment = .TextXAlignment.Left
valueBox.Parent = row
valueBox.Position = .(, , , )
valueBox.Size = .(, , , )
valueBox.BackgroundTransparency =
valueBox.BorderSizePixel =
(instance, parentContainer, depth, parentUpdate)
depth = depth
parentUpdate = parentUpdate ()
nodeFrame = .()
nodeFrame.Parent = parentContainer
nodeFrame.Size = .(, , , )
nodeFrame.BackgroundTransparency =
nodeFrame.BorderSizePixel =
highlight = .()
highlight.Name =
highlight.Parent = nodeFrame
highlight.Size = .(, , , )
highlight.BackgroundColor3 = .(, , )
highlight.BackgroundTransparency =
highlight.ZIndex =
padding = .()
padding.PaddingLeft = .(, depth * + )
padding.Parent = nodeFrame
contentFrame = .()
contentFrame.Parent = nodeFrame
contentFrame.Size = .(, , , )
contentFrame.BackgroundTransparency =
contentFrame.Text =
contentFrame.ZIndex =
contentFrame.AutoButtonColor =
uiLayout = .()
uiLayout.Parent = contentFrame
uiLayout.FillDirection = .FillDirection.Horizontal
uiLayout.VerticalAlignment = .VerticalAlignment.Center
uiLayout.Padding = .(, )
uiLayout.SortOrder = .SortOrder.LayoutOrder
expandButton = .()
expandButton.Parent = contentFrame
expandButton.Size = .(, , , )
expandButton.BackgroundTransparency =
expandButton.TextColor3 = .(, , )
expandButton.Text =
expandButton.Font = .Font.SourceSansBold
expandButton.TextSize =
expandButton.BorderSizePixel =
iconLabel = .()
iconLabel.Parent = contentFrame
iconLabel.Size = .(, , , )
iconLabel.BackgroundTransparency =
iconAsset = (instance.ClassName)
iconLabel.Image = iconAsset
iconAsset ==
iconLabel.ImageRectSize = .(, )
iconLabel.ImageRectOffset = (instance.ClassName)
nameLabel = .()
nameLabel.Parent = contentFrame
nameLabel.Size = .(, -, , )
nameLabel.BackgroundTransparency =
nameLabel.Text = instance.Name
nameLabel.TextColor3 = .(, , )
nameLabel.TextSize =
nameLabel.Font = .Font.SourceSans
nameLabel.TextXAlignment = .TextXAlignment.Left
nameLabel.TextTruncate = .TextTruncate.SplitWord
childrenContainer = .()
childrenContainer.Parent = nodeFrame
childrenContainer.Position = .(, , , )
childrenContainer.Size = .(, , , )
childrenContainer.BackgroundTransparency =
childrenContainer.Visible =
childrenLayout = .()
childrenLayout.Parent = childrenContainer
childrenLayout.SortOrder = .SortOrder.LayoutOrder
childrenLayout.Padding = .(, )
expanded =
loaded =
()
height =
expanded
height = height + childrenLayout.AbsoluteContentSize.Y
nodeFrame.Size = .(, , , height)
()
childrenLayout:():(updateNodeSize)
contentFrame.MouseButton1Click:(()
selectedNode
prevHighlight = selectedNode:()
prevHighlight
prevHighlight.BackgroundTransparency =
highlight.BackgroundTransparency =
selectedNode = nodeFrame
selectedInstance = instance
()
)
contentFrame.MouseButton2Click:((x)
(, instance.Name, , x.Position.X, x.Position.Y)
selectedNode
prevHighlight = selectedNode:()
prevHighlight
prevHighlight.BackgroundTransparency =
highlight.BackgroundTransparency =
selectedNode = nodeFrame
selectedInstance = instance
()
(x.Position, selectedInstance)
)
expandButton.MouseButton1Click:(()
expanded = expanded
childrenContainer.Visible = expanded
expandButton.Text = expanded
expanded loaded
loaded =
children = instance:()
.(children, (a, b)
a.Name < b.Name
)
_, child (children)
(child, childrenContainer, depth + , updateNodeSize)
()
)
#instance:() ==
expandButton.Visible =
nameLabel.Size = .(, -, , )
nodeFrame
services = {
.Players,
.CoreGui,
.Lighting,
.ReplicatedStorage,
.StarterGui,
.Workspace
}
.(services, (a, b)
a.Name < b.Name
)
_, service (services)
(service, scrollingFrame, , ()
listLayout:()
)
mouse = player:()
mouse.Button1Down:(()
contextMenuFrame.Visible
contextMenuFrame.Visible =
_, conn (connections)
conn:()
connections = {}
)
tweenInfo = TweenInfo.(, .EasingStyle.Quad, .EasingDirection.Out)
()
isMinimized
tween = TweenService:(mainFrame, tweenInfo, {Size = .(, , , )})
tween:()
explorerFrame.Visible =
propertiesFrame.Visible =
resizeHandle.Visible =
tween = TweenService:(mainFrame, tweenInfo, {Size = .(, , , )})
tween:()
explorerFrame.Visible =
propertiesFrame.Visible =
resizeHandle.Visible =
isMinimized = isMinimized
minimizeButton.MouseButton1Click:(toggleMinimize)
closeButton.MouseButton1Click:(()
screenGui:()
)
Universal