Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local folderName = ... or "float"
- if not isfolder(folderName) then
- makefolder(folderName)
- end
- local gameConfigFolder = folderName .. "/" .. game.PlaceId
- if not isfolder(gameConfigFolder) then
- makefolder(gameConfigFolder)
- end
- local inputService = game:GetService("UserInputService")
- local tweenService = game:GetService("TweenService")
- local runService = game:GetService("RunService")
- local coreGui = game:GetService("CoreGui")
- local utility = {}
- function utility.create(class, properties)
- properties = properties or {}
- local obj = Instance.new(class)
- local forcedProperties = {
- AutoButtonColor = false
- }
- for prop, v in next, properties do
- obj[prop] = v
- end
- for prop, v in next, forcedProperties do
- pcall(
- function()
- obj[prop] = v
- end
- )
- end
- return obj
- end
- function utility.change_color(color, amount)
- local r = math.clamp(math.floor(color.r * 255) + amount, 0, 255)
- local g = math.clamp(math.floor(color.g * 255) + amount, 0, 255)
- local b = math.clamp(math.floor(color.b * 255) + amount, 0, 255)
- return Color3.fromRGB(r, g, b)
- end
- function utility.get_rgb(color)
- local r = math.floor(color.r * 255)
- local g = math.floor(color.g * 255)
- local b = math.floor(color.b * 255)
- return r, g, b
- end
- function utility.tween(obj, info, properties, callback)
- local anim = tweenService:Create(obj, TweenInfo.new(unpack(info)), properties)
- anim:Play()
- if callback then
- anim.Completed:Connect(callback)
- end
- end
- function utility.drag(obj, dragSpeed)
- local start, objPosition, dragging
- obj.InputBegan:Connect(
- function(input)
- if input.UserInputType == Enum.UserInputType.MouseButton1 then
- dragging = true
- start = input.Position
- objPosition = obj.Position
- end
- end
- )
- obj.InputEnded:Connect(
- function(input)
- if input.UserInputType == Enum.UserInputType.MouseButton1 then
- dragging = false
- end
- end
- )
- inputService.InputChanged:Connect(
- function(input)
- if input.UserInputType == Enum.UserInputType.MouseMovement and dragging then
- utility.tween(
- obj,
- {dragSpeed},
- {
- Position = UDim2.new(
- objPosition.X.Scale,
- objPosition.X.Offset + (input.Position - start).X,
- objPosition.Y.Scale,
- objPosition.Y.Offset + (input.Position - start).Y
- )
- }
- )
- end
- end
- )
- end
- function utility.get_center(sizeX, sizeY)
- return UDim2.new(0.5, -(sizeX / 2), 0.5, -(sizeY / 2))
- end
- function utility.hex_to_rgb(hex)
- return Color3.fromRGB(
- tonumber("0x" .. hex:sub(2, 3)),
- tonumber("0x" .. hex:sub(4, 5)),
- tonumber("0x" .. hex:sub(6, 7))
- )
- end
- function utility.rgb_to_hex(color)
- return string.format(
- "#%02X%02X%02X",
- math.clamp(color.R * 255, 0, 255),
- math.clamp(color.G * 255, 0, 255),
- math.clamp(color.B * 255, 0, 255)
- )
- end
- function utility.table(tbl)
- local oldtbl = tbl or {}
- local newtbl = {}
- local formattedtbl = {}
- for option, v in next, oldtbl do
- newtbl[option:lower()] = v
- end
- setmetatable(
- formattedtbl,
- {
- __newindex = function(t, k, v)
- rawset(newtbl, k:lower(), v)
- end,
- __index = function(t, k, v)
- return newtbl[k:lower()]
- end
- }
- )
- return formattedtbl
- end
- local library =
- utility.table {
- flags = {},
- toggled = true,
- color = Color3.fromRGB(255, 20, 88),
- keybind = Enum.KeyCode.P,
- dragSpeed = 0.1
- }
- local coloredGradients = {}
- function library:SetColor(color)
- for _, obj in next, coloredGradients do
- obj.Color =
- ColorSequence.new {
- ColorSequenceKeypoint.new(0, color),
- ColorSequenceKeypoint.new(1, utility.change_color(color, -49))
- }
- end
- library.color = color
- end
- local gui = utility.create("ScreenGui")
- local lib_open_con = inputService.InputBegan:Connect(
- function(input)
- if input.KeyCode == library.keybind then
- library.toggled = not library.toggled
- gui.Enabled = library.toggled
- end
- end
- )
- function library:Unload()
- lib_open_con:Disconnect()
- gui:Destroy()
- end
- if syn and syn.protect_gui then
- syn.protect_gui(gui)
- end
- gui.Parent = coreGui
- local flags = {
- toggles = {},
- boxes = {},
- sliders = {},
- dropdowns = {},
- multidropdowns = {},
- keybinds = {},
- colorpickers = {}
- }
- function library:LoadConfig(file)
- local str = readfile(gameConfigFolder .. "/" .. file .. ".cfg")
- local tbl = loadstring(str)()
- for flag, value in next, tbl.toggles do
- flags.toggles[flag](value)
- end
- for flag, value in next, tbl.boxes do
- flags.boxes[flag](value)
- end
- for flag, value in next, tbl.sliders do
- flags.sliders[flag](value)
- end
- for flag, value in next, tbl.dropdowns do
- flags.dropdowns[flag](value)
- end
- for flag, value in next, tbl.multidropdowns do
- flags.multidropdowns[flag](value)
- end
- for flag, value in next, tbl.keybinds do
- flags.keybinds[flag](value)
- end
- for flag, value in next, tbl.colorpickers do
- flags.colorpickers[flag](value)
- end
- end
- function library:SaveConfig(name)
- local configstr = "{toggles={"
- local count = 0
- for flag, _ in next, flags.toggles do
- count = count + 1
- configstr = configstr .. "['" .. flag .. "']=" .. tostring(library.flags[flag]) .. ","
- end
- configstr = (count > 0 and configstr:sub(1, -2) or configstr) .. "},boxes={"
- count = 0
- for flag, _ in next, flags.boxes do
- count = count + 1
- configstr = configstr .. "['" .. flag .. "']='" .. tostring(library.flags[flag]) .. "',"
- end
- configstr = (count > 0 and configstr:sub(1, -2) or configstr) .. "},sliders={"
- count = 0
- for flag, _ in next, flags.sliders do
- count = count + 1
- configstr = configstr .. "['" .. flag .. "']=" .. tostring(library.flags[flag]) .. ","
- end
- configstr = (count > 0 and configstr:sub(1, -2) or configstr) .. "},dropdowns={"
- count = 0
- for flag, _ in next, flags.dropdowns do
- count = count + 1
- configstr = configstr .. "['" .. flag .. "']='" .. tostring(library.flags[flag]) .. "',"
- end
- configstr = (count > 0 and configstr:sub(1, -2) or configstr) .. "},multidropdowns={"
- count = 0
- for flag, _ in next, flags.multidropdowns do
- count = count + 1
- configstr = configstr .. "['" .. flag .. "']={'" .. table.concat(library.flags[flag], "','") .. "'},"
- end
- configstr = (count > 0 and configstr:sub(1, -2) or configstr) .. "},keybinds={"
- count = 0
- for flag, _ in next, flags.keybinds do
- count = count + 1
- configstr = configstr .. "['" .. flag .. "']=" .. tostring(library.flags[flag]) .. ","
- end
- configstr = (count > 0 and configstr:sub(1, -2) or configstr) .. "},colorpickers={"
- count = 0
- for flag, _ in next, flags.colorpickers do
- count = count + 1
- configstr = configstr .. "['" .. flag .. "']=Color3.new(" .. tostring(library.flags[flag]) .. "),"
- end
- configstr = (count > 0 and configstr:sub(1, -2) or configstr) .. "}}"
- writefile(gameConfigFolder .. "/" .. name .. ".cfg", "return " .. configstr)
- end
- function library:Load(opts)
- local options = utility.table(opts)
- local name = options.name or "Epic UI Library"
- local sizeX = options.sizeX or 466
- local sizeY = options.sizeY or 350
- local color = options.color or Color3.fromRGB(255, 255, 255)
- local dragSpeed = options.dragSpeed or 0
- library.color = color
- local topbar =
- utility.create(
- "Frame",
- {
- ZIndex = 2,
- Size = UDim2.new(0, sizeX, 0, 26),
- Position = utility.get_center(sizeX, sizeY),
- BorderSizePixel = 0,
- BackgroundColor3 = Color3.fromRGB(22, 22, 22),
- Parent = gui
- }
- )
- utility.drag(topbar, dragSpeed)
- utility.create(
- "TextLabel",
- {
- ZIndex = 3,
- Size = UDim2.new(0, 0, 1, 0),
- BackgroundTransparency = 1,
- Position = UDim2.new(0, 8, 0, 0),
- FontSize = Enum.FontSize.Size14,
- TextSize = 14,
- TextColor3 = Color3.fromRGB(255, 255, 255),
- Text = name,
- Font = Enum.Font.GothamSemibold,
- TextXAlignment = Enum.TextXAlignment.Left,
- Parent = topbar
- }
- )
- local main =
- utility.create(
- "Frame",
- {
- Size = UDim2.new(1, 0, 0, 350),
- BorderColor3 = Color3.fromRGB(20, 20, 20),
- BackgroundColor3 = Color3.fromRGB(32, 32, 32),
- Parent = topbar
- }
- )
- local tabs =
- utility.create(
- "Frame",
- {
- ZIndex = 2,
- Size = UDim2.new(1, -8, 1, -64),
- BackgroundTransparency = 1,
- Position = UDim2.new(0, 4, 0, 58),
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- Parent = main
- }
- )
- local tabToggles =
- utility.create(
- "Frame",
- {
- ZIndex = 2,
- Size = UDim2.new(1, 0, 0, 26),
- BorderColor3 = Color3.fromRGB(20, 20, 20),
- Position = UDim2.new(0, 0, 0, 26),
- BackgroundColor3 = Color3.fromRGB(26, 26, 26),
- Parent = main
- }
- )
- local tabTogglesHolder =
- utility.create(
- "Frame",
- {
- Size = UDim2.new(1, -12, 1, 0),
- Position = UDim2.new(0, 6, 0, 0),
- Parent = tabToggles
- }
- )
- utility.create(
- "UIListLayout",
- {
- FillDirection = Enum.FillDirection.Horizontal,
- SortOrder = Enum.SortOrder.LayoutOrder,
- Padding = UDim.new(0, 4),
- Parent = tabTogglesHolder
- }
- )
- local windowTypes = utility.table({count = 0})
- function windowTypes:Show()
- gui.Enabled = true
- end
- function windowTypes:Hide()
- gui.Enabled = false
- end
- function windowTypes:Tab(name)
- windowTypes.count = windowTypes.count + 1
- name = name or "Tab"
- local toggled = windowTypes.count == 1
- local tabToggle =
- utility.create(
- "TextButton",
- {
- ZIndex = 3,
- BackgroundTransparency = 1,
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- FontSize = Enum.FontSize.Size14,
- TextSize = 14,
- TextColor3 = Color3.fromRGB(255, 255, 255),
- Text = name,
- Font = toggled and Enum.Font.GothamSemibold or Enum.Font.Gotham,
- Parent = tabTogglesHolder
- }
- )
- tabToggle.Size = UDim2.new(0, tabToggle.TextBounds.X + 12, 1, 0)
- local tab =
- utility.create(
- "Frame",
- {
- Size = UDim2.new(1, 0, 1, 0),
- BackgroundTransparency = 1,
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- Visible = toggled,
- Parent = tabs
- }
- )
- local column1 =
- utility.create(
- "ScrollingFrame",
- {
- Size = UDim2.new(0.5, -2, 1, 0),
- BackgroundTransparency = 1,
- Active = true,
- BorderSizePixel = 0,
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- ScrollBarImageColor3 = Color3.fromRGB(0, 0, 0),
- ScrollBarImageTransparency = 1,
- ScrollBarThickness = 0,
- Parent = tab
- }
- )
- local column1List =
- utility.create(
- "UIListLayout",
- {
- SortOrder = Enum.SortOrder.LayoutOrder,
- Padding = UDim.new(0, 6),
- Parent = column1
- }
- )
- column1List:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(
- function()
- column1.CanvasSize = UDim2.new(0, 0, 0, column1List.AbsoluteContentSize.Y)
- end
- )
- local column2 =
- utility.create(
- "ScrollingFrame",
- {
- Size = UDim2.new(0.5, -2, 1, 0),
- BackgroundTransparency = 1,
- Position = UDim2.new(0.5, 2, 0, 0),
- Active = true,
- BorderSizePixel = 0,
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- ScrollBarImageColor3 = Color3.fromRGB(0, 0, 0),
- ScrollBarImageTransparency = 1,
- ScrollBarThickness = 0,
- CanvasPosition = Vector2.new(0, 150),
- Parent = tab
- }
- )
- local column2List =
- utility.create(
- "UIListLayout",
- {
- SortOrder = Enum.SortOrder.LayoutOrder,
- Padding = UDim.new(0, 6),
- Parent = column2
- }
- )
- column2List:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(
- function()
- column2.CanvasSize = UDim2.new(0, 0, 0, column2List.AbsoluteContentSize.Y)
- end
- )
- local function openTab()
- for _, obj in next, tabTogglesHolder:GetChildren() do
- if obj:IsA("TextButton") then
- obj.Font = Enum.Font.Gotham
- end
- end
- tabToggle.Font = Enum.Font.GothamSemibold
- for _, obj in next, tabs:GetChildren() do
- obj.Visible = false
- end
- tab.Visible = true
- end
- tabToggle.MouseButton1Click:Connect(openTab)
- local tabTypes = utility.table()
- function tabTypes:Open()
- openTab()
- end
- function tabTypes:Section(opts)
- local options = utility.table(opts)
- local name = options.name or "Section"
- local column = options.column or 1
- local columnFrame = column == 1 and column1 or column == 2 and column2
- local sectionHolder =
- utility.create(
- "Frame",
- {
- Size = UDim2.new(1, 0, 0, 26),
- BackgroundTransparency = 1,
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- Parent = columnFrame
- }
- )
- local section =
- utility.create(
- "Frame",
- {
- ZIndex = 2,
- Size = UDim2.new(1, -2, 1, -2),
- BorderColor3 = Color3.fromRGB(22, 22, 22),
- Position = UDim2.new(0, 1, 0, 1),
- BackgroundColor3 = Color3.fromRGB(28, 28, 28),
- Parent = sectionHolder
- }
- )
- local sectionTopbar =
- utility.create(
- "Frame",
- {
- ZIndex = 3,
- Size = UDim2.new(1, 0, 0, 24),
- BorderSizePixel = 0,
- BackgroundColor3 = Color3.fromRGB(22, 22, 22),
- Parent = section
- }
- )
- utility.create(
- "TextLabel",
- {
- ZIndex = 3,
- Size = UDim2.new(0, 0, 1, 0),
- BackgroundTransparency = 1,
- Position = UDim2.new(0, 8, 0, 0),
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- FontSize = Enum.FontSize.Size14,
- TextSize = 13,
- TextColor3 = Color3.fromRGB(255, 255, 255),
- Text = name,
- Font = Enum.Font.GothamSemibold,
- TextXAlignment = Enum.TextXAlignment.Left,
- Parent = sectionTopbar
- }
- )
- local sectionContent =
- utility.create(
- "Frame",
- {
- Size = UDim2.new(1, -12, 1, -36),
- Position = UDim2.new(0, 6, 0, 30),
- BackgroundTransparency = 1,
- Parent = section
- }
- )
- local sectionContentList =
- utility.create(
- "UIListLayout",
- {
- SortOrder = Enum.SortOrder.LayoutOrder,
- Padding = UDim.new(0, 6),
- Parent = sectionContent
- }
- )
- sectionContentList:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(
- function()
- sectionHolder.Size = UDim2.new(1, 0, 0, sectionContentList.AbsoluteContentSize.Y + 38)
- end
- )
- local sectionTypes = utility.table()
- function sectionTypes:Show()
- sectionHolder.Visible = true
- end
- function sectionTypes:Hide()
- sectionHolder.Visible = false
- end
- function sectionTypes:Label(text)
- local label =
- utility.create(
- "TextLabel",
- {
- ZIndex = 3,
- Size = UDim2.new(0, 0, 0, 14),
- BackgroundTransparency = 1,
- Position = UDim2.new(0, 8, 0, 0),
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- FontSize = Enum.FontSize.Size14,
- TextSize = 13,
- Text = text,
- TextColor3 = Color3.fromRGB(255, 255, 255),
- Font = Enum.Font.Gotham,
- TextXAlignment = Enum.TextXAlignment.Left,
- Parent = sectionContent
- }
- )
- local labelTypes = utility.table()
- function labelTypes:Show()
- label.Visible = true
- end
- function labelTypes:Hide()
- label.Visible = false
- end
- function labelTypes:Set(str)
- label.Text = str
- end
- return labelTypes
- end
- function sectionTypes:SpecialLabel(text)
- local specialLabel =
- utility.create(
- "TextLabel",
- {
- ZIndex = 5,
- Size = UDim2.new(1, 0, 0, 14),
- BackgroundTransparency = 1,
- Position = UDim2.new(0, 8, 0, 0),
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- FontSize = Enum.FontSize.Size14,
- TextSize = 13,
- Text = text,
- TextColor3 = Color3.fromRGB(255, 255, 255),
- Font = Enum.Font.Gotham,
- Parent = sectionContent
- }
- )
- utility.create(
- "Frame",
- {
- ZIndex = 3,
- Size = UDim2.new(1, 0, 0, 1),
- Position = UDim2.new(0, 0, 0.5, 1),
- BorderSizePixel = 0,
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- Parent = specialLabel
- }
- )
- local lineBlock =
- utility.create(
- "Frame",
- {
- ZIndex = 4,
- Size = UDim2.new(0, specialLabel.TextBounds.X + 6, 0, 1),
- Position = UDim2.new(0.5, -((specialLabel.TextBounds.X + 6) / 2), 0.5, 1),
- BorderSizePixel = 0,
- BackgroundColor3 = Color3.fromRGB(28, 28, 28),
- Parent = specialLabel
- }
- )
- specialLabel:GetPropertyChangedSignal("TextBounds"):Connect(
- function()
- lineBlock.Size = UDim2.new(0, specialLabel.TextBounds.X + 6, 0, 1)
- lineBlock.Position = UDim2.new(0.5, -((specialLabel.TextBounds.X + 6) / 2), 0.5, 1)
- end
- )
- local specialLabelTypes = utility.table()
- function specialLabelTypes:Show()
- specialLabel.Visible = true
- end
- function specialLabelTypes:Hide()
- specialLabel.Visible = false
- end
- function specialLabelTypes:Set(str)
- specialLabel.Text = str
- end
- return specialLabelTypes
- end
- function sectionTypes:Button(opts)
- local options = utility.table(opts)
- local name = options.name
- local callback = options.callback
- local button =
- utility.create(
- "TextButton",
- {
- ZIndex = 3,
- Size = UDim2.new(1, 0, 0, 16),
- BorderColor3 = Color3.fromRGB(22, 22, 22),
- Font = Enum.Font.Gotham,
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- Text = "",
- TextXAlignment = Enum.TextXAlignment.Left,
- Parent = sectionContent
- }
- )
- utility.create(
- "UIGradient",
- {
- Rotation = 90,
- Color = ColorSequence.new {
- ColorSequenceKeypoint.new(0, Color3.fromRGB(32, 32, 32)),
- ColorSequenceKeypoint.new(1, Color3.fromRGB(17, 17, 17))
- },
- Parent = button
- }
- )
- local title =
- utility.create(
- "TextLabel",
- {
- ZIndex = 4,
- Size = UDim2.new(0, 0, 1, 0),
- BackgroundTransparency = 1,
- Position = UDim2.new(0, 8, 0, 0),
- FontSize = Enum.FontSize.Size14,
- TextSize = 13,
- TextColor3 = Color3.fromRGB(255, 255, 255),
- Text = name,
- Font = Enum.Font.Gotham,
- TextXAlignment = Enum.TextXAlignment.Left,
- Parent = button
- }
- )
- local buttonTypes = utility.table()
- button.MouseButton1Click:Connect(
- function()
- callback(buttonTypes)
- end
- )
- function buttonTypes:Show()
- button.Visible = true
- end
- function buttonTypes:Hide()
- button.Visible = false
- end
- function buttonTypes:SetName(str)
- title.Text = str
- end
- function buttonTypes:SetCallback(func)
- callback = func
- end
- return buttonTypes
- end
- function sectionTypes:Toggle(opts)
- local options = utility.table(opts)
- local name = options.name or "Toggle"
- local flag = options.flag
- local callback = options.callback or function()
- end
- local toggled = false
- if flag then
- library.flags[flag] = toggled
- end
- callback(toggled)
- local toggle =
- utility.create(
- "TextButton",
- {
- Size = UDim2.new(1, 0, 0, 16),
- BackgroundTransparency = 1,
- TextColor3 = Color3.fromRGB(0, 0, 0),
- Font = Enum.Font.SourceSans,
- Parent = sectionContent
- }
- )
- local icon =
- utility.create(
- "Frame",
- {
- ZIndex = 3,
- Size = UDim2.new(0, 14, 1, -2),
- BorderColor3 = Color3.fromRGB(37, 37, 37),
- Position = UDim2.new(0, 0, 0, 1),
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- Parent = toggle
- }
- )
- local iconGradient =
- utility.create(
- "UIGradient",
- {
- Rotation = 90,
- Color = ColorSequence.new {
- ColorSequenceKeypoint.new(0, Color3.fromRGB(32, 32, 32)),
- ColorSequenceKeypoint.new(1, Color3.fromRGB(17, 17, 17))
- },
- Parent = icon
- }
- )
- local title =
- utility.create(
- "TextLabel",
- {
- ZIndex = 3,
- Size = UDim2.new(0, 0, 1, 0),
- BackgroundTransparency = 1,
- Position = UDim2.new(1, 7, 0, 0),
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- FontSize = Enum.FontSize.Size14,
- TextSize = 13,
- TextColor3 = Color3.fromRGB(180, 180, 180),
- Text = name,
- Font = Enum.Font.Gotham,
- TextXAlignment = Enum.TextXAlignment.Left,
- Parent = icon
- }
- )
- local function toggleToggle()
- toggled = not toggled
- if toggled then
- table.insert(coloredGradients, iconGradient)
- else
- table.remove(coloredGradients, table.find(coloredGradients, iconGradient))
- end
- local textColor = toggled and Color3.fromRGB(255, 255, 255) or Color3.fromRGB(180, 180, 180)
- local gradientColor
- if toggled then
- gradientColor =
- ColorSequence.new {
- ColorSequenceKeypoint.new(0, library.color),
- ColorSequenceKeypoint.new(1, utility.change_color(library.color, -47))
- }
- else
- gradientColor =
- ColorSequence.new {
- ColorSequenceKeypoint.new(0, Color3.fromRGB(32, 32, 32)),
- ColorSequenceKeypoint.new(1, Color3.fromRGB(17, 17, 17))
- }
- end
- iconGradient.Color = gradientColor
- title.TextColor3 = textColor
- if flag then
- library.flags[flag] = toggled
- end
- callback(toggled)
- end
- toggle.MouseButton1Click:Connect(toggleToggle)
- local toggleTypes = utility.table()
- function toggleTypes:Show()
- toggle.Visible = true
- end
- function toggleTypes:Hide()
- toggle.Visible = false
- end
- function toggleTypes:SetName(str)
- title.Text = str
- end
- function toggleTypes:Toggle(bool)
- if toggled ~= bool then
- toggleToggle()
- end
- end
- if flag then
- flags.toggles[flag] = function(bool)
- if toggled ~= bool then
- toggleToggle()
- end
- end
- end
- return toggleTypes
- end
- function sectionTypes:Box(opts)
- local options = utility.table(opts)
- local name = options.name or "Box"
- local placeholder = options.placeholder or "Box"
- local default = options.default or ""
- local boxType = options.type or "string"
- local flag = options.flag
- local callback = options.callback or function()
- end
- boxType = boxType:lower()
- if boxType == "number" then
- default = default:gsub("%D+", "")
- if flag then
- library.flags[flag] = tonumber(default)
- end
- callback(tonumber(default))
- else
- if flag then
- library.flags[flag] = default
- end
- callback(default)
- end
- local boxHolder =
- utility.create(
- "Frame",
- {
- Size = UDim2.new(1, 0, 0, 36),
- BackgroundTransparency = 1,
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- Parent = sectionContent
- }
- )
- local box =
- utility.create(
- "TextBox",
- {
- ZIndex = 4,
- Size = UDim2.new(1, 0, 0, 16),
- BorderColor3 = Color3.fromRGB(22, 22, 22),
- BackgroundTransparency = 1,
- Position = UDim2.new(0, 0, 1, -16),
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- FontSize = Enum.FontSize.Size12,
- TextSize = 12,
- TextColor3 = Color3.fromRGB(255, 255, 255),
- Text = default,
- Font = Enum.Font.Gotham,
- PlaceholderText = placeholder,
- Parent = boxHolder
- }
- )
- local bg =
- utility.create(
- "Frame",
- {
- ZIndex = 3,
- Size = UDim2.new(1, 0, 1, 0),
- BorderColor3 = Color3.fromRGB(22, 22, 22),
- Position = UDim2.new(0, 0, 0, 0),
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- Parent = box
- }
- )
- utility.create(
- "UIGradient",
- {
- Rotation = 90,
- Color = ColorSequence.new(Color3.fromRGB(32, 32, 32), Color3.fromRGB(17, 17, 17)),
- Parent = bg
- }
- )
- local title =
- utility.create(
- "TextLabel",
- {
- ZIndex = 3,
- Size = UDim2.new(0, 0, 0, 16),
- BackgroundTransparency = 1,
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- FontSize = Enum.FontSize.Size14,
- TextSize = 13,
- TextColor3 = Color3.fromRGB(255, 255, 255),
- Text = name,
- Font = Enum.Font.Gotham,
- TextXAlignment = Enum.TextXAlignment.Left,
- Parent = boxHolder
- }
- )
- box:GetPropertyChangedSignal("Text"):Connect(
- function()
- if boxType == "number" then
- box.Text = box.Text:gsub("%D+", "")
- end
- end
- )
- local boxTypes = utility.table()
- function boxTypes:Show()
- boxHolder.Visible = true
- end
- function boxTypes:Hide()
- boxHolder.Visible = false
- end
- function boxTypes:SetName(str)
- title.Text = str
- end
- function boxTypes:SetPlaceholder(str)
- box.PlaceholderText = str
- end
- function boxTypes:Set(str)
- if boxType == "string" then
- box.Text = str
- if flag then
- library.flags[flag] = str
- end
- callback(str)
- else
- str = str:gsub("%D+", "")
- box.Text = str
- if flag then
- library.flags[flag] = str
- end
- callback(tonumber(str))
- end
- end
- box.FocusLost:Connect(
- function()
- boxTypes:Set(box.Text)
- end
- )
- function boxTypes:SetType(str)
- if str:lower() == "number" or str:lower() == "string" then
- boxType = str:lower()
- end
- end
- if flag then
- flags.boxes[flag] = function(str)
- if boxType == "string" then
- box.Text = str
- if flag then
- library.flags[flag] = str
- end
- callback(str)
- else
- str = str:gsub("%D+", "")
- box.Text = str
- if flag then
- library.flags[flag] = str
- end
- callback(tonumber(str))
- end
- end
- end
- return boxTypes
- end
- function sectionTypes:Slider(opts)
- local options = utility.table(opts)
- local min = options.min or 0
- local max = options.max or 100
- local valueText = options.valueText or "Slider: [VALUE]/" .. tostring(max)
- local default = options.default or math.clamp(0, min, max)
- local decimals = options.decimals or 0.1
- local flag = options.flag
- local callback = options.callback or function()
- end
- decimals = math.floor(10 ^ decimals)
- if flag then
- library.flags[flag] = default
- end
- callback(default)
- local value = default
- local sliding = false
- local slider =
- utility.create(
- "Frame",
- {
- ZIndex = 3,
- Size = UDim2.new(1, 0, 0, 16),
- BorderColor3 = Color3.fromRGB(22, 22, 22),
- Position = UDim2.new(0, 0, 1, -13),
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- Parent = sectionContent
- }
- )
- local fill =
- utility.create(
- "Frame",
- {
- ZIndex = 4,
- Size = UDim2.new((default - min) / (max - min), 0, 1, 0),
- BorderSizePixel = 0,
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- Parent = slider
- }
- )
- local fillGradient =
- utility.create(
- "UIGradient",
- {
- Rotation = 90,
- Color = ColorSequence.new {
- ColorSequenceKeypoint.new(0, library.color),
- ColorSequenceKeypoint.new(1, utility.change_color(library.color, -47))
- },
- Parent = fill
- }
- )
- table.insert(coloredGradients, fillGradient)
- utility.create(
- "UIGradient",
- {
- Rotation = 90,
- Color = ColorSequence.new {
- ColorSequenceKeypoint.new(0, Color3.fromRGB(32, 32, 32)),
- ColorSequenceKeypoint.new(1, Color3.fromRGB(17, 17, 17))
- },
- Parent = slider
- }
- )
- local title =
- utility.create(
- "TextLabel",
- {
- ZIndex = 5,
- Size = UDim2.new(1, 0, 1, 0),
- BackgroundTransparency = 1,
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- FontSize = Enum.FontSize.Size12,
- TextSize = 12,
- TextColor3 = Color3.fromRGB(255, 255, 255),
- Text = valueText:gsub("%[VALUE%]", tostring(default)),
- Font = Enum.Font.Gotham,
- Parent = slider
- }
- )
- local function slide(input)
- local sizeX =
- math.clamp((input.Position.X - slider.AbsolutePosition.X) / slider.AbsoluteSize.X, 0, 1)
- fill.Size = UDim2.new(sizeX, 0, 1, 0)
- value = math.floor((((max - min) * sizeX) + min) * decimals) / decimals
- title.Text = valueText:gsub("%[VALUE%]", tostring(value))
- if flag then
- library.flags[flag] = value
- end
- callback(value)
- end
- slider.InputBegan:Connect(
- function(input)
- if input.UserInputType == Enum.UserInputType.MouseButton1 then
- sliding = true
- slide(input)
- end
- end
- )
- slider.InputEnded:Connect(
- function(input)
- if input.UserInputType == Enum.UserInputType.MouseButton1 then
- sliding = false
- end
- end
- )
- inputService.InputChanged:Connect(
- function(input)
- if input.UserInputType == Enum.UserInputType.MouseMovement then
- if sliding then
- slide(input)
- end
- end
- end
- )
- local sliderTypes = utility.table()
- function sliderTypes:Show()
- slider.Visible = true
- end
- function sliderTypes:Hide()
- slider.Visible = false
- end
- function sliderTypes:SetValueText(str)
- valueText = str
- title.Text = valueText:gsub("%[VALUE%]", tostring(value))
- end
- function sliderTypes:Set(num)
- num = math.floor(math.clamp(num, min, max) * decimals) / decimals
- value = num
- fill.Size = UDim2.new((value - min) / (max - min), 0, 1, 0)
- if flag then
- library.flags[flag] = value
- end
- callback(value)
- end
- function sliderTypes:SetMin(num)
- min = num
- value = math.floor(math.clamp(value, min, max) * decimals) / decimals
- fill.Size = UDim2.new((value - min) / (max - min), 0, 1, 0)
- if flag then
- library.flags[flag] = value
- end
- callback(value)
- end
- function sliderTypes:SetMax(num)
- max = num
- value = math.floor(math.clamp(value, min, max) * decimals) / decimals
- fill.Size = UDim2.new((value - min) / (max - min), 0, 1, 0)
- if flag then
- library.flags[flag] = value
- end
- callback(value)
- end
- if flag then
- flags.sliders[flag] = function(num)
- sliderTypes:Set(num)
- end
- end
- return sliderTypes
- end
- function sectionTypes:ToggleSlider(opts)
- local options = utility.table(opts)
- local name = options.name or "Toggle Slider"
- local min = options.min or 0
- local max = options.max or 100
- local valueText = options.valueText or "Toggle Slider: [VALUE]/" .. tostring(max)
- local default = options.default or math.clamp(0, min, max)
- local decimals = options.decimals or 0
- local toggleFlag = options.toggleFlag
- local sliderFlag = options.sliderFlag
- local toggleCallback = options.toggleCallback or function()
- end
- local sliderCallback = options.sliderCallback or function()
- end
- decimals = math.floor(10 ^ decimals)
- local value = default
- local toggled = false
- local sliding = false
- if sliderFlag then
- library.flags[sliderFlag] = default
- end
- sliderCallback(default)
- if toggleFlag then
- library.flags[toggleFlag] = toggled
- end
- toggleCallback(toggled)
- local toggleSliderHolder =
- utility.create(
- "Frame",
- {
- Size = UDim2.new(1, 0, 0, 35),
- BackgroundTransparency = 1,
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- Parent = sectionContent
- }
- )
- local slider =
- utility.create(
- "Frame",
- {
- ZIndex = 3,
- Size = UDim2.new(1, 0, 0, 16),
- BorderColor3 = Color3.fromRGB(22, 22, 22),
- Position = UDim2.new(0, 0, 1, -16),
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- Parent = toggleSliderHolder
- }
- )
- local fill =
- utility.create(
- "Frame",
- {
- ZIndex = 4,
- Size = UDim2.new((default - min) / (max - min), 0, 1, 0),
- BorderSizePixel = 0,
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- Parent = slider
- }
- )
- local fillGradient =
- utility.create(
- "UIGradient",
- {
- Rotation = 90,
- Color = ColorSequence.new {
- ColorSequenceKeypoint.new(0, library.color),
- ColorSequenceKeypoint.new(1, utility.change_color(library.color, -47))
- },
- Parent = fill
- }
- )
- table.insert(coloredGradients, fillGradient)
- utility.create(
- "UIGradient",
- {
- Rotation = 90,
- Color = ColorSequence.new(Color3.fromRGB(32, 32, 32), Color3.fromRGB(17, 17, 17)),
- Parent = slider
- }
- )
- local title =
- utility.create(
- "TextLabel",
- {
- ZIndex = 5,
- Size = UDim2.new(1, 0, 1, 0),
- BackgroundTransparency = 1,
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- FontSize = Enum.FontSize.Size12,
- TextSize = 12,
- TextColor3 = Color3.fromRGB(255, 255, 255),
- Text = valueText:gsub("%[VALUE%]", tostring(default)),
- Font = Enum.Font.Gotham,
- Parent = slider
- }
- )
- local toggle =
- utility.create(
- "TextButton",
- {
- Size = UDim2.new(1, 0, 0, 16),
- BackgroundTransparency = 1,
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- FontSize = Enum.FontSize.Size14,
- TextSize = 14,
- TextColor3 = Color3.fromRGB(0, 0, 0),
- Font = Enum.Font.SourceSans,
- Parent = toggleSliderHolder
- }
- )
- local icon =
- utility.create(
- "TextButton",
- {
- ZIndex = 3,
- Size = UDim2.new(0, 14, 1, -2),
- BorderColor3 = Color3.fromRGB(37, 37, 37),
- Position = UDim2.new(0, 0, 0, 1),
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- Text = "",
- Parent = toggle
- }
- )
- local iconGradient =
- utility.create(
- "UIGradient",
- {
- Rotation = 90,
- Color = ColorSequence.new {
- ColorSequenceKeypoint.new(0, Color3.fromRGB(32, 32, 32)),
- ColorSequenceKeypoint.new(1, Color3.fromRGB(17, 17, 17))
- },
- Parent = icon
- }
- )
- local toggleTitle =
- utility.create(
- "TextLabel",
- {
- ZIndex = 3,
- Size = UDim2.new(0, 0, 1, 0),
- BackgroundTransparency = 1,
- Position = UDim2.new(1, 7, 0, 0),
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- FontSize = Enum.FontSize.Size14,
- TextSize = 13,
- TextColor3 = Color3.fromRGB(255, 255, 255),
- Text = name,
- Font = Enum.Font.Gotham,
- TextXAlignment = Enum.TextXAlignment.Left,
- Parent = icon
- }
- )
- local function toggleToggle()
- toggled = not toggled
- if toggled then
- table.insert(coloredGradients, iconGradient)
- else
- table.remove(coloredGradients, table.find(coloredGradients, iconGradient))
- end
- local textColor = toggled and Color3.fromRGB(255, 255, 255) or Color3.fromRGB(180, 180, 180)
- local gradientColor
- if toggled then
- gradientColor =
- ColorSequence.new {
- ColorSequenceKeypoint.new(0, library.color),
- ColorSequenceKeypoint.new(1, utility.change_color(library.color, -47))
- }
- else
- gradientColor =
- ColorSequence.new {
- ColorSequenceKeypoint.new(0, Color3.fromRGB(32, 32, 32)),
- ColorSequenceKeypoint.new(1, Color3.fromRGB(17, 17, 17))
- }
- end
- iconGradient.Color = gradientColor
- toggleTitle.TextColor3 = textColor
- if toggleFlag then
- library.flags[toggleFlag] = toggled
- end
- toggleCallback(toggled)
- end
- toggle.MouseButton1Click:Connect(toggleToggle)
- local function slide(input)
- local sizeX =
- math.clamp((input.Position.X - slider.AbsolutePosition.X) / slider.AbsoluteSize.X, 0, 1)
- fill.Size = UDim2.new(sizeX, 0, 1, 0)
- value = math.floor((((max - min) * sizeX) + min) * decimals) / decimals
- title.Text = valueText:gsub("%[VALUE%]", tostring(value))
- if sliderFlag then
- library.flags[sliderFlag] = value
- end
- sliderCallback(value)
- end
- slider.InputBegan:Connect(
- function(input)
- if input.UserInputType == Enum.UserInputType.MouseButton1 then
- sliding = true
- slide(input)
- end
- end
- )
- slider.InputEnded:Connect(
- function(input)
- if input.UserInputType == Enum.UserInputType.MouseButton1 then
- sliding = false
- end
- end
- )
- inputService.InputChanged:Connect(
- function(input)
- if input.UserInputType == Enum.UserInputType.MouseMovement then
- if sliding then
- slide(input)
- end
- end
- end
- )
- local toggleSliderTypes = utility.table()
- function toggleSliderTypes:Show()
- toggleSliderHolder.Visible = true
- end
- function toggleSliderTypes:Hide()
- toggleSliderHolder.Visible = false
- end
- function toggleSliderTypes:SetValueText(str)
- valueText = str
- title.Text = valueText:gsub("%[VALUE%]", tostring(value))
- end
- function toggleSliderTypes:Set(num)
- num = math.floor(math.clamp(num, min, max) * decimals) / decimals
- value = num
- fill.Size = UDim2.new((value - min) / (max - min), 0, 1, 0)
- title.Text = valueText:gsub("%[VALUE%]", tostring(value))
- if sliderFlag then
- library.flags[sliderFlag] = value
- end
- sliderCallback(value)
- end
- function toggleSliderTypes:SetMin(num)
- min = num
- value = math.floor(math.clamp(value, min, max) * decimals) / decimals
- fill.Size = UDim2.new((value - min) / (max - min), 0, 1, 0)
- title.Text = valueText:gsub("%[VALUE%]", tostring(value))
- if sliderFlag then
- library.flags[sliderFlag] = value
- end
- sliderCallback(value)
- end
- function toggleSliderTypes:SetMax(num)
- max = num
- value = math.floor(math.clamp(value, min, max) * decimals) / decimals
- fill.Size = UDim2.new((value - min) / (max - min), 0, 1, 0)
- title.Text = valueText:gsub("%[VALUE%]", tostring(value))
- if sliderFlag then
- library.flags[sliderFlag] = value
- end
- sliderCallback(value)
- end
- function toggleSliderTypes:Toggle(bool)
- if toggled ~= bool then
- toggleToggle()
- end
- end
- if toggleFlag then
- flags.toggles[toggleFlag] = function(bool)
- if toggled ~= bool then
- toggleToggle()
- end
- end
- end
- if sliderFlag then
- flags.sliders[sliderFlag] = function(num)
- toggleSliderTypes:Set(num)
- end
- end
- return toggleSliderTypes
- end
- function sectionTypes:Dropdown(opts)
- local options = utility.table(opts)
- local name = options.name or "Dropdown"
- local content = options.content or {}
- local multiChoice = options.multiChoice or false
- local default =
- options.default or (multiChoice and {} or nil)
- local flag = options.flag
- local callback = options.callback or function()
- end
- if flag then
- library.flags[flag] = default
- end
- callback(default)
- local opened = false
- local current = default
- local chosen = {}
- local dropdownHolder =
- utility.create(
- "Frame",
- {
- Size = UDim2.new(1, 0, 0, 36),
- BackgroundTransparency = 1,
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- Parent = sectionContent
- }
- )
- local title =
- utility.create(
- "TextLabel",
- {
- ZIndex = 3,
- Size = UDim2.new(0, 0, 0, 16),
- BackgroundTransparency = 1,
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- FontSize = Enum.FontSize.Size14,
- TextSize = 13,
- TextColor3 = Color3.fromRGB(255, 255, 255),
- Text = name,
- Font = Enum.Font.Gotham,
- TextXAlignment = Enum.TextXAlignment.Left,
- Parent = dropdownHolder
- }
- )
- local open =
- utility.create(
- "TextButton",
- {
- ZIndex = 3,
- Size = UDim2.new(1, 0, 0, 16),
- BorderColor3 = Color3.fromRGB(22, 22, 22),
- Position = UDim2.new(0, 0, 0, 20),
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- Text = "",
- Font = Enum.Font.Gotham,
- TextXAlignment = Enum.TextXAlignment.Left,
- Parent = dropdownHolder
- }
- )
- utility.create(
- "UIGradient",
- {
- Rotation = 90,
- Color = ColorSequence.new(Color3.fromRGB(32, 32, 32), Color3.fromRGB(17, 17, 17)),
- Parent = open
- }
- )
- local value =
- utility.create(
- "TextLabel",
- {
- ZIndex = 4,
- Size = UDim2.new(0, 0, 1, 0),
- BackgroundTransparency = 1,
- Position = UDim2.new(0, 8, 0, 0),
- FontSize = Enum.FontSize.Size12,
- TextSize = 12,
- TextColor3 = (multiChoice and
- (#default > 0 and Color3.fromRGB(255, 255, 255) or Color3.fromRGB(180, 180, 180))) or
- default and Color3.fromRGB(255, 255, 255) or
- Color3.fromRGB(180, 180, 180),
- Text = multiChoice and (#default > 0 and table.concat(default, ", ") or "NONE") or
- (default or "NONE"),
- Font = Enum.Font.Gotham,
- TextXAlignment = Enum.TextXAlignment.Left,
- Parent = open
- }
- )
- local icon =
- utility.create(
- "ImageLabel",
- {
- ZIndex = 4,
- Size = UDim2.new(0, 14, 0, 14),
- Rotation = 180,
- BackgroundTransparency = 1,
- Position = UDim2.new(1, -16, 0, 1),
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- Image = "http://www.roblox.com/asset/?id=8747047318",
- Parent = open
- }
- )
- local contentFrame =
- utility.create(
- "Frame",
- {
- ZIndex = 10,
- Visible = false,
- Size = UDim2.new(1, 0, 0, 0),
- BorderColor3 = Color3.fromRGB(22, 22, 22),
- Position = UDim2.new(0, 0, 1, 3),
- BackgroundColor3 = Color3.fromRGB(33, 33, 33),
- Parent = open
- }
- )
- local contentHolder =
- utility.create(
- "Frame",
- {
- Size = UDim2.new(1, 0, 1, -4),
- Position = UDim2.new(0, 0, 0, 2),
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- Parent = contentFrame
- }
- )
- local contentList =
- utility.create(
- "UIListLayout",
- {
- SortOrder = Enum.SortOrder.LayoutOrder,
- Parent = contentHolder
- }
- )
- contentList:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(
- function()
- contentFrame.Size = UDim2.new(1, 0, 0, contentList.AbsoluteContentSize.Y + 4)
- end
- )
- local function openDropdown()
- opened = not opened
- icon.Rotation = opened and 0 or 180
- contentFrame.Visible = opened
- dropdownHolder.Size =
- UDim2.new(
- 1,
- 0,
- 0,
- opened and dropdownHolder.AbsoluteSize.Y + contentFrame.AbsoluteSize.Y + 3 or 36
- )
- end
- local function selectObj(obj, padding, bool)
- for i, v in next, contentHolder:GetChildren() do
- if v:IsA("TextButton") then
- v:FindFirstChildOfClass("UIPadding").PaddingLeft = UDim.new(0, 6)
- v.Font = Enum.Font.Gotham
- end
- end
- obj.Font = bool and Enum.Font.GothamSemibold or Enum.Font.Gotham
- padding.PaddingLeft = bool and UDim.new(0, 10) or UDim.new(0, 6)
- value.TextColor3 = bool and Color3.fromRGB(255, 255, 255) or Color3.fromRGB(180, 180, 180)
- end
- local function multiSelectObj(obj, padding, bool)
- obj.Font = bool and Enum.Font.GothamSemibold or Enum.Font.Gotham
- padding.PaddingLeft = bool and UDim.new(0, 10) or UDim.new(0, 6)
- end
- open.MouseButton1Click:Connect(openDropdown)
- for _, opt in next, content do
- local option =
- utility.create(
- "TextButton",
- {
- Name = opt,
- ZIndex = 11,
- Size = UDim2.new(1, 0, 0, 14),
- BackgroundTransparency = 1,
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- FontSize = Enum.FontSize.Size12,
- TextSize = 12,
- TextColor3 = Color3.fromRGB(255, 255, 255),
- Text = tostring(opt),
- Font = current == opt and Enum.Font.GothamSemibold or Enum.Font.Gotham,
- TextXAlignment = Enum.TextXAlignment.Left,
- Parent = contentHolder
- }
- )
- local optionPadding =
- utility.create(
- "UIPadding",
- {
- PaddingLeft = current == opt and UDim.new(0, 10) or UDim.new(0, 6),
- Parent = option
- }
- )
- option.MouseButton1Click:Connect(
- function()
- if not multiChoice then
- if current ~= opt then
- current = opt
- selectObj(option, optionPadding, true)
- value.Text = opt
- if flag then
- library.flags[flag] = opt
- end
- callback(opt)
- else
- current = nil
- selectObj(option, optionPadding, false)
- value.Text = "NONE"
- if flag then
- library.flags[flag] = nil
- end
- callback(nil)
- end
- else
- if not table.find(chosen, opt) then
- table.insert(chosen, opt)
- multiSelectObj(option, optionPadding, true)
- value.TextColor3 = Color3.fromRGB(255, 255, 255)
- value.Text = table.concat(chosen, ", ")
- if flag then
- library.flags[flag] = chosen
- end
- callback(chosen)
- else
- table.remove(chosen, table.find(chosen, opt))
- multiSelectObj(option, optionPadding, false)
- value.TextColor3 =
- #chosen > 0 and Color3.fromRGB(255, 255, 255) or
- Color3.fromRGB(180, 180, 180)
- value.Text = #chosen > 0 and table.concat(chosen, ", ") or "NONE"
- if flag then
- library.flags[flag] = chosen
- end
- callback(chosen)
- end
- end
- end
- )
- end
- local dropdownTypes = utility.table()
- function dropdownTypes:Show()
- dropdownHolder.Visible = true
- end
- function dropdownTypes:Hide()
- dropdownHolder.Visible = false
- end
- function dropdownTypes:SetName(str)
- title.Text = str
- end
- function dropdownTypes:Set(opt)
- if opt then
- if typeof(opt) == "string" then
- if table.find(content, opt) then
- if not multiChoice then
- current = opt
- selectObj(
- contentHolder:FindFirstChild(opt),
- contentHolder:FindFirstChild(opt):FindFirstChildOfClass("UIPadding"),
- true
- )
- value.Text = opt
- if flag then
- library.flags[flag] = opt
- end
- callback(opt)
- else
- table.insert(chosen, opt)
- multiSelectObj(
- contentHolder:FindFirstChild(opt),
- contentHolder:FindFirstChild(opt):FindFirstChildOfClass("UIPadding"),
- true
- )
- value.TextColor3 = Color3.fromRGB(255, 255, 255)
- value.Text = table.concat(chosen, ", ")
- if flag then
- library.flags[flag] = chosen
- end
- callback(chosen)
- end
- end
- elseif multiChoice then
- table.clear(chosen)
- chosen = opt
- for i, v in next, opt do
- if contentHolder:FindFirstChild(v) then
- multiSelectObj(
- contentHolder:FindFirstChild(v),
- contentHolder:FindFirstChild(v):FindFirstChildOfClass("UIPadding"),
- true
- )
- value.TextColor3 = Color3.fromRGB(255, 255, 255)
- value.Text = table.concat(chosen, ", ")
- end
- end
- end
- else
- if not multiChoice then
- current = nil
- for i, v in next, contentHolder:GetChildren() do
- if v:IsA("TextButton") then
- v:FindFirstChildOfClass("UIPadding").PaddingLeft = UDim.new(0, 6)
- v.Font = Enum.Font.Gotham
- end
- end
- value.Text = "NONE"
- value.TextColor3 = Color3.fromRGB(180, 180, 180)
- if flag then
- library.flags[flag] = nil
- end
- callback(nil)
- elseif multiChoice then
- table.clear(chosen)
- for i, v in next, contentHolder:GetChildren() do
- if v:IsA("TextButton") then
- v:FindFirstChildOfClass("UIPadding").PaddingLeft = UDim.new(0, 6)
- v.Font = Enum.Font.GothamSemiBold
- end
- end
- value.TextColor3 = Color3.fromRGB(180, 180, 180)
- value.Text = "NONE"
- if flag then
- library.flags[flag] = chosen
- end
- callback(chosen)
- end
- end
- end
- function dropdownTypes:Add(opt)
- table.insert(content, opt)
- local option =
- utility.create(
- "TextButton",
- {
- Name = opt,
- ZIndex = 11,
- Size = UDim2.new(1, 0, 0, 14),
- BackgroundTransparency = 1,
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- FontSize = Enum.FontSize.Size12,
- TextSize = 12,
- TextColor3 = Color3.fromRGB(255, 255, 255),
- Text = tostring(opt),
- Font = current == opt and Enum.Font.GothamSemibold or Enum.Font.Gotham,
- TextXAlignment = Enum.TextXAlignment.Left,
- Parent = contentHolder
- }
- )
- local optionPadding =
- utility.create(
- "UIPadding",
- {
- PaddingLeft = current == opt and UDim.new(0, 10) or UDim.new(0, 6),
- Parent = option
- }
- )
- option.MouseButton1Click:Connect(
- function()
- if not multiChoice then
- if current ~= opt then
- current = opt
- selectObj(option, optionPadding, true)
- value.Text = opt
- if flag then
- library.flags[flag] = opt
- end
- callback(opt)
- else
- current = nil
- selectObj(option, optionPadding, false)
- value.Text = "NONE"
- if flag then
- library.flags[flag] = nil
- end
- callback(nil)
- end
- else
- if not table.find(chosen, opt) then
- table.insert(chosen, opt)
- multiSelectObj(option, optionPadding, true)
- value.TextColor3 = Color3.fromRGB(255, 255, 255)
- value.Text = table.concat(chosen, ", ")
- if flag then
- library.flags[flag] = chosen
- end
- callback(chosen)
- else
- table.remove(chosen, table.find(chosen, opt))
- multiSelectObj(option, optionPadding, false)
- value.TextColor3 =
- #chosen > 0 and Color3.fromRGB(255, 255, 255) or
- Color3.fromRGB(180, 180, 180)
- value.Text = #chosen > 0 and table.concat(chosen, ", ") or "NONE"
- if flag then
- library.flags[flag] = chosen
- end
- callback(chosen)
- end
- end
- end
- )
- end
- function dropdownTypes:Remove(opt)
- if table.find(content, opt) then
- if not multiChoice then
- if current == opt then
- dropdownTypes:Set(nil)
- end
- if contentHolder:FindFirstChild(opt) then
- contentHolder:FindFirstChild(opt):Destroy()
- end
- else
- if table.find(chosen, opt) then
- table.remove(chosen, table.find(chosen, opt))
- value.TextColor3 =
- #chosen > 0 and Color3.fromRGB(255, 255, 255) or Color3.fromRGB(180, 180, 180)
- value.Text = #chosen > 0 and table.concat(chosen, ", ") or "NONE"
- end
- if contentHolder:FindFirstChild(opt) then
- contentHolder:FindFirstChild(opt):Destroy()
- end
- end
- end
- end
- function dropdownTypes:Refresh(tbl)
- content = tbl
- for _, opt in next, contentHolder:GetChildren() do
- if opt:IsA("TextButton") then
- opt:Destroy()
- end
- end
- dropdownTypes:Set(nil)
- for _, opt in next, content do
- local option =
- utility.create(
- "TextButton",
- {
- Name = opt,
- ZIndex = 11,
- Size = UDim2.new(1, 0, 0, 14),
- BackgroundTransparency = 1,
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- FontSize = Enum.FontSize.Size12,
- TextSize = 12,
- TextColor3 = Color3.fromRGB(255, 255, 255),
- Text = tostring(opt),
- Font = current == opt and Enum.Font.GothamSemibold or Enum.Font.Gotham,
- TextXAlignment = Enum.TextXAlignment.Left,
- Parent = contentHolder
- }
- )
- local optionPadding =
- utility.create(
- "UIPadding",
- {
- PaddingLeft = current == opt and UDim.new(0, 10) or UDim.new(0, 6),
- Parent = option
- }
- )
- option.MouseButton1Click:Connect(
- function()
- if not multiChoice then
- if current ~= opt then
- current = opt
- selectObj(option, optionPadding, true)
- value.Text = opt
- if flag then
- library.flags[flag] = opt
- end
- callback(opt)
- else
- current = nil
- selectObj(option, optionPadding, false)
- value.Text = "NONE"
- if flag then
- library.flags[flag] = nil
- end
- callback(nil)
- end
- else
- if not table.find(chosen, opt) then
- table.insert(chosen, opt)
- multiSelectObj(option, optionPadding, true)
- value.TextColor3 = Color3.fromRGB(255, 255, 255)
- value.Text = table.concat(chosen, ", ")
- if flag then
- library.flags[flag] = chosen
- end
- callback(chosen)
- else
- table.remove(chosen, table.find(chosen, opt))
- multiSelectObj(option, optionPadding, false)
- value.TextColor3 =
- #chosen > 0 and Color3.fromRGB(255, 255, 255) or
- Color3.fromRGB(180, 180, 180)
- value.Text = #chosen > 0 and table.concat(chosen, ", ") or "NONE"
- if flag then
- library.flags[flag] = chosen
- end
- callback(chosen)
- end
- end
- end
- )
- end
- end
- if flag then
- if not multiChoice then
- flags.dropdowns[flag] = function(opt)
- dropdownTypes:Set(opt)
- end
- else
- flags.multidropdowns[flag] = function(opt)
- dropdownTypes:Set(opt)
- end
- end
- end
- return dropdownTypes
- end
- function sectionTypes:Keybind(opts)
- local options = utility.table(opts)
- local name = options.name or "Keybind"
- local default = options.default
- local blacklist = options.blacklist or {}
- local flag = options.flag
- local callback = options.callback or function()
- end
- if flag then
- library.flags[flag] = default
- end
- local keys = {
- [Enum.KeyCode.LeftShift] = "Left Shift",
- [Enum.KeyCode.RightShift] = "Right Shft",
- [Enum.KeyCode.LeftControl] = "Left Ctrl",
- [Enum.KeyCode.RightControl] = "Right Ctrl",
- [Enum.KeyCode.LeftAlt] = "Left Alt",
- [Enum.KeyCode.RightAlt] = "Right Alt",
- [Enum.KeyCode.CapsLock] = "CapsLock",
- [Enum.KeyCode.One] = "1",
- [Enum.KeyCode.Two] = "2",
- [Enum.KeyCode.Three] = "3",
- [Enum.KeyCode.Four] = "4",
- [Enum.KeyCode.Five] = "5",
- [Enum.KeyCode.Six] = "6",
- [Enum.KeyCode.Seven] = "7",
- [Enum.KeyCode.Eight] = "8",
- [Enum.KeyCode.Nine] = "9",
- [Enum.KeyCode.Zero] = "0",
- [Enum.KeyCode.KeypadOne] = "Num 1",
- [Enum.KeyCode.KeypadTwo] = "Num 2",
- [Enum.KeyCode.KeypadThree] = "Num 3",
- [Enum.KeyCode.KeypadFour] = "Num 4",
- [Enum.KeyCode.KeypadFive] = "Num 5",
- [Enum.KeyCode.KeypadSix] = "Num 6",
- [Enum.KeyCode.KeypadSeven] = "Num 7",
- [Enum.KeyCode.KeypadEight] = "Num 8",
- [Enum.KeyCode.KeypadNine] = "Num 9",
- [Enum.KeyCode.KeypadZero] = "Num 0",
- [Enum.KeyCode.Minus] = "-",
- [Enum.KeyCode.Equals] = "=",
- [Enum.KeyCode.Tilde] = "~",
- [Enum.KeyCode.LeftBracket] = "[",
- [Enum.KeyCode.RightBracket] = "]",
- [Enum.KeyCode.RightParenthesis] = ")",
- [Enum.KeyCode.LeftParenthesis] = "(",
- [Enum.KeyCode.Semicolon] = ";",
- [Enum.KeyCode.Quote] = "'",
- [Enum.KeyCode.BackSlash] = "\\",
- [Enum.KeyCode.Comma] = ";",
- [Enum.KeyCode.Period] = ".",
- [Enum.KeyCode.Slash] = "/",
- [Enum.KeyCode.Asterisk] = "*",
- [Enum.KeyCode.Plus] = "+",
- [Enum.KeyCode.Period] = ".",
- [Enum.KeyCode.Backquote] = "`",
- [Enum.UserInputType.MouseButton1] = "Mouse 1",
- [Enum.UserInputType.MouseButton2] = "Mouse 2",
- [Enum.UserInputType.MouseButton3] = "Mouse 3"
- }
- local keyChosen = default
- local keybind =
- utility.create(
- "TextButton",
- {
- Size = UDim2.new(1, 0, 0, 16),
- BackgroundTransparency = 1,
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- FontSize = Enum.FontSize.Size14,
- TextSize = 14,
- TextColor3 = Color3.fromRGB(0, 0, 0),
- Font = Enum.Font.SourceSans,
- Parent = sectionContent
- }
- )
- local title =
- utility.create(
- "TextLabel",
- {
- ZIndex = 3,
- Size = UDim2.new(0, 0, 1, 0),
- BackgroundTransparency = 1,
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- FontSize = Enum.FontSize.Size14,
- TextSize = 13,
- TextColor3 = Color3.fromRGB(255, 255, 255),
- Text = name,
- Font = Enum.Font.Gotham,
- TextXAlignment = Enum.TextXAlignment.Left,
- Parent = keybind
- }
- )
- local value =
- utility.create(
- "TextLabel",
- {
- ZIndex = 3,
- Size = UDim2.new(0, 0, 1, 0),
- BackgroundTransparency = 1,
- Position = UDim2.new(1, 0, 0, 0),
- FontSize = Enum.FontSize.Size14,
- TextSize = 13,
- TextColor3 = Color3.fromRGB(180, 180, 180),
- Text = default and (keys[default] or tostring(default):gsub("Enum.KeyCode.", "")) or "NONE",
- Font = Enum.Font.Gotham,
- TextXAlignment = Enum.TextXAlignment.Right,
- Parent = keybind
- }
- )
- keybind.MouseButton1Click:Connect(
- function()
- value.Text = "..."
- value.TextColor3 = Color3.fromRGB(255, 255, 255)
- local binding
- binding =
- inputService.InputBegan:Connect(
- function(input)
- local key = keys[input.KeyCode] or keys[input.UserInputType]
- value.Text = (keys[key] or tostring(input.KeyCode):gsub("Enum.KeyCode.", ""))
- value.TextColor3 = Color3.fromRGB(180, 180, 180)
- if input.UserInputType == Enum.UserInputType.Keyboard then
- if not table.find(blacklist, input.KeyCode) then
- keyChosen = input.KeyCode
- if flag then
- library.flags[flag] = input.KeyCode
- end
- binding:Disconnect()
- else
- keyChosen = nil
- value.TextColor3 = Color3.fromRGB(180, 180, 180)
- value.Text = "NONE"
- if flag then
- library.flags[flag] = nil
- end
- binding:Disconnect()
- end
- else
- if not table.find(blacklist, input.UserInputType) then
- keyChosen = input.UserInputType
- if flag then
- library.flags[flag] = input.UserInputType
- end
- binding:Disconnect()
- else
- keyChosen = nil
- value.TextColor3 = Color3.fromRGB(180, 180, 180)
- value.Text = "NONE"
- if flag then
- library.flags[flag] = nil
- end
- binding:Disconnect()
- end
- end
- end
- )
- end
- )
- inputService.InputBegan:Connect(
- function(input)
- if input.UserInputType == Enum.UserInputType.Keyboard then
- if input.KeyCode == keyChosen then
- callback(keyChosen)
- end
- else
- if input.UserInputType == keyChosen then
- callback(keyChosen)
- end
- end
- end
- )
- local keybindTypes = utility.table()
- function keybindTypes:Show()
- keybind.Visible = true
- end
- function keybindTypes:Hide()
- keybind.Visible = false
- end
- function keybindTypes:SetName(str)
- title.Text = str
- end
- function keybindTypes:Set(newKey)
- if typeof(newKey) == "EnumItem" then
- if not table.find(blacklist, newKey) then
- local key = keys[newKey]
- value.Text = (keys[key] or tostring(newKey):gsub("Enum.KeyCode.", ""))
- value.TextColor3 = Color3.fromRGB(180, 180, 180)
- keyChosen = newKey
- if flag then
- library.flags[flag] = newKey
- end
- else
- keyChosen = nil
- value.TextColor3 = Color3.fromRGB(180, 180, 180)
- value.Text = "NONE"
- if flag then
- library.flags[flag] = nil
- end
- end
- end
- end
- if flag then
- flags.keybinds[flag] = function(key)
- keybindTypes:Set(key)
- end
- end
- return keybindTypes
- end
- function sectionTypes:ToggleKeybind(opts)
- local options = utility.table(opts)
- local name = options.name or "Toggle Keybind"
- local default = options.default
- local blacklist = options.blacklist or {}
- local toggleFlag = options.toggleFlag
- local keybindFlag = options.keybindFlag
- local toggleCallback = options.toggleCallback or function()
- end
- local keybindCallback = options.keybindCallback or function()
- end
- local keys = {
- [Enum.KeyCode.LeftShift] = "Left Shift",
- [Enum.KeyCode.RightShift] = "Right Shft",
- [Enum.KeyCode.LeftControl] = "Left Ctrl",
- [Enum.KeyCode.RightControl] = "Right Ctrl",
- [Enum.KeyCode.LeftAlt] = "Left Alt",
- [Enum.KeyCode.RightAlt] = "Right Alt",
- [Enum.KeyCode.CapsLock] = "CapsLock",
- [Enum.KeyCode.One] = "1",
- [Enum.KeyCode.Two] = "2",
- [Enum.KeyCode.Three] = "3",
- [Enum.KeyCode.Four] = "4",
- [Enum.KeyCode.Five] = "5",
- [Enum.KeyCode.Six] = "6",
- [Enum.KeyCode.Seven] = "7",
- [Enum.KeyCode.Eight] = "8",
- [Enum.KeyCode.Nine] = "9",
- [Enum.KeyCode.Zero] = "0",
- [Enum.KeyCode.KeypadOne] = "Num 1",
- [Enum.KeyCode.KeypadTwo] = "Num 2",
- [Enum.KeyCode.KeypadThree] = "Num 3",
- [Enum.KeyCode.KeypadFour] = "Num 4",
- [Enum.KeyCode.KeypadFive] = "Num 5",
- [Enum.KeyCode.KeypadSix] = "Num 6",
- [Enum.KeyCode.KeypadSeven] = "Num 7",
- [Enum.KeyCode.KeypadEight] = "Num 8",
- [Enum.KeyCode.KeypadNine] = "Num 9",
- [Enum.KeyCode.KeypadZero] = "Num 0",
- [Enum.KeyCode.Minus] = "-",
- [Enum.KeyCode.Equals] = "=",
- [Enum.KeyCode.Tilde] = "~",
- [Enum.KeyCode.LeftBracket] = "[",
- [Enum.KeyCode.RightBracket] = "]",
- [Enum.KeyCode.RightParenthesis] = ")",
- [Enum.KeyCode.LeftParenthesis] = "(",
- [Enum.KeyCode.Semicolon] = ";",
- [Enum.KeyCode.Quote] = "'",
- [Enum.KeyCode.BackSlash] = "\\",
- [Enum.KeyCode.Comma] = ";",
- [Enum.KeyCode.Period] = ".",
- [Enum.KeyCode.Slash] = "/",
- [Enum.KeyCode.Asterisk] = "*",
- [Enum.KeyCode.Plus] = "+",
- [Enum.KeyCode.Period] = ".",
- [Enum.KeyCode.Backquote] = "`",
- [Enum.UserInputType.MouseButton1] = "Mouse 1",
- [Enum.UserInputType.MouseButton2] = "Mouse 2",
- [Enum.UserInputType.MouseButton3] = "Mouse 3"
- }
- local toggled = false
- local keyChosen = default
- if toggleFlag then
- library.flags[toggleFlag] = toggled
- end
- if keybindFlag then
- library.flags[keybindFlag] = default
- end
- local toggleKeybind =
- utility.create(
- "TextButton",
- {
- Size = UDim2.new(1, 0, 0, 16),
- BackgroundTransparency = 1,
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- FontSize = Enum.FontSize.Size14,
- TextSize = 14,
- TextColor3 = Color3.fromRGB(0, 0, 0),
- Font = Enum.Font.SourceSans,
- Parent = sectionContent
- }
- )
- local title =
- utility.create(
- "TextLabel",
- {
- ZIndex = 3,
- Size = UDim2.new(0, 0, 1, 0),
- BackgroundTransparency = 1,
- Position = UDim2.new(0, 21, 0, 0),
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- FontSize = Enum.FontSize.Size14,
- TextSize = 13,
- TextColor3 = Color3.fromRGB(255, 255, 255),
- Text = name,
- Font = Enum.Font.Gotham,
- TextXAlignment = Enum.TextXAlignment.Left,
- Parent = toggleKeybind
- }
- )
- local icon =
- utility.create(
- "Frame",
- {
- ZIndex = 3,
- Size = UDim2.new(0, 14, 1, -2),
- BorderColor3 = Color3.fromRGB(37, 37, 37),
- Position = UDim2.new(0, 0, 0, 1),
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- Parent = toggleKeybind
- }
- )
- local iconGradient =
- utility.create(
- "UIGradient",
- {
- Rotation = 90,
- Color = ColorSequence.new(Color3.fromRGB(32, 32, 32), Color3.fromRGB(17, 17, 17)),
- Parent = icon
- }
- )
- local value =
- utility.create(
- "TextButton",
- {
- ZIndex = 3,
- BackgroundTransparency = 1,
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- FontSize = Enum.FontSize.Size14,
- TextSize = 13,
- TextColor3 = Color3.fromRGB(180, 180, 180),
- Text = default and (keys[default] or tostring(default):gsub("Enum.KeyCode.", "")) or "NONE",
- Font = Enum.Font.Gotham,
- TextXAlignment = Enum.TextXAlignment.Right,
- Parent = toggleKeybind
- }
- )
- value.Size = UDim2.new(0, value.TextBounds.X, 1, 0)
- value.Position = UDim2.new(1, -value.TextBounds.X, 0, 0)
- local function toggleToggle()
- toggled = not toggled
- if toggled then
- table.insert(coloredGradients, iconGradient)
- else
- table.remove(coloredGradients, table.find(coloredGradients, iconGradient))
- end
- local textColor = toggled and Color3.fromRGB(255, 255, 255) or Color3.fromRGB(180, 180, 180)
- local gradientColor
- if toggled then
- gradientColor =
- ColorSequence.new {
- ColorSequenceKeypoint.new(0, library.color),
- ColorSequenceKeypoint.new(1, utility.change_color(library.color, -47))
- }
- else
- gradientColor =
- ColorSequence.new {
- ColorSequenceKeypoint.new(0, Color3.fromRGB(32, 32, 32)),
- ColorSequenceKeypoint.new(1, Color3.fromRGB(17, 17, 17))
- }
- end
- iconGradient.Color = gradientColor
- title.TextColor3 = textColor
- if toggleFlag then
- library.flags[toggleFlag] = toggled
- end
- toggleCallback(toggled)
- end
- toggleKeybind.MouseButton1Click:Connect(toggleToggle)
- value.MouseButton1Click:Connect(
- function()
- value.Text = "..."
- value.Size = UDim2.new(0, value.TextBounds.X, 1, 0)
- value.Position = UDim2.new(1, -value.TextBounds.X, 0, 0)
- value.TextColor3 = Color3.fromRGB(255, 255, 255)
- local binding
- binding =
- inputService.InputBegan:Connect(
- function(input)
- local key = keys[input.KeyCode] or keys[input.UserInputType]
- value.Text = (keys[key] or tostring(input.KeyCode):gsub("Enum.KeyCode.", ""))
- value.Size = UDim2.new(0, value.TextBounds.X, 1, 0)
- value.Position = UDim2.new(1, -value.TextBounds.X, 0, 0)
- value.TextColor3 = Color3.fromRGB(180, 180, 180)
- if input.UserInputType == Enum.UserInputType.Keyboard then
- if not table.find(blacklist, input.KeyCode) then
- keyChosen = input.KeyCode
- if keybindFlag then
- library.flags[keybindFlag] = input.KeyCode
- end
- binding:Disconnect()
- else
- keyChosen = nil
- value.TextColor3 = Color3.fromRGB(180, 180, 180)
- value.Text = "NONE"
- value.Size = UDim2.new(0, value.TextBounds.X, 1, 0)
- value.Position = UDim2.new(1, -value.TextBounds.X, 0, 0)
- if keybindFlag then
- library.flags[keybindFlag] = nil
- end
- binding:Disconnect()
- end
- else
- if not table.find(blacklist, input.UserInputType) then
- keyChosen = input.UserInputType
- if keybindFlag then
- library.flags[keybindFlag] = input.UserInputType
- end
- binding:Disconnect()
- else
- keyChosen = nil
- value.TextColor3 = Color3.fromRGB(180, 180, 180)
- value.Text = "NONE"
- value.Size = UDim2.new(0, value.TextBounds.X, 1, 0)
- value.Position = UDim2.new(1, -value.TextBounds.X, 0, 0)
- if keybindFlag then
- library.flags[keybindFlag] = nil
- end
- binding:Disconnect()
- end
- end
- end
- )
- end
- )
- inputService.InputBegan:Connect(
- function(input)
- if input.UserInputType == Enum.UserInputType.Keyboard then
- if input.KeyCode == keyChosen then
- toggleToggle()
- keybindCallback(keyChosen)
- end
- else
- if input.UserInputType == keyChosen then
- toggleToggle()
- keybindCallback(keyChosen)
- end
- end
- end
- )
- local toggleKeybindTypes = utility.table()
- function toggleKeybindTypes:Show()
- keybind.Visible = true
- end
- function toggleKeybindTypes:Hide()
- keybind.Visible = false
- end
- function toggleKeybindTypes:SetName(str)
- title.Text = str
- end
- function toggleKeybindTypes:Toggle(bool)
- if toggled ~= bool then
- toggleToggle()
- end
- end
- function toggleKeybindTypes:Set(newKey)
- if typeof(newKey) == "EnumItem" then
- if not table.find(blacklist, newKey) then
- local key = keys[newKey]
- value.Text = (keys[key] or tostring(newKey):gsub("Enum.KeyCode.", ""))
- value.Size = UDim2.new(0, value.TextBounds.X, 1, 0)
- value.Position = UDim2.new(1, -value.TextBounds.X, 0, 0)
- value.TextColor3 = Color3.fromRGB(180, 180, 180)
- keyChosen = newKey
- if keybindFlag then
- library.flags[keybindFlag] = newKey
- end
- else
- keyChosen = nil
- value.TextColor3 = Color3.fromRGB(180, 180, 180)
- value.Text = "NONE"
- if keybindFlag then
- library.flags[keybindFlag] = nil
- end
- end
- end
- end
- if keybindFlag then
- flags.keybinds[keybindFlag] = function(key)
- toggleKeybindTypes:Set(key)
- end
- end
- if toggleFlag then
- flags.toggles[toggleFlag] = function(bool)
- toggleKeybindTypes:Toggle(bool)
- end
- end
- return toggleKeybindTypes
- end
- function sectionTypes:ColorPicker(opts)
- local options = utility.table(opts)
- local name = options.name or "Color Picker"
- local default = options.default or Color3.fromRGB(255, 255, 255)
- local flag = options.flag
- local callback = options.callback or function()
- end
- local open = false
- local hue, sat, val = default:ToHSV()
- local slidingHue = false
- local slidingSaturation = false
- local hsv = Color3.fromHSV(hue, sat, val)
- if flag then
- library.flags[flag] = default
- end
- callback(default)
- local colorPickerHolder =
- utility.create(
- "Frame",
- {
- Size = UDim2.new(1, 0, 0, 16),
- Position = UDim2.new(0, 0, 0, 0),
- BackgroundTransparency = 1,
- Parent = sectionContent
- }
- )
- local colorPicker =
- utility.create(
- "TextButton",
- {
- Size = UDim2.new(1, 0, 0, 16),
- BackgroundTransparency = 1,
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- FontSize = Enum.FontSize.Size14,
- TextSize = 14,
- TextColor3 = Color3.fromRGB(0, 0, 0),
- Font = Enum.Font.SourceSans,
- Parent = colorPickerHolder
- }
- )
- local title =
- utility.create(
- "TextLabel",
- {
- ZIndex = 3,
- Size = UDim2.new(0, 0, 1, 0),
- BackgroundTransparency = 1,
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- FontSize = Enum.FontSize.Size14,
- TextSize = 13,
- TextColor3 = Color3.fromRGB(255, 255, 255),
- Text = name,
- Font = Enum.Font.Gotham,
- TextXAlignment = Enum.TextXAlignment.Left,
- Parent = colorPicker
- }
- )
- local icon =
- utility.create(
- "Frame",
- {
- ZIndex = 3,
- Size = UDim2.new(0, 22, 0, 14),
- BorderColor3 = Color3.fromRGB(22, 22, 22),
- Position = UDim2.new(1, -22, 0, 1),
- BackgroundColor3 = default,
- Parent = colorPicker
- }
- )
- local iconGradient =
- utility.create(
- "UIGradient",
- {
- Rotation = 90,
- Color = ColorSequence.new {
- ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 255, 255)),
- ColorSequenceKeypoint.new(1, Color3.fromRGB(105, 105, 105))
- },
- Parent = icon
- }
- )
- local picker =
- utility.create(
- "Frame",
- {
- ZIndex = 12,
- Visible = false,
- Size = UDim2.new(1, -8, 0, 183),
- ClipsDescendants = true,
- BorderColor3 = Color3.fromRGB(22, 22, 22),
- Position = UDim2.new(0, 12, 1, 3),
- BackgroundColor3 = Color3.fromRGB(20, 20, 20),
- Parent = colorPicker
- }
- )
- local saturationFrame =
- utility.create(
- "ImageLabel",
- {
- ZIndex = 13,
- Size = UDim2.new(1, -29, 0, 130),
- BorderColor3 = Color3.fromRGB(22, 22, 22),
- Position = UDim2.new(0, 5, 0, 5),
- BackgroundColor3 = Color3.fromRGB(255, 0, 4),
- Image = "http://www.roblox.com/asset/?id=8630797271",
- Parent = picker
- }
- )
- local saturationPicker =
- utility.create(
- "Frame",
- {
- ZIndex = 15,
- Size = UDim2.new(0, 4, 0, 4),
- Position = UDim2.new(0, 5, 0, 5),
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- BorderColor3 = Color3.fromRGB(0, 0, 0),
- BorderSizePixel = 1,
- Parent = saturationFrame
- }
- )
- local hueFrame =
- utility.create(
- "ImageLabel",
- {
- ZIndex = 13,
- Size = UDim2.new(0, 14, 0, 130),
- ClipsDescendants = true,
- BorderColor3 = Color3.fromRGB(22, 22, 22),
- BackgroundTransparency = 1,
- Position = UDim2.new(1, -19, 0, 5),
- BackgroundColor3 = Color3.fromRGB(255, 0, 4),
- ScaleType = Enum.ScaleType.Crop,
- Image = "http://www.roblox.com/asset/?id=8630799159",
- Parent = picker
- }
- )
- local huePicker =
- utility.create(
- "Frame",
- {
- ZIndex = 15,
- Size = UDim2.new(1, 0, 0, 2),
- Position = UDim2.new(0, 0, 0, 10),
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- BorderColor3 = Color3.fromRGB(0, 0, 0),
- BorderSizePixel = 1,
- Parent = hueFrame
- }
- )
- local rgb =
- utility.create(
- "TextBox",
- {
- ZIndex = 14,
- Size = UDim2.new(1, -10, 0, 16),
- BackgroundTransparency = 1,
- Position = UDim2.new(0, 5, 1, -42),
- BackgroundColor3 = Color3.fromRGB(30, 30, 30),
- PlaceholderColor3 = Color3.fromRGB(180, 180, 180),
- FontSize = Enum.FontSize.Size12,
- TextSize = 12,
- TextColor3 = Color3.fromRGB(255, 255, 255),
- Text = table.concat({utility.get_rgb(default)}, ", "),
- ClearTextOnFocus = false,
- Font = Enum.Font.Gotham,
- PlaceholderText = "R, G, B",
- Parent = picker
- }
- )
- local bg =
- utility.create(
- "Frame",
- {
- ZIndex = 13,
- Size = UDim2.new(1, 0, 1, 0),
- BorderColor3 = Color3.fromRGB(22, 22, 22),
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- Parent = rgb
- }
- )
- utility.create(
- "UIGradient",
- {
- Rotation = 90,
- Color = ColorSequence.new(Color3.fromRGB(32, 32, 32), Color3.fromRGB(17, 17, 17)),
- Parent = bg
- }
- )
- local hex =
- utility.create(
- "TextBox",
- {
- ZIndex = 14,
- Size = UDim2.new(1, -10, 0, 16),
- BackgroundTransparency = 1,
- Position = UDim2.new(0, 5, 1, -21),
- BackgroundColor3 = Color3.fromRGB(30, 30, 30),
- PlaceholderColor3 = Color3.fromRGB(180, 180, 180),
- FontSize = Enum.FontSize.Size12,
- TextSize = 12,
- TextColor3 = Color3.fromRGB(255, 255, 255),
- Text = utility.rgb_to_hex(default),
- ClearTextOnFocus = false,
- Font = Enum.Font.Gotham,
- PlaceholderText = utility.rgb_to_hex(default),
- Parent = picker
- }
- )
- local bg =
- utility.create(
- "Frame",
- {
- ZIndex = 13,
- Size = UDim2.new(1, 0, 1, 0),
- BorderColor3 = Color3.fromRGB(22, 22, 22),
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- Parent = hex
- }
- )
- utility.create(
- "UIGradient",
- {
- Rotation = 90,
- Color = ColorSequence.new(Color3.fromRGB(32, 32, 32), Color3.fromRGB(17, 17, 17)),
- Parent = bg
- }
- )
- local function openPicker()
- open = not open
- picker.Visible = open
- colorPickerHolder.Size =
- UDim2.new(1, 0, 0, open and colorPicker.AbsoluteSize.Y + picker.AbsoluteSize.Y + 3 or 16)
- end
- colorPicker.MouseButton1Click:connect(openPicker)
- local function updateHue(input)
- local sizeY =
- 1 -
- math.clamp((input.Position.Y - hueFrame.AbsolutePosition.Y) / hueFrame.AbsoluteSize.Y, 0, 1)
- local posY =
- math.clamp(
- ((input.Position.Y - hueFrame.AbsolutePosition.Y) / hueFrame.AbsoluteSize.Y) *
- hueFrame.AbsoluteSize.Y,
- 0,
- hueFrame.AbsoluteSize.Y - 2
- )
- huePicker.Position = UDim2.new(0, 0, 0, posY)
- hue = sizeY
- rgb.Text =
- math.floor((hsv.r * 255) + 0.5) ..
- ", " .. math.floor((hsv.g * 255) + 0.5) .. ", " .. math.floor((hsv.b * 255) + 0.5)
- hex.Text = utility.rgb_to_hex(Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b * 255))
- hsv = Color3.fromHSV(hue, sat, val)
- saturationFrame.BackgroundColor3 = hsv
- icon.BackgroundColor3 = hsv
- if flag then
- library.flags[flag] = Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b * 255)
- end
- callback(Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b * 255))
- end
- hueFrame.InputBegan:Connect(
- function(input)
- if input.UserInputType == Enum.UserInputType.MouseButton1 then
- slidingHue = true
- updateHue(input)
- end
- end
- )
- hueFrame.InputEnded:Connect(
- function(input)
- if input.UserInputType == Enum.UserInputType.MouseButton1 then
- slidingHue = false
- end
- end
- )
- inputService.InputChanged:Connect(
- function(input)
- if input.UserInputType == Enum.UserInputType.MouseMovement then
- if slidingHue then
- updateHue(input)
- end
- end
- end
- )
- local function updateSatVal(input)
- local sizeX =
- math.clamp(
- (input.Position.X - saturationFrame.AbsolutePosition.X) / saturationFrame.AbsoluteSize.X,
- 0,
- 1
- )
- local sizeY =
- 1 -
- math.clamp(
- (input.Position.Y - saturationFrame.AbsolutePosition.Y) / saturationFrame.AbsoluteSize.Y,
- 0,
- 1
- )
- local posY =
- math.clamp(
- ((input.Position.Y - saturationFrame.AbsolutePosition.Y) / saturationFrame.AbsoluteSize.Y) *
- saturationFrame.AbsoluteSize.Y,
- 0,
- saturationFrame.AbsoluteSize.Y - 4
- )
- local posX =
- math.clamp(
- ((input.Position.X - saturationFrame.AbsolutePosition.X) / saturationFrame.AbsoluteSize.X) *
- saturationFrame.AbsoluteSize.X,
- 0,
- saturationFrame.AbsoluteSize.X - 4
- )
- saturationPicker.Position = UDim2.new(0, posX, 0, posY)
- sat = sizeX
- val = sizeY
- hsv = Color3.fromHSV(hue, sat, val)
- rgb.Text =
- math.floor((hsv.r * 255) + 0.5) ..
- ", " .. math.floor((hsv.g * 255) + 0.5) .. ", " .. math.floor((hsv.b * 255) + 0.5)
- hex.Text = utility.rgb_to_hex(Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b * 255))
- saturationFrame.BackgroundColor3 = hsv
- icon.BackgroundColor3 = hsv
- if flag then
- library.flags[flag] = Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b * 255)
- end
- callback(Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b * 255))
- end
- saturationFrame.InputBegan:Connect(
- function(input)
- if input.UserInputType == Enum.UserInputType.MouseButton1 then
- slidingSaturation = true
- updateSatVal(input)
- end
- end
- )
- saturationFrame.InputEnded:Connect(
- function(input)
- if input.UserInputType == Enum.UserInputType.MouseButton1 then
- slidingSaturation = false
- end
- end
- )
- inputService.InputChanged:Connect(
- function(input)
- if input.UserInputType == Enum.UserInputType.MouseMovement then
- if slidingSaturation then
- updateSatVal(input)
- end
- end
- end
- )
- local colorPickerTypes = utility.table()
- function colorPickerTypes:Show()
- colorPickerHolder.Visible = true
- end
- function colorPickerTypes:Hide()
- colorPickerHolder.Visible = false
- end
- function colorPickerTypes:SetName(str)
- title.Text = str
- end
- function colorPickerTypes:SetRGB(color)
- hue, sat, val = color:ToHSV()
- hsv = Color3.fromHSV(hue, sat, val)
- saturationFrame.BackgroundColor3 = hsv
- icon.BackgroundColor3 = hsv
- saturationPicker.Position =
- UDim2.new(
- 0,
- (math.clamp(sat * saturationFrame.AbsoluteSize.X, 0, saturationFrame.AbsoluteSize.X - 4)),
- 0,
- (math.clamp(
- (1 - val) * saturationFrame.AbsoluteSize.Y,
- 0,
- saturationFrame.AbsoluteSize.Y - 4
- ))
- )
- huePicker.Position =
- UDim2.new(
- 0,
- 0,
- 0,
- math.clamp((1 - hue) * hueFrame.AbsoluteSize.Y, 0, hueFrame.AbsoluteSize.Y - 4)
- )
- rgb.Text =
- math.floor((hsv.r * 255) + 0.5) ..
- ", " .. math.floor((hsv.g * 255) + 0.5) .. ", " .. math.floor((hsv.b * 255) + 0.5)
- hex.Text = utility.rgb_to_hex(Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b * 255))
- if flag then
- library.flags[flag] = Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b * 255)
- end
- callback(Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b * 255))
- end
- function colorPickerTypes:SetHex(hexValue)
- color = utility.hex_to_rgb(hexValue)
- hue, sat, val = color:ToHSV()
- hsv = Color3.fromHSV(hue, sat, val)
- saturationFrame.BackgroundColor3 = hsv
- icon.BackgroundColor3 = hsv
- saturationPicker.Position =
- UDim2.new(
- 0,
- (math.clamp(sat * saturationFrame.AbsoluteSize.X, 0, saturationFrame.AbsoluteSize.X - 4)),
- 0,
- (math.clamp(
- (1 - val) * saturationFrame.AbsoluteSize.Y,
- 0,
- saturationFrame.AbsoluteSize.Y - 4
- ))
- )
- huePicker.Position =
- UDim2.new(
- 0,
- 0,
- 0,
- math.clamp((1 - hue) * hueFrame.AbsoluteSize.Y, 0, hueFrame.AbsoluteSize.Y - 4)
- )
- rgb.Text =
- math.floor((hsv.r * 255) + 0.5) ..
- ", " .. math.floor((hsv.g * 255) + 0.5) .. ", " .. math.floor((hsv.b * 255) + 0.5)
- hex.Text = utility.rgb_to_hex(Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b * 255))
- if flag then
- library.flags[flag] = Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b * 255)
- end
- callback(Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b * 255))
- end
- rgb.FocusLost:Connect(
- function()
- local _, amount = rgb.Text:gsub(", ", "")
- if amount == 2 then
- local values = rgb.Text:split(", ")
- local r, g, b =
- math.clamp(values[1], 0, 255),
- math.clamp(values[2], 0, 255),
- math.clamp(values[3], 0, 255)
- colorPickerTypes:SetRGB(Color3.fromRGB(r, g, b))
- else
- rgb.Text =
- math.floor((hsv.r * 255) + 0.5) ..
- ", " .. math.floor((hsv.g * 255) + 0.5) .. ", " .. math.floor((hsv.b * 255) + 0.5)
- end
- end
- )
- hex.FocusLost:Connect(
- function()
- if hex.Text:find("#") and hex.Text:len() == 7 then
- colorPickerTypes:SetHex(hex.Text)
- else
- hex.Text = utility.rgb_to_hex(Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b * 255))
- end
- end
- )
- hex:GetPropertyChangedSignal("Text"):Connect(
- function()
- if hex.Text == "" then
- hex.Text = "#"
- end
- end
- )
- if flag then
- flags.colorpickers[flag] = function(color)
- colorPickerTypes:SetRGB(color)
- end
- end
- return colorPickerTypes
- end
- function sectionTypes:ToggleColorPicker(opts)
- local options = utility.table(opts)
- local name = options.name or "Toggle Color Picker"
- local default = options.default or Color3.fromRGB(255, 255, 255)
- local toggleFlag = options.toggleFlag
- local colorPickerFlag = options.colorPickerFlag
- local toggleCallback = options.toggleCallback or function()
- end
- local colorPickerCallback = options.colorPickerCallback or function()
- end
- local open = false
- local toggled = false
- local hue, sat, val = default:ToHSV()
- local slidingHue = false
- local slidingSaturation = false
- local hsv = Color3.fromHSV(hue, sat, val)
- if colorPickerFlag then
- library.flags[colorPickerFlag] = default
- end
- colorPickerCallback(default)
- if toggleFlag then
- library.flags[toggleFlag] = toggled
- end
- toggleCallback(false)
- local toggleColorPickerHolder =
- utility.create(
- "Frame",
- {
- Size = UDim2.new(1, 0, 0, 16),
- Position = UDim2.new(0, 0, 0, 0),
- BackgroundTransparency = 1,
- Parent = sectionContent
- }
- )
- local colorPicker =
- utility.create(
- "TextButton",
- {
- Size = UDim2.new(1, 0, 0, 16),
- BackgroundTransparency = 1,
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- FontSize = Enum.FontSize.Size14,
- TextSize = 14,
- TextColor3 = Color3.fromRGB(0, 0, 0),
- Font = Enum.Font.SourceSans,
- Parent = toggleColorPickerHolder
- }
- )
- local icon =
- utility.create(
- "Frame",
- {
- ZIndex = 3,
- Size = UDim2.new(0, 14, 1, -2),
- BorderColor3 = Color3.fromRGB(37, 37, 37),
- Position = UDim2.new(0, 0, 0, 1),
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- Parent = colorPicker
- }
- )
- local iconGradient =
- utility.create(
- "UIGradient",
- {
- Rotation = 90,
- Color = ColorSequence.new(Color3.fromRGB(32, 32, 32), Color3.fromRGB(17, 17, 17)),
- Parent = icon
- }
- )
- local colorPickerIcon =
- utility.create(
- "TextButton",
- {
- ZIndex = 3,
- Text = "",
- Size = UDim2.new(0, 22, 0, 14),
- BorderColor3 = Color3.fromRGB(22, 22, 22),
- Position = UDim2.new(1, -22, 0, 1),
- BackgroundColor3 = default,
- Parent = colorPicker
- }
- )
- local colorPickerIconGradient =
- utility.create(
- "UIGradient",
- {
- Rotation = 90,
- Color = ColorSequence.new {
- ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 255, 255)),
- ColorSequenceKeypoint.new(1, Color3.fromRGB(105, 105, 105))
- },
- Parent = colorPickerIcon
- }
- )
- local title =
- utility.create(
- "TextLabel",
- {
- ZIndex = 3,
- Size = UDim2.new(0, 0, 1, 0),
- BackgroundTransparency = 1,
- Position = UDim2.new(1, 7, 0, 0),
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- FontSize = Enum.FontSize.Size14,
- TextSize = 13,
- TextColor3 = Color3.fromRGB(180, 180, 180),
- Text = name,
- Font = Enum.Font.Gotham,
- TextXAlignment = Enum.TextXAlignment.Left,
- Parent = icon
- }
- )
- local picker =
- utility.create(
- "Frame",
- {
- ZIndex = 12,
- Visible = false,
- Size = UDim2.new(1, -8, 0, 183),
- ClipsDescendants = true,
- BorderColor3 = Color3.fromRGB(22, 22, 22),
- Position = UDim2.new(0, 12, 1, 3),
- BackgroundColor3 = Color3.fromRGB(20, 20, 20),
- Parent = colorPicker
- }
- )
- local saturationFrame =
- utility.create(
- "ImageLabel",
- {
- ZIndex = 13,
- Size = UDim2.new(1, -29, 0, 130),
- BorderColor3 = Color3.fromRGB(22, 22, 22),
- Position = UDim2.new(0, 5, 0, 5),
- BackgroundColor3 = Color3.fromRGB(255, 0, 4),
- Image = "http://www.roblox.com/asset/?id=8630797271",
- Parent = picker
- }
- )
- local saturationPicker =
- utility.create(
- "Frame",
- {
- ZIndex = 15,
- Size = UDim2.new(0, 4, 0, 4),
- Position = UDim2.new(0, 5, 0, 5),
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- BorderColor3 = Color3.fromRGB(0, 0, 0),
- BorderSizePixel = 1,
- Parent = saturationFrame
- }
- )
- local hueFrame =
- utility.create(
- "ImageLabel",
- {
- ZIndex = 13,
- Size = UDim2.new(0, 14, 0, 130),
- ClipsDescendants = true,
- BorderColor3 = Color3.fromRGB(22, 22, 22),
- BackgroundTransparency = 1,
- Position = UDim2.new(1, -19, 0, 5),
- BackgroundColor3 = Color3.fromRGB(255, 0, 4),
- ScaleType = Enum.ScaleType.Crop,
- Image = "http://www.roblox.com/asset/?id=8630799159",
- Parent = picker
- }
- )
- local huePicker =
- utility.create(
- "Frame",
- {
- ZIndex = 15,
- Size = UDim2.new(1, 0, 0, 2),
- Position = UDim2.new(0, 0, 0, 10),
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- BorderColor3 = Color3.fromRGB(0, 0, 0),
- BorderSizePixel = 1,
- Parent = hueFrame
- }
- )
- local rgb =
- utility.create(
- "TextBox",
- {
- ZIndex = 14,
- Size = UDim2.new(1, -10, 0, 16),
- BackgroundTransparency = 1,
- Position = UDim2.new(0, 5, 1, -42),
- BackgroundColor3 = Color3.fromRGB(30, 30, 30),
- PlaceholderColor3 = Color3.fromRGB(180, 180, 180),
- FontSize = Enum.FontSize.Size12,
- TextSize = 12,
- TextColor3 = Color3.fromRGB(255, 255, 255),
- Text = table.concat({utility.get_rgb(default)}, ", "),
- ClearTextOnFocus = false,
- Font = Enum.Font.Gotham,
- PlaceholderText = "R, G, B",
- Parent = picker
- }
- )
- local bg =
- utility.create(
- "Frame",
- {
- ZIndex = 13,
- Size = UDim2.new(1, 0, 1, 0),
- BorderColor3 = Color3.fromRGB(22, 22, 22),
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- Parent = rgb
- }
- )
- utility.create(
- "UIGradient",
- {
- Rotation = 90,
- Color = ColorSequence.new(Color3.fromRGB(32, 32, 32), Color3.fromRGB(17, 17, 17)),
- Parent = bg
- }
- )
- local hex =
- utility.create(
- "TextBox",
- {
- ZIndex = 14,
- Size = UDim2.new(1, -10, 0, 16),
- BackgroundTransparency = 1,
- Position = UDim2.new(0, 5, 1, -21),
- BackgroundColor3 = Color3.fromRGB(30, 30, 30),
- PlaceholderColor3 = Color3.fromRGB(180, 180, 180),
- FontSize = Enum.FontSize.Size12,
- TextSize = 12,
- TextColor3 = Color3.fromRGB(255, 255, 255),
- Text = utility.rgb_to_hex(default),
- ClearTextOnFocus = false,
- Font = Enum.Font.Gotham,
- PlaceholderText = utility.rgb_to_hex(default),
- Parent = picker
- }
- )
- local bg =
- utility.create(
- "Frame",
- {
- ZIndex = 13,
- Size = UDim2.new(1, 0, 1, 0),
- BorderColor3 = Color3.fromRGB(22, 22, 22),
- BackgroundColor3 = Color3.fromRGB(255, 255, 255),
- Parent = hex
- }
- )
- utility.create(
- "UIGradient",
- {
- Rotation = 90,
- Color = ColorSequence.new(Color3.fromRGB(32, 32, 32), Color3.fromRGB(17, 17, 17)),
- Parent = bg
- }
- )
- local function toggleToggle()
- toggled = not toggled
- if toggled then
- table.insert(coloredGradients, iconGradient)
- else
- table.remove(coloredGradients, table.find(coloredGradients, iconGradient))
- end
- local textColor = toggled and Color3.fromRGB(255, 255, 255) or Color3.fromRGB(180, 180, 180)
- local gradientColor
- if toggled then
- gradientColor =
- ColorSequence.new {
- ColorSequenceKeypoint.new(0, library.color),
- ColorSequenceKeypoint.new(1, utility.change_color(library.color, -47))
- }
- else
- gradientColor =
- ColorSequence.new {
- ColorSequenceKeypoint.new(0, Color3.fromRGB(32, 32, 32)),
- ColorSequenceKeypoint.new(1, Color3.fromRGB(17, 17, 17))
- }
- end
- iconGradient.Color = gradientColor
- title.TextColor3 = textColor
- if toggleFlag then
- library.flags[toggleFlag] = toggled
- end
- toggleCallback(toggled)
- end
- colorPicker.MouseButton1Click:Connect(toggleToggle)
- local function openPicker()
- open = not open
- picker.Visible = open
- toggleColorPickerHolder.Size =
- UDim2.new(1, 0, 0, open and colorPicker.AbsoluteSize.Y + picker.AbsoluteSize.Y + 3 or 16)
- end
- colorPickerIcon.MouseButton1Click:connect(openPicker)
- local function updateHue(input)
- local sizeY =
- 1 -
- math.clamp((input.Position.Y - hueFrame.AbsolutePosition.Y) / hueFrame.AbsoluteSize.Y, 0, 1)
- local posY =
- math.clamp(
- ((input.Position.Y - hueFrame.AbsolutePosition.Y) / hueFrame.AbsoluteSize.Y) *
- hueFrame.AbsoluteSize.Y,
- 0,
- hueFrame.AbsoluteSize.Y - 2
- )
- huePicker.Position = UDim2.new(0, 0, 0, posY)
- hue = sizeY
- rgb.Text =
- math.floor((hsv.r * 255) + 0.5) ..
- ", " .. math.floor((hsv.g * 255) + 0.5) .. ", " .. math.floor((hsv.b * 255) + 0.5)
- hex.Text = utility.rgb_to_hex(Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b * 255))
- hsv = Color3.fromHSV(hue, sat, val)
- saturationFrame.BackgroundColor3 = hsv
- colorPickerIcon.BackgroundColor3 = hsv
- if colorPickerFlag then
- library.flags[colorPickerFlag] = Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b * 255)
- end
- colorPickerCallback(Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b * 255))
- end
- hueFrame.InputBegan:Connect(
- function(input)
- if input.UserInputType == Enum.UserInputType.MouseButton1 then
- slidingHue = true
- updateHue(input)
- end
- end
- )
- hueFrame.InputEnded:Connect(
- function(input)
- if input.UserInputType == Enum.UserInputType.MouseButton1 then
- slidingHue = false
- end
- end
- )
- inputService.InputChanged:Connect(
- function(input)
- if input.UserInputType == Enum.UserInputType.MouseMovement then
- if slidingHue then
- updateHue(input)
- end
- end
- end
- )
- local function updateSatVal(input)
- local sizeX =
- math.clamp(
- (input.Position.X - saturationFrame.AbsolutePosition.X) / saturationFrame.AbsoluteSize.X,
- 0,
- 1
- )
- local sizeY =
- 1 -
- math.clamp(
- (input.Position.Y - saturationFrame.AbsolutePosition.Y) / saturationFrame.AbsoluteSize.Y,
- 0,
- 1
- )
- local posY =
- math.clamp(
- ((input.Position.Y - saturationFrame.AbsolutePosition.Y) / saturationFrame.AbsoluteSize.Y) *
- saturationFrame.AbsoluteSize.Y,
- 0,
- saturationFrame.AbsoluteSize.Y - 4
- )
- local posX =
- math.clamp(
- ((input.Position.X - saturationFrame.AbsolutePosition.X) / saturationFrame.AbsoluteSize.X) *
- saturationFrame.AbsoluteSize.X,
- 0,
- saturationFrame.AbsoluteSize.X - 4
- )
- saturationPicker.Position = UDim2.new(0, posX, 0, posY)
- sat = sizeX
- val = sizeY
- hsv = Color3.fromHSV(hue, sat, val)
- rgb.Text =
- math.floor((hsv.r * 255) + 0.5) ..
- ", " .. math.floor((hsv.g * 255) + 0.5) .. ", " .. math.floor((hsv.b * 255) + 0.5)
- hex.Text = utility.rgb_to_hex(Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b * 255))
- saturationFrame.BackgroundColor3 = hsv
- colorPickerIcon.BackgroundColor3 = hsv
- if colorPickerFlag then
- library.flags[colorPickerFlag] = Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b * 255)
- end
- colorPickerCallback(Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b * 255))
- end
- saturationFrame.InputBegan:Connect(
- function(input)
- if input.UserInputType == Enum.UserInputType.MouseButton1 then
- slidingSaturation = true
- updateSatVal(input)
- end
- end
- )
- saturationFrame.InputEnded:Connect(
- function(input)
- if input.UserInputType == Enum.UserInputType.MouseButton1 then
- slidingSaturation = false
- end
- end
- )
- inputService.InputChanged:Connect(
- function(input)
- if input.UserInputType == Enum.UserInputType.MouseMovement then
- if slidingSaturation then
- updateSatVal(input)
- end
- end
- end
- )
- local toggleColorPickerTypes = utility.table()
- function toggleColorPickerTypes:Show()
- toggleColorPickerHolder.Visible = true
- end
- function toggleColorPickerTypes:Hide()
- toggleColorPickerHolder.Visible = false
- end
- function toggleColorPickerTypes:SetName(str)
- title.Text = str
- end
- function toggleColorPickerTypes:Toggle(bool)
- if toggled ~= bool then
- toggleToggle()
- end
- end
- function toggleColorPickerTypes:SetRGB(color)
- hue, sat, val = color:ToHSV()
- hsv = Color3.fromHSV(hue, sat, val)
- saturationFrame.BackgroundColor3 = hsv
- colorPickerIcon.BackgroundColor3 = hsv
- saturationPicker.Position =
- UDim2.new(
- 0,
- (math.clamp(sat * saturationFrame.AbsoluteSize.X, 0, saturationFrame.AbsoluteSize.X - 4)),
- 0,
- (math.clamp(
- (1 - val) * saturationFrame.AbsoluteSize.Y,
- 0,
- saturationFrame.AbsoluteSize.Y - 4
- ))
- )
- huePicker.Position =
- UDim2.new(
- 0,
- 0,
- 0,
- math.clamp((1 - hue) * hueFrame.AbsoluteSize.Y, 0, hueFrame.AbsoluteSize.Y - 4)
- )
- rgb.Text =
- math.floor((hsv.r * 255) + 0.5) ..
- ", " .. math.floor((hsv.g * 255) + 0.5) .. ", " .. math.floor((hsv.b * 255) + 0.5)
- hex.Text = utility.rgb_to_hex(Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b * 255))
- if colorPickerFlag then
- library.flags[colorPickerFlag] = Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b * 255)
- end
- colorPickerCallback(Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b * 255))
- end
- function toggleColorPickerTypes:SetHex(hexValue)
- color = utility.hex_to_rgb(hexValue)
- hue, sat, val = color:ToHSV()
- hsv = Color3.fromHSV(hue, sat, val)
- saturationFrame.BackgroundColor3 = hsv
- colorPickerIcon.BackgroundColor3 = hsv
- saturationPicker.Position =
- UDim2.new(
- 0,
- (math.clamp(sat * saturationFrame.AbsoluteSize.X, 0, saturationFrame.AbsoluteSize.X - 4)),
- 0,
- (math.clamp(
- (1 - val) * saturationFrame.AbsoluteSize.Y,
- 0,
- saturationFrame.AbsoluteSize.Y - 4
- ))
- )
- huePicker.Position =
- UDim2.new(
- 0,
- 0,
- 0,
- math.clamp((1 - hue) * hueFrame.AbsoluteSize.Y, 0, hueFrame.AbsoluteSize.Y - 4)
- )
- rgb.Text =
- math.floor((hsv.r * 255) + 0.5) ..
- ", " .. math.floor((hsv.g * 255) + 0.5) .. ", " .. math.floor((hsv.b * 255) + 0.5)
- hex.Text = utility.rgb_to_hex(Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b * 255))
- if colorPickerFlag then
- library.flags[colorPickerFlag] = Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b * 255)
- end
- colorPickerCallback(Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b * 255))
- end
- rgb.FocusLost:Connect(
- function()
- local _, amount = rgb.Text:gsub(", ", "")
- if amount == 2 then
- local values = rgb.Text:split(", ")
- local r, g, b =
- math.clamp(values[1], 0, 255),
- math.clamp(values[2], 0, 255),
- math.clamp(values[3], 0, 255)
- toggleColorPickerTypes:SetRGB(Color3.fromRGB(r, g, b))
- else
- rgb.Text =
- math.floor((hsv.r * 255) + 0.5) ..
- ", " .. math.floor((hsv.g * 255) + 0.5) .. ", " .. math.floor((hsv.b * 255) + 0.5)
- end
- end
- )
- hex.FocusLost:Connect(
- function()
- if hex.Text:find("#") and hex.Text:len() == 7 then
- toggleColorPickerTypes:SetHex(hex.Text)
- else
- hex.Text = utility.rgb_to_hex(Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b * 255))
- end
- end
- )
- hex:GetPropertyChangedSignal("Text"):Connect(
- function()
- if hex.Text == "" then
- hex.Text = "#"
- end
- end
- )
- if colorPickerFlag then
- flags.colorpickers[colorPickerFlag] = function(color)
- toggleColorPickerTypes:SetRGB(color)
- end
- end
- if toggleFlag then
- flags.toggles[toggleFlag] = function(bool)
- toggleColorPickerTypes:Toggle(bool)
- end
- end
- return toggleColorPickerTypes
- end
- return sectionTypes
- end
- return tabTypes
- end
- return windowTypes
- end
- return library
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement