Run it
Copy the script and paste it into your executor.
.DestructionHub (.DestructionHub.detach) ==
.DestructionHub.()
setthreadidentity
(setthreadidentity, )
DestructionBattlegrounds = {}
playersService = :()
replicatedStorage = :()
userInputService = :()
tweenService = :()
coreGui =
(() coreGui = :() )
ALL_HEROES = {
, , , , , , , ,
, , , , , , ,
, , , , , , ,
, , , , , , ,
, , , , , , ,
, , , , , , ,
, , , , , , ,
, ,
}
CATEGORY_MAP = {
[] = ALL_HEROES,
[] = {
, , , , , ,
, , , , ,
},
[] = {
, , , , , ,
, , ,
},
[] = {
, , , , , ,
, , , , ,
},
[] = {
, , , , , ,
, , , , ,
},
[] = {
, , , , , ,
, , , , , ,
, , ,
}
}
DEFAULT_ACCENTS = {
Gojo = .(, , ),
Sukuna = .(, , ),
OnePunch = .(, , ),
SuperSaiyan = .(, , ),
Thor = .(, , ),
Titan = .(, , ),
Vader = .(, , ),
Viltrumite = .(, , ),
Kaiju = .(, , ),
GodOfTime = .(, , ),
GhostRider = .(, , ),
Omnitrix = .(, , ),
Frieren = .(, , ),
Batman = .(, , ),
IronSuit = .(, , ),
WebSlinger = .(, , ),
Symbiote = .(, , ),
DemonKing = .(, , ),
Aatrox = .(, , ),
Ahri = .(, , ),
Frost = .(, , ),
FireIce = .(, , ),
FlameOn = .(, , ),
Shadow = .(, , ),
ChaosQueen = .(, , )
}
localPlayer = playersService.LocalPlayer
connections = {}
guiRoot =
activeHero = localPlayer:()
localPlayer:()
activeCategory =
currentSearch =
powersConfig =
(()
powersConfig = (replicatedStorage:(, ))
)
Theme = {
backdrop = .(, , ),
surface = .(, , ),
surfaceAlt = .(, , ),
surfaceHover = .(, , ),
border = .(, , ),
borderSoft = .(, , ),
text = .(, , ),
textMuted = .(, , ),
textFaint = .(, , ),
accent = .(, , ),
accentDim = .(, , ),
danger = .(, , ),
fontBold = .Font.GothamBold,
fontMedium = .Font.GothamMedium,
fontBlack = .Font.GothamBlack,
}
(className, props, parent)
inst = .(className)
key, value (props {})
inst[key] = value
parent
inst.Parent = parent
inst
(inst, radius)
(, {
CornerRadius = .(, radius),
Parent = inst,
})
(inst, color, thickness, transparency)
(, {
Color = color Theme.border,
Thickness = thickness ,
Transparency = transparency ,
ApplyStrokeMode = .ApplyStrokeMode.Border,
Parent = inst,
})
(inst, top, right, bottom, left)
(, {
PaddingTop = .(, top),
PaddingRight = .(, right),
PaddingBottom = .(, bottom),
PaddingLeft = .(, left),
Parent = inst,
})
(inst, seconds, props)
tweenService:(inst, TweenInfo.(seconds, .EasingStyle.Quad, .EasingDirection.Out), props):()
()
container =
gethui
ok, result = (gethui)
ok result
container = result
container
container = coreGui
container
container = localPlayer:()
container
(heroName)
powersConfig (powersConfig.POWERS) == powersConfig.POWERS[heroName]
cfg = powersConfig.POWERS[heroName]
cfg.Accent cfg.Accent
cfg.Red cfg.Red
cfg.Glow cfg.Glow
DEFAULT_ACCENTS[heroName] .(, , )
(heroName)
heroName heroName ==
activeHero = heroName
equipPowerRemote = replicatedStorage:()
equipPowerRemote
(()
equipPowerRemote:(heroName)
)
(()
localPlayer:(, heroName)
)
()
parent = ()
screenGui = (, {
Name = ,
ResetOnSpawn = ,
DisplayOrder = ,
ZIndexBehavior = .ZIndexBehavior.Sibling,
IgnoreGuiInset = ,
})
launcher = (, {
Name = ,
Size = .(, ),
Position = .(, , , ),
BackgroundColor3 = Theme.surface,
AutoButtonColor = ,
Text = ,
Font = Theme.fontBold,
TextSize = ,
TextColor3 = Theme.accent,
Parent = screenGui,
})
(launcher, )
launcherStroke = (launcher, Theme.accentDim, , )
shadow = (, {
Name = ,
Size = .(, ),
Position = .(, -, , -),
BackgroundColor3 = .(, , ),
BackgroundTransparency = ,
BorderSizePixel = ,
ZIndex = ,
Parent = screenGui,
})
(shadow, )
main = (, {
Name = ,
Size = .(, ),
Position = .(, -, , -),
BackgroundColor3 = Theme.backdrop,
BorderSizePixel = ,
Active = ,
Draggable = ,
Visible = ,
ZIndex = ,
Parent = screenGui,
})
(main, )
(main, Theme.border, , )
mainScale = (, { Scale = , Parent = main })
header = (, {
Name = ,
Size = .(, , , ),
BackgroundColor3 = Theme.surface,
BorderSizePixel = ,
Active = ,
Parent = main,
})
(header, )
(, {
Name = ,
Size = .(, , , ),
Position = .(, , , -),
BackgroundColor3 = Theme.surface,
BorderSizePixel = ,
Parent = header,
})
(, {
Name = ,
Size = .(, -, , ),
Position = .(, , , ),
BackgroundColor3 = Theme.accent,
BorderSizePixel = ,
Parent = header,
})
title = (, {
Name = ,
Size = .(, -, , ),
Position = .(, ),
BackgroundTransparency = ,
Font = Theme.fontBlack,
Text = ,
TextSize = ,
TextColor3 = Theme.text,
TextXAlignment = .TextXAlignment.Left,
Parent = header,
})
subtitle = (, {
Name = ,
Size = .(, -, , ),
Position = .(, ),
BackgroundTransparency = ,
Font = Theme.fontMedium,
Text = .. #ALL_HEROES .. ,
TextSize = ,
TextColor3 = Theme.textMuted,
TextXAlignment = .TextXAlignment.Left,
Parent = header,
})
closeButton = (, {
Name = ,
Size = .(, ),
Position = .(, -, , ),
BackgroundColor3 = Theme.surfaceAlt,
AutoButtonColor = ,
Font = Theme.fontBold,
Text = ,
TextSize = ,
TextColor3 = Theme.textMuted,
Parent = header,
})
(closeButton, )
closeStroke = (closeButton, Theme.borderSoft, , )
closeButton.MouseEnter:(()
(closeButton, , { BackgroundColor3 = Theme.danger, TextColor3 = .(, , ) })
(closeStroke, , { Transparency = })
)
closeButton.MouseLeave:(()
(closeButton, , { BackgroundColor3 = Theme.surfaceAlt, TextColor3 = Theme.textMuted })
(closeStroke, , { Transparency = })
)
statusBar = (, {
Name = ,
Size = .(, -, , ),
Position = .(, ),
BackgroundColor3 = Theme.surface,
BorderSizePixel = ,
Parent = main,
})
(statusBar, )
(statusBar, Theme.borderSoft, , )
statusAccent = (, {
Name = ,
Size = .(, , , -),
Position = .(, ),
BackgroundColor3 = (activeHero),
BorderSizePixel = ,
Parent = statusBar,
})
(statusAccent, )
statusLabel = (, {
Name = ,
Size = .(, -, , ),
Position = .(, ),
BackgroundTransparency = ,
Font = Theme.fontBold,
Text = .(activeHero),
TextSize = ,
TextColor3 = Theme.text,
TextXAlignment = .TextXAlignment.Left,
Parent = statusBar,
})
statusCaption = (, {
Name = ,
Size = .(, -, , ),
Position = .(, ),
BackgroundTransparency = ,
Font = Theme.fontMedium,
Text = ,
TextSize = ,
TextColor3 = Theme.textFaint,
TextXAlignment = .TextXAlignment.Left,
Parent = statusBar,
})
reapplyButton = (, {
Name = ,
Size = .(, ),
Position = .(, -, , -),
BackgroundColor3 = Theme.accentDim,
AutoButtonColor = ,
Font = Theme.fontBold,
Text = ,
TextSize = ,
TextColor3 = Theme.accent,
Parent = statusBar,
})
(reapplyButton, )
reapplyStroke = (reapplyButton, Theme.accent, , )
reapplyButton.MouseEnter:(()
(reapplyButton, , { BackgroundColor3 = Theme.accent })
(reapplyStroke, , { Transparency = })
)
reapplyButton.MouseLeave:(()
(reapplyButton, , { BackgroundColor3 = Theme.accentDim })
(reapplyStroke, , { Transparency = })
)
reapplyButton.MouseButton1Click:(()
(activeHero)
)
searchBar = (, {
Name = ,
Size = .(, -, , ),
Position = .(, ),
BackgroundColor3 = Theme.surface,
BorderSizePixel = ,
Parent = main,
})
(searchBar, )
searchStroke = (searchBar, Theme.borderSoft, , )
glass = (, {
Name = ,
Size = .(, ),
Position = .(, ),
BackgroundTransparency = ,
BorderSizePixel = ,
Parent = searchBar,
})
(glass, )
(glass, Theme.textFaint, , )
(, {
Name = ,
Size = .(, ),
Position = .(, ),
Rotation = ,
BackgroundColor3 = Theme.textFaint,
BorderSizePixel = ,
Parent = searchBar,
})
searchInput = (, {
Name = ,
Size = .(, -, , ),
Position = .(, ),
BackgroundTransparency = ,
Font = Theme.fontMedium,
PlaceholderText = ,
PlaceholderColor3 = Theme.textFaint,
Text = ,
TextSize = ,
TextColor3 = Theme.text,
TextXAlignment = .TextXAlignment.Left,
ClearTextOnFocus = ,
Parent = searchBar,
})
resultCount = (, {
Name = ,
Size = .(, ),
Position = .(, -, , ),
BackgroundTransparency = ,
Font = Theme.fontMedium,
Text = ,
TextSize = ,
TextColor3 = Theme.textFaint,
TextXAlignment = .TextXAlignment.Right,
Parent = searchBar,
})
searchInput.Focused:(()
(searchStroke, , { Color = Theme.accent, Transparency = })
)
searchInput.FocusLost:(()
(searchStroke, , { Color = Theme.borderSoft, Transparency = })
)
categoryBar = (, {
Name = ,
Size = .(, -, , ),
Position = .(, ),
BackgroundTransparency = ,
BorderSizePixel = ,
ScrollBarThickness = ,
ScrollingDirection = .ScrollingDirection.X,
CanvasSize = .(, , , ),
AutomaticCanvasSize = .AutomaticSize.X,
Parent = main,
})
(, {
FillDirection = .FillDirection.Horizontal,
SortOrder = .SortOrder.LayoutOrder,
Padding = .(, ),
VerticalAlignment = .VerticalAlignment.Center,
Parent = categoryBar,
})
grid = (, {
Name = ,
Size = .(, -, , -),
Position = .(, ),
BackgroundColor3 = Theme.surface,
BorderSizePixel = ,
ScrollBarThickness = ,
ScrollBarImageColor3 = Theme.border,
CanvasSize = .(, , , ),
AutomaticCanvasSize = .AutomaticSize.Y,
Parent = main,
})
(grid, )
(grid, Theme.borderSoft, , )
(grid, , , , )
(, {
CellSize = .(, ),
CellPadding = .(, ),
SortOrder = .SortOrder.LayoutOrder,
Parent = grid,
})
footer = (, {
Name = ,
Size = .(, -, , ),
Position = .(, , , -),
BackgroundTransparency = ,
Font = Theme.fontMedium,
Text = ,
TextSize = ,
TextColor3 = Theme.textFaint,
TextXAlignment = .TextXAlignment.Left,
Parent = main,
})
heroButtons = {}
categoryButtons = {}
(heroName, button, hovered)
isSelected = (heroName == activeHero)
accent = (heroName)
label = button:()
isSelected
button.BackgroundColor3 = accent
label
label.TextColor3 = Theme.backdrop
button.BackgroundColor3 = hovered Theme.surfaceHover Theme.surfaceAlt
label
label.TextColor3 = Theme.text
s = button:()
s
s.Color = isSelected accent Theme.borderSoft
s.Transparency = isSelected
marker = button:()
marker
marker.BackgroundColor3 = isSelected Theme.backdrop accent
marker.BackgroundTransparency = isSelected
()
query = currentSearch:():(, )
pool = CATEGORY_MAP[activeCategory] ALL_HEROES
shown =
heroName, button (heroButtons)
matchesCategory = .(pool, heroName) ~=
matchesSearch = (query == ) (heroName:():(query, , ) ~= )
visible = matchesCategory matchesSearch
button.Visible = visible
visible
shown = shown +
(heroName, button, )
statusLabel.Text = .(activeHero)
statusAccent.BackgroundColor3 = (activeHero)
resultCount.Text = shown .. .. #ALL_HEROES
order, heroName (ALL_HEROES)
button = (, {
Name = .. heroName,
BackgroundColor3 = Theme.surfaceAlt,
BorderSizePixel = ,
AutoButtonColor = ,
Text = ,
LayoutOrder = order,
Parent = grid,
})
(button, )
(button, Theme.borderSoft, , )
marker = (, {
Name = ,
Size = .(, ),
Position = .(, , , -),
BackgroundColor3 = (heroName),
BorderSizePixel = ,
ZIndex = ,
Parent = button,
})
(marker, )
label = (, {
Name = ,
Size = .(, -, , ),
Position = .(, ),
BackgroundTransparency = ,
Font = Theme.fontBold,
Text = heroName,
TextSize = ,
TextColor3 = Theme.text,
TextXAlignment = .TextXAlignment.Left,
TextTruncate = .TextTruncate.AtEnd,
ZIndex = ,
Parent = button,
})
button.MouseEnter:(()
heroName ~= activeHero
(button, , { BackgroundColor3 = Theme.surfaceHover })
s = button:()
s (s, , { Transparency = })
)
button.MouseLeave:(()
(heroName, button, )
)
button.MouseButton1Click:(()
(heroName)
()
)
heroButtons[heroName] = button
categoryOrder = { , , , , , }
order, catName (categoryOrder)
pill = (, {
Name = .. catName,
Size = .(, , , ),
AutomaticSize = .AutomaticSize.X,
BackgroundColor3 = Theme.surfaceAlt,
BorderSizePixel = ,
AutoButtonColor = ,
Font = Theme.fontBold,
Text = .(catName),
TextSize = ,
TextColor3 = Theme.textMuted,
LayoutOrder = order,
Parent = categoryBar,
})
(pill, )
pillStroke = (pill, Theme.borderSoft, , )
(pill, , , , )
()
selected = (catName == activeCategory)
pill.BackgroundColor3 = selected Theme.accent Theme.surfaceAlt
pill.TextColor3 = selected Theme.backdrop Theme.textMuted
pillStroke.Transparency = selected
pill.MouseEnter:(()
catName ~= activeCategory
(pill, , { BackgroundColor3 = Theme.surfaceHover, TextColor3 = Theme.text })
)
pill.MouseLeave:(paintPill)
pill.MouseButton1Click:(()
activeCategory = catName
name, otherPill (categoryButtons)
selected = (name == activeCategory)
otherPill.BackgroundColor3 = selected Theme.accent Theme.surfaceAlt
otherPill.TextColor3 = selected Theme.backdrop Theme.textMuted
s = otherPill:()
s s.Transparency = selected
()
)
categoryButtons[catName] = pill
()
searchInput:():(()
currentSearch = searchInput.Text
()
)
(visible)
visible == main.Visible
visible
main.Visible =
shadow.Visible =
mainScale.Scale =
(mainScale, , { Scale = })
main.Visible =
shadow.Visible =
closeButton.MouseButton1Click:(()
()
)
main:():(()
shadow.Position = main.Position + .(, )
)
launcher.MouseButton1Click:(()
( main.Visible)
)
launcher.MouseEnter:(()
(launcher, , { BackgroundColor3 = Theme.surfaceAlt, TextColor3 = Theme.text })
(launcherStroke, , { Transparency = })
)
launcher.MouseLeave:(()
(launcher, , { BackgroundColor3 = Theme.surface, TextColor3 = Theme.accent })
(launcherStroke, , { Transparency = })
)
DestructionBattlegrounds._setWindowVisible = setWindowVisible
()
screenGui.Parent = parent
guiRoot = screenGui
()
respawnConnection = localPlayer.CharacterAdded:(()
activeHero activeHero ~=
.()
(activeHero)
)
.(connections, respawnConnection)
keyConnection = userInputService.InputBegan:((input, gameProcessed)
gameProcessed
input.KeyCode == .KeyCode.RightShift
toggle = DestructionBattlegrounds._setWindowVisible
toggle
main = guiRoot guiRoot:()
main
( main.Visible)
)
.(connections, keyConnection)
DestructionBattlegrounds.()
_, connection (connections)
(connection) == connection.Connected
connection:()
.(connections)
DestructionBattlegrounds._setWindowVisible =
guiRoot
guiRoot:()
guiRoot =
()
()
()
(err)
()
((err))
(debug.())
DestructionBattlegrounds.()
(initializeScript, onInitializeError)
.DestructionHub = DestructionBattlegrounds
DestructionBattlegroundsright Shift to hide gui