Run it
Copy the script and paste it into your executor.
RunService = :()
input = :()
mouse = :().LocalPlayer:()
inset = :():()
()
util = {}
util.(, options, children)
instance = .()
instance:() instance.BorderSizePixel =
instance:()
instance.TextXAlignment = .TextXAlignment.Left
instance.TextYAlignment = .TextYAlignment.Top
instance:() instance:()
instance.AutoButtonColor =
instance:() instance.Text =
i,v (options)
instance[i] = v
children instance
toReturn = {instance}
i,v (children)
v.Parent = instance
.(toReturn, v)
(toReturn)
util.(parent, children)
toReturn = {}
_,child (children)
child.Parent = parent
.(toReturn, child)
(toReturn)
TweenService = :()
util.(instance, properties, duration)
TweenService:(instance, TweenInfo.(duration, .EasingStyle.Linear), properties):()
library = { values = {} }
library.__index = library
tab = {}
tab.__index = tab
panel = {}
panel.__index = panel
interactable = {}
interactable.__index = interactable
theme = ().theme {
BackColor = .(, , ),
TopBar = .(, , ),
UpperContainer = .(, , ),
InnerContainer = .(, , ),
InteractableBackground = .(, , ),
InteractableOutline = .(, , ),
Accent = .(, , ),
NotSelectedTab = .(, , ),
TextColor = .(,,),
SubTextColor = .(,,),
ButtonTop = .(, , ),
ButtonBottom = .(, , ),
}
library.(title, version, id, position, size)
position = position .(, , , )
size = size .(, , , )
ScreenGui,MasterContainer = util.(, { Parent = :(), Name=id }, {
util.(, {
Size = size,
Position = position,
BackgroundColor3 = theme.BackColor,
ClipsDescendants = ,
Name =
})
})
preexisting = ()[id]
preexisting
i,v (preexisting.connections)
v:()
preexisting.GUI:()
connections = {}
()[id] = {
connections = connections,
GUI = ScreenGui
}
TipBar = util.(, {
Parent = MasterContainer,
Size = .(,,,),
Position = .(,,,-),
ZIndex = ,
TextColor3 = theme.TextColor,
Font = .Font.Gotham,
TextSize = ,
BackgroundColor3 = theme.BackColor,
})
TopBarContainer, ContentContainer = util.(MasterContainer, {
util.(, {
Size = .(, , , ),
BackgroundColor3 = theme.TopBar,
Name =
}),
util.(, {
Size = .(, , , -),
Position = .(,,,),
BackgroundTransparency = ,
Name =
})
})
TopBarTitle = util.(TopBarContainer, {
util.(, {
Text = title,
TextColor3 = theme.TextColor,
TextSize = ,
Font = .Font.GothamBold,
Position = .(, , , ),
Name =
}),
})
TopBarVersion = util.(, {
Parent = TopBarContainer,
Text = version,
TextColor3 = theme.SubTextColor,
TextXAlignment = .TextXAlignment.Right,
TextSize = ,
Font = .Font.Gotham,
Position = .(,-,,),
Name =
})
TabSelectContainer, TabContentContainer = util.(ContentContainer, {
util.(, {
Size = .(, , , -),
Position = .(, , , ),
BackgroundColor3 = theme.UpperContainer,
Name =
}, {
util.(, {
SortOrder = .SortOrder.LayoutOrder,
Padding = .(,),
HorizontalAlignment = .HorizontalAlignment.Center,
}),
util.(, {
BackgroundTransparency = ,
LayoutOrder = ,
Size = .(,,,-),
Name =
})
}),
util.(, {
Size = .(, -, , -),
Position = .(, , , ),
BackgroundColor3 = theme.UpperContainer,
Name =
})
})
isDragging =
draggingOffset
.(connections, input.InputBegan:((inp, gpe)
inp.UserInputType == .UserInputType.MouseButton1 gpe
mouse = input:() - inset
topLeft = MasterContainer.AbsolutePosition
bottomRight = topLeft + .(MasterContainer.AbsoluteSize.X, )
mouse.X > topLeft.X mouse.X < bottomRight.X
mouse.Y > topLeft.Y mouse.Y < bottomRight.Y
isDragging =
draggingOffset = mouse - topLeft
))
.(connections, input.InputEnded:((inp, gpe)
isDragging inp.UserInputType == .UserInputType.MouseButton1 gpe
isDragging =
))
.(connections, input.InputChanged:((inp, gpe)
isDragging inp.UserInputType == .UserInputType.MouseMovement gpe
guiPos = input:() - draggingOffset - inset
MasterContainer.Position = .(, guiPos.X, , guiPos.Y)
))
externalClickFunctions = {}
(f) .(externalClickFunctions, f)
MasterContainer.InputBegan:((inp, gpe)
inp.UserInputType == .UserInputType.MouseButton1 gpe
_,f (externalClickFunctions) (inp)
)
({
_connections = connections,
size = size,
keybind = .KeyCode.RightControl,
visible = ,
tabs = {},
selectedTab = ,
MasterContainer = MasterContainer,
TopBarContainer = TopBarContainer,
ContentContainer = ContentContainer,
TabSelectContainer = TabSelectContainer,
TabContentContainer = TabContentContainer,
TipBar = TipBar,
TopBarTitle = TopBarTitle,
TopBarVersion = TopBarVersion,
registerExternalClickFunction = registerExternalClickFunction,
}, library):()
library:(title, desc)
newTab = tab.(self, title, desc, #self.tabs+)
.(self.tabs, newTab)
#self.tabs == newTab:()
(newTab.panels)
library:(folder, fileExtension)
(folder) (folder)
updateList
(config)
_,tabTable (self.tabs)
tab = tabTable.title
panelNum,panelTable (tabTable.panels)
seperator, seperatorTable (panelTable.seperators)
element,setElement (seperatorTable)
config[tab]
config[tab][panelNum]
config[tab][panelNum][seperator]
setTo = config[tab][panelNum][seperator][element]
setTo ~=
(setTo)
PanelOne, PanelTwo = self:(, )
Section = PanelOne:()
configName =
Section:({
title = ,
desc = ,
placeholder = configName,
callback = (t)
configName = t
})
Section:({
title = ,
desc = ..folder,
callback = ()
self.values.Configs =
(folder....configName....fileExtension, :():(self.values))
()
})
Section = PanelTwo:()
PanelTwo:({
title = ,
desc = ..folder,
callback = () ()
})
ConfigBox = util.(, {
Parent = PanelTwo.PanelContainer,
Size = .(, -, , ),
LayoutOrder = #PanelTwo.PanelContainer:(),
BackgroundColor3 = theme.InteractableOutline,
ClipsDescendants = ,
}, {
util.(, {
LayoutOrder = ,
Size = .(, -, , -),
Position = .(,,,),
BackgroundColor3 = theme.InteractableBackground
}),
util.(, {
SortOrder = .SortOrder.LayoutOrder,
Padding = .(,),
HorizontalAlignment = .HorizontalAlignment.Center,
})
})
ConfigTemplate = util.(, {
LayoutOrder = ,
Size = .(,,,),
BackgroundColor3 = theme.InteractableOutline
}, {
util.(, {
Size = .(, -, , -),
Position = .(, , , ),
BackgroundColor3 = theme.InteractableBackground,
}),
util.(, {
Text = ,
TextColor3 = theme.SubTextColor,
TextSize = ,
Font = .Font.Gotham,
Size = .(,,,),
Position = .(, , , ),
TextYAlignment = .TextYAlignment.Center,
})
})
configElements = {}
updateList = ()
i,v (configElements) v:()
_,file ((folder))
file = .(file, )[]
name, extension = (.(file, ))
extension == fileExtension
config = ConfigTemplate:()
.(configElements, config)
config.Parent = ConfigBox
config:().Text = name
config.MouseButton1Click:(()
(:():((folder....file)))
)
config.MouseEnter:(()
util.(config, { BackgroundColor3 = theme.Accent }, )
)
config.MouseLeave:(()
util.(config, { BackgroundColor3 = theme.InteractableOutline }, )
)
()
ConfigBox.MouseEnter:(()
PanelOne:()
)
ConfigBox.MouseLeave:(()
PanelOne:()
)
library:(newtitle)
self.TopBarTitle.Text = newtitle
library:(newversion)
self.TopBarVersion.Text = newversion
library:(yesno)
self.visible = (yesno == ) ( self.visible) yesno
self.visible self:() self:()
self.visible
library:()
self.MasterContainer:(self.size, , , , )
library:()
self.MasterContainer:(.(, self.size.X.Offset, , ), , , , )
library:(new)
self.keybind = new
self.keybind
library:()
debounce =
.(self._connections, input.InputBegan:((inp, gpe)
inp.UserInputType == .UserInputType.Keyboard gpe
inp.KeyCode == self.keybind debounce
debounce =
self:()
()
debounce =
))
self
tab.(library, title, desc, id)
TabSelector, TabSelectorColour = util.(, {
Parent = library.TabSelectContainer,
Size = .(, -, , ),
Position = .(, , , ),
BackgroundColor3 = theme.InnerContainer,
LayoutOrder = id,
Name =
}, {
util.(, {
Size = .(, , , ),
BackgroundColor3 = theme.NotSelectedTab,
}),
util.(, {
Text = title,
TextColor3 = theme.TextColor,
TextSize = ,
Font = .Font.GothamMedium,
Position = .(, , , ),
Name =
}),
util.(, {
Text = desc,
TextColor3 = theme.SubTextColor,
TextSize = ,
Font = .Font.Gotham,
Position = .(, , , ),
Name =
})
})
panels = {}
self = ({
library = library,
title = title,
selected = ,
panels = panels,
TabSelector = TabSelector,
TabSelectorColour = TabSelectorColour,
}, tab)
panels[] = panel.(self, {
Parent = library.TabContentContainer,
Size = .(, -, , -),
Position = .(, , , ),
BackgroundColor3 = theme.InnerContainer,
ScrollBarThickness = ,
Visible = ,
Name =
}, )
panels[] = panel.(self, {
Parent = library.TabContentContainer,
Size = .(, -, , -),
Position = .(, , , ),
BackgroundColor3 = theme.InnerContainer,
ScrollBarThickness = ,
Visible = ,
Name =
}, )
self:()
tab:()
self.TabSelector.MouseButton1Down:(()
self.selected = self.selected
self.selected
self:()
self:()
)
self
tab:()
_,tab (self.library.tabs)
tab ~= self
tab:()
tab:()
self.selected =
self:()
util.(self.TabSelectorColour, { BackgroundColor3 = theme.Accent }, )
i,v (self.panels) v.PanelContainer.Visible = self.selected
tab:()
self.selected =
util.(self.TabSelectorColour, { BackgroundColor3 = theme.NotSelectedTab }, )
i,v (self.panels) v.PanelContainer.Visible = self.selected
interactable.()
({}, interactable)
panel.(tab, panelProperties, id)
PanelContainer = util.(, panelProperties, {
util.(, {
VerticalAlignment = .VerticalAlignment.Top,
HorizontalAlignment = .HorizontalAlignment.Center,
Padding = .(, ),
SortOrder = .SortOrder.LayoutOrder,
}),
util.(, {
BackgroundTransparency = ,
LayoutOrder = ,
Size = .(,,,),
Name =
})
})
({
tab = tab,
PanelContainer = PanelContainer,
id = id,
seperators = {},
}, panel)
panel:(tipText)
TipBar = self.tab.library.TipBar
TipBar.Text = tipText
TipBar.Size = .(,TipBar.TextBounds.X+,,)
panel:()
values = self.tab.library.values
tab = self.tab.title
panel = self.id
seperator = self.currentSeperator
values[tab] values[tab] = {}
values[tab][panel] values[tab][panel] = {}
values[tab][panel][seperator] values[tab][panel][seperator] = {}
values[tab][panel][seperator]
panel:(height, clickable)
util.(clickable , {
Parent = self.PanelContainer,
BackgroundTransparency = ,
Size = .(, -, , height),
LayoutOrder = #self.PanelContainer:(),
Name =
})
panel:(text)
self.seperators[text] = {}
self.currentSeperator = text
util.(self:(), {
util.(, {
Text = text,
TextColor3 = theme.SubTextColor,
TextSize = ,
Font = .Font.Gotham,
Size = .(,,,),
Position = .(,,,-),
TextYAlignment = .TextYAlignment.Center,
Name =
})
})
self
panel.(panel, data)
callback = data.callback EmptyFunction
self = interactable.()
self.checked = data.checked
text = data.title
value = panel:()
value[text] = self.checked
Container = panel:(, )
CheckboxOutline, CheckboxInside = util.(, {
Parent = Container,
Size = .(, , , ),
BackgroundColor3 = theme.InteractableOutline,
Name =
}, {
util.(, {
Size = .(, -, , -),
Position = .(, , , ),
BackgroundColor3 = theme.InteractableBackground,
Name =
})
})
util.(, {
Parent = Container,
Text = text,
TextColor3 = theme.SubTextColor,
TextSize = ,
Font = .Font.Gotham,
Size = .(,,,),
Position = .(, , , -),
TextYAlignment = .TextYAlignment.Center,
Name =
})
(override)
self.checked
util.(CheckboxInside, { BackgroundColor3 = theme.Accent }, )
util.(CheckboxInside, { BackgroundColor3 = theme.InteractableBackground }, )
value[text] = self.checked
override
(self.checked)
()
Container.MouseButton1Down:(()
self.checked = self.checked
()
)
Container.MouseEnter:(()
util.(CheckboxOutline, { BackgroundColor3 = theme.Accent }, )
panel:(data.desc )
)
Container.MouseLeave:(()
util.(CheckboxOutline, { BackgroundColor3 = theme.InteractableOutline }, )
panel:()
)
colorpickerReturn = {}
data.colorpicker
callback = data.colorpicker.callback EmptyFunction
self.expandedColor =
ColorpickerboxOutline, ColorpickerboxInside = util.(, {
Parent = Container,
Size = .(, , , ),
Position = .(,-,,),
BackgroundColor3 = theme.InteractableOutline,
Name =
}, {
util.(, {
Size = .(,-,,-),
Position = .(,,,),
BackgroundColor3 = theme.Accent,
Name =
})
})
ColorpickerWindowContainer, ColorpickerWindow = util.(, {
Parent = ColorpickerboxOutline,
Size = .(, , , ),
Position = .(, -, , ),
BackgroundColor3 = theme.UpperContainer,
ClipsDescendants = ,
Visible = self.expandedColor,
ZIndex = ,
Name =
}, {
util.(, {
Size = .(, -, , -),
Position = .(, , , ),
BackgroundColor3 = theme.InnerContainer,
ZIndex = ,
Name =
})
})
SatValWindow = util.(, {
Parent = ColorpickerWindow,
Size = .(, , , ),
Position = .(, , , ),
Image = ,
BackgroundColor3 = .(,,),
ImageColor3 = .(,,),
ZIndex = ,
Name =
})
SatValSelector = util.(, {
Parent = SatValWindow,
Size = .(,,,),
BackgroundColor3 = .(,,),
ZIndex = ,
Name =
})
HueBar = util.(, {
Parent = ColorpickerWindow,
Size = .(, , , ),
Position = .(, , , ),
Image = ,
BackgroundColor3 = .(,,),
ImageColor3 = .(,,),
ZIndex = ,
Name =
})
HueSelector = util.(, {
Parent = HueBar,
Size = .(,,,),
Position = .(,,,-),
BackgroundColor3 = .(,,),
ZIndex = ,
Name =
})
currentHue, currentSat, curreentVal = ,,
(percent, override)
currentHue = percent
SatValWindow.ImageColor3 = .(currentHue, , )
HueSelector.Position = .(currentHue, -, , -)
ColorpickerboxInside.BackgroundColor3 = .(currentHue, currentSat, currentVal)
value[text..] = ColorpickerboxInside.BackgroundColor3
override
(ColorpickerboxInside.BackgroundColor3)
(percentX, percentY, override)
currentSat, currentVal = percentX, percentY
SatValSelector.Position = .(-currentSat, -, -currentVal, -)
ColorpickerboxInside.BackgroundColor3 = .(currentHue, currentSat, currentVal)
value[text..] = ColorpickerboxInside.BackgroundColor3
override
(ColorpickerboxInside.BackgroundColor3)
()
x = .((input:().X - HueBar.AbsolutePosition.X) / HueBar.AbsoluteSize.X, ,)
(x)
()
mouse = input:()
x = -.((mouse.X - SatValWindow.AbsolutePosition.X) / SatValWindow.AbsoluteSize.X, ,)
y = -.((mouse.Y - inset.Y - SatValWindow.AbsolutePosition.Y) / SatValWindow.AbsoluteSize.Y, ,)
(x, y)
(Color, override)
hue, sat, val = .(Color)
(hue, override)
(sat, val, override)
(data.colorpicker.default .(,,), )
isUsingHueBar =
HueBar.InputBegan:((inp, gpe)
inp.UserInputType == .UserInputType.MouseButton1 gpe
isUsingHueBar =
)
HueBar.InputEnded:((inp, gpe)
inp.UserInputType == .UserInputType.MouseButton1 gpe
isUsingHueBar =
)
isUsingSatValWindow =
SatValWindow.InputBegan:((inp, gpe)
inp.UserInputType == .UserInputType.MouseButton1 gpe
isUsingSatValWindow =
)
SatValWindow.InputEnded:((inp, gpe)
inp.UserInputType == .UserInputType.MouseButton1 gpe
isUsingSatValWindow =
)
RunService.RenderStepped:(()
isUsingHueBar
()
isUsingSatValWindow
()
)
ColorpickerboxInside.MouseButton1Down:(()
self.expandedColor = self.expandedColor
ColorpickerWindowContainer.Visible = self.expandedColor
)
ColorpickerboxOutline.MouseEnter:(()
util.(ColorpickerboxOutline, { BackgroundColor3 = theme.Accent }, )
)
ColorpickerboxOutline.MouseLeave:(()
util.(ColorpickerboxOutline, { BackgroundColor3 = theme.InteractableOutline }, )
)
panel.tab.library.((inp)
self.expandedColor =
ColorpickerWindowContainer.Visible = self.expandedColor
)
colorpickerReturn = {
setColor = setColor,
getColor = () ColorpickerboxInside.BackgroundColor3 ,
callback = callback
}
(toggled, noCallback)
self.checked = toggled
(noCallback)
panel.seperators[panel.currentSeperator][text] = setToggled
{
colorpicker = colorpickerReturn,
setToggled = setToggled,
toggle = ()
self.checked = self.checked
()
,
getToggled = () self.checked ,
callback = callback
}, colorpickerReturn
panel.(panel, data)
callback = data.callback EmptyFunction
self = interactable.()
self.values = data.values {min=,max=,default=,round=}
text = data.title
value = panel:()
value[text] = self.values.default
(x)
.((x*(self.values.round ))+)/(self.values.round )
Container = panel:(, )
util.(, {
Parent = Container,
Text = text,
TextColor3 = theme.SubTextColor,
TextSize = ,
Font = .Font.Gotham,
Size = .(,,,),
Position = .(, , , -),
TextYAlignment = .TextYAlignment.Center,
})
ValueboxOutline, ValueboxInside = util.(, {
Parent = Container,
Size = .(, , , ),
Position = .(, -, , ),
BackgroundColor3 = theme.InteractableOutline,
Name =
}, {
util.(, {
Text = ,
TextSize = ,
TextColor3 = theme.SubTextColor,
Size = .(, -, , -),
Position = .(, , , ),
BackgroundColor3 = theme.InteractableBackground,
Name =
})
})
SliderboxOutline, SliderboxInside, SliderboxFill = util.(, {
Parent = Container,
Size = .(, , , ),
Position = .(, , , ),
BackgroundColor3 = theme.InteractableOutline,
Name =
}, {
util.(, {
Size = .(, -, , -),
Position = .(, , , ),
BackgroundColor3 = theme.InteractableBackground,
Name =
}),
util.(, {
Size = .(, , , -),
Position = .(, , , ),
BackgroundColor3 = theme.Accent,
Name = ,
}),
util.(, {
Size = .(, , , ),
Position = .(, -, , ),
BackgroundColor3 = theme.InteractableOutline,
ZIndex = ,
Name =
})
})
isInteracting =
(percent, override)
percent = .(percent,,)
min = self.values.min
max = self.values.max
diff = max-min
actualValue = (percent * diff + min)
ValueboxInside.Text = (actualValue)
SliderboxFill:(.(percent, -, , -), , , , , ()
SliderboxFill.AbsoluteSize.X < SliderboxFill.Size = .(,,,-)
)
value[text] = actualValue
override
(actualValue)
(value, override)
min = self.values.min
max = self.values.max
diff = max-min
((value - min)/diff, override)
()
clickedPercentage = (input:().X - SliderboxOutline.AbsolutePosition.X) / SliderboxOutline.AbsoluteSize.X
clickedPercentage > / clickedPercentage =
clickedPercentage < / clickedPercentage =
(clickedPercentage)
(self.values.default , )
Container.InputBegan:((inp, gpe)
inp.UserInputType == .UserInputType.MouseButton1 gpe
isInteracting =
)
Container.InputEnded:((inp, gpe)
inp.UserInputType == .UserInputType.MouseButton1 gpe
isInteracting =
)
RunService.RenderStepped:(()
isInteracting
()
)
isFocused =
ValueboxInside.Focused:(()
isFocused =
util.(ValueboxOutline, { BackgroundColor3 = theme.Accent }, )
)
ValueboxInside.FocusLost:(()
(ValueboxInside.Text)
((ValueboxInside.Text))
isFocused =
util.(ValueboxOutline, { BackgroundColor3 = theme.InteractableOutline }, )
)
ValueboxOutline.MouseEnter:(()
util.(ValueboxOutline, { BackgroundColor3 = theme.Accent }, )
)
ValueboxOutline.MouseLeave:(()
isFocused util.(ValueboxOutline, { BackgroundColor3 = theme.InteractableOutline }, )
)
Container.MouseEnter:(()
util.(SliderboxOutline, { BackgroundColor3 = theme.Accent }, )
panel:(data.desc )
)
Container.MouseLeave:(()
util.(SliderboxOutline, { BackgroundColor3 = theme.InteractableOutline }, )
panel:()
)
panel.seperators[panel.currentSeperator][text] = renderFromValue
{
setPercent = renderFromPercent,
setValue = renderFromValue,
getValue = () value[text] ,
callback = callback
}
panel.(panel, data)
callback = data.callback EmptyFunction
self = interactable.()
self.options = data.options {}
self.expanded =
title = data.title
value = panel:()
Container = panel:(, )
util.(, {
Parent = Container,
Text = title,
TextColor3 = theme.SubTextColor,
TextSize = ,
Font = .Font.Gotham,
Size = .(,,,),
Position = .(, , , -),
TextYAlignment = .TextYAlignment.Center,
})
DropdownboxOutline, DropdownboxInside, DropdownboxText = util.(, {
Parent = Container,
Size = .(, , , ),
Position = .(, , , ),
BackgroundColor3 = theme.InteractableOutline,
Name =
}, {
util.(, {
Size = .(, -, , -),
Position = .(, , , ),
BackgroundColor3 = theme.InteractableBackground,
Name =
}),
util.(, {
Text = ,
TextColor3 = theme.SubTextColor,
TextSize = ,
Font = .Font.Gotham,
Size = .(,-,,),
Position = .(, , , ),
BackgroundTransparency = ,
ClipsDescendants = ,
TextYAlignment = .TextYAlignment.Center,
})
})
DropdownMenu, UIListLayout = util.(, {
Parent = DropdownboxOutline,
Size = .(, , , ),
Position = .(, , , ),
BackgroundColor3 = theme.InteractableOutline,
ZIndex = ,
ClipsDescendants = ,
}, {
util.(, {
SortOrder = .SortOrder.LayoutOrder,
Padding = .(,),
HorizontalAlignment = .HorizontalAlignment.Center,
})
})
DropdownItem = util.(, {
LayoutOrder = ,
Size = .(, , , ),
ZIndex = ,
BackgroundColor3 = theme.InteractableOutline
}, {
util.(, {
Size = .(, -, , -),
Position = .(, , , ),
ZIndex = ,
BackgroundColor3 = theme.InteractableBackground,
}),
util.(, {
Text = ,
TextColor3 = theme.SubTextColor,
TextSize = ,
Font = .Font.Gotham,
Size = .(,,,),
Position = .(, , , ),
ZIndex = ,
TextYAlignment = .TextYAlignment.Center,
})
})
()
self.expanded
DropdownMenu:(.(,,,UIListLayout.AbsoluteContentSize.Y), , , , )
DropdownMenu:(.(,,,), , , , )
util.(DropdownboxOutline, { BackgroundColor3 = theme.InteractableOutline }, )
optionObjects = {}
()
options = self.options
i,v (optionObjects) v:()
optionObjects = {}
count,text (options)
DropdownItem = DropdownItem:()
DropdownItem.Parent = DropdownMenu
DropdownItem.LayoutOrder = count
ItemText = DropdownItem:()
ItemText.Text = text
(override)
self.expanded override
DropdownboxText.Text = text
self.expanded =
self.selected = count
()
value[title] = count
override
(count, text)
DropdownItem.MouseButton1Click:()
count == (data.default )
()
DropdownItem.MouseEnter:(()
util.(ItemText, { TextColor3 = theme.Accent }, )
)
DropdownItem.MouseLeave:(()
util.(ItemText, { TextColor3 = theme.SubTextColor }, )
)
.(optionObjects, DropdownItem)
()
data.default =
Container.MouseButton1Down:(()
self.expanded = self.expanded
()
)
Container.MouseEnter:(()
util.(DropdownboxOutline, { BackgroundColor3 = theme.Accent }, )
panel:(data.desc )
)
Container.MouseLeave:(()
self.expanded
util.(DropdownboxOutline, { BackgroundColor3 = theme.InteractableOutline }, )
panel:()
)
panel.tab.library.((inp)
self.expanded =
()
)
(count)
text = self.options[count]
DropdownboxText.Text = text
self.selected = count
value[title] = count
(count, text)
panel.seperators[panel.currentSeperator][title] = setSelected
{
setOptions = (options)
self.selected =
self.options = options
()
,
setSelected = setSelected,
getSelected = () self.selected, self.options[self.selected] ,
setDropdownExpanded = (expanded)
self.expanded = expanded
()
,
callback = callback
}
panel.(panel, data)
callback = data.callback EmptyFunction
self = interactable.()
self.selected = data.default {}
self.options = data.options {}
self.optionObjects = {}
self.expanded =
title = data.title
value = panel:()
Container = panel:(, )
util.(, {
Parent = Container,
Text = title,
TextColor3 = theme.SubTextColor,
TextSize = ,
Font = .Font.Gotham,
Size = .(,,,),
Position = .(, , , -),
TextYAlignment = .TextYAlignment.Center,
})
DropdownboxOutline, DropdownboxInside, DropdownboxText = util.(, {
Parent = Container,
Size = .(, , , ),
Position = .(, , , ),
BackgroundColor3 = theme.InteractableOutline,
Name =
}, {
util.(, {
Size = .(, -, , -),
Position = .(, , , ),
BackgroundColor3 = theme.InteractableBackground,
Name =
}),
util.(, {
Text = ,
TextColor3 = theme.SubTextColor,
TextSize = ,
Font = .Font.Gotham,
Size = .(,-,,),
Position = .(, , , ),
ClipsDescendants = ,
BackgroundTransparency = ,
TextYAlignment = .TextYAlignment.Center,
})
})
DropdownMenu, UIListLayout = util.(, {
Parent = DropdownboxOutline,
Size = .(, , , ),
Position = .(, , , ),
BackgroundColor3 = theme.InteractableOutline,
ZIndex = ,
ClipsDescendants = ,
}, {
util.(, {
SortOrder = .SortOrder.LayoutOrder,
Padding = .(,),
HorizontalAlignment = .HorizontalAlignment.Center,
})
})
DropdownItem = util.(, {
LayoutOrder = ,
Size = .(, , , ),
ZIndex = ,
BackgroundColor3 = theme.InteractableOutline
}, {
util.(, {
Size = .(, -, , -),
Position = .(, , , ),
ZIndex = ,
BackgroundColor3 = theme.InteractableBackground,
}),
util.(, {
Text = ,
TextColor3 = theme.SubTextColor,
TextSize = ,
Font = .Font.Gotham,
Size = .(,,,),
Position = .(, , , ),
ZIndex = ,
TextYAlignment = .TextYAlignment.Center,
})
})
()
self.expanded
DropdownMenu:(.(,,,UIListLayout.AbsoluteContentSize.Y), , , , )
DropdownMenu:(.(,,,), , , , )
util.(DropdownboxOutline, { BackgroundColor3 = theme.InteractableOutline }, )
()
text =
_,count (self.selected)
self.optionObjects[count]
text = text..self.optionObjects[count]:().Text..
DropdownboxText.Text = text:(, #text-)
value[title] = self.selected
()
i,v (self.optionObjects) v:()
self.optionObjects = {}
count, text (self.options)
selected = .(self.selected, count)
DropdownItem = DropdownItem:()
DropdownItem.Parent = DropdownMenu
DropdownItem.LayoutOrder = count
ItemText = DropdownItem:()
ItemText.Text = text
self.optionObjects[count] = DropdownItem
()
selected = .(self.selected, count)
selected
util.(ItemText, { TextColor3 = theme.Accent }, )
util.(ItemText, { TextColor3 = theme.SubTextColor }, )
()
()
DropdownItem.MouseButton1Click:(()
found = .(self.selected, count)
selected = (found ~= )
selected found ~=
.(self.selected, found)
selected found ==
.(self.selected, count)
()
)
DropdownItem.MouseEnter:(()
util.(ItemText, { TextColor3 = theme.Accent }, )
)
DropdownItem.MouseLeave:(()
selected
util.(ItemText, { TextColor3 = theme.SubTextColor }, )
)
()
Container.MouseButton1Down:(()
self.expanded = self.expanded
()
)
Container.MouseEnter:(()
util.(DropdownboxOutline, { BackgroundColor3 = theme.Accent }, )
panel:(data.desc )
)
Container.MouseLeave:(()
self.expanded
util.(DropdownboxOutline, { BackgroundColor3 = theme.InteractableOutline }, )
panel:()
)
panel.tab.library.((inp)
self.expanded =
()
)
()
self.selected =
()
panel.seperators[panel.currentSeperator][title] = setSelected
{
setOptions = (options)
self.selected = {}
self.options = options
()
,
setSelected = setSelected,
getSelected = () self.selected ,
setDropdownExpanded = (expanded)
self.expanded = expanded
()
,
callback = callback
}
panel.(panel, data)
callback = data.callback EmptyFunction
title = data.title
value = panel:()
Container = panel:(, )
util.(, {
Parent = Container,
Text = title,
TextColor3 = theme.SubTextColor,
TextSize = ,
Font = .Font.Gotham,
Size = .(,,,),
Position = .(, , , -),
TextYAlignment = .TextYAlignment.Center,
})
TextInputOutline, TextInputInside, TextInput = util.(, {
Parent = Container,
Size = .(, , , ),
Position = .(, , , ),
BackgroundColor3 = theme.InteractableOutline,
Name =
}, {
util.(, {
Size = .(, -, , -),
Position = .(, , , ),
BackgroundColor3 = theme.InteractableBackground,
Name =
}),
util.(, {
PlaceholderText = data.placeholder ,
Text = ,
TextColor3 = theme.SubTextColor,
TextSize = ,
Font = .Font.Gotham,
Size = .(,-,,),
Position = .(, , , ),
BackgroundTransparency = ,
ClipsDescendants = ,
TextYAlignment = .TextYAlignment.Center,
TextXAlignment = .TextXAlignment.Left,
})
})
TextInput:():(()
text = TextInput.Text
value[title] = text
(text)
)
Container.MouseEnter:(()
util.(TextInputOutline, { BackgroundColor3 = theme.Accent }, )
panel:(data.desc )
)
Container.MouseLeave:(()
util.(TextInputOutline, { BackgroundColor3 = theme.InteractableOutline }, )
panel:()
)
(t)
TextInput.Text = t
panel.seperators[panel.currentSeperator][title] = setText
{
setText = setText,
callback = callback
}
panel.(panel, data) --> Select one
local callback = data.callback or EmptyFunction
local Container = panel:_Container(21, true)
--//Dropdown bar box
local ButtonBoxOutline, ButtonBoxInside, ButtonText = util.new("Frame", {
Parent = Container,
Size = UDim2.new(1, 0, 0, 20),
Position = UDim2.new(0, 0, 0, 1),
BackgroundColor3 = theme.InteractableOutline,
Name = "DropdownboxOutline"
}, {
util.new("Frame", { --underlaying background color (transparency gradient)
Size = UDim2.new(1, -2, 1, -2),
Position = UDim2.new(0, 1, 0, 1),
BackgroundColor3 = theme.ButtonBottom,
Name = "DropdownboxInside"
}), --children to this added below
util.new("TextLabel", {
Text = data.title or "",
TextColor3 = theme.SubTextColor,
TextSize = 12,
Font = Enum.Font.Gotham,
Size = UDim2.new(1,-5,1,0),
Position = UDim2.new(0, 5, 0, 0),
BackgroundTransparency = 1,
ClipsDescendants = true,
TextYAlignment = Enum.TextYAlignment.Center,
TextXAlignment = Enum.TextXAlignment.Center,
})
})
local ButtonColor, UIGradient = util.new("Frame", {
Parent = ButtonBoxInside,
Size = UDim2.new(1,0,1,0),
BackgroundColor3 = theme.ButtonTop,
Name = "DropdownboxBackground",
}, {
util.new("UIGradient", {
Transparency = NumberSequence.new({
NumberSequenceKeypoint.new(0 , 0),
NumberSequenceKeypoint.new(0.5, 0.2),
NumberSequenceKeypoint.new(1 , 0.5),
}),
Rotation = 90
})
})
--//Basic connectionss
Container.MouseEnter:Connect(function()
util.tween(ButtonBoxOutline, { BackgroundColor3 = theme.Accent }, 0.07)
panel:SetTip(data.desc or "")
end)
Container.MouseLeave:Connect(function()
util.tween(ButtonBoxOutline, { BackgroundColor3 = theme.InteractableOutline }, 0.07)
panel:SetTip("")
end)
Container.MouseButton1Down:Connect(function()
callback()
ButtonText.TextColor3 = theme.Accent
task.wait(0.1)
util.tween(ButtonText, { TextColor3 = theme.SubTextColor }, 0.1)
end)
return {
callback = callback
}
end
end
return library
[NEW 🗺️] Trident Survival