Run it
Copy the script and paste it into your executor.
tw = :()
uis = :()
rs = :()
plrs = :()
cg = :()
= :()
folderName =
jsonName =
ttfName =
fontUrl =
(folderName) (folderName)
(folderName .. .. ttfName)
fontFile = :(fontUrl)
(folderName .. .. ttfName, fontFile)
assetURL = (folderName .. .. ttfName)
fontJsonData = {
name = ,
faces = {
{
name = ,
weight = ,
style = ,
assetId = assetURL
}
}
}
pathJSON = folderName .. .. jsonName
(pathJSON, :(fontJsonData))
m3Font = Font.((pathJSON))
m3Gray = .(, , )
cp = {
[] = {bg=.(,,), fg=.(,,), pri=.(,,), onpri=.(,,), inact=.(,,), out=.(,,)},
[] = {bg=.(,,), fg=.(,,), pri=.(,,), onpri=.(,,), inact=.(,,), out=.(,,)},
[] = {bg=.(,,), fg=.(,,), pri=.(,,), onpri=.(,,), inact=.(,,), out=.(,,)},
[] = {bg=.(,,), fg=.(,,), pri=.(,,), onpri=.(,,), inact=.(,,), out=.(,,)},
[] = {bg=.(,,), fg=.(,,), pri=.(,,), onpri=.(,,), inact=.(,,), out=.(,,)},
[] = {bg=.(,,), fg=.(,,), pri=.(,,), onpri=.(,,), inact=.(,,), out=.(,,)}
}
curTheme = cp[]
objs = {bg={}, fg={}, pri={}, onpri={}, inact={}, out={}, s_trk={}, s_thm={}, tab_btn={}, tbox={}, icon={}, dlg_bg={}, dlg_fg={}, sl_val={}}
(o, p, v, d)
tw:(o, TweenInfo.(d , .EasingStyle.Exponential, .EasingDirection.Out), {[p] = v}):()
(titleText, sizeX, sizeY)
lib = {}
resizeHandle
old = cg:(titleText )
old old:()
gui = .()
gui.Name = titleText
gui.IgnoreGuiInset =
gui.ResetOnSpawn =
gui.DisplayOrder =
gui.ZIndexBehavior = .ZIndexBehavior.Sibling
gui.Parent = cg
win = .(, gui)
win.Size = .(, sizeX , , sizeY )
win.Position = .(, -sizeX/, , -sizeY/)
win.BackgroundColor3 = curTheme.bg
win.BorderSizePixel =
win.ClipsDescendants =
.(objs.bg, win)
.(, win).CornerRadius = .(, )
top = .(, win)
top.Size = .(, -, , )
top.Position = .(, , , )
top.BackgroundTransparency =
top.Text = titleText
top.TextColor3 = curTheme.fg
top.FontFace = Font.(m3Font.Family, .FontWeight.Medium, .FontStyle.Normal)
top.TextSize =
top.TextXAlignment = .TextXAlignment.Left
.(objs.fg, top)
ctrlCont = .(, win)
ctrlCont.Size = .(, , , )
ctrlCont.AnchorPoint = .(, )
ctrlCont.Position = .(, -, , )
ctrlCont.BackgroundTransparency =
ctrlLayout = .(, ctrlCont)
ctrlLayout.FillDirection = .FillDirection.Horizontal
ctrlLayout.HorizontalAlignment = .HorizontalAlignment.Right
ctrlLayout.SortOrder = .SortOrder.LayoutOrder
ctrlLayout.Padding = .(, )
(name, icon)
btn = .(, ctrlCont)
btn.Name = name
btn.Size = .(, , , )
btn.BackgroundTransparency =
btn.Text =
.(, btn).CornerRadius = .(, )
icn = .(, btn)
icn.Size = .(, , , )
icn.AnchorPoint = .(, )
icn.Position = .(, , , )
icn.BackgroundTransparency =
icn.Image = icon
icn.ImageColor3 = curTheme.out
.(objs.icon, icn)
btn.MouseEnter:(()
(btn, , , )
(btn, , curTheme.out, )
)
btn.MouseLeave:(()
(btn, , , )
)
btn, icn
iconMin =
iconMax =
iconClose =
btnMinMax, icnMinMax = (, iconMin)
btnClose, icnClose = (, iconClose)
isMin =
isMax =
preSize = win.Size
prePos = win.Position
btnMinMax.MouseButton1Click:(()
isMin
isMin =
icnMinMax.Image = iconMin
(win, , preSize, )
resizeHandle resizeHandle.Visible =
isMax preSize = win.Size
isMin =
isMax =
icnMinMax.Image = iconMax
(win, , .(, win.Size.X.Offset, , ), )
resizeHandle resizeHandle.Visible =
)
btnClose.MouseButton1Click:(()
gui:()
)
tabArea = .(, win)
tabArea.Size = .(, , , )
tabArea.Position = .(, , , )
tabArea.BackgroundTransparency =
tabArea.ClipsDescendants =
tabArea.Visible =
sep = .(, tabArea)
sep.Size = .(, , , )
sep.AnchorPoint = .(, )
sep.Position = .(, , , )
sep.BackgroundColor3 = curTheme.inact
sep.BorderSizePixel =
.(objs.inact, sep)
tabListCont = .(, tabArea)
tabListCont.Size = .(, , , )
tabListCont.BackgroundTransparency =
tabListCont.ScrollBarThickness =
tabListCont.CanvasSize = .(, , , )
tabListCont.AutomaticCanvasSize = .AutomaticSize.X
dragTab =
isDraggingTabAction =
dragTabStartX =
dragTabStartCanvasX =
(input)
input.UserInputType.Name:() input.UserInputType.Name:()
dragTab =
isDraggingTabAction =
dragTabStartX = input.Position.X
dragTabStartCanvasX = tabListCont.CanvasPosition.X
tabListCont.InputBegan:(startTabDrag)
uis.InputChanged:((input)
dragTab (input.UserInputType.Name:() input.UserInputType.Name:())
delta = dragTabStartX - input.Position.X
.(delta) >
isDraggingTabAction =
tabListCont.CanvasPosition = .(dragTabStartCanvasX + delta, )
)
uis.InputEnded:((input)
input.UserInputType.Name:() input.UserInputType.Name:()
dragTab =
)
tabListInner = .(, tabListCont)
tabListInner.Size = .(, , , )
tabListInner.BackgroundTransparency =
tabListInner.AutomaticSize = .AutomaticSize.X
tPad = .(, tabListInner)
tPad.PaddingLeft = .(, )
tPad.PaddingRight = .(, )
tabList = .(, tabListInner)
tabList.FillDirection = .FillDirection.Horizontal
tabList.SortOrder = .SortOrder.LayoutOrder
tabList.HorizontalAlignment = .HorizontalAlignment.Center
tabList.Padding = .(, )
indicator = .(, tabListCont)
indicator.Size = .(, , , )
indicator.AnchorPoint = .(, )
indicator.Position = .(, , , )
indicator.BackgroundColor3 = curTheme.pri
.(, indicator).CornerRadius = .(, )
.(objs.pri, indicator)
defaultCont = .(, win)
defaultCont.Size = .(, , , -)
defaultCont.Position = .(, , , )
defaultCont.BackgroundTransparency =
defaultCont.ScrollBarThickness =
defaultCont.CanvasSize = .(, , , )
defaultCont.AutomaticCanvasSize = .AutomaticSize.Y
dPad = .(, defaultCont)
dPad.PaddingLeft = .(, )
dPad.PaddingRight = .(, )
dPad.PaddingBottom = .(, )
dPad.PaddingTop = .(, )
defLayout = .(, defaultCont)
defLayout.SortOrder = .SortOrder.LayoutOrder
defLayout.Padding = .(, )
contClip = .(, win)
contClip.Size = .(, , , -)
contClip.Position = .(, , , )
contClip.BackgroundTransparency =
contClip.ClipsDescendants =
contClip.Visible =
lib.Tabs = {}
lib.TabContainers = {}
lib.ActiveTabIndex =
lib.CurrentBuildContainer = defaultCont
lib.UseTabs =
lib.ElementCounter =
lib:(name)
cp[name]
curTheme = cp[name]
d =
_,v (objs.bg) (v, , curTheme.bg, d)
_,v (objs.fg) (v, , curTheme.fg, d)
_,v (objs.pri) (v, , curTheme.pri, d)
_,v (objs.onpri) (v, , curTheme.onpri, d)
_,v (objs.inact) (v, , curTheme.inact, d)
_,x (objs.s_trk) (x.obj, , x.state curTheme.pri curTheme.inact, d)
_,x (objs.s_thm) (x.obj, , x.state curTheme.onpri curTheme.out, d)
_,x (objs.tab_btn)
(x.lbl, , x.active curTheme.pri m3Gray, d)
x.icon (x.icon, , x.active curTheme.pri m3Gray, d)
_, icn (objs.icon) (icn, , curTheme.out, d)
_, v (objs.sl_val) (v, , curTheme.pri, d)
_,v (objs.dlg_bg) (v, , curTheme.bg:(curTheme.pri, ), d)
_,v (objs.dlg_fg) (v, , curTheme.fg, d)
_, tb (objs.tbox)
(tb.lbl, , tb.focused curTheme.pri curTheme.out, d)
(tb.box, , curTheme.fg, d)
(tb.line, , tb.focused curTheme.pri curTheme.out, d)
(tb.bg, , curTheme.inact, d)
lib:(txt)
targetIdx =
i, tData (lib.Tabs)
tData.btn.Text == txt targetIdx = i
targetIdx == lib.ActiveTabIndex
dir = (targetIdx > lib.ActiveTabIndex) -
lib.ActiveTabIndex == dir =
oldCont = (lib.ActiveTabIndex > ) lib.TabContainers[lib.ActiveTabIndex] defaultCont
newCont = lib.TabContainers[targetIdx]
i, tData (lib.Tabs)
btn = tData.btn
i == targetIdx
tData.data.active =
(tData.data.lbl, , curTheme.pri, )
tData.data.icon (tData.data.icon, , curTheme.pri, )
.(()
rs.RenderStepped:()
rs.RenderStepped:()
btnCenterX = (btn.AbsolutePosition.X - tabListCont.AbsolutePosition.X) + tabListCont.CanvasPosition.X + (btn.AbsoluteSize.X / )
contentWidth = tData.data.lbl.TextBounds.X
tw:(indicator, TweenInfo.(, .EasingStyle.Exponential, .EasingDirection.Out), {
Position = .(, btnCenterX, , ),
Size = .(, contentWidth, , )
}):()
)
tData.data.active =
(tData.data.lbl, , m3Gray, )
tData.data.icon (tData.data.icon, , m3Gray, )
oldCont dir ~= oldCont ~= defaultCont
newCont.Position = .(dir, dir * , , )
newCont.Visible =
(oldCont, , .(-dir, -dir * , , ), )
(newCont, , .(, , , ), )
savedOld = oldCont
.(, ()
lib.TabContainers[lib.ActiveTabIndex] ~= savedOld savedOld.Visible =
)
newCont.Position = .(, , , )
newCont.Visible =
oldCont oldCont ~= defaultCont oldCont.Visible =
lib.ActiveTabIndex = targetIdx
lib:(txt, iconId)
lib.UseTabs
lib.UseTabs =
tabArea.Visible =
contClip.Visible =
defaultCont.Visible =
btn = .(, tabListInner)
btn.BackgroundTransparency =
btn.FontFace = m3Font
btn.Text = txt
btn.TextSize =
btn.TextTransparency =
btn.TextColor3 = m3Gray
btn.Size = .(, , , )
btn.AutomaticSize = .AutomaticSize.X
uip = .(, btn)
uip.PaddingLeft = .(, )
uip.PaddingRight = .(, )
contentLayout = .(, btn)
contentLayout.FillDirection = .FillDirection.Horizontal
contentLayout.HorizontalAlignment = .HorizontalAlignment.Center
contentLayout.VerticalAlignment = .VerticalAlignment.Center
contentLayout.SortOrder = .SortOrder.LayoutOrder
contentLayout.Padding = .(, )
iconImg =
iconId iconId ~=
iconImg = .(, btn)
iconImg.BackgroundTransparency =
iconImg.Image = iconId
iconImg.Size = .(, , , )
iconImg.ImageColor3 = m3Gray
iconImg.LayoutOrder =
txtLbl = .(, btn)
txtLbl.BackgroundTransparency =
txtLbl.Text = txt
txtLbl.FontFace = m3Font
txtLbl.TextSize =
txtLbl.TextColor3 = m3Gray
txtLbl.AutomaticSize = .AutomaticSize.XY
txtLbl.LayoutOrder =
tData = {obj = btn, active = , icon = iconImg, lbl = txtLbl}
.(objs.tab_btn, tData)
c = .(, contClip)
c.Size = .(, , , )
c.BackgroundTransparency =
c.ScrollBarThickness =
c.CanvasSize = .(, , , )
c.AutomaticCanvasSize = .AutomaticSize.Y
c.Visible =
cPad = .(, c)
cPad.PaddingLeft = .(, )
cPad.PaddingRight = .(, )
cPad.PaddingBottom = .(, )
cPad.PaddingTop = .(, )
cLayout = .(, c)
cLayout.SortOrder = .SortOrder.LayoutOrder
cLayout.Padding = .(, )
.(lib.Tabs, {btn = btn, data = tData})
.(lib.TabContainers, c)
lib.CurrentBuildContainer = c
btn.InputBegan:(startTabDrag)
btn.MouseButton1Click:(()
isDraggingTabAction
lib:(txt)
)
#lib.Tabs == lib:(txt)
{
SetText = (self, newTxt)
btn.Text = newTxt
txtLbl.Text = newTxt
lib.ActiveTabIndex > lib.Tabs[lib.ActiveTabIndex].btn == btn
lib:(newTxt)
}
lib:()
lib.ElementCounter +=
div = .(, lib.CurrentBuildContainer)
div.Size = .(, , , )
div.LayoutOrder = lib.ElementCounter
div.BackgroundColor3 = curTheme.inact
div.BorderSizePixel =
.(objs.inact, div)
lib:(labelTxt, cb)
lib.ElementCounter +=
frame = .(, lib.CurrentBuildContainer)
frame.LayoutOrder = lib.ElementCounter
frame.Size = .(, , , )
frame.BackgroundColor3 = curTheme.inact
frame.BorderSizePixel =
.(, frame).CornerRadius = .(, )
.(objs.inact, frame)
flatBot = .(, frame)
flatBot.Size = .(, , , )
flatBot.Position = .(, , , -)
flatBot.BackgroundColor3 = curTheme.inact
flatBot.BorderSizePixel =
.(objs.inact, flatBot)
lbl = .(, frame)
lbl.Size = .(, -, , )
lbl.Position = .(, , , )
lbl.BackgroundTransparency =
lbl.Text = labelTxt
lbl.TextColor3 = curTheme.out
lbl.FontFace = m3Font
lbl.TextSize =
lbl.TextXAlignment = .TextXAlignment.Left
tbox = .(, frame)
tbox.Size = .(, -, , )
tbox.Position = .(, , , )
tbox.BackgroundTransparency =
tbox.Text =
tbox.PlaceholderText =
tbox.TextColor3 = curTheme.fg
tbox.FontFace = m3Font
tbox.TextSize =
tbox.TextXAlignment = .TextXAlignment.Left
tbox.ClearTextOnFocus =
botLine = .(, frame)
botLine.Size = .(, , , )
botLine.AnchorPoint = .(, )
botLine.Position = .(, , , )
botLine.BackgroundColor3 = curTheme.out
botLine.BorderSizePixel =
tbData = {box = tbox, line = botLine, lbl = lbl, bg = frame, focused = }
.(objs.tbox, tbData)
tbox.Focused:(()
tbData.focused =
(botLine, , curTheme.pri, )
(lbl, , curTheme.pri, )
tw:(botLine, TweenInfo.(, .EasingStyle.Exponential), {Size = .(, , , )}):()
)
tbox.FocusLost:((enter)
tbData.focused =
(botLine, , curTheme.out, )
(lbl, , curTheme.out, )
tw:(botLine, TweenInfo.(, .EasingStyle.Exponential), {Size = .(, , , )}):()
cb (tbox.Text, enter)
)
{
SetText = (self, newTxt)
lbl.Text = newTxt
,
SetValue = (self, newVal)
tbox.Text = (newVal)
}
lib:(txt, cb, wdth)
lib.ElementCounter +=
container = .(, lib.CurrentBuildContainer)
container.LayoutOrder = lib.ElementCounter
container.Size = .(, , , )
container.BackgroundTransparency =
b = .(, container)
wdth
b.Size = .(, wdth, , )
b.AnchorPoint = .(, )
b.Position = .(, , , )
b.Size = .(, , , )
b.Position = .(, , , )
b.BackgroundColor3 = curTheme.pri
b.Text =
b.AutoButtonColor =
.(objs.pri, b)
.(, b).CornerRadius = .(, )
txl = .(, b)
txl.Size = .(, , , )
txl.BackgroundTransparency =
txl.Text = txt
txl.TextColor3 = curTheme.onpri
txl.FontFace = m3Font
txl.TextSize =
.(objs.onpri, txl)
b.MouseEnter:(() (b, , curTheme.fg, ) )
b.MouseLeave:(() (b, , curTheme.pri, ) )
b.MouseButton1Click:(()
cb ()
)
{
SetText = (self, newTxt)
txl.Text = newTxt
}
lib:(txt, def, cb)
lib.ElementCounter +=
st = def
r = .(, lib.CurrentBuildContainer)
r.LayoutOrder = lib.ElementCounter
r.Size = .(, , , )
r.BackgroundTransparency =
l = .(, r)
l.Size = .(, -, , )
l.BackgroundTransparency =
l.Text = txt
l.TextColor3 = curTheme.fg
l.FontFace = m3Font
l.TextSize =
l.TextXAlignment = .TextXAlignment.Left
.(objs.fg, l)
trk = .(, r)
trk.Size = .(, , , )
trk.AnchorPoint = .(, )
trk.Position = .(, , , )
trk.BackgroundColor3 = st curTheme.pri curTheme.inact
trk.Text =
trk.AutoButtonColor =
.(, trk).CornerRadius = .(, )
tData = {obj=trk, state=st}
.(objs.s_trk, tData)
thm = .(, trk)
thm.AnchorPoint = .(, )
thm.Size = st .(, , , ) .(, , , )
thm.Position = st .(, , , ) .(, , , )
thm.BackgroundColor3 = st curTheme.onpri curTheme.out
.(, thm).CornerRadius = .(, )
thData = {obj=thm, state=st}
.(objs.s_thm, thData)
trk.MouseButton1Click:(()
st = st
tData.state = st; thData.state = st
(trk, , st curTheme.pri curTheme.inact, )
tw:(thm, TweenInfo.(, .EasingStyle.Exponential, .EasingDirection.Out), {
Size = st .(, , , ) .(, , , ),
Position = st .(, , , ) .(, , , ),
BackgroundColor3 = st curTheme.onpri curTheme.out
}):()
cb (st)
)
{
SetText = (self, newTxt)
l.Text = newTxt
,
SetValue = (self, newState)
st == newState
st = newState
tData.state = st; thData.state = st
(trk, , st curTheme.pri curTheme.inact, )
tw:(thm, TweenInfo.(, .EasingStyle.Exponential, .EasingDirection.Out), {
Size = st .(, , , ) .(, , , ),
Position = st .(, , , ) .(, , , ),
BackgroundColor3 = st curTheme.onpri curTheme.out
}):()
cb (st)
}
lib:(txt, m, mx, df, lblval, cb)
lib.ElementCounter +=
v = .(df m, m, mx)
drag =
r = .(, lib.CurrentBuildContainer)
r.LayoutOrder = lib.ElementCounter
r.Size = .(, , , )
r.BackgroundTransparency =
vl = .(, r)
vl.Size = .(, -, , )
vl.BackgroundTransparency =
vl.Text = txt
vl.TextColor3 = curTheme.fg
vl.FontFace = m3Font
vl.TextSize =
vl.TextXAlignment = .TextXAlignment.Left
.(objs.fg, vl)
valLbl = .(, r)
valLbl.Size = .(, , , )
valLbl.AnchorPoint = .(, )
valLbl.Position = .(, , , )
valLbl.BackgroundTransparency =
valLbl.Visible = lblval
valLbl.Text = .(, v)
valLbl.TextColor3 = curTheme.pri
valLbl.FontFace = m3Font
valLbl.TextSize =
valLbl.TextXAlignment = .TextXAlignment.Right
.(objs.sl_val, valLbl)
hb = .(, r)
hb.Size = .(, , , )
hb.Position = .(, , , )
hb.BackgroundTransparency =
hb.Text =
act = .(, hb)
act.AnchorPoint = .(, )
act.Position = .(, , , )
act.BackgroundColor3 = curTheme.pri
act.BorderSizePixel =
actuic = .(, act)
actuic.CornerRadius = .(, )
actuic.TopRightRadius = .(, )
actuic.BottomRightRadius = .(, )
.(objs.pri, act)
inact = .(, hb)
inact.AnchorPoint = .(, )
inact.Position = .(, , , )
inact.BackgroundColor3 = curTheme.inact
inact.BorderSizePixel =
inactuic = .(, inact)
inactuic.CornerRadius = .(, )
inactuic.TopLeftRadius = .(, )
inactuic.BottomLeftRadius = .(, )
.(objs.inact, inact)
dot = .(, inact)
dot.Size = .(, , , )
dot.AnchorPoint = .(, )
dot.Position = .(, -, , )
dot.BackgroundColor3 = curTheme.pri
.(, dot).CornerRadius = .(, )
.(objs.pri, dot)
thm = .(, hb)
thm.Size = .(, , , )
thm.AnchorPoint = .(, )
thm.BackgroundColor3 = curTheme.pri
.(, thm).CornerRadius = .(, )
.(objs.pri, thm)
g =
(inp)
pc = .((inp.Position.X - hb.AbsolutePosition.X) / hb.AbsoluteSize.X, , )
v = m + ((mx - m) * pc)
valLbl.Text = .(, v)
tx = hb.AbsoluteSize.X * pc
act.Size = .(, .(, tx - g), , )
inact.Size = .(, .(, hb.AbsoluteSize.X - tx - g), , )
thm.Position = .(, tx, , )
cb (v)
.(()
p = (v - m) / (mx - m)
tX = hb.AbsoluteSize.X * p
act.Size = .(, .(, tX-g), , )
inact.Size = .(, .(, hb.AbsoluteSize.X-tX-g), , )
thm.Position = .(, tX, , )
)
hb:():(()
p = (v - m) / (mx - m)
tX = hb.AbsoluteSize.X * p
act.Size = .(, .(, tX-g), , )
inact.Size = .(, .(, hb.AbsoluteSize.X-tX-g), , )
thm.Position = .(, tX, , )
)
hb.InputBegan:((i)
i.UserInputType.Name:() i.UserInputType.Name:()
drag = ; (i)
)
uis.InputChanged:((i)
drag (i.UserInputType.Name:() i.UserInputType.Name:())
(i)
)
uis.InputEnded:((i)
i.UserInputType.Name:() i.UserInputType.Name:()
drag =
)
{
SetText = (self, newTxt)
vl.Text = newTxt
,
SetValue = (self, newVal)
v = .(newVal, m, mx)
valLbl.Text = .(, v)
p = (v - m) / (mx - m)
tX = hb.AbsoluteSize.X * p
act.Size = .(, .(, tX - g), , )
inact.Size = .(, .(, hb.AbsoluteSize.X - tX - g), , )
thm.Position = .(, tX, , )
cb (v)
}
lib:(txt, options, defaultIdx, cb)
lib.ElementCounter +=
selectedIdx = defaultIdx
isOpen =
r = .(, lib.CurrentBuildContainer)
r.LayoutOrder = lib.ElementCounter
r.Size = .(, , , )
r.BackgroundColor3 = curTheme.inact
r.BorderSizePixel =
.(, r).CornerRadius = .(, )
.(objs.inact, r)
lbl = .(, r)
lbl.Size = .(, -, , )
lbl.Position = .(, , , )
lbl.BackgroundTransparency =
lbl.Text = txt
lbl.TextColor3 = curTheme.out
lbl.FontFace = m3Font
lbl.TextSize =
lbl.TextXAlignment = .TextXAlignment.Left
valLbl = .(, r)
valLbl.Size = .(, -, , )
valLbl.Position = .(, , , )
valLbl.BackgroundTransparency =
valLbl.Text = options[selectedIdx]
valLbl.TextColor3 = curTheme.fg
valLbl.FontFace = m3Font
valLbl.TextSize =
valLbl.TextXAlignment = .TextXAlignment.Left
.(objs.fg, valLbl)
icn = .(, r)
icn.Size = .(, , , )
icn.AnchorPoint = .(, )
icn.Position = .(, -, , )
icn.BackgroundTransparency =
icn.Image =
icn.ImageColor3 = curTheme.out
.(objs.icon, icn)
btn = .(, r)
btn.Size = .(, , , )
btn.BackgroundTransparency =
btn.Text =
botLine = .(, r)
botLine.Size = .(, , , )
botLine.AnchorPoint = .(, )
botLine.Position = .(, , , )
botLine.BackgroundColor3 = curTheme.out
botLine.BorderSizePixel =
menuObj =
trackConn =
closeOverlay =
()
isOpen
isOpen =
tw:(icn, TweenInfo.(, .EasingStyle.Exponential), {Rotation = }):()
(botLine, , curTheme.out, )
(lbl, , curTheme.out, )
trackConn trackConn:()
closeOverlay
closeOverlay:()
closeOverlay =
menuObj
(menuObj, , , )
_, child (menuObj:())
child:()
(child, , , )
.(, ()
menuObj menuObj:() menuObj =
)
btn.MouseButton1Click:(()
isOpen
()
isOpen =
tw:(icn, TweenInfo.(, .EasingStyle.Exponential), {Rotation = }):()
(botLine, , curTheme.pri, )
(lbl, , curTheme.pri, )
closeOverlay = .(, gui)
closeOverlay.Size = .(, , , )
closeOverlay.BackgroundTransparency =
closeOverlay.Text =
closeOverlay.ZIndex =
closeOverlay.MouseButton1Click:(closeMenu)
menuObj = .(, gui)
menuObj.Size = .(, r.AbsoluteSize.X, , .(#options * , ))
menuObj.Position = .(, r.AbsolutePosition.X, , r.AbsolutePosition.Y + r.AbsoluteSize.Y + )
menuObj.BackgroundColor3 = curTheme.bg:(curTheme.pri, )
menuObj.BorderSizePixel =
menuObj.ZIndex =
menuObj.ScrollBarThickness =
menuObj.ScrollBarImageColor3 = curTheme.out
menuObj.BackgroundTransparency =
menuObj.ClipsDescendants =
menuObj.AutomaticCanvasSize = .AutomaticSize.Y
menuObj.CanvasSize = .(, , , )
.(, menuObj).CornerRadius = .(, )
.(objs.dlg_bg, menuObj)
trackConn = rs.RenderStepped:(()
isOpen menuObj trackConn:()
menuObj.Position = .(, r.AbsolutePosition.X, , r.AbsolutePosition.Y + r.AbsoluteSize.Y + )
)
mLayout = .(, menuObj)
mLayout.SortOrder = .SortOrder.LayoutOrder
i, opt (options)
optBtn = .(, menuObj)
optBtn.Size = .(, , , )
optBtn.BackgroundTransparency =
optBtn.Text = opt
optBtn.FontFace = m3Font
optBtn.TextSize =
optBtn.TextColor3 = curTheme.fg
optBtn.TextXAlignment = .TextXAlignment.Left
optBtn.LayoutOrder = i
optBtn.ZIndex =
optBtn.TextTransparency =
.(objs.dlg_fg, optBtn)
p = .(, optBtn)
p.PaddingLeft = .(, )
p.PaddingRight = .(, )
optBtn.MouseEnter:(() (optBtn, , , ) )
optBtn.MouseLeave:(() (optBtn, , , ) )
optBtn.MouseButton1Click:(()
selectedIdx = i
valLbl.Text = opt
cb (opt)
()
)
tw:(menuObj, TweenInfo.(, .EasingStyle.Exponential, .EasingDirection.Out), {BackgroundTransparency = }):()
_, child (menuObj:())
child:()
(child, , , )
)
{
SetText = (self, newTxt)
lbl.Text = newTxt
,
SetValue = (self, newOpt)
valLbl.Text = newOpt
cb (newOpt)
,
Refresh = (self, newOptions, newDefaultIdx)
currentOptions = newOptions {}
selectedIdx = newDefaultIdx
valLbl.Text = currentOptions[selectedIdx]
isOpen ()
}
lib:(title, desc, confirmText, cancelText, confirmCb, cancelCb)
overlay = .(, gui)
overlay.Size = .(, , , )
overlay.BackgroundColor3 = .(, , )
overlay.BackgroundTransparency =
overlay.Active =
overlay.Visible =
dlgBox = .(, overlay)
dlgBox.Size = .(, , , )
dlgBox.AnchorPoint = .(, )
dlgBox.Position = .(, , , )
dlgBox.BackgroundColor3 = curTheme.bg:(curTheme.pri, )
dlgBox.AutomaticSize = .AutomaticSize.Y
dlgBox.BackgroundTransparency =
.(objs.dlg_bg, dlgBox)
.(, dlgBox).CornerRadius = .(, )
dPad = .(, dlgBox)
dPad.PaddingLeft = .(, )
dPad.PaddingRight = .(, )
dPad.PaddingTop = .(, )
dPad.PaddingBottom = .(, )
dLayout = .(, dlgBox)
dLayout.SortOrder = .SortOrder.LayoutOrder
dLayout.Padding = .(, )
dTitle = .(, dlgBox)
dTitle.Size = .(, , , )
dTitle.AutomaticSize = .AutomaticSize.Y
dTitle.BackgroundTransparency =
dTitle.Text = title
dTitle.TextColor3 = curTheme.fg
dTitle.FontFace = Font.(m3Font.Family, .FontWeight.Medium, .FontStyle.Normal)
dTitle.TextSize =
dTitle.TextXAlignment = .TextXAlignment.Left
dTitle.TextWrapped =
dTitle.TextTransparency =
dTitle.LayoutOrder =
.(objs.dlg_fg, dTitle)
dDesc = .(, dlgBox)
dDesc.Size = .(, , , )
dDesc.AutomaticSize = .AutomaticSize.Y
dDesc.BackgroundTransparency =
dDesc.Text = desc
dDesc.TextColor3 = curTheme.out
dDesc.FontFace = m3Font
dDesc.TextSize =
dDesc.TextXAlignment = .TextXAlignment.Left
dDesc.TextWrapped =
dDesc.TextTransparency =
dDesc.LayoutOrder =
actCont = .(, dlgBox)
actCont.Size = .(, , , )
actCont.BackgroundTransparency =
actCont.LayoutOrder =
actLayout = .(, actCont)
actLayout.FillDirection = .FillDirection.Horizontal
actLayout.HorizontalAlignment = .HorizontalAlignment.Right
actLayout.VerticalAlignment = .VerticalAlignment.Center
actLayout.SortOrder = .SortOrder.LayoutOrder
actLayout.Padding = .(, )
()
(overlay, , , )
tw:(dlgBox, TweenInfo.(, .EasingStyle.Exponential, .EasingDirection.Out), {
Position = .(, , , ),
BackgroundTransparency =
}):()
(dTitle, , , )
(dDesc, , , )
_, b (actCont:())
b:() (b, , , )
.(, ()
overlay:()
)
(txt, isPrimary, cb)
btn = .(, actCont)
btn.BackgroundTransparency =
btn.Text = txt
btn.FontFace = Font.(m3Font.Family, .FontWeight.Medium, .FontStyle.Normal)
btn.TextSize =
btn.TextColor3 = curTheme.pri
btn.Size = .(, , , )
btn.AutomaticSize = .AutomaticSize.X
btn.TextTransparency =
.(objs.pri, btn)
.(, btn).CornerRadius = .(, )
padding = .(, btn)
padding.PaddingLeft = .(, )
padding.PaddingRight = .(, )
btn.MouseEnter:(()
(btn, , , )
(btn, , curTheme.pri, )
)
btn.MouseLeave:(()
(btn, , , )
)
btn.MouseButton1Click:(()
()
cb ()
)
cancelText (cancelText, , cancelCb)
(confirmText , , confirmCb)
(overlay, , , )
tw:(dlgBox, TweenInfo.(, .EasingStyle.Exponential, .EasingDirection.Out), {
Position = .(, , , ),
BackgroundTransparency =
}):()
(dTitle, , , )
(dDesc, , , )
_, b (actCont:())
b:() (b, , , )
resizeHandle = .(, win)
resizeHandle.Size = .(, , , )
resizeHandle.AnchorPoint = .(, )
resizeHandle.Position = .(, , , )
resizeHandle.BackgroundTransparency =
resizeHandle.Text =
resizeHandle.ZIndex =
resizing =
resDragStart, resStartSize
resizeHandle.InputBegan:((i)
isMin isMax
i.UserInputType.Name:() i.UserInputType.Name:()
resizing =
resDragStart = i.Position
resStartSize = win.AbsoluteSize
)
uis.InputChanged:((i)
resizing (i.UserInputType.Name:() i.UserInputType.Name:())
delta = i.Position - resDragStart
newX = .(, resStartSize.X + delta.X)
newY = .(, resStartSize.Y + delta.Y)
win.Size = .(, newX, , newY)
)
uis.InputEnded:((i)
i.UserInputType.Name:() i.UserInputType.Name:()
resizing =
)
win:():(()
lib.ActiveTabIndex > lib.Tabs[lib.ActiveTabIndex]
.(()
rs.RenderStepped:()
rs.RenderStepped:()
btn = lib.Tabs[lib.ActiveTabIndex].btn
btnCenterX = (btn.AbsolutePosition.X - tabListCont.AbsolutePosition.X) + tabListCont.CanvasPosition.X + (btn.AbsoluteSize.X / )
contentWidth = lib.Tabs[lib.ActiveTabIndex].data.lbl.TextBounds.X
indicator.Position = .(, btnCenterX, , )
indicator.Size = .(, contentWidth, , )
)
)
d, di, ds, sp
win.InputBegan:((i)
i.UserInputType.Name:() i.UserInputType.Name:()
isMax
d = ; ds = i.Position; sp = win.Position
)
win.InputEnded:((i)
i.UserInputType.Name:() i.UserInputType.Name:()
d =
)
uis.InputChanged:((i)
i.UserInputType.Name:() i.UserInputType.Name:()
di = i
)
rs.RenderStepped:(()
d di resizing
win.Position = .(sp.X.Scale, sp.X.Offset + (di.Position - ds).X, sp.Y.Scale, sp.Y.Offset + (di.Position - ds).Y)
)
(lib, {
__index = {
SetTitle = (self, newTitle)
top.Text = newTitle
}
})
ui = (, , )
ui:(, )
aimbotSwitch = ui:(, , (state)
(, state)
)
targetPartDrop = ui:(, {, , , }, , (selected)
(, selected)
)
ui:()
fovSlider = ui:(, , , , , (value)
(, value)
)
targetBox = ui:(, (text, enterPressed)
enterPressed
(, text)
)
ui:()
updateBtn = ui:(, ()
ui:(
,
,
,
,
()
()
aimbotSwitch:()
aimbotSwitch:()
targetPartDrop:()
targetPartDrop:()
fovSlider:()
fovSlider:()
targetBox:()
targetBox:()
,
()
()
)
, )
ui:(, )
ui:(, , (state)
(, state)
)
ui:(, {, , , }, , (selected)
(, selected)
)
ui:()
ui:(, , , , , (value)
(, value)
)
ui:(, , , , , (value)
(, value)
)
ui:()
ui:(, ()
ui:()
()
)
ui:(, ()
ui:()
()
)
ui:(, ()
ui:()
()
)
ui:(, ()
ui:()
()
)
ui:(, ()
ui:()
()
)
ui:(, ()
ui:()
()
)
i = ,
ui:( .. i)
ui:( .. i, ()
( .. i)
)
ui:( .. i, (text, enter)
enter ( .. i .. , text)
)
Loads code from the internet. It downloads more code when it runs (loadstring + HttpGet), which can change after it was posted. From: github.com.
Deprecated. Use the new one: • https://fiangg20.github.io/nox/ • https://scriptblox.com/script/Universal-Script-Baselined-Example-UI-Library-223058 Nox - Elevate Your Roblox UI Development Tired of clunky, rigid, and uninspiring user interfaces ruining the experience of your Roblox projects? That is precisely why Nox was created. Nox is a Material You and Material 3 inspired custom UI library tailored specifically for Roblox scripters and developers. Its core philosophy is simple: to provide a framework that delivers incredibly smooth transitions, dynamic theming, and exceptional developer flexibility, all without sacrificing ease of use. Key Features and Capabilities: Fluid, Premium Animations: Utilizing exponential easing styles and CanvasGroup elements, interacting with menus, switching tabs, and expanding dropdowns feels exactly like using a high-end modern application. Dynamic Palette Theming: Seamlessly switch between multiple meticulously designed presets—such as Ocean Blue, Emerald Green, or Pitch Black—with a single function call, instantly restyling the entire interface. Component Versatility: Build highly adaptable components, including auto-scrolling dropdowns

Universal