magnetos

GUI

Feb 4th, 2023 (edited)
1,211
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 232.11 KB | None | 0 0
  1. --[[ Credits
  2.     Matas#3535 @matas - Created UI
  3.     bored#9316 @wally hub user - Helped make library
  4. ]]
  5. getgenv().MagnetGUIToggled = false
  6. -- // Variables
  7. local ws = game:GetService("Workspace")
  8. local uis = game:GetService("UserInputService")
  9. local rs = game:GetService("RunService")
  10. local hs = game:GetService("HttpService")
  11. local plrs = game:GetService("Players")
  12. local stats = game:GetService("Stats")
  13. -- UI Variables
  14. local library = {
  15.     drawings = {},
  16.     hidden = {},
  17.     connections = {},
  18.     pointers = {},
  19.     began = {},
  20.     ended = {},
  21.     changed = {},
  22.     folders = {
  23.         main = "magnet",
  24.         assets = "magnet/assets",
  25.         configs = "magnet/configs"
  26.     },
  27.     shared = {
  28.         initialized = false,
  29.         fps = 0,
  30.         ping = 0
  31.     }
  32. }
  33. --
  34. if not isfolder(library.folders.main) then
  35.     makefolder(library.folders.main)
  36. end
  37. --
  38. if not isfolder(library.folders.assets) then
  39.     makefolder(library.folders.assets)
  40. end
  41. --
  42. if not isfolder(library.folders.configs) then
  43.     makefolder(library.folders.configs)
  44. end
  45. --
  46. local utility = {}
  47. local pages = {}
  48. local sections = {}
  49. -- Theme Variables
  50. --local themes = {}
  51. local theme = {
  52.     accent = Color3.fromRGB(50, 100, 255),
  53.     light_contrast = Color3.fromRGB(30, 30, 30),
  54.     dark_contrast = Color3.fromRGB(20, 20, 20),
  55.     outline = Color3.fromRGB(0, 0, 0),
  56.     inline = Color3.fromRGB(50, 50, 50),
  57.     textcolor = Color3.fromRGB(255, 255, 255),
  58.     textborder = Color3.fromRGB(0, 0, 0),
  59.     cursoroutline = Color3.fromRGB(10, 10, 10),
  60.     font = 2,
  61.     textsize = 16
  62. }
  63. -- // Utility Functions
  64. do
  65.     function utility:Size(xScale,xOffset,yScale,yOffset,instance)
  66.         if instance then
  67.             local x = xScale*instance.Size.x+xOffset
  68.             local y = yScale*instance.Size.y+yOffset
  69.             --
  70.             return Vector2.new(x,y)
  71.         else
  72.             local vx,vy = ws.CurrentCamera.ViewportSize.x,ws.CurrentCamera.ViewportSize.y
  73.             --
  74.             local x = xScale*vx+xOffset
  75.             local y = yScale*vy+yOffset
  76.             --
  77.             return Vector2.new(x,y)
  78.         end
  79.     end
  80.     --
  81.     function utility:GetRandomSubtitle()
  82.        local possibleSubtitles = {"Haiiiii ^_^", "Heyyyy >_<", "lukejdjd is a fat pig", "6cce is a literal MEME", "dont play eau kids its ass", "m1v the goat?"}
  83.        
  84.        return possibleSubtitles[math.random(1, #possibleSubtitles)]
  85.     end
  86.     --
  87.     function utility:Position(xScale,xOffset,yScale,yOffset,instance)
  88.         if instance then
  89.             local x = instance.Position.x+xScale*instance.Size.x+xOffset
  90.             local y = instance.Position.y+yScale*instance.Size.y+yOffset
  91.             --
  92.             return Vector2.new(x,y)
  93.         else
  94.             local vx,vy = ws.CurrentCamera.ViewportSize.x,ws.CurrentCamera.ViewportSize.y
  95.             --
  96.             local x = xScale*vx+xOffset
  97.             local y = yScale*vy+yOffset
  98.             --
  99.             return Vector2.new(x,y)
  100.         end
  101.     end
  102.     --
  103.     function utility:Create(instanceType, instanceOffset, instanceProperties, instanceParent)
  104.         local instanceType = instanceType or "Frame"
  105.         local instanceOffset = instanceOffset or {Vector2.new(0,0)}
  106.         local instanceProperties = instanceProperties or {}
  107.         local instanceHidden = false
  108.         local instance = nil
  109.         --
  110.         if instanceType == "Frame" or instanceType == "frame" then
  111.             local frame = Drawing.new("Square")
  112.             frame.Visible = true
  113.             frame.Filled = true
  114.             frame.Thickness = 0
  115.             frame.Color = Color3.fromRGB(255,255,255)
  116.             frame.Size = Vector2.new(100,100)
  117.             frame.Position = Vector2.new(0,0)
  118.             frame.ZIndex = 50
  119.             frame.Transparency = library.shared.initialized and 1 or 0
  120.             instance = frame
  121.         elseif instanceType == "TextLabel" or instanceType == "textlabel" then
  122.             local text = Drawing.new("Text")
  123.             text.Font = 3
  124.             text.Visible = true
  125.             text.Outline = true
  126.             text.Center = false
  127.             text.Color = Color3.fromRGB(255,255,255)
  128.             text.ZIndex = 50
  129.             text.Transparency = library.shared.initialized and 1 or 0
  130.             instance = text
  131.         elseif instanceType == "Triangle" or instanceType == "triangle" then
  132.             local frame = Drawing.new("Triangle")
  133.             frame.Visible = true
  134.             frame.Filled = true
  135.             frame.Thickness = 0
  136.             frame.Color = Color3.fromRGB(255,255,255)
  137.             frame.ZIndex = 50
  138.             frame.Transparency = library.shared.initialized and 1 or 0
  139.             instance = frame
  140.         elseif instanceType == "Image" or instanceType == "image" then
  141.             local image = Drawing.new("Image")
  142.             image.Size = Vector2.new(12,19)
  143.             image.Position = Vector2.new(0,0)
  144.             image.Visible = true
  145.             image.ZIndex = 50
  146.             image.Transparency = library.shared.initialized and 1 or 0
  147.             instance = image
  148.         elseif instanceType == "Circle" or instanceType == "circle" then
  149.             local circle = Drawing.new("Circle")
  150.             circle.Visible = false
  151.             circle.Color = Color3.fromRGB(255, 0, 0)
  152.             circle.Thickness = 1
  153.             circle.NumSides = 30
  154.             circle.Filled = true
  155.             circle.Transparency = 1
  156.             circle.ZIndex = 50
  157.             circle.Radius = 50
  158.             circle.Transparency = library.shared.initialized and 1 or 0
  159.             instance = circle
  160.         elseif instanceType == "Quad" or instanceType == "quad" then
  161.             local quad = Drawing.new("Quad")
  162.             quad.Visible = false
  163.             quad.Color = Color3.fromRGB(255, 255, 255)
  164.             quad.Thickness = 1.5
  165.             quad.Transparency = 1
  166.             quad.ZIndex = 50
  167.             quad.Filled = false
  168.             quad.Transparency = library.shared.initialized and 1 or 0
  169.             instance = quad
  170.         elseif instanceType == "Line" or instanceType == "line" then
  171.             local line = Drawing.new("Line")
  172.             line.Visible = false
  173.             line.Color = Color3.fromRGB(255, 255, 255)
  174.             line.Thickness = 1.5
  175.             line.Transparency = 1
  176.             line.Thickness = 1.5
  177.             line.ZIndex = 50
  178.             line.Transparency = library.shared.initialized and 1 or 0
  179.             instance = line
  180.         end
  181.         --
  182.         if instance then
  183.             for i, v in pairs(instanceProperties) do
  184.                 if i == "Hidden" or i == "hidden" then
  185.                     instanceHidden = true
  186.                 else
  187.                     if library.shared.initialized then
  188.                         instance[i] = v
  189.                     else
  190.                         if i ~= "Transparency" then
  191.                             instance[i] = v
  192.                         end
  193.                     end
  194.                 end
  195.                 --[[if typeof(v) == "Color3" then
  196.                     local found_theme = utility:Find(theme, v)
  197.                     if found_theme then
  198.                         themes[found_theme] = themes[found_theme] or {}
  199.                         themes[found_theme][i] = themes[found_theme][i]
  200.                         table.insert(themes[found_theme][i], instance)
  201.                     end
  202.                 end]]
  203.             end
  204.             --
  205.             if not instanceHidden then
  206.                 library.drawings[#library.drawings + 1] = {instance, instanceOffset, instanceProperties["Transparency"] or 1}
  207.             else
  208.                 library.hidden[#library.hidden + 1] = {instance}
  209.             end
  210.             --
  211.             if instanceParent then
  212.                 instanceParent[#instanceParent + 1] = instance
  213.             end
  214.             --
  215.             return instance
  216.         end
  217.     end
  218.     --
  219.     function utility:UpdateOffset(instance, instanceOffset)
  220.         for i,v in pairs(library.drawings) do
  221.             if v[1] == instance then
  222.                 v[2] = instanceOffset
  223.             end
  224.         end
  225.     end
  226.     --
  227.     function utility:UpdateTransparency(instance, instanceTransparency)
  228.         for i,v in pairs(library.drawings) do
  229.             if v[1] == instance then
  230.                 v[3] = instanceTransparency
  231.             end
  232.         end
  233.     end
  234.     --
  235.     function utility:Remove(instance, hidden)
  236.         local ind = 0
  237.         --
  238.         for i,v in pairs(hidden and library.hidden or library.drawings) do
  239.             if v[1] == instance then
  240.                 ind = i
  241.                 if hidden then
  242.                     v[1] = nil
  243.                 else
  244.                     v[2] = nil
  245.                     v[1] = nil
  246.                 end
  247.             end
  248.         end
  249.         --
  250.         table.remove(hidden and library.hidden or library.drawings, ind)
  251.         instance:Remove()
  252.     end
  253.     --
  254.     function utility:GetSubPrefix(str)
  255.         local str = tostring(str):gsub(" ","")
  256.         local var = ""
  257.         --
  258.         if #str == 2 then
  259.             local sec = string.sub(str,#str,#str+1)
  260.             var = sec == "1" and "st" or sec == "2" and "nd" or sec == "3" and "rd" or "th"
  261.         end
  262.         --
  263.         return var
  264.     end
  265.     --
  266.     function utility:Connection(connectionType, connectionCallback)
  267.         local connection = connectionType:Connect(connectionCallback)
  268.         library.connections[#library.connections + 1] = connection
  269.         --
  270.         return connection
  271.     end
  272.     --
  273.     function utility:Disconnect(connection)
  274.         for i,v in pairs(library.connections) do
  275.             if v == connection then
  276.                 library.connections[i] = nil
  277.                 v:Disconnect()
  278.             end
  279.         end
  280.     end
  281.     --
  282.     function utility:MouseLocation()
  283.         return uis:GetMouseLocation()
  284.     end
  285.     --
  286.     function utility:MouseOverDrawing(values, valuesAdd)
  287.         local valuesAdd = valuesAdd or {}
  288.         local values = {
  289.             (values[1] or 0) + (valuesAdd[1] or 0),
  290.             (values[2] or 0) + (valuesAdd[2] or 0),
  291.             (values[3] or 0) + (valuesAdd[3] or 0),
  292.             (values[4] or 0) + (valuesAdd[4] or 0)
  293.         }
  294.         --
  295.         local mouseLocation = utility:MouseLocation()
  296.         return (mouseLocation.x >= values[1] and mouseLocation.x <= (values[1] + (values[3] - values[1]))) and (mouseLocation.y >= values[2] and mouseLocation.y <= (values[2] + (values[4] - values[2])))
  297.     end
  298.     --
  299.     function utility:GetTextBounds(text, textSize, font)
  300.         local textbounds = Vector2.new(0, 0)
  301.         --
  302.         local textlabel = utility:Create("TextLabel", {Vector2.new(0, 0)}, {
  303.             Text = text,
  304.             Size = textSize,
  305.             Font = font,
  306.             Hidden = true
  307.         })
  308.         --
  309.         textbounds = textlabel.TextBounds
  310.         utility:Remove(textlabel, true)
  311.         --
  312.         return textbounds
  313.     end
  314.     --
  315.     function utility:GetScreenSize()
  316.         return ws.CurrentCamera.ViewportSize
  317.     end
  318.     --
  319.     function utility:LoadImage(instance, imageName, imageLink)
  320.         local data
  321.         --
  322.         if isfile(library.folders.assets.."/"..imageName..".png") then
  323.             data = readfile(library.folders.assets.."/"..imageName..".png")
  324.         else
  325.             if imageLink then
  326.                 data = game:HttpGet(imageLink)
  327.                 writefile(library.folders.assets.."/"..imageName..".png", data)
  328.             else
  329.                 return
  330.             end
  331.         end
  332.         --
  333.         if data and instance then
  334.             instance.Data = data
  335.         end
  336.     end
  337.     --
  338.     function utility:Lerp(instance, instanceTo, instanceTime)
  339.         local currentTime = 0
  340.         local currentIndex = {}
  341.         local connection
  342.         --
  343.         for i,v in pairs(instanceTo) do
  344.             currentIndex[i] = instance[i]
  345.         end
  346.         --
  347.         local function lerp()
  348.             for i,v in pairs(instanceTo) do
  349.                 instance[i] = ((v - currentIndex[i]) * currentTime / instanceTime) + currentIndex[i]
  350.             end
  351.         end
  352.         --
  353.         connection = rs.RenderStepped:Connect(function(delta)
  354.             if currentTime < instanceTime then
  355.                 currentTime = currentTime + delta
  356.                 lerp()
  357.             else
  358.                 connection:Disconnect()
  359.             end
  360.         end)
  361.     end
  362.     --
  363.     function utility:Combine(table1, table2)
  364.         local table3 = {}
  365.         for i,v in pairs(table1) do table3[i] = v end
  366.         local t = #table3
  367.         for z,x in pairs(table2) do table3[z + t] = x end
  368.         return table3
  369.     end
  370. end
  371. -- // Library Functions
  372. do
  373.     library.__index = library
  374.     pages.__index = pages
  375.     sections.__index = sections
  376.     --
  377.     function library:New(info)
  378.         local info = info or {}
  379.         local name = info.name or info.Name or info.title or info.Title or "UI Title"
  380.         local size = info.size or info.Size or Vector2.new(504,604)
  381.         local accent = info.accent or info.Accent or info.color or info.Color or theme.accent
  382.         --
  383.         theme.accent = accent
  384.         --
  385.         local window = {pages = {}, isVisible = false, uibind = Enum.KeyCode.RightControl, currentPage = nil, fading = false, dragging = false, drag = Vector2.new(0,0), currentContent = {frame = nil, dropdown = nil, multibox = nil, colorpicker = nil, keybind = nil}}
  386.         --
  387.         local main_frame = utility:Create("Frame", {Vector2.new(0,0)}, {
  388.             Size = utility:Size(0, size.X, 0, size.Y),
  389.             Position = utility:Position(0.5, -(size.X/2) ,0.5, -(size.Y/2)),
  390.             Color = theme.outline
  391.         });window["main_frame"] = main_frame
  392.         --
  393.         local frame_inline = utility:Create("Frame", {Vector2.new(1,1), main_frame}, {
  394.             Size = utility:Size(1, -2, 1, -2, main_frame),
  395.             Position = utility:Position(0, 1, 0, 1, main_frame),
  396.             Color = theme.accent
  397.         })
  398.         --
  399.         local inner_frame = utility:Create("Frame", {Vector2.new(1,1), frame_inline}, {
  400.             Size = utility:Size(1, -2, 1, -2, frame_inline),
  401.             Position = utility:Position(0, 1, 0, 1, frame_inline),
  402.             Color = theme.light_contrast
  403.         })
  404.         --
  405.         local title = utility:Create("TextLabel", {Vector2.new(4,2), inner_frame}, {
  406.             Text = name,
  407.             Size = theme.textsize,
  408.             Font = theme.font,
  409.             Color = theme.textcolor,
  410.             OutlineColor = theme.textborder,
  411.             Position = utility:Position(0, 4, 0, 2, inner_frame)
  412.         })
  413.         --
  414.         local inner_frame_inline = utility:Create("Frame", {Vector2.new(4,18), inner_frame}, {
  415.             Size = utility:Size(1, -8, 1, -22, inner_frame),
  416.             Position = utility:Position(0, 4, 0, 18, inner_frame),
  417.             Color = theme.inline
  418.         })
  419.         --
  420.         local inner_frame_inline2 = utility:Create("Frame", {Vector2.new(1,1), inner_frame_inline}, {
  421.             Size = utility:Size(1, -2, 1, -2, inner_frame_inline),
  422.             Position = utility:Position(0, 1, 0, 1, inner_frame_inline),
  423.             Color = theme.outline
  424.         })
  425.         --
  426.         local back_frame = utility:Create("Frame", {Vector2.new(1,1), inner_frame_inline2}, {
  427.             Size = utility:Size(1, -2, 1, -2, inner_frame_inline2),
  428.             Position = utility:Position(0, 1, 0, 1, inner_frame_inline2),
  429.             Color = theme.dark_contrast
  430.         });window["back_frame"] = back_frame
  431.         --
  432.         local tab_frame_inline = utility:Create("Frame", {Vector2.new(4,24), back_frame}, {
  433.             Size = utility:Size(1, -8, 1, -28, back_frame),
  434.             Position = utility:Position(0, 4, 0, 24, back_frame),
  435.             Color = theme.outline
  436.         })
  437.         --
  438.         local tab_frame_inline2 = utility:Create("Frame", {Vector2.new(1,1), tab_frame_inline}, {
  439.             Size = utility:Size(1, -2, 1, -2, tab_frame_inline),
  440.             Position = utility:Position(0, 1, 0, 1, tab_frame_inline),
  441.             Color = theme.inline
  442.         })
  443.         --
  444.         local tab_frame = utility:Create("Frame", {Vector2.new(1,1), tab_frame_inline2}, {
  445.             Size = utility:Size(1, -2, 1, -2, tab_frame_inline2),
  446.             Position = utility:Position(0, 1, 0, 1, tab_frame_inline2),
  447.             Color = theme.light_contrast
  448.         });window["tab_frame"] = tab_frame
  449.         --
  450.         function window:GetConfig()
  451.             local config = {}
  452.             --
  453.             for i,v in pairs(library.pointers) do
  454.                 if typeof(v:Get()) == "table" and v:Get().Transparency then
  455.                     local hue, sat, val = v:Get().Color:ToHSV()
  456.                     config[i] = {Color = {hue, sat, val}, Transparency = v:Get().Transparency}
  457.                 else
  458.                     config[i] = v:Get()
  459.                 end
  460.             end
  461.             --
  462.             return game:GetService("HttpService"):JSONEncode(config)
  463.         end
  464.         --
  465.         function window:LoadConfig(config)
  466.             local config = hs:JSONDecode(config)
  467.             --
  468.             for i,v in pairs(config) do
  469.                 if library.pointers[i] then
  470.                     library.pointers[i]:Set(v)
  471.                 end
  472.             end
  473.         end
  474.         --
  475.         function window:Move(vector)
  476.             for i,v in pairs(library.drawings) do
  477.                 if v[2][2] then
  478.                     v[1].Position = utility:Position(0, v[2][1].X, 0, v[2][1].Y, v[2][2])
  479.                 else
  480.                     v[1].Position = utility:Position(0, vector.X, 0, vector.Y)
  481.                 end
  482.             end
  483.         end
  484.         --
  485.         function window:CloseContent()
  486.             if window.currentContent.dropdown and window.currentContent.dropdown.open then
  487.                 local dropdown = window.currentContent.dropdown
  488.                 dropdown.open = not dropdown.open
  489.                 utility:LoadImage(dropdown.dropdown_image, "arrow_down", "https://i.imgur.com/tVqy0nL.png")
  490.                 --
  491.                 for i,v in pairs(dropdown.holder.drawings) do
  492.                     utility:Remove(v)
  493.                 end
  494.                 --
  495.                 dropdown.holder.drawings = {}
  496.                 dropdown.holder.buttons = {}
  497.                 dropdown.holder.inline = nil
  498.                 --
  499.                 window.currentContent.frame = nil
  500.                 window.currentContent.dropdown = nil
  501.             elseif window.currentContent.multibox and window.currentContent.multibox.open then
  502.                 local multibox = window.currentContent.multibox
  503.                 multibox.open = not multibox.open
  504.                 utility:LoadImage(multibox.multibox_image, "arrow_down", "https://i.imgur.com/tVqy0nL.png")
  505.                 --
  506.                 for i,v in pairs(multibox.holder.drawings) do
  507.                     utility:Remove(v)
  508.                 end
  509.                 --
  510.                 multibox.holder.drawings = {}
  511.                 multibox.holder.buttons = {}
  512.                 multibox.holder.inline = nil
  513.                 --
  514.                 window.currentContent.frame = nil
  515.                 window.currentContent.multibox = nil
  516.             elseif window.currentContent.colorpicker and window.currentContent.colorpicker.open then
  517.                 local colorpicker = window.currentContent.colorpicker
  518.                 colorpicker.open = not colorpicker.open
  519.                 --
  520.                 for i,v in pairs(colorpicker.holder.drawings) do
  521.                     utility:Remove(v)
  522.                 end
  523.                 --
  524.                 colorpicker.holder.drawings = {}
  525.                 --
  526.                 window.currentContent.frame = nil
  527.                 window.currentContent.colorpicker = nil
  528.             elseif window.currentContent.keybind and window.currentContent.keybind.open then
  529.                 local modemenu = window.currentContent.keybind.modemenu
  530.                 window.currentContent.keybind.open = not window.currentContent.keybind.open
  531.                 --
  532.                 for i,v in pairs(modemenu.drawings) do
  533.                     utility:Remove(v)
  534.                 end
  535.                 --
  536.                 modemenu.drawings = {}
  537.                 modemenu.buttons = {}
  538.                 modemenu.frame = nil
  539.                 --
  540.                 window.currentContent.frame = nil
  541.                 window.currentContent.keybind = nil
  542.             end
  543.         end
  544.         --
  545.         function window:IsOverContent()
  546.             local isOver = false
  547.             --
  548.             if window.currentContent.frame and utility:MouseOverDrawing({window.currentContent.frame.Position.X,window.currentContent.frame.Position.Y,window.currentContent.frame.Position.X + window.currentContent.frame.Size.X,window.currentContent.frame.Position.Y + window.currentContent.frame.Size.Y}) then
  549.                 isOver = true
  550.             end
  551.             --
  552.             return isOver
  553.         end
  554.         --
  555.         function window:Unload()
  556.             for i,v in pairs(library.connections) do
  557.                 v:Disconnect()
  558.                 v = nil
  559.             end
  560.             --
  561.             for i,v in next, library.hidden do
  562.                 if v[1] and v[1].Remove ~= nil then
  563.                     local instance = v[1]
  564.                     v[1] = nil
  565.                     v = nil
  566.                     instance:Remove()
  567.                 end
  568.             end
  569.             --
  570.             for i,v in pairs(library.drawings) do
  571.                 if v[1] and v[1].Remove ~= nil then
  572.                     local instance = v[1]
  573.                     v[1] = nil
  574.                     v = nil
  575.                     instance:Remove()
  576.                 end
  577.             end
  578.             --
  579.             for i,v in pairs(library.began) do
  580.                 v = nil
  581.             end
  582.             --
  583.             for i,v in pairs(library.ended) do
  584.                 v = nil
  585.             end
  586.             --
  587.             for i,v in pairs(library.changed) do
  588.                 v = nil
  589.             end
  590.             --
  591.             library.drawings = nil
  592.             library.hidden = nil
  593.             library.connections = nil
  594.             library.began = nil
  595.             library.ended = nil
  596.             library.changed = nil
  597.             --
  598.             uis.MouseIconEnabled = true
  599.         end
  600.         --
  601.         function window:Watermark(info)
  602.             window.watermark = {visible = false}
  603.             --
  604.             local info = info or {}
  605.             local watermark_name = info.name or info.Name or info.title or info.Title or string.format("$$ Splix || uid : %u || ping : %u || fps : %u", 1, 100, 200)
  606.             --
  607.             local text_bounds = utility:GetTextBounds(watermark_name, theme.textsize, theme.font)
  608.             --
  609.             local watermark_outline = utility:Create("Frame", {Vector2.new(100,38/2-10)}, {
  610.                 Size = utility:Size(0, text_bounds.X+20, 0, 21),
  611.                 Position = utility:Position(0, 100, 0, 38/2-10),
  612.                 Hidden = true,
  613.                 ZIndex = 60,
  614.                 Color = theme.outline,
  615.                 Visible = window.watermark.visible
  616.             })window.watermark.outline = watermark_outline
  617.             --
  618.             local watermark_inline = utility:Create("Frame", {Vector2.new(1,1), watermark_outline}, {
  619.                 Size = utility:Size(1, -2, 1, -2, watermark_outline),
  620.                 Position = utility:Position(0, 1, 0, 1, watermark_outline),
  621.                 Hidden = true,
  622.                 ZIndex = 60,
  623.                 Color = theme.inline,
  624.                 Visible = window.watermark.visible
  625.             })
  626.             --
  627.             local watermark_frame = utility:Create("Frame", {Vector2.new(1,1), watermark_inline}, {
  628.                 Size = utility:Size(1, -2, 1, -2, watermark_inline),
  629.                 Position = utility:Position(0, 1, 0, 1, watermark_inline),
  630.                 Hidden = true,
  631.                 ZIndex = 60,
  632.                 Color = theme.light_contrast,
  633.                 Visible = window.watermark.visible
  634.             })
  635.             --
  636.             local watermark_accent = utility:Create("Frame", {Vector2.new(0,0), watermark_frame}, {
  637.                 Size = utility:Size(1, 0, 0, 1, watermark_frame),
  638.                 Position = utility:Position(0, 0, 0, 0, watermark_frame),
  639.                 Hidden = true,
  640.                 ZIndex = 60,
  641.                 Color = theme.accent,
  642.                 Visible = window.watermark.visible
  643.             })
  644.             --
  645.             local watermark_title = utility:Create("TextLabel", {Vector2.new(2 + 6,4), watermark_outline}, {
  646.                 Text = string.format("splix - fps : %u - uid : %u", 35, 2),
  647.                 Size = theme.textsize,
  648.                 Font = theme.font,
  649.                 Color = theme.textcolor,
  650.                 OutlineColor = theme.textborder,
  651.                 Hidden = true,
  652.                 ZIndex = 60,
  653.                 Position = utility:Position(0, 2 + 6, 0, 4, watermark_outline),
  654.                 Visible = window.watermark.visible
  655.             })
  656.             --
  657.             function window.watermark:UpdateSize()
  658.                 watermark_outline.Size = utility:Size(0, watermark_title.TextBounds.X + 4 + (6*2), 0, 21)
  659.                 watermark_inline.Size = utility:Size(1, -2, 1, -2, watermark_outline)
  660.                 watermark_frame.Size = utility:Size(1, -2, 1, -2, watermark_inline)
  661.                 watermark_accent.Size = utility:Size(1, 0, 0, 1, watermark_frame)
  662.             end
  663.             --
  664.             function window.watermark:Visibility()
  665.                 watermark_outline.Visible = window.watermark.visible
  666.                 watermark_inline.Visible = window.watermark.visible
  667.                 watermark_frame.Visible = window.watermark.visible
  668.                 watermark_accent.Visible = window.watermark.visible
  669.                 watermark_title.Visible = window.watermark.visible
  670.             end
  671.             --
  672.             function window.watermark:Update(updateType, updateValue)
  673.                 if updateType == "Visible" then
  674.                     window.watermark.visible = updateValue
  675.                     window.watermark:Visibility()
  676.                 end
  677.             end
  678.             --
  679.             utility:Connection(rs.RenderStepped, function(fps)
  680.                 library.shared.fps = math.round(1 / fps)
  681.                 library.shared.ping = tonumber(string.split(stats.Network.ServerStatsItem["Data Ping"]:GetValueString(), " ")[1] .. "")
  682.             end)
  683.             --
  684.             watermark_title.Text = string.format("$$ Splix || uid : %u || ping : %i || fps : %u", 1, tostring(library.shared.ping), library.shared.fps)
  685.             window.watermark:UpdateSize()
  686.             --
  687.             spawn(function()
  688.                 while wait(0.1) do
  689.                     watermark_title.Text = string.format("$$ Splix || uid : %u || ping : %i || fps : %u", 1, tostring(library.shared.ping), library.shared.fps)
  690.                     window.watermark:UpdateSize()
  691.                 end
  692.             end)
  693.             --
  694.             return window.watermark
  695.         end
  696.         --
  697.         function window:KeybindsList(info)
  698.             window.keybindslist = {visible = false, keybinds = {}}
  699.             --
  700.             local info = info or {}
  701.             --
  702.             local keybindslist_outline = utility:Create("Frame", {Vector2.new(10,(utility:GetScreenSize().Y/2)-200)}, {
  703.                 Size = utility:Size(0, 150, 0, 22),
  704.                 Position = utility:Position(0, 10, 0.4, 0),
  705.                 Hidden = true,
  706.                 ZIndex = 55,
  707.                 Color = theme.outline,
  708.                 Visible = window.keybindslist.visible
  709.             })window.keybindslist.outline = keybindslist_outline
  710.             --
  711.             local keybindslist_inline = utility:Create("Frame", {Vector2.new(1,1), keybindslist_outline}, {
  712.                 Size = utility:Size(1, -2, 1, -2, keybindslist_outline),
  713.                 Position = utility:Position(0, 1, 0, 1, keybindslist_outline),
  714.                 Hidden = true,
  715.                 ZIndex = 55,
  716.                 Color = theme.inline,
  717.                 Visible = window.keybindslist.visible
  718.             })
  719.             --
  720.             local keybindslist_frame = utility:Create("Frame", {Vector2.new(1,1), keybindslist_inline}, {
  721.                 Size = utility:Size(1, -2, 1, -2, keybindslist_inline),
  722.                 Position = utility:Position(0, 1, 0, 1, keybindslist_inline),
  723.                 Hidden = true,
  724.                 ZIndex = 55,
  725.                 Color = theme.light_contrast,
  726.                 Visible = window.keybindslist.visible
  727.             })
  728.             --
  729.             local keybindslist_accent = utility:Create("Frame", {Vector2.new(0,0), keybindslist_frame}, {
  730.                 Size = utility:Size(1, 0, 0, 1, keybindslist_frame),
  731.                 Position = utility:Position(0, 0, 0, 0, keybindslist_frame),
  732.                 Hidden = true,
  733.                 ZIndex = 55,
  734.                 Color = theme.accent,
  735.                 Visible = window.keybindslist.visible
  736.             })
  737.             --
  738.             local keybindslist_title = utility:Create("TextLabel", {Vector2.new(keybindslist_outline.Size.X/2,4), keybindslist_outline}, {
  739.                 Text = "- Keybinds -",
  740.                 Size = theme.textsize,
  741.                 Font = theme.font,
  742.                 Color = theme.textcolor,
  743.                 OutlineColor = theme.textborder,
  744.                 Center = true,
  745.                 Hidden = true,
  746.                 ZIndex = 55,
  747.                 Position = utility:Position(0.5, 0, 0, 5, keybindslist_outline),
  748.                 Visible = window.keybindslist.visible
  749.             })
  750.             --
  751.             function window.keybindslist:Resort()
  752.                 local index = 0
  753.                 for i,v in pairs(window.keybindslist.keybinds) do
  754.                     v:Move(0 + (index*17))
  755.                     --
  756.                     index = index + 1
  757.                 end
  758.             end
  759.             --
  760.             function window.keybindslist:Add(keybindname, keybindvalue)
  761.                 if keybindname and keybindvalue and not window.keybindslist.keybinds[keybindname] then
  762.                     local keybindTable = {}
  763.                     --
  764.                     local keybind_outline = utility:Create("Frame", {Vector2.new(0,keybindslist_outline.Size.Y-1), keybindslist_outline}, {
  765.                         Size = utility:Size(1, 0, 0, 18, keybindslist_outline),
  766.                         Position = utility:Position(0, 0, 1, -1, keybindslist_outline),
  767.                         Hidden = true,
  768.                         ZIndex = 55,
  769.                         Color = theme.outline,
  770.                         Visible = window.keybindslist.visible
  771.                     })
  772.                     --
  773.                     local keybind_inline = utility:Create("Frame", {Vector2.new(1,1), keybind_outline}, {
  774.                         Size = utility:Size(1, -2, 1, -2, keybind_outline),
  775.                         Position = utility:Position(0, 1, 0, 1, keybind_outline),
  776.                         Hidden = true,
  777.                         ZIndex = 55,
  778.                         Color = theme.inline,
  779.                         Visible = window.keybindslist.visible
  780.                     })
  781.                     --
  782.                     local keybind_frame = utility:Create("Frame", {Vector2.new(1,1), keybind_inline}, {
  783.                         Size = utility:Size(1, -2, 1, -2, keybind_inline),
  784.                         Position = utility:Position(0, 1, 0, 1, keybind_inline),
  785.                         Hidden = true,
  786.                         ZIndex = 55,
  787.                         Color = theme.dark_contrast,
  788.                         Visible = window.keybindslist.visible
  789.                     })
  790.                     --
  791.                     local keybind_title = utility:Create("TextLabel", {Vector2.new(4,3), keybind_outline}, {
  792.                         Text = keybindname,
  793.                         Size = theme.textsize,
  794.                         Font = theme.font,
  795.                         Color = theme.textcolor,
  796.                         OutlineColor = theme.textborder,
  797.                         Center = false,
  798.                         Hidden = true,
  799.                         ZIndex = 55,
  800.                         Position = utility:Position(0, 4, 0, 3, keybind_outline),
  801.                         Visible = window.keybindslist.visible
  802.                     })
  803.                     --
  804.                     local keybind_value = utility:Create("TextLabel", {Vector2.new(keybind_outline.Size.X - 4 - utility:GetTextBounds(keybindname, theme.textsize, theme.font).X,3), keybind_outline}, {
  805.                         Text = "["..keybindvalue.."]",
  806.                         Size = theme.textsize,
  807.                         Font = theme.font,
  808.                         Color = theme.textcolor,
  809.                         OutlineColor = theme.textborder,
  810.                         Hidden = true,
  811.                         ZIndex = 55,
  812.                         Position = utility:Position(1, -4 - utility:GetTextBounds(keybindname, theme.textsize, theme.font).X, 0, 3, keybind_outline),
  813.                         Visible = window.keybindslist.visible
  814.                     })
  815.                     --
  816.                     function keybindTable:Move(yPos)
  817.                         keybind_outline.Position = utility:Position(0, 0, 1, -1 + yPos, keybindslist_outline)
  818.                         keybind_inline.Position = utility:Position(0, 1, 0, 1, keybind_outline)
  819.                         keybind_frame.Position = utility:Position(0, 1, 0, 1, keybind_inline)
  820.                         keybind_title.Position = utility:Position(0, 4, 0, 3, keybind_outline)
  821.                         keybind_value.Position = utility:Position(1, -4 - keybind_value.TextBounds.X, 0, 3, keybind_outline)
  822.                     end
  823.                     --
  824.                     function keybindTable:Remove()
  825.                         utility:Remove(keybind_outline, true)
  826.                         utility:Remove(keybind_inline, true)
  827.                         utility:Remove(keybind_frame, true)
  828.                         utility:Remove(keybind_title, true)
  829.                         utility:Remove(keybind_value, true)
  830.                         --
  831.                         window.keybindslist.keybinds[keybindname] = nil
  832.                         keybindTable = nil
  833.                     end
  834.                     --
  835.                     function keybindTable:Visibility()
  836.                         keybind_outline.Visible = window.keybindslist.visible
  837.                         keybind_inline.Visible = window.keybindslist.visible
  838.                         keybind_frame.Visible = window.keybindslist.visible
  839.                         keybind_title.Visible = window.keybindslist.visible
  840.                         keybind_value.Visible = window.keybindslist.visible
  841.                     end
  842.                     --
  843.                     window.keybindslist.keybinds[keybindname] = keybindTable
  844.                     window.keybindslist:Resort()
  845.                 end
  846.             end
  847.             --
  848.             function window.keybindslist:Remove(keybindname)
  849.                 if keybindname and window.keybindslist.keybinds[keybindname] then
  850.                     window.keybindslist.keybinds[keybindname]:Remove()
  851.                     window.keybindslist.keybinds[keybindname] = nil
  852.                     window.keybindslist:Resort()
  853.                 end
  854.             end
  855.             --
  856.             function window.keybindslist:Visibility()
  857.                 keybindslist_outline.Visible = window.keybindslist.visible
  858.                 keybindslist_inline.Visible = window.keybindslist.visible
  859.                 keybindslist_frame.Visible = window.keybindslist.visible
  860.                 keybindslist_accent.Visible = window.keybindslist.visible
  861.                 keybindslist_title.Visible = window.keybindslist.visible
  862.                 --
  863.                 for i,v in pairs(window.keybindslist.keybinds) do
  864.                     v:Visibility()
  865.                 end
  866.             end
  867.             --
  868.             function window.keybindslist:Update(updateType, updateValue)
  869.                 if updateType == "Visible" then
  870.                     window.keybindslist.visible = updateValue
  871.                     window.keybindslist:Visibility()
  872.                 end
  873.             end
  874.             --
  875.             utility:Connection(ws.CurrentCamera:GetPropertyChangedSignal("ViewportSize"),function()
  876.                 keybindslist_outline.Position = utility:Position(0, 10, 0.4, 0)
  877.                 keybindslist_inline.Position = utility:Position(0, 1, 0, 1, keybindslist_outline)
  878.                 keybindslist_frame.Position = utility:Position(0, 1, 0, 1, keybindslist_inline)
  879.                 keybindslist_accent.Position = utility:Position(0, 0, 0, 0, keybindslist_frame)
  880.                 keybindslist_title.Position = utility:Position(0.5, 0, 0, 5, keybindslist_outline)
  881.                 --
  882.                 window.keybindslist:Resort()
  883.             end)
  884.         end
  885.         --
  886.         function window:Cursor(info)
  887.             window.cursor = {}
  888.             --
  889.             local cursor = utility:Create("Triangle", nil, {
  890.                 Color = theme.cursoroutline,
  891.                 Thickness = 2.5,
  892.                 Filled = false,
  893.                 ZIndex = 65,
  894.                 Hidden = true
  895.             });window.cursor["cursor"] = cursor
  896.             --
  897.             local cursor_inline = utility:Create("Triangle", nil, {
  898.                 Color = theme.accent,
  899.                 Filled = true,
  900.                 Thickness = 0,
  901.                 ZIndex = 65,
  902.                 Hidden = true
  903.             });window.cursor["cursor_inline"] = cursor_inline
  904.             --
  905.             utility:Connection(rs.RenderStepped, function()
  906.                 local mouseLocation = utility:MouseLocation()
  907.                 --
  908.                 cursor.PointA = Vector2.new(mouseLocation.X, mouseLocation.Y)
  909.                 cursor.PointB = Vector2.new(mouseLocation.X + 16, mouseLocation.Y + 6)
  910.                 cursor.PointC = Vector2.new(mouseLocation.X + 6, mouseLocation.Y + 16)
  911.                 --
  912.                 cursor_inline.PointA = Vector2.new(mouseLocation.X, mouseLocation.Y)
  913.                 cursor_inline.PointB = Vector2.new(mouseLocation.X + 16, mouseLocation.Y + 6)
  914.                 cursor_inline.PointC = Vector2.new(mouseLocation.X + 6, mouseLocation.Y + 16)
  915.             end)
  916.             --
  917.             uis.MouseIconEnabled = false
  918.             --
  919.             return window.cursor
  920.         end
  921.         --
  922.         function window:Fade()
  923.             window.fading = true
  924.             MagnetGUIToggled = not MagnetGUIToggled
  925.             local NewTransparency = MagnetGUIToggled == true and 1 or 0
  926.            
  927.             window.isVisible = MagnetGUIToggled
  928.            
  929.             for i,v in next, window.drawings do
  930.                 utility:Lerp(v[1], {Transparency = NewTransparency}, 0.25)
  931.             end
  932.            
  933.             window.cursor["cursor"].Transparency = window.isVisible and 1 or 0
  934.             window.cursor["cursor_inline"].Transparency = window.isVisible and 1 or 0
  935.             uis.MouseIconEnabled = not window.isVisible
  936.  
  937.             window.fading = false
  938.         end
  939.         --
  940.         function window:Initialize()
  941.             window.pages[1]:Show()
  942.             --
  943.             for i,v in pairs(window.pages) do
  944.                 v:Update()
  945.             end
  946.             --
  947.             library.shared.initialized = true
  948.             --
  949.             window:Watermark()
  950.             window:KeybindsList()
  951.             window:Cursor()
  952.             --
  953.             window:Fade()
  954.         end
  955.         --
  956.         library.began[#library.began + 1] = function(Input)
  957.             if Input.UserInputType == Enum.UserInputType.MouseButton1 and window.isVisible and window.isVisible and utility:MouseOverDrawing({main_frame.Position.X,main_frame.Position.Y,main_frame.Position.X + main_frame.Size.X,main_frame.Position.Y + 20}) then
  958.                 local mouseLocation = utility:MouseLocation()
  959.                 --
  960.                 window.dragging = true
  961.                 window.drag = Vector2.new(mouseLocation.X - main_frame.Position.X, mouseLocation.Y - main_frame.Position.Y)
  962.             end
  963.         end
  964.         --
  965.         library.ended[#library.ended + 1] = function(Input)
  966.             if Input.UserInputType == Enum.UserInputType.MouseButton1 and window.isVisible and window.dragging then
  967.                 window.dragging = false
  968.                 window.drag = Vector2.new(0, 0)
  969.             end
  970.         end
  971.         --
  972.         library.changed[#library.changed + 1] = function(Input)
  973.             if window.dragging and window.isVisible then
  974.                 local mouseLocation = utility:MouseLocation()
  975.                 if utility:GetScreenSize().Y-main_frame.Size.Y-5 > 5 then
  976.                     local move = Vector2.new(math.clamp(mouseLocation.X - window.drag.X, 5, utility:GetScreenSize().X-main_frame.Size.X-5), math.clamp(mouseLocation.Y - window.drag.Y, 5, utility:GetScreenSize().Y-main_frame.Size.Y-5))
  977.                     window:Move(move)
  978.                 else
  979.                     local move = Vector2.new(mouseLocation.X - window.drag.X, mouseLocation.Y - window.drag.Y)
  980.                     window:Move(move)
  981.                 end
  982.             end
  983.         end
  984.         --
  985.         library.began[#library.began + 1] = function(Input)
  986.             if Input.KeyCode == window.uibind then
  987.                 window:Fade()
  988.             end
  989.             --[[
  990.             if Input.KeyCode == Enum.KeyCode.P then
  991.                 local plrs = game:GetService("Players")
  992.                 local plr = plrs.LocalPlayer
  993.                 if #plrs:GetPlayers() <= 1 then
  994.                     plr:Kick("\nRejoining...")
  995.                     wait()
  996.                     game:GetService('TeleportService'):Teleport(game.PlaceId, plr)
  997.                 else
  998.                     game:GetService('TeleportService'):TeleportToPlaceInstance(game.PlaceId, game.JobId, plr)
  999.                 end
  1000.             end]]
  1001.         end
  1002.         --
  1003.         utility:Connection(uis.InputBegan,function(Input)
  1004.             for _, func in pairs(library.began) do
  1005.                 if not window.dragging then
  1006.                     local e,s = pcall(function()
  1007.                         func(Input)
  1008.                     end)
  1009.                 else
  1010.                     break
  1011.                 end
  1012.             end
  1013.         end)
  1014.         --
  1015.         utility:Connection(uis.InputEnded,function(Input)
  1016.             for _, func in pairs(library.ended) do
  1017.                 local e,s = pcall(function()
  1018.                     func(Input)
  1019.                 end)
  1020.             end
  1021.         end)
  1022.         --
  1023.         utility:Connection(uis.InputChanged,function()
  1024.             for _, func in pairs(library.changed) do
  1025.                 local e,s = pcall(function()
  1026.                     func()
  1027.                 end)
  1028.             end
  1029.         end)
  1030.         --
  1031.         utility:Connection(ws.CurrentCamera:GetPropertyChangedSignal("ViewportSize"),function()
  1032.             window:Move(Vector2.new((utility:GetScreenSize().X/2) - (size.X/2), (utility:GetScreenSize().Y/2) - (size.Y/2)))
  1033.         end)
  1034.         --
  1035.         return setmetatable(window, library)
  1036.     end
  1037.     --
  1038.     function library:Page(info)
  1039.         local info = info or {}
  1040.         local name = info.name or info.Name or info.title or info.Title or "New Page"
  1041.         --
  1042.         local window = self
  1043.         --
  1044.         local page = {open = false, sections = {}, sectionOffset = {left = 0, right = 0}, window = window}
  1045.         --
  1046.         local position = 4
  1047.         --
  1048.         for i,v in pairs(window.pages) do
  1049.             position = position + (v.page_button.Size.X+2)
  1050.         end
  1051.         --
  1052.         local textbounds = utility:GetTextBounds(name, theme.textsize, theme.font)
  1053.         --
  1054.         local page_button = utility:Create("Frame", {Vector2.new(position,4), window.back_frame}, {
  1055.             Size = utility:Size(0, textbounds.X+20, 0, 21),
  1056.             Position = utility:Position(0, position, 0, 4, window.back_frame),
  1057.             Color = theme.outline
  1058.         });page["page_button"] = page_button
  1059.         --
  1060.         local page_button_inline = utility:Create("Frame", {Vector2.new(1,1), page_button}, {
  1061.             Size = utility:Size(1, -2, 1, -1, page_button),
  1062.             Position = utility:Position(0, 1, 0, 1, page_button),
  1063.             Color = theme.inline
  1064.         });page["page_button_inline"] = page_button_inline
  1065.         --
  1066.         local page_button_color = utility:Create("Frame", {Vector2.new(1,1), page_button_inline}, {
  1067.             Size = utility:Size(1, -2, 1, -1, page_button_inline),
  1068.             Position = utility:Position(0, 1, 0, 1, page_button_inline),
  1069.             Color = theme.dark_contrast
  1070.         });page["page_button_color"] = page_button_color
  1071.         --
  1072.         local page_button_title = utility:Create("TextLabel", {Vector2.new(utility:Position(0.5, 0, 0, 2, page_button_color).X - page_button_color.Position.X,2), page_button_color}, {
  1073.             Text = name,
  1074.             Size = theme.textsize,
  1075.             Font = theme.font,
  1076.             Color = theme.textcolor,
  1077.             Center = true,
  1078.             OutlineColor = theme.textborder,
  1079.             Position = utility:Position(0.5, 0, 0, 2, page_button_color)
  1080.         })
  1081.         --
  1082.         window.pages[#window.pages + 1] = page
  1083.         --
  1084.         function page:Update()
  1085.             page.sectionOffset["left"] = 0
  1086.             page.sectionOffset["right"] = 0
  1087.             --
  1088.             for i,v in pairs(page.sections) do
  1089.                 utility:UpdateOffset(v.section_inline, {Vector2.new(v.side == "right" and (window.tab_frame.Size.X/2)+2 or 5,5 + page["sectionOffset"][v.side]), window.tab_frame})
  1090.                 page.sectionOffset[v.side] = page.sectionOffset[v.side] + v.section_inline.Size.Y + 5
  1091.             end
  1092.             --
  1093.             window:Move(window.main_frame.Position)
  1094.         end
  1095.         --
  1096.         function page:Show()
  1097.             if window.currentPage then
  1098.                 window.currentPage.page_button_color.Size = utility:Size(1, -2, 1, -1, window.currentPage.page_button_inline)
  1099.                 window.currentPage.page_button_color.Color = theme.dark_contrast
  1100.                 window.currentPage.open = false
  1101.                 --
  1102.                 for i,v in pairs(window.currentPage.sections) do
  1103.                     for z,x in pairs(v.visibleContent) do
  1104.                         x.Visible = false
  1105.                     end
  1106.                 end
  1107.                 --
  1108.                 window:CloseContent()
  1109.             end
  1110.             --
  1111.             window.currentPage = page
  1112.             page_button_color.Size = utility:Size(1, -2, 1, 0, page_button_inline)
  1113.             page_button_color.Color = theme.light_contrast
  1114.             page.open = true
  1115.             --
  1116.             for i,v in pairs(page.sections) do
  1117.                 for z,x in pairs(v.visibleContent) do
  1118.                     x.Visible = true
  1119.                 end
  1120.             end
  1121.         end
  1122.         --
  1123.         library.began[#library.began + 1] = function(Input)
  1124.             if Input.UserInputType == Enum.UserInputType.MouseButton1 and window.isVisible and utility:MouseOverDrawing({page_button.Position.X,page_button.Position.Y,page_button.Position.X + page_button.Size.X,page_button.Position.Y + page_button.Size.Y}) and window.currentPage ~= page then
  1125.                 page:Show()
  1126.             end
  1127.         end
  1128.         --
  1129.         return setmetatable(page, pages)
  1130.     end
  1131.     --
  1132.     function pages:Section(info)
  1133.         local info = info or {}
  1134.         local name = info.name or info.Name or info.title or info.Title or "New Section"
  1135.         local side = info.side or info.Side or "left"
  1136.         side = side:lower()
  1137.         local window = self.window
  1138.         local page = self
  1139.         local section = {window = window, page = page, visibleContent = {}, currentAxis = 20, side = side}
  1140.         --
  1141.         local section_inline = utility:Create("Frame", {Vector2.new(side == "right" and (window.tab_frame.Size.X/2)+2 or 5,5 + page["sectionOffset"][side]), window.tab_frame}, {
  1142.             Size = utility:Size(0.5, -7, 0, 22, window.tab_frame),
  1143.             Position = utility:Position(side == "right" and 0.5 or 0, side == "right" and 2 or 5, 0, 5 + page.sectionOffset[side], window.tab_frame),
  1144.             Color = theme.inline,
  1145.             Visible = page.open
  1146.         }, section.visibleContent);section["section_inline"] = section_inline
  1147.         --
  1148.         local section_outline = utility:Create("Frame", {Vector2.new(1,1), section_inline}, {
  1149.             Size = utility:Size(1, -2, 1, -2, section_inline),
  1150.             Position = utility:Position(0, 1, 0, 1, section_inline),
  1151.             Color = theme.outline,
  1152.             Visible = page.open
  1153.         }, section.visibleContent);section["section_outline"] = section_outline
  1154.         --
  1155.         local section_frame = utility:Create("Frame", {Vector2.new(1,1), section_outline}, {
  1156.             Size = utility:Size(1, -2, 1, -2, section_outline),
  1157.             Position = utility:Position(0, 1, 0, 1, section_outline),
  1158.             Color = theme.dark_contrast,
  1159.             Visible = page.open
  1160.         }, section.visibleContent);section["section_frame"] = section_frame
  1161.         --
  1162.         local section_accent = utility:Create("Frame", {Vector2.new(0,0), section_frame}, {
  1163.             Size = utility:Size(1, 0, 0, 2, section_frame),
  1164.             Position = utility:Position(0, 0, 0, 0, section_frame),
  1165.             Color = theme.accent,
  1166.             Visible = page.open
  1167.         }, section.visibleContent);section["section_accent"] = section_accent
  1168.         --
  1169.         local section_title = utility:Create("TextLabel", {Vector2.new(3,3), section_frame}, {
  1170.             Text = name,
  1171.             Size = theme.textsize,
  1172.             Font = theme.font,
  1173.             Color = theme.textcolor,
  1174.             OutlineColor = theme.textborder,
  1175.             Position = utility:Position(0, 3, 0, 3, section_frame),
  1176.             Visible = page.open
  1177.         }, section.visibleContent);section["section_title"] = section_title
  1178.         --
  1179.         function section:Update()
  1180.             section_inline.Size = utility:Size(0.5, -7, 0, section.currentAxis+4, window.tab_frame)
  1181.             section_outline.Size = utility:Size(1, -2, 1, -2, section_inline)
  1182.             section_frame.Size = utility:Size(1, -2, 1, -2, section_outline)
  1183.         end
  1184.         --
  1185.         page.sectionOffset[side] = page.sectionOffset[side] + 100 + 5
  1186.         page.sections[#page.sections + 1] = section
  1187.         --
  1188.         return setmetatable(section, sections)
  1189.     end
  1190.     --
  1191.     function pages:MultiSection(info)
  1192.         local info = info or {}
  1193.         local msections = info.sections or info.Sections or {}
  1194.         local side = info.side or info.Side or "left"
  1195.         local size = info.size or info.Size or 150
  1196.         side = side:lower()
  1197.         local window = self.window
  1198.         local page = self
  1199.         local multiSection = {window = window, page = page, sections = {}, backup = {}, visibleContent = {}, currentSection = nil, xAxis = 0, side = side}
  1200.         --
  1201.         local multiSection_inline = utility:Create("Frame", {Vector2.new(side == "right" and (window.tab_frame.Size.X/2)+2 or 5,5 + page["sectionOffset"][side]), window.tab_frame}, {
  1202.             Size = utility:Size(0.5, -7, 0, size, window.tab_frame),
  1203.             Position = utility:Position(side == "right" and 0.5 or 0, side == "right" and 2 or 5, 0, 5 + page.sectionOffset[side], window.tab_frame),
  1204.             Color = theme.inline,
  1205.             Visible = page.open
  1206.         }, multiSection.visibleContent);multiSection["section_inline"] = multiSection_inline
  1207.         --
  1208.         local multiSection_outline = utility:Create("Frame", {Vector2.new(1,1), multiSection_inline}, {
  1209.             Size = utility:Size(1, -2, 1, -2, multiSection_inline),
  1210.             Position = utility:Position(0, 1, 0, 1, multiSection_inline),
  1211.             Color = theme.outline,
  1212.             Visible = page.open
  1213.         }, multiSection.visibleContent);multiSection["section_outline"] = multiSection_outline
  1214.         --
  1215.         local multiSection_frame = utility:Create("Frame", {Vector2.new(1,1), multiSection_outline}, {
  1216.             Size = utility:Size(1, -2, 1, -2, multiSection_outline),
  1217.             Position = utility:Position(0, 1, 0, 1, multiSection_outline),
  1218.             Color = theme.dark_contrast,
  1219.             Visible = page.open
  1220.         }, multiSection.visibleContent);multiSection["section_frame"] = multiSection_frame
  1221.         --
  1222.         local multiSection_backFrame = utility:Create("Frame", {Vector2.new(0,2), multiSection_frame}, {
  1223.             Size = utility:Size(1, 0, 0, 17, multiSection_frame),
  1224.             Position = utility:Position(0, 0, 0, 2, multiSection_frame),
  1225.             Color = theme.light_contrast,
  1226.             Visible = page.open
  1227.         }, multiSection.visibleContent)
  1228.         --
  1229.         local multiSection_bottomFrame = utility:Create("Frame", {Vector2.new(0,multiSection_backFrame.Size.Y - 1), multiSection_backFrame}, {
  1230.             Size = utility:Size(1, 0, 0, 1, multiSection_backFrame),
  1231.             Position = utility:Position(0, 0, 1, -1, multiSection_backFrame),
  1232.             Color = theme.outline,
  1233.             Visible = page.open
  1234.         }, multiSection.visibleContent)
  1235.         --
  1236.         local multiSection_accent = utility:Create("Frame", {Vector2.new(0,0), multiSection_frame}, {
  1237.             Size = utility:Size(1, 0, 0, 2, multiSection_frame),
  1238.             Position = utility:Position(0, 0, 0, 0, multiSection_frame),
  1239.             Color = theme.accent,
  1240.             Visible = page.open
  1241.         }, multiSection.visibleContent);multiSection["section_accent"] = multiSection_accent
  1242.         --
  1243.         for i,v in pairs(msections) do
  1244.             local msection = {window = window, page = page, currentAxis = 24, sections = {}, visibleContent = {}, section_inline = multiSection_inline, section_outline = multiSection_outline, section_frame = multiSection_frame, section_accent = multiSection_accent}
  1245.             --
  1246.             local textBounds = utility:GetTextBounds(v, theme.textsize, theme.font)
  1247.             --
  1248.             local msection_frame = utility:Create("Frame", {Vector2.new(multiSection.xAxis,0), multiSection_backFrame}, {
  1249.                 Size = utility:Size(0, textBounds.X + 14, 1, -1, multiSection_backFrame),
  1250.                 Position = utility:Position(0, multiSection.xAxis, 0, 0, multiSection_backFrame),
  1251.                 Color = i == 1 and theme.dark_contrast or theme.light_contrast,
  1252.                 Visible = page.open
  1253.             }, multiSection.visibleContent);msection["msection_frame"] = msection_frame
  1254.             --
  1255.             local msection_line = utility:Create("Frame", {Vector2.new(msection_frame.Size.X,0), msection_frame}, {
  1256.                 Size = utility:Size(0, 1, 1, 0, msection_frame),
  1257.                 Position = utility:Position(1, 0, 0, 0, msection_frame),
  1258.                 Color = theme.outline,
  1259.                 Visible = page.open
  1260.             }, multiSection.visibleContent)
  1261.             --
  1262.             local msection_title = utility:Create("TextLabel", {Vector2.new(msection_frame.Size.X * 0.5,1), msection_frame}, {
  1263.                 Text = v,
  1264.                 Size = theme.textsize,
  1265.                 Font = theme.font,
  1266.                 Color = theme.textcolor,
  1267.                 OutlineColor = theme.textborder,
  1268.                 Center = true,
  1269.                 Position = utility:Position(0.5, 0, 0, 1, msection_frame),
  1270.                 Visible = page.open
  1271.             }, multiSection.visibleContent)
  1272.             --
  1273.             local msection_bottomline = utility:Create("Frame", {Vector2.new(0,msection_frame.Size.Y), msection_frame}, {
  1274.                 Size = utility:Size(1, 0, 0, 1, msection_frame),
  1275.                 Position = utility:Position(0, 0, 1, 0, msection_frame),
  1276.                 Color = i == 1 and theme.dark_contrast or theme.outline,
  1277.                 Visible = page.open
  1278.             }, multiSection.visibleContent);msection["msection_bottomline"] = msection_bottomline
  1279.             --
  1280.             function msection:Update()
  1281.                 if multiSection.currentSection == msection then
  1282.                     multiSection.visibleContent = utility:Combine(multiSection.backup, multiSection.currentSection.visibleContent)
  1283.                 else
  1284.                     for z,x in pairs(msection.visibleContent) do
  1285.                         x.Visible = false
  1286.                     end
  1287.                 end
  1288.             end
  1289.             --
  1290.             library.began[#library.began + 1] = function(Input)
  1291.                 if Input.UserInputType == Enum.UserInputType.MouseButton1 and window.isVisible and page.open and  utility:MouseOverDrawing({msection_frame.Position.X,msection_frame.Position.Y,msection_frame.Position.X + msection_frame.Size.X,msection_frame.Position.Y + msection_frame.Size.Y}) and multiSection.currentSection ~= msection and not window:IsOverContent() then
  1292.                     multiSection.currentSection.msection_frame.Color = theme.light_contrast
  1293.                     multiSection.currentSection.msection_bottomline.Color = theme.outline
  1294.                     --
  1295.                     for i,v in pairs(multiSection.currentSection.visibleContent) do
  1296.                         v.Visible = false
  1297.                     end
  1298.                     --
  1299.                     multiSection.currentSection = msection
  1300.                     msection_frame.Color = theme.dark_contrast
  1301.                     msection_bottomline.Color = theme.dark_contrast
  1302.                     --
  1303.                     for i,v in pairs(multiSection.currentSection.visibleContent) do
  1304.                         v.Visible = true
  1305.                     end
  1306.                     --
  1307.                     multiSection.visibleContent = utility:Combine(multiSection.backup, multiSection.currentSection.visibleContent)
  1308.                 end
  1309.             end
  1310.             --
  1311.             if i == 1 then
  1312.                 multiSection.currentSection = msection
  1313.             end
  1314.             --
  1315.             multiSection.sections[#multiSection.sections + 1] = setmetatable(msection, sections)
  1316.             multiSection.xAxis = multiSection.xAxis + textBounds.X + 15
  1317.         end
  1318.         --
  1319.         for z,x in pairs(multiSection.visibleContent) do
  1320.             multiSection.backup[z] = x
  1321.         end
  1322.         --
  1323.         page.sectionOffset[side] = page.sectionOffset[side] + 100 + 5
  1324.         page.sections[#page.sections + 1] = multiSection
  1325.         --
  1326.         return table.unpack(multiSection.sections)
  1327.     end
  1328.     --
  1329.     function sections:Label(info)
  1330.         local info = info or {}
  1331.         local name = info.name or info.Name or info.title or info.Title or "New Label"
  1332.         local middle = info.middle or info.Middle or false
  1333.         local pointer = info.pointer or info.Pointer or info.flag or info.Flag or nil
  1334.         --
  1335.         local window = self.window
  1336.         local page = self.page
  1337.         local section = self
  1338.         --
  1339.         local label = {axis = section.currentAxis}
  1340.         --
  1341.         local label_title = utility:Create("TextLabel", {Vector2.new(middle and (section.section_frame.Size.X/2) or 4,label.axis), section.section_frame}, {
  1342.             Text = name,
  1343.             Size = theme.textsize,
  1344.             Font = theme.font,
  1345.             Color = theme.textcolor,
  1346.             OutlineColor = theme.textborder,
  1347.             Center = middle,
  1348.             Position = utility:Position(middle and 0.5 or 0, middle and 0 or 4, 0, 0, section.section_frame),
  1349.             Visible = page.open
  1350.         }, section.visibleContent)
  1351.         --
  1352.         if pointer and tostring(pointer) ~= "" and tostring(pointer) ~= " " and not library.pointers[tostring(pointer)] then
  1353.             library.pointers[tostring(pointer)] = label
  1354.         end
  1355.         --
  1356.         section.currentAxis = section.currentAxis + label_title.TextBounds.Y + 4
  1357.         section:Update()
  1358.         --
  1359.         return label
  1360.     end
  1361.     --
  1362.     function sections:Toggle(info)
  1363.         local info = info or {}
  1364.         local name = info.name or info.Name or info.title or info.Title or "New Toggle"
  1365.         local def = info.def or info.Def or info.default or info.Default or false
  1366.         local pointer = info.pointer or info.Pointer or info.flag or info.Flag or nil
  1367.         local callback = info.callback or info.callBack or info.Callback or info.CallBack or function()end
  1368.         --
  1369.         local window = self.window
  1370.         local page = self.page
  1371.         local section = self
  1372.         --
  1373.         local toggle = {axis = section.currentAxis, current = def, addedAxis = 0, colorpickers = 0, keybind = nil}
  1374.         --
  1375.         local toggle_outline = utility:Create("Frame", {Vector2.new(4,toggle.axis), section.section_frame}, {
  1376.             Size = utility:Size(0, 15, 0, 15),
  1377.             Position = utility:Position(0, 4, 0, toggle.axis, section.section_frame),
  1378.             Color = theme.outline,
  1379.             Visible = page.open
  1380.         }, section.visibleContent)
  1381.         --
  1382.         local toggle_inline = utility:Create("Frame", {Vector2.new(1,1), toggle_outline}, {
  1383.             Size = utility:Size(1, -2, 1, -2, toggle_outline),
  1384.             Position = utility:Position(0, 1, 0, 1, toggle_outline),
  1385.             Color = theme.inline,
  1386.             Visible = page.open
  1387.         }, section.visibleContent)
  1388.         --
  1389.         local toggle_frame = utility:Create("Frame", {Vector2.new(1,1), toggle_inline}, {
  1390.             Size = utility:Size(1, -2, 1, -2, toggle_inline),
  1391.             Position = utility:Position(0, 1, 0, 1, toggle_inline),
  1392.             Color = toggle.current == true and theme.accent or theme.light_contrast,
  1393.             Visible = page.open
  1394.         }, section.visibleContent)
  1395.         --
  1396.         local toggle__gradient = utility:Create("Image", {Vector2.new(0,0), toggle_frame}, {
  1397.             Size = utility:Size(1, 0, 1, 0, toggle_frame),
  1398.             Position = utility:Position(0, 0, 0 , 0, toggle_frame),
  1399.             Transparency = 0.5,
  1400.             Visible = page.open
  1401.         }, section.visibleContent)
  1402.         --
  1403.         local toggle_title = utility:Create("TextLabel", {Vector2.new(23,toggle.axis + (15/2) - (utility:GetTextBounds(name, theme.textsize, theme.font).Y/2)), section.section_frame}, {
  1404.             Text = name,
  1405.             Size = theme.textsize,
  1406.             Font = theme.font,
  1407.             Color = theme.textcolor,
  1408.             OutlineColor = theme.textborder,
  1409.             Position = utility:Position(0, 23, 0, toggle.axis + (15/2) - (utility:GetTextBounds(name, theme.textsize, theme.font).Y/2), section.section_frame),
  1410.             Visible = page.open
  1411.         }, section.visibleContent)
  1412.         --
  1413.         utility:LoadImage(toggle__gradient, "gradient", "https://i.imgur.com/5hmlrjX.png")
  1414.         --
  1415.         function toggle:Get()
  1416.             return toggle.current
  1417.         end
  1418.         --
  1419.         function toggle:Set(bool)
  1420.             if bool or not bool then
  1421.                 toggle.current = bool
  1422.                 toggle_frame.Color = toggle.current == true and theme.accent or theme.light_contrast
  1423.                 --
  1424.                 callback(toggle.current)
  1425.             end
  1426.         end
  1427.         --
  1428.         library.began[#library.began + 1] = function(Input)
  1429.             if Input.UserInputType == Enum.UserInputType.MouseButton1 and toggle_outline.Visible and window.isVisible and page.open and utility:MouseOverDrawing({section.section_frame.Position.X, section.section_frame.Position.Y + toggle.axis, section.section_frame.Position.X + section.section_frame.Size.X - toggle.addedAxis, section.section_frame.Position.Y + toggle.axis + 15}) and not window:IsOverContent() then
  1430.                 toggle.current = not toggle.current
  1431.                 toggle_frame.Color = toggle.current == true and theme.accent or theme.light_contrast
  1432.                 --
  1433.                 callback(toggle.current)
  1434.                 --
  1435.                 if toggle.keybind and toggle.keybind.active then toggle.keybind.active = false window.keybindslist:Remove(toggle.keybind.keybindname) end
  1436.             end
  1437.         end
  1438.         --
  1439.         if pointer and tostring(pointer) ~= "" and tostring(pointer) ~= " " and not library.pointers[tostring(pointer)] then
  1440.             library.pointers[tostring(pointer)] = toggle
  1441.         end
  1442.         --
  1443.         section.currentAxis = section.currentAxis + 15 + 4
  1444.         section:Update()
  1445.         --
  1446.         function toggle:Colorpicker(info)
  1447.             local info = info or {}
  1448.             local cpinfo = info.info or info.Info or name
  1449.             local def = info.def or info.Def or info.default or info.Default or Color3.fromRGB(255, 0, 0)
  1450.             local transp = info.transparency or info.Transparency or info.transp or info.Transp or info.alpha or info.Alpha or nil
  1451.             local pointer = info.pointer or info.Pointer or info.flag or info.Flag or nil
  1452.             local callback = info.callback or info.callBack or info.Callback or info.CallBack or function()end
  1453.             --
  1454.             local hh, ss, vv = def:ToHSV()
  1455.             local colorpicker = {toggle, axis = toggle.axis, index = toggle.colorpickers, current = {hh, ss, vv , (transp or 0)}, holding = {picker = false, huepicker = false, transparency = false}, holder = {inline = nil, picker = nil, picker_cursor = nil, huepicker = nil, huepicker_cursor = {}, transparency = nil, transparencybg = nil, transparency_cursor = {}, drawings = {}}}
  1456.             --
  1457.             local colorpicker_outline = utility:Create("Frame", {Vector2.new(section.section_frame.Size.X-(toggle.colorpickers == 0 and (30+4) or (64 + 4)),colorpicker.axis), section.section_frame}, {
  1458.                 Size = utility:Size(0, 30, 0, 15),
  1459.                 Position = utility:Position(1, -(toggle.colorpickers == 0 and (30+4) or (64 + 4)), 0, colorpicker.axis, section.section_frame),
  1460.                 Color = theme.outline,
  1461.                 Visible = page.open
  1462.             }, section.visibleContent)
  1463.             --
  1464.             local colorpicker_inline = utility:Create("Frame", {Vector2.new(1,1), colorpicker_outline}, {
  1465.                 Size = utility:Size(1, -2, 1, -2, colorpicker_outline),
  1466.                 Position = utility:Position(0, 1, 0, 1, colorpicker_outline),
  1467.                 Color = theme.inline,
  1468.                 Visible = page.open
  1469.             }, section.visibleContent)
  1470.             --
  1471.             local colorpicker__transparency
  1472.             if transp then
  1473.                 colorpicker__transparency = utility:Create("Image", {Vector2.new(1,1), colorpicker_inline}, {
  1474.                     Size = utility:Size(1, -2, 1, -2, colorpicker_inline),
  1475.                     Position = utility:Position(0, 1, 0 , 1, colorpicker_inline),
  1476.                     Visible = page.open
  1477.                 }, section.visibleContent)
  1478.             end
  1479.             --
  1480.             local colorpicker_frame = utility:Create("Frame", {Vector2.new(1,1), colorpicker_inline}, {
  1481.                 Size = utility:Size(1, -2, 1, -2, colorpicker_inline),
  1482.                 Position = utility:Position(0, 1, 0, 1, colorpicker_inline),
  1483.                 Color = def,
  1484.                 Transparency = transp and (1 - transp) or 1,
  1485.                 Visible = page.open
  1486.             }, section.visibleContent)
  1487.             --
  1488.             local colorpicker__gradient = utility:Create("Image", {Vector2.new(0,0), colorpicker_frame}, {
  1489.                 Size = utility:Size(1, 0, 1, 0, colorpicker_frame),
  1490.                 Position = utility:Position(0, 0, 0 , 0, colorpicker_frame),
  1491.                 Transparency = 0.5,
  1492.                 Visible = page.open
  1493.             }, section.visibleContent)
  1494.             --
  1495.             if transp then
  1496.                 utility:LoadImage(colorpicker__transparency, "cptransp", "https://i.imgur.com/IIPee2A.png")
  1497.             end
  1498.             utility:LoadImage(colorpicker__gradient, "gradient", "https://i.imgur.com/5hmlrjX.png")
  1499.             --
  1500.             function colorpicker:Set(color, transp_val)
  1501.                 if typeof(color) == "table" then
  1502.                     if color.Color and color.Transparency then
  1503.                         local h, s, v = table.unpack(color.Color)
  1504.                         colorpicker.current = {h, s, v , color.Transparency}
  1505.                         colorpicker_frame.Color = Color3.fromHSV(colorpicker.current[1], colorpicker.current[2], colorpicker.current[3])
  1506.                         colorpicker_frame.Transparency = 1 - colorpicker.current[4]
  1507.                         callback(Color3.fromHSV(colorpicker.current[1], colorpicker.current[2], colorpicker.current[3]), colorpicker.current[4])
  1508.                     else
  1509.                         colorpicker.current = color
  1510.                         colorpicker_frame.Color = Color3.fromHSV(colorpicker.current[1], colorpicker.current[2], colorpicker.current[3])
  1511.                         colorpicker_frame.Transparency = 1 - colorpicker.current[4]
  1512.                         callback(Color3.fromHSV(colorpicker.current[1], colorpicker.current[2], colorpicker.current[3]), colorpicker.current[4])
  1513.                     end
  1514.                 elseif typeof(color) == "color3" then
  1515.                     local h, s, v = color:ToHSV()
  1516.                     colorpicker.current = {h, s, v, (transp_val or 0)}
  1517.                     colorpicker_frame.Color = Color3.fromHSV(colorpicker.current[1], colorpicker.current[2], colorpicker.current[3])
  1518.                     colorpicker_frame.Transparency = 1 - colorpicker.current[4]
  1519.                     callback(Color3.fromHSV(colorpicker.current[1], colorpicker.current[2], colorpicker.current[3]), colorpicker.current[4])
  1520.                 end
  1521.             end
  1522.             --
  1523.             function colorpicker:Refresh()
  1524.                 local mouseLocation = utility:MouseLocation()
  1525.                 if colorpicker.open and colorpicker.holder.picker and colorpicker.holding.picker then
  1526.                     colorpicker.current[2] = math.clamp(mouseLocation.X - colorpicker.holder.picker.Position.X, 0, colorpicker.holder.picker.Size.X) / colorpicker.holder.picker.Size.X
  1527.                     --
  1528.                     colorpicker.current[3] = 1-(math.clamp(mouseLocation.Y - colorpicker.holder.picker.Position.Y, 0, colorpicker.holder.picker.Size.Y) / colorpicker.holder.picker.Size.Y)
  1529.                     --
  1530.                     colorpicker.holder.picker_cursor.Position = utility:Position(colorpicker.current[2], -3, 1-colorpicker.current[3] , -3, colorpicker.holder.picker)
  1531.                     --
  1532.                     utility:UpdateOffset(colorpicker.holder.picker_cursor, {Vector2.new((colorpicker.holder.picker.Size.X*colorpicker.current[2])-3,(colorpicker.holder.picker.Size.Y*(1-colorpicker.current[3]))-3), colorpicker.holder.picker})
  1533.                     --
  1534.                     if colorpicker.holder.transparencybg then
  1535.                         colorpicker.holder.transparencybg.Color = Color3.fromHSV(colorpicker.current[1], colorpicker.current[2], colorpicker.current[3])
  1536.                     end
  1537.                 elseif colorpicker.open and colorpicker.holder.huepicker and colorpicker.holding.huepicker then
  1538.                     colorpicker.current[1] = (math.clamp(mouseLocation.Y - colorpicker.holder.huepicker.Position.Y, 0, colorpicker.holder.huepicker.Size.Y) / colorpicker.holder.huepicker.Size.Y)
  1539.                     --
  1540.                     colorpicker.holder.huepicker_cursor[1].Position = utility:Position(0, -3, colorpicker.current[1], -3, colorpicker.holder.huepicker)
  1541.                     colorpicker.holder.huepicker_cursor[2].Position = utility:Position(0, 1, 0, 1, colorpicker.holder.huepicker_cursor[1])
  1542.                     colorpicker.holder.huepicker_cursor[3].Position = utility:Position(0, 1, 0, 1, colorpicker.holder.huepicker_cursor[2])
  1543.                     colorpicker.holder.huepicker_cursor[3].Color = Color3.fromHSV(colorpicker.current[1], 1, 1)
  1544.                     --
  1545.                     utility:UpdateOffset(colorpicker.holder.huepicker_cursor[1], {Vector2.new(-3,(colorpicker.holder.huepicker.Size.Y*colorpicker.current[1])-3), colorpicker.holder.huepicker})
  1546.                     --
  1547.                     colorpicker.holder.background.Color = Color3.fromHSV(colorpicker.current[1], 1, 1)
  1548.                     --
  1549.                     if colorpicker.holder.transparency_cursor and colorpicker.holder.transparency_cursor[3] then
  1550.                         colorpicker.holder.transparency_cursor[3].Color = Color3.fromHSV(0, 0, 1 - colorpicker.current[4])
  1551.                     end
  1552.                     --
  1553.                     if colorpicker.holder.transparencybg then
  1554.                         colorpicker.holder.transparencybg.Color = Color3.fromHSV(colorpicker.current[1], colorpicker.current[2], colorpicker.current[3])
  1555.                     end
  1556.                 elseif colorpicker.open and colorpicker.holder.transparency and colorpicker.holding.transparency then
  1557.                     colorpicker.current[4] = 1 - (math.clamp(mouseLocation.X - colorpicker.holder.transparency.Position.X, 0, colorpicker.holder.transparency.Size.X) / colorpicker.holder.transparency.Size.X)
  1558.                     --
  1559.                     colorpicker.holder.transparency_cursor[1].Position = utility:Position(1-colorpicker.current[4], -3, 0, -3, colorpicker.holder.transparency)
  1560.                     colorpicker.holder.transparency_cursor[2].Position = utility:Position(0, 1, 0, 1, colorpicker.holder.transparency_cursor[1])
  1561.                     colorpicker.holder.transparency_cursor[3].Position = utility:Position(0, 1, 0, 1, colorpicker.holder.transparency_cursor[2])
  1562.                     colorpicker.holder.transparency_cursor[3].Color = Color3.fromHSV(0, 0, 1 - colorpicker.current[4])
  1563.                     colorpicker_frame.Transparency = (1 - colorpicker.current[4])
  1564.                     --
  1565.                     utility:UpdateTransparency(colorpicker_frame, (1 - colorpicker.current[4]))
  1566.                     utility:UpdateOffset(colorpicker.holder.transparency_cursor[1], {Vector2.new((colorpicker.holder.transparency.Size.X*(1-colorpicker.current[4]))-3,-3), colorpicker.holder.transparency})
  1567.                     --
  1568.                     colorpicker.holder.background.Color = Color3.fromHSV(colorpicker.current[1], 1, 1)
  1569.                 end
  1570.                 --
  1571.                 colorpicker:Set(colorpicker.current)
  1572.             end
  1573.             --
  1574.             function colorpicker:Get()
  1575.                 return {Color = Color3.fromHSV(colorpicker.current[1], colorpicker.current[2], colorpicker.current[3]), Transparency = colorpicker.current[4]}
  1576.             end
  1577.             --
  1578.             library.began[#library.began + 1] = function(Input)
  1579.                 if Input.UserInputType == Enum.UserInputType.MouseButton1 and window.isVisible and colorpicker_outline.Visible then
  1580.                     if colorpicker.open and colorpicker.holder.inline and utility:MouseOverDrawing({colorpicker.holder.inline.Position.X, colorpicker.holder.inline.Position.Y, colorpicker.holder.inline.Position.X + colorpicker.holder.inline.Size.X, colorpicker.holder.inline.Position.Y + colorpicker.holder.inline.Size.Y}) then
  1581.                         if colorpicker.holder.picker and utility:MouseOverDrawing({colorpicker.holder.picker.Position.X - 2, colorpicker.holder.picker.Position.Y - 2, colorpicker.holder.picker.Position.X - 2 + colorpicker.holder.picker.Size.X + 4, colorpicker.holder.picker.Position.Y - 2 + colorpicker.holder.picker.Size.Y + 4}) then
  1582.                             colorpicker.holding.picker = true
  1583.                             colorpicker:Refresh()
  1584.                         elseif colorpicker.holder.huepicker and utility:MouseOverDrawing({colorpicker.holder.huepicker.Position.X - 2, colorpicker.holder.huepicker.Position.Y - 2, colorpicker.holder.huepicker.Position.X - 2 + colorpicker.holder.huepicker.Size.X + 4, colorpicker.holder.huepicker.Position.Y - 2 + colorpicker.holder.huepicker.Size.Y + 4}) then
  1585.                             colorpicker.holding.huepicker = true
  1586.                             colorpicker:Refresh()
  1587.                         elseif colorpicker.holder.transparency and utility:MouseOverDrawing({colorpicker.holder.transparency.Position.X - 2, colorpicker.holder.transparency.Position.Y - 2, colorpicker.holder.transparency.Position.X - 2 + colorpicker.holder.transparency.Size.X + 4, colorpicker.holder.transparency.Position.Y - 2 + colorpicker.holder.transparency.Size.Y + 4}) then
  1588.                             colorpicker.holding.transparency = true
  1589.                             colorpicker:Refresh()
  1590.                         end
  1591.                     elseif utility:MouseOverDrawing({section.section_frame.Position.X + (section.section_frame.Size.X - (colorpicker.index == 0 and (30 + 4 + 2) or (64 + 4 + 2))), section.section_frame.Position.Y + colorpicker.axis, section.section_frame.Position.X + section.section_frame.Size.X - (colorpicker.index == 1 and 36 or 0), section.section_frame.Position.Y + colorpicker.axis + 15}) and not window:IsOverContent() then
  1592.                         if not colorpicker.open then
  1593.                             window:CloseContent()
  1594.                             colorpicker.open = not colorpicker.open
  1595.                             --
  1596.                             local colorpicker_open_outline = utility:Create("Frame", {Vector2.new(4,colorpicker.axis + 19), section.section_frame}, {
  1597.                                 Size = utility:Size(1, -8, 0, transp and 219 or 200, section.section_frame),
  1598.                                 Position = utility:Position(0, 4, 0, colorpicker.axis + 19, section.section_frame),
  1599.                                 Color = theme.outline
  1600.                             }, colorpicker.holder.drawings);colorpicker.holder.inline = colorpicker_open_outline
  1601.                             --
  1602.                             local colorpicker_open_inline = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_outline}, {
  1603.                                 Size = utility:Size(1, -2, 1, -2, colorpicker_open_outline),
  1604.                                 Position = utility:Position(0, 1, 0, 1, colorpicker_open_outline),
  1605.                                 Color = theme.inline
  1606.                             }, colorpicker.holder.drawings)
  1607.                             --
  1608.                             local colorpicker_open_frame = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_inline}, {
  1609.                                 Size = utility:Size(1, -2, 1, -2, colorpicker_open_inline),
  1610.                                 Position = utility:Position(0, 1, 0, 1, colorpicker_open_inline),
  1611.                                 Color = theme.dark_contrast
  1612.                             }, colorpicker.holder.drawings)
  1613.                             --
  1614.                             local colorpicker_open_accent = utility:Create("Frame", {Vector2.new(0,0), colorpicker_open_frame}, {
  1615.                                 Size = utility:Size(1, 0, 0, 2, colorpicker_open_frame),
  1616.                                 Position = utility:Position(0, 0, 0, 0, colorpicker_open_frame),
  1617.                                 Color = theme.accent
  1618.                             }, colorpicker.holder.drawings)
  1619.                             --
  1620.                             local colorpicker_title = utility:Create("TextLabel", {Vector2.new(4,2), colorpicker_open_frame}, {
  1621.                                 Text = cpinfo,
  1622.                                 Size = theme.textsize,
  1623.                                 Font = theme.font,
  1624.                                 Color = theme.textcolor,
  1625.                                 OutlineColor = theme.textborder,
  1626.                                 Position = utility:Position(0, 4, 0, 2, colorpicker_open_frame),
  1627.                             }, colorpicker.holder.drawings)
  1628.                             --
  1629.                             local colorpicker_open_picker_outline = utility:Create("Frame", {Vector2.new(4,17), colorpicker_open_frame}, {
  1630.                                 Size = utility:Size(1, -27, 1, transp and -40 or -21, colorpicker_open_frame),
  1631.                                 Position = utility:Position(0, 4, 0, 17, colorpicker_open_frame),
  1632.                                 Color = theme.outline
  1633.                             }, colorpicker.holder.drawings)
  1634.                             --
  1635.                             local colorpicker_open_picker_inline = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_picker_outline}, {
  1636.                                 Size = utility:Size(1, -2, 1, -2, colorpicker_open_picker_outline),
  1637.                                 Position = utility:Position(0, 1, 0, 1, colorpicker_open_picker_outline),
  1638.                                 Color = theme.inline
  1639.                             }, colorpicker.holder.drawings)
  1640.                             --
  1641.                             local colorpicker_open_picker_bg = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_picker_inline}, {
  1642.                                 Size = utility:Size(1, -2, 1, -2, colorpicker_open_picker_inline),
  1643.                                 Position = utility:Position(0, 1, 0, 1, colorpicker_open_picker_inline),
  1644.                                 Color = Color3.fromHSV(colorpicker.current[1],1,1)
  1645.                             }, colorpicker.holder.drawings);colorpicker.holder.background = colorpicker_open_picker_bg
  1646.                             --
  1647.                             local colorpicker_open_picker_image = utility:Create("Image", {Vector2.new(0,0), colorpicker_open_picker_bg}, {
  1648.                                 Size = utility:Size(1, 0, 1, 0, colorpicker_open_picker_bg),
  1649.                                 Position = utility:Position(0, 0, 0 , 0, colorpicker_open_picker_bg),
  1650.                             }, colorpicker.holder.drawings);colorpicker.holder.picker = colorpicker_open_picker_image
  1651.                             --
  1652.                             local colorpicker_open_picker_cursor = utility:Create("Image", {Vector2.new((colorpicker_open_picker_image.Size.X*colorpicker.current[2])-3,(colorpicker_open_picker_image.Size.Y*(1-colorpicker.current[3]))-3), colorpicker_open_picker_image}, {
  1653.                                 Size = utility:Size(0, 6, 0, 6, colorpicker_open_picker_image),
  1654.                                 Position = utility:Position(colorpicker.current[2], -3, 1-colorpicker.current[3] , -3, colorpicker_open_picker_image),
  1655.                             }, colorpicker.holder.drawings);colorpicker.holder.picker_cursor = colorpicker_open_picker_cursor
  1656.                             --
  1657.                             local colorpicker_open_huepicker_outline = utility:Create("Frame", {Vector2.new(colorpicker_open_frame.Size.X-19,17), colorpicker_open_frame}, {
  1658.                                 Size = utility:Size(0, 15, 1, transp and -40 or -21, colorpicker_open_frame),
  1659.                                 Position = utility:Position(1, -19, 0, 17, colorpicker_open_frame),
  1660.                                 Color = theme.outline
  1661.                             }, colorpicker.holder.drawings)
  1662.                             --
  1663.                             local colorpicker_open_huepicker_inline = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_huepicker_outline}, {
  1664.                                 Size = utility:Size(1, -2, 1, -2, colorpicker_open_huepicker_outline),
  1665.                                 Position = utility:Position(0, 1, 0, 1, colorpicker_open_huepicker_outline),
  1666.                                 Color = theme.inline
  1667.                             }, colorpicker.holder.drawings)
  1668.                             --
  1669.                             local colorpicker_open_huepicker_image = utility:Create("Image", {Vector2.new(1,1), colorpicker_open_huepicker_inline}, {
  1670.                                 Size = utility:Size(1, -2, 1, -2, colorpicker_open_huepicker_inline),
  1671.                                 Position = utility:Position(0, 1, 0 , 1, colorpicker_open_huepicker_inline),
  1672.                             }, colorpicker.holder.drawings);colorpicker.holder.huepicker = colorpicker_open_huepicker_image
  1673.                             --
  1674.                             local colorpicker_open_huepicker_cursor_outline = utility:Create("Frame", {Vector2.new(-3,(colorpicker_open_huepicker_image.Size.Y*colorpicker.current[1])-3), colorpicker_open_huepicker_image}, {
  1675.                                 Size = utility:Size(1, 6, 0, 6, colorpicker_open_huepicker_image),
  1676.                                 Position = utility:Position(0, -3, colorpicker.current[1], -3, colorpicker_open_huepicker_image),
  1677.                                 Color = theme.outline
  1678.                             }, colorpicker.holder.drawings);colorpicker.holder.huepicker_cursor[1] = colorpicker_open_huepicker_cursor_outline
  1679.                             --
  1680.                             local colorpicker_open_huepicker_cursor_inline = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_huepicker_cursor_outline}, {
  1681.                                 Size = utility:Size(1, -2, 1, -2, colorpicker_open_huepicker_cursor_outline),
  1682.                                 Position = utility:Position(0, 1, 0, 1, colorpicker_open_huepicker_cursor_outline),
  1683.                                 Color = theme.textcolor
  1684.                             }, colorpicker.holder.drawings);colorpicker.holder.huepicker_cursor[2] = colorpicker_open_huepicker_cursor_inline
  1685.                             --
  1686.                             local colorpicker_open_huepicker_cursor_color = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_huepicker_cursor_inline}, {
  1687.                                 Size = utility:Size(1, -2, 1, -2, colorpicker_open_huepicker_cursor_inline),
  1688.                                 Position = utility:Position(0, 1, 0, 1, colorpicker_open_huepicker_cursor_inline),
  1689.                                 Color = Color3.fromHSV(colorpicker.current[1], 1, 1)
  1690.                             }, colorpicker.holder.drawings);colorpicker.holder.huepicker_cursor[3] = colorpicker_open_huepicker_cursor_color
  1691.                             --
  1692.                             if transp then
  1693.                                 local colorpicker_open_transparency_outline = utility:Create("Frame", {Vector2.new(4,colorpicker_open_frame.Size.X-19), colorpicker_open_frame}, {
  1694.                                     Size = utility:Size(1, -27, 0, 15, colorpicker_open_frame),
  1695.                                     Position = utility:Position(0, 4, 1, -19, colorpicker_open_frame),
  1696.                                     Color = theme.outline
  1697.                                 }, colorpicker.holder.drawings)
  1698.                                 --
  1699.                                 local colorpicker_open_transparency_inline = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_transparency_outline}, {
  1700.                                     Size = utility:Size(1, -2, 1, -2, colorpicker_open_transparency_outline),
  1701.                                     Position = utility:Position(0, 1, 0, 1, colorpicker_open_transparency_outline),
  1702.                                     Color = theme.inline
  1703.                                 }, colorpicker.holder.drawings)
  1704.                                 --
  1705.                                 local colorpicker_open_transparency_bg = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_transparency_inline}, {
  1706.                                     Size = utility:Size(1, -2, 1, -2, colorpicker_open_transparency_inline),
  1707.                                     Position = utility:Position(0, 1, 0, 1, colorpicker_open_transparency_inline),
  1708.                                     Color = Color3.fromHSV(colorpicker.current[1], colorpicker.current[2], colorpicker.current[3])
  1709.                                 }, colorpicker.holder.drawings);colorpicker.holder.transparencybg = colorpicker_open_transparency_bg
  1710.                                 --
  1711.                                 local colorpicker_open_transparency_image = utility:Create("Image", {Vector2.new(1,1), colorpicker_open_transparency_inline}, {
  1712.                                     Size = utility:Size(1, -2, 1, -2, colorpicker_open_transparency_inline),
  1713.                                     Position = utility:Position(0, 1, 0 , 1, colorpicker_open_transparency_inline),
  1714.                                 }, colorpicker.holder.drawings);colorpicker.holder.transparency = colorpicker_open_transparency_image
  1715.                                 --
  1716.                                 local colorpicker_open_transparency_cursor_outline = utility:Create("Frame", {Vector2.new((colorpicker_open_transparency_image.Size.X*(1-colorpicker.current[4]))-3,-3), colorpicker_open_transparency_image}, {
  1717.                                     Size = utility:Size(0, 6, 1, 6, colorpicker_open_transparency_image),
  1718.                                     Position = utility:Position(1-colorpicker.current[4], -3, 0, -3, colorpicker_open_transparency_image),
  1719.                                     Color = theme.outline
  1720.                                 }, colorpicker.holder.drawings);colorpicker.holder.transparency_cursor[1] = colorpicker_open_transparency_cursor_outline
  1721.                                 --
  1722.                                 local colorpicker_open_transparency_cursor_inline = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_transparency_cursor_outline}, {
  1723.                                     Size = utility:Size(1, -2, 1, -2, colorpicker_open_transparency_cursor_outline),
  1724.                                     Position = utility:Position(0, 1, 0, 1, colorpicker_open_transparency_cursor_outline),
  1725.                                     Color = theme.textcolor
  1726.                                 }, colorpicker.holder.drawings);colorpicker.holder.transparency_cursor[2] = colorpicker_open_transparency_cursor_inline
  1727.                                 --
  1728.                                 local colorpicker_open_transparency_cursor_color = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_transparency_cursor_inline}, {
  1729.                                     Size = utility:Size(1, -2, 1, -2, colorpicker_open_transparency_cursor_inline),
  1730.                                     Position = utility:Position(0, 1, 0, 1, colorpicker_open_transparency_cursor_inline),
  1731.                                     Color = Color3.fromHSV(0, 0, 1 - colorpicker.current[4]),
  1732.                                 }, colorpicker.holder.drawings);colorpicker.holder.transparency_cursor[3] = colorpicker_open_transparency_cursor_color
  1733.                                 --
  1734.                                 utility:LoadImage(colorpicker_open_transparency_image, "transp", "https://i.imgur.com/ncssKbH.png")
  1735.                                 --utility:LoadImage(colorpicker_open_transparency_image, "transp", "https://i.imgur.com/VcMAYjL.png")
  1736.                             end
  1737.                             --
  1738.                             utility:LoadImage(colorpicker_open_picker_image, "valsat", "https://i.imgur.com/wpDRqVH.png")
  1739.                             utility:LoadImage(colorpicker_open_picker_cursor, "valsat_cursor", "https://raw.githubusercontent.com/mvonwalk/splix-assets/main/Images-cursor.png")
  1740.                             utility:LoadImage(colorpicker_open_huepicker_image, "hue", "https://i.imgur.com/iEOsHFv.png")
  1741.                             --
  1742.                             window.currentContent.frame = colorpicker_open_inline
  1743.                             window.currentContent.colorpicker = colorpicker
  1744.                         else
  1745.                             colorpicker.open = not colorpicker.open
  1746.                             --
  1747.                             for i,v in pairs(colorpicker.holder.drawings) do
  1748.                                 utility:Remove(v)
  1749.                             end
  1750.                             --
  1751.                             colorpicker.holder.drawings = {}
  1752.                             colorpicker.holder.inline = nil
  1753.                             --
  1754.                             window.currentContent.frame = nil
  1755.                             window.currentContent.colorpicker = nil
  1756.                         end
  1757.                     else
  1758.                         if colorpicker.open then
  1759.                             colorpicker.open = not colorpicker.open
  1760.                             --
  1761.                             for i,v in pairs(colorpicker.holder.drawings) do
  1762.                                 utility:Remove(v)
  1763.                             end
  1764.                             --
  1765.                             colorpicker.holder.drawings = {}
  1766.                             colorpicker.holder.inline = nil
  1767.                             --
  1768.                             window.currentContent.frame = nil
  1769.                             window.currentContent.colorpicker = nil
  1770.                         end
  1771.                     end
  1772.                 elseif Input.UserInputType == Enum.UserInputType.MouseButton1 and colorpicker.open then
  1773.                     colorpicker.open = not colorpicker.open
  1774.                     --
  1775.                     for i,v in pairs(colorpicker.holder.drawings) do
  1776.                         utility:Remove(v)
  1777.                     end
  1778.                     --
  1779.                     colorpicker.holder.drawings = {}
  1780.                     colorpicker.holder.inline = nil
  1781.                     --
  1782.                     window.currentContent.frame = nil
  1783.                     window.currentContent.colorpicker = nil
  1784.                 end
  1785.             end
  1786.             --
  1787.             library.ended[#library.ended + 1] = function(Input)
  1788.                 if Input.UserInputType == Enum.UserInputType.MouseButton1 then
  1789.                     if colorpicker.holding.picker then
  1790.                         colorpicker.holding.picker = not colorpicker.holding.picker
  1791.                     end
  1792.                     if colorpicker.holding.huepicker then
  1793.                         colorpicker.holding.huepicker = not colorpicker.holding.huepicker
  1794.                     end
  1795.                     if colorpicker.holding.transparency then
  1796.                         colorpicker.holding.transparency = not colorpicker.holding.transparency
  1797.                     end
  1798.                 end
  1799.             end
  1800.             --
  1801.             library.changed[#library.changed + 1] = function()
  1802.                 if colorpicker.open and colorpicker.holding.picker or colorpicker.holding.huepicker or colorpicker.holding.transparency then
  1803.                     if window.isVisible then
  1804.                         colorpicker:Refresh()
  1805.                     else
  1806.                         if colorpicker.holding.picker then
  1807.                             colorpicker.holding.picker = not colorpicker.holding.picker
  1808.                         end
  1809.                         if colorpicker.holding.huepicker then
  1810.                             colorpicker.holding.huepicker = not colorpicker.holding.huepicker
  1811.                         end
  1812.                         if colorpicker.holding.transparency then
  1813.                             colorpicker.holding.transparency = not colorpicker.holding.transparency
  1814.                         end
  1815.                     end
  1816.                 end
  1817.             end
  1818.             --
  1819.             if pointer and tostring(pointer) ~= "" and tostring(pointer) ~= " " and not library.pointers[tostring(pointer)] then
  1820.                 library.pointers[tostring(pointer)] = colorpicker
  1821.             end
  1822.             --
  1823.             toggle.addedAxis = toggle.addedAxis + 30 + 4 + 2
  1824.             toggle.colorpickers = toggle.colorpickers + 1
  1825.             section:Update()
  1826.             --
  1827.             return colorpicker, toggle
  1828.         end
  1829.         --
  1830.         function toggle:Keybind(info)
  1831.             local info = info or {}
  1832.             local def = info.def or info.Def or info.default or info.Default or nil
  1833.             local pointer = info.pointer or info.Pointer or info.flag or info.Flag or nil
  1834.             local mode = info.mode or info.Mode or "Always"
  1835.             local keybindname = info.keybindname or info.keybindName or info.KeybindName or info.Keybindname or nil
  1836.             local callback = info.callback or info.callBack or info.Callback or info.CallBack or function()end
  1837.             --
  1838.             toggle.addedaxis = toggle.addedAxis + 40 + 4 + 2
  1839.             --
  1840.             local keybind = {keybindname = keybindname or name, axis = toggle.axis, current = {}, selecting = false, mode = mode, open = false, modemenu = {buttons = {}, drawings = {}}, active = false}
  1841.             --
  1842.             toggle.keybind = keybind
  1843.             --
  1844.             local allowedKeyCodes = {"Q","W","E","R","T","Y","U","I","O","P","A","S","D","F","G","H","J","K","L","Z","X","C","V","B","N","M","One","Two","Three","Four","Five","Six","Seveen","Eight","Nine","0","Insert","Tab","Home","End","LeftAlt","LeftControl","LeftShift","RightAlt","RightControl","RightShift","CapsLock"}
  1845.             local allowedInputTypes = {"MouseButton1","MouseButton2","MouseButton3"}
  1846.             local shortenedInputs = {["MouseButton1"] = "MB1", ["MouseButton2"] = "MB2", ["MouseButton3"] = "MB3", ["Insert"] = "Ins", ["LeftAlt"] = "LAlt", ["LeftControl"] = "LC", ["LeftShift"] = "LS", ["RightAlt"] = "RAlt", ["RightControl"] = "RC", ["RightShift"] = "RS", ["CapsLock"] = "Caps"}
  1847.             --
  1848.             local keybind_outline = utility:Create("Frame", {Vector2.new(section.section_frame.Size.X-(40+4),keybind.axis), section.section_frame}, {
  1849.                 Size = utility:Size(0, 40, 0, 17),
  1850.                 Position = utility:Position(1, -(40+4), 0, keybind.axis, section.section_frame),
  1851.                 Color = theme.outline,
  1852.                 Visible = page.open
  1853.             }, section.visibleContent)
  1854.             --
  1855.             local keybind_inline = utility:Create("Frame", {Vector2.new(1,1), keybind_outline}, {
  1856.                 Size = utility:Size(1, -2, 1, -2, keybind_outline),
  1857.                 Position = utility:Position(0, 1, 0, 1, keybind_outline),
  1858.                 Color = theme.inline,
  1859.                 Visible = page.open
  1860.             }, section.visibleContent)
  1861.             --
  1862.             local keybind_frame = utility:Create("Frame", {Vector2.new(1,1), keybind_inline}, {
  1863.                 Size = utility:Size(1, -2, 1, -2, keybind_inline),
  1864.                 Position = utility:Position(0, 1, 0, 1, keybind_inline),
  1865.                 Color = theme.light_contrast,
  1866.                 Visible = page.open
  1867.             }, section.visibleContent)
  1868.             --
  1869.             local keybind__gradient = utility:Create("Image", {Vector2.new(0,0), keybind_frame}, {
  1870.                 Size = utility:Size(1, 0, 1, 0, keybind_frame),
  1871.                 Position = utility:Position(0, 0, 0 , 0, keybind_frame),
  1872.                 Transparency = 0.5,
  1873.                 Visible = page.open
  1874.             }, section.visibleContent)
  1875.             --
  1876.             local keybind_value = utility:Create("TextLabel", {Vector2.new(keybind_outline.Size.X/2,1), keybind_outline}, {
  1877.                 Text = "...",
  1878.                 Size = theme.textsize,
  1879.                 Font = theme.font,
  1880.                 Color = theme.textcolor,
  1881.                 OutlineColor = theme.textborder,
  1882.                 Center = true,
  1883.                 Position = utility:Position(0.5, 0, 1, 0, keybind_outline),
  1884.                 Visible = page.open
  1885.             }, section.visibleContent)
  1886.             --
  1887.             utility:LoadImage(keybind__gradient, "gradient", "https://i.imgur.com/5hmlrjX.png")
  1888.             --
  1889.             function keybind:Shorten(string)
  1890.                 for i,v in pairs(shortenedInputs) do
  1891.                     string = string.gsub(string, i, v)
  1892.                 end
  1893.                 return string
  1894.             end
  1895.             --
  1896.             function keybind:Change(input)
  1897.                 input = input or "..."
  1898.                 local inputTable = {}
  1899.                 --
  1900.                 if input.EnumType then
  1901.                     if input.EnumType == Enum.KeyCode or input.EnumType == Enum.UserInputType then
  1902.                         if table.find(allowedKeyCodes, input.Name) or table.find(allowedInputTypes, input.Name) then
  1903.                             inputTable = {input.EnumType == Enum.KeyCode and "KeyCode" or "UserInputType", input.Name}
  1904.                             --
  1905.                             keybind.current = inputTable
  1906.                             keybind_value.Text = #keybind.current > 0 and keybind:Shorten(keybind.current[2]) or "..."
  1907.                             --
  1908.                             return true
  1909.                         end
  1910.                     end
  1911.                 end
  1912.                 --
  1913.                 return false
  1914.             end
  1915.             --
  1916.             function keybind:Get()
  1917.                 return keybind.current
  1918.             end
  1919.             --
  1920.             function keybind:Set(tbl)
  1921.                 keybind.current = tbl
  1922.                 keybind_value.Text = #keybind.current > 0 and keybind:Shorten(keybind.current[2]) or "..."
  1923.             end
  1924.             --
  1925.             function keybind:Active()
  1926.                 return keybind.active
  1927.             end
  1928.             --
  1929.             function keybind:Reset()
  1930.                 for i,v in pairs(keybind.modemenu.buttons) do
  1931.                     v.Color = v.Text == keybind.mode and theme.accent or theme.textcolor
  1932.                 end
  1933.                 --
  1934.                 keybind.active = keybind.mode == "Always" and true or false
  1935.                 if keybind.current[1] and keybind.current[2] then
  1936.                     callback(Enum[keybind.current[1]][keybind.current[2]], keybind.active)
  1937.                 end
  1938.             end
  1939.             --
  1940.             keybind:Change(def)
  1941.             --
  1942.             library.began[#library.began + 1] = function(Input)
  1943.                 if keybind.current[1] and keybind.current[2] then
  1944.                     if Input.KeyCode == Enum[keybind.current[1]][keybind.current[2]] or Input.UserInputType == Enum[keybind.current[1]][keybind.current[2]] then
  1945.                         if keybind.mode == "Hold" then
  1946.                             local old = keybind.active
  1947.                             keybind.active = toggle:Get()
  1948.                             if keybind.active then window.keybindslist:Add(keybindname or name, keybind_value.Text) else window.keybindslist:Remove(keybindname or name) end
  1949.                             if keybind.active ~= old then callback(Enum[keybind.current[1]][keybind.current[2]], keybind.active) end
  1950.                         elseif keybind.mode == "Toggle" then
  1951.                             local old = keybind.active
  1952.                             keybind.active = not keybind.active == true and toggle:Get() or false
  1953.                             if keybind.active then window.keybindslist:Add(keybindname or name, keybind_value.Text) else window.keybindslist:Remove(keybindname or name) end
  1954.                             if keybind.active ~= old then callback(Enum[keybind.current[1]][keybind.current[2]], keybind.active) end
  1955.                         end
  1956.                     end
  1957.                 end
  1958.                 --
  1959.                 if keybind.selecting and window.isVisible then
  1960.                     local done = keybind:Change(Input.KeyCode.Name ~= "Unknown" and Input.KeyCode or Input.UserInputType)
  1961.                     if done then
  1962.                         keybind.selecting = false
  1963.                         keybind.active = keybind.mode == "Always" and true or false
  1964.                         keybind_frame.Color = theme.light_contrast
  1965.                         --
  1966.                         window.keybindslist:Remove(keybindname or name)
  1967.                         callback(Enum[keybind.current[1]][keybind.current[2]], keybind.active)
  1968.                     end
  1969.                 end
  1970.                 --
  1971.                 if not window.isVisible and keybind.selecting then
  1972.                     keybind.selecting = false
  1973.                     keybind_frame.Color = theme.light_contrast
  1974.                 end
  1975.                 --
  1976.                 if Input.UserInputType == Enum.UserInputType.MouseButton1 and window.isVisible and keybind_outline.Visible then
  1977.                     if utility:MouseOverDrawing({section.section_frame.Position.X + (section.section_frame.Size.X - (40+4+2)), section.section_frame.Position.Y + keybind.axis, section.section_frame.Position.X + section.section_frame.Size.X, section.section_frame.Position.Y + keybind.axis + 17}) and not window:IsOverContent() and not keybind.selecting then
  1978.                         keybind.selecting = true
  1979.                         keybind_frame.Color = theme.dark_contrast
  1980.                     end
  1981.                     if keybind.open and keybind.modemenu.frame then
  1982.                         if utility:MouseOverDrawing({keybind.modemenu.frame.Position.X, keybind.modemenu.frame.Position.Y, keybind.modemenu.frame.Position.X + keybind.modemenu.frame.Size.X, keybind.modemenu.frame.Position.Y + keybind.modemenu.frame.Size.Y}) then
  1983.                             local changed = false
  1984.                             --
  1985.                             for i,v in pairs(keybind.modemenu.buttons) do
  1986.                                 if utility:MouseOverDrawing({keybind.modemenu.frame.Position.X, keybind.modemenu.frame.Position.Y + (15 * (i - 1)), keybind.modemenu.frame.Position.X + keybind.modemenu.frame.Size.X, keybind.modemenu.frame.Position.Y + (15 * (i - 1)) + 15}) then
  1987.                                     keybind.mode = v.Text
  1988.                                     changed = true
  1989.                                 end
  1990.                             end
  1991.                             --
  1992.                             if changed then keybind:Reset() end
  1993.                         else
  1994.                             keybind.open = not keybind.open
  1995.                             --
  1996.                             for i,v in pairs(keybind.modemenu.drawings) do
  1997.                                 utility:Remove(v)
  1998.                             end
  1999.                             --
  2000.                             keybind.modemenu.drawings = {}
  2001.                             keybind.modemenu.buttons = {}
  2002.                             keybind.modemenu.frame = nil
  2003.                             --
  2004.                             window.currentContent.frame = nil
  2005.                             window.currentContent.keybind = nil
  2006.                         end
  2007.                     end
  2008.                 end
  2009.                 --
  2010.                 if Input.UserInputType == Enum.UserInputType.MouseButton2 and window.isVisible and keybind_outline.Visible then
  2011.                     if utility:MouseOverDrawing({section.section_frame.Position.X  + (section.section_frame.Size.X - (40+4+2)), section.section_frame.Position.Y + keybind.axis, section.section_frame.Position.X + section.section_frame.Size.X, section.section_frame.Position.Y + keybind.axis + 17}) and not window:IsOverContent() and not keybind.selecting then
  2012.                         window:CloseContent()
  2013.                         keybind.open = not keybind.open
  2014.                         --
  2015.                         local modemenu = utility:Create("Frame", {Vector2.new(keybind_outline.Size.X + 2,0), keybind_outline}, {
  2016.                             Size = utility:Size(0, 64, 0, 49),
  2017.                             Position = utility:Position(1, 2, 0, 0, keybind_outline),
  2018.                             Color = theme.outline,
  2019.                             Visible = page.open
  2020.                         }, keybind.modemenu.drawings);keybind.modemenu.frame = modemenu
  2021.                         --
  2022.                         local modemenu_inline = utility:Create("Frame", {Vector2.new(1,1), modemenu}, {
  2023.                             Size = utility:Size(1, -2, 1, -2, modemenu),
  2024.                             Position = utility:Position(0, 1, 0, 1, modemenu),
  2025.                             Color = theme.inline,
  2026.                             Visible = page.open
  2027.                         }, keybind.modemenu.drawings)
  2028.                         --
  2029.                         local modemenu_frame = utility:Create("Frame", {Vector2.new(1,1), modemenu_inline}, {
  2030.                             Size = utility:Size(1, -2, 1, -2, modemenu_inline),
  2031.                             Position = utility:Position(0, 1, 0, 1, modemenu_inline),
  2032.                             Color = theme.light_contrast,
  2033.                             Visible = page.open
  2034.                         }, keybind.modemenu.drawings)
  2035.                         --
  2036.                         local keybind__gradient = utility:Create("Image", {Vector2.new(0,0), modemenu_frame}, {
  2037.                             Size = utility:Size(1, 0, 1, 0, modemenu_frame),
  2038.                             Position = utility:Position(0, 0, 0 , 0, modemenu_frame),
  2039.                             Transparency = 0.5,
  2040.                             Visible = page.open
  2041.                         }, keybind.modemenu.drawings)
  2042.                         --
  2043.                         utility:LoadImage(keybind__gradient, "gradient", "https://i.imgur.com/5hmlrjX.png")
  2044.                         --
  2045.                         for i,v in pairs({"Always", "Toggle", "Hold"}) do
  2046.                             local button_title = utility:Create("TextLabel", {Vector2.new(modemenu_frame.Size.X/2,15 * (i-1)), modemenu_frame}, {
  2047.                                 Text = v,
  2048.                                 Size = theme.textsize,
  2049.                                 Font = theme.font,
  2050.                                 Color = v == keybind.mode and theme.accent or theme.textcolor,
  2051.                                 Center = true,
  2052.                                 OutlineColor = theme.textborder,
  2053.                                 Position = utility:Position(0.5, 0, 0, 15 * (i-1), modemenu_frame),
  2054.                                 Visible = page.open
  2055.                             }, keybind.modemenu.drawings);keybind.modemenu.buttons[#keybind.modemenu.buttons + 1] = button_title
  2056.                         end
  2057.                         --
  2058.                         window.currentContent.frame = modemenu
  2059.                         window.currentContent.keybind = keybind
  2060.                     end
  2061.                 end
  2062.             end
  2063.             --
  2064.             library.ended[#library.ended + 1] = function(Input)
  2065.                 if keybind.active and keybind.mode == "Hold" then
  2066.                     if keybind.current[1] and keybind.current[2] then
  2067.                         if Input.KeyCode == Enum[keybind.current[1]][keybind.current[2]] or Input.UserInputType == Enum[keybind.current[1]][keybind.current[2]] then
  2068.                             keybind.active = false
  2069.                             window.keybindslist:Remove(keybindname or name)
  2070.                             callback(Enum[keybind.current[1]][keybind.current[2]], keybind.active)
  2071.                         end
  2072.                     end
  2073.                 end
  2074.             end
  2075.             --
  2076.             if pointer and tostring(pointer) ~= "" and tostring(pointer) ~= " " and not library.pointers[tostring(pointer)] then
  2077.                 library.pointers[tostring(pointer)] = keybind
  2078.             end
  2079.             --
  2080.             toggle.addedAxis = 40+4+2
  2081.             section:Update()
  2082.             --
  2083.             return keybind
  2084.         end
  2085.         --
  2086.         return toggle
  2087.     end
  2088.     --
  2089.     function sections:Slider(info)
  2090.         local info = info or {}
  2091.         local name = info.name or info.Name or info.title or info.Title or "New Slider"
  2092.         local def = info.def or info.Def or info.default or info.Default or 10
  2093.         local min = info.min or info.Min or info.minimum or info.Minimum or 0
  2094.         local max = info.max or info.Max or info.maximum or info.Maximum or 100
  2095.         local sub = info.suffix or info.Suffix or info.ending or info.Ending or info.prefix or info.Prefix or info.measurement or info.Measurement or ""
  2096.         local decimals = info.decimals or info.Decimals or 1
  2097.         decimals = 1 / decimals
  2098.         local pointer = info.pointer or info.Pointer or info.flag or info.Flag or nil
  2099.         local callback = info.callback or info.callBack or info.Callback or info.CallBack or function()end
  2100.         def = math.clamp(def, min, max)
  2101.         --
  2102.         local window = self.window
  2103.         local page = self.page
  2104.         local section = self
  2105.         --
  2106.         local slider = {min = min, max = max, sub = sub, decimals = decimals, axis = section.currentAxis, current = def, holding = false}
  2107.         --
  2108.         local slider_title = utility:Create("TextLabel", {Vector2.new(4,slider.axis), section.section_frame}, {
  2109.             Text = name,
  2110.             Size = theme.textsize,
  2111.             Font = theme.font,
  2112.             Color = theme.textcolor,
  2113.             OutlineColor = theme.textborder,
  2114.             Position = utility:Position(0, 4, 0, slider.axis, section.section_frame),
  2115.             Visible = page.open
  2116.         }, section.visibleContent)
  2117.         --
  2118.         local slider_outline = utility:Create("Frame", {Vector2.new(4,slider.axis + 15), section.section_frame}, {
  2119.             Size = utility:Size(1, -8, 0, 12, section.section_frame),
  2120.             Position = utility:Position(0, 4, 0, slider.axis + 15, section.section_frame),
  2121.             Color = theme.outline,
  2122.             Visible = page.open
  2123.         }, section.visibleContent)
  2124.         --
  2125.         local slider_inline = utility:Create("Frame", {Vector2.new(1,1), slider_outline}, {
  2126.             Size = utility:Size(1, -2, 1, -2, slider_outline),
  2127.             Position = utility:Position(0, 1, 0, 1, slider_outline),
  2128.             Color = theme.inline,
  2129.             Visible = page.open
  2130.         }, section.visibleContent)
  2131.         --
  2132.         local slider_frame = utility:Create("Frame", {Vector2.new(1,1), slider_inline}, {
  2133.             Size = utility:Size(1, -2, 1, -2, slider_inline),
  2134.             Position = utility:Position(0, 1, 0, 1, slider_inline),
  2135.             Color = theme.light_contrast,
  2136.             Visible = page.open
  2137.         }, section.visibleContent)
  2138.         --
  2139.         local slider_slide = utility:Create("Frame", {Vector2.new(1,1), slider_inline}, {
  2140.             Size = utility:Size(0, (slider_frame.Size.X / (slider.max - slider.min) * (slider.current - slider.min)), 1, -2, slider_inline),
  2141.             Position = utility:Position(0, 1, 0, 1, slider_inline),
  2142.             Color = theme.accent,
  2143.             Visible = page.open
  2144.         }, section.visibleContent)
  2145.         --
  2146.         local slider__gradient = utility:Create("Image", {Vector2.new(0,0), slider_frame}, {
  2147.             Size = utility:Size(1, 0, 1, 0, slider_frame),
  2148.             Position = utility:Position(0, 0, 0 , 0, slider_frame),
  2149.             Transparency = 0.5,
  2150.             Visible = page.open
  2151.         }, section.visibleContent)
  2152.         --
  2153.         local textBounds = utility:GetTextBounds(name, theme.textsize, theme.font)
  2154.         local slider_value = utility:Create("TextLabel", {Vector2.new(slider_outline.Size.X/2,(slider_outline.Size.Y/2) - (textBounds.Y/2)), slider_outline}, {
  2155.             Text = slider.current..slider.sub.."/"..slider.max..slider.sub,
  2156.             Size = theme.textsize,
  2157.             Font = theme.font,
  2158.             Color = theme.textcolor,
  2159.             Center = true,
  2160.             OutlineColor = theme.textborder,
  2161.             Position = utility:Position(0.5, 0, 0, (slider_outline.Size.Y/2) - (textBounds.Y/2), slider_outline),
  2162.             Visible = page.open
  2163.         }, section.visibleContent)
  2164.         --
  2165.         utility:LoadImage(slider__gradient, "gradient", "https://i.imgur.com/5hmlrjX.png")
  2166.         --
  2167.         function slider:Set(value)
  2168.             slider.current = math.clamp(math.round(value * slider.decimals) / slider.decimals, slider.min, slider.max)
  2169.             local percent = 1 - ((slider.max - slider.current) / (slider.max - slider.min))
  2170.             slider_value.Text = slider.current..slider.sub.."/"..slider.max..slider.sub
  2171.             slider_slide.Size = utility:Size(0, percent * slider_frame.Size.X, 1, -2, slider_inline)
  2172.             callback(slider.current)
  2173.         end
  2174.         --
  2175.         function slider:Refresh()
  2176.             local mouseLocation = utility:MouseLocation()
  2177.             local percent = math.clamp(mouseLocation.X - slider_slide.Position.X, 0, slider_frame.Size.X) / slider_frame.Size.X
  2178.             local value = math.floor((slider.min + (slider.max - slider.min) * percent) * slider.decimals) / slider.decimals
  2179.             value = math.clamp(value, slider.min, slider.max)
  2180.             slider:Set(value)
  2181.         end
  2182.         --
  2183.         function slider:Get()
  2184.             return slider.current
  2185.         end
  2186.         --
  2187.         slider:Set(slider.current)
  2188.         --
  2189.         library.began[#library.began + 1] = function(Input)
  2190.             if Input.UserInputType == Enum.UserInputType.MouseButton1 and slider_outline.Visible and window.isVisible and page.open and utility:MouseOverDrawing({section.section_frame.Position.X, section.section_frame.Position.Y + slider.axis, section.section_frame.Position.X + section.section_frame.Size.X, section.section_frame.Position.Y + slider.axis + 27}) and not window:IsOverContent() then
  2191.                 slider.holding = true
  2192.                 slider:Refresh()
  2193.             end
  2194.         end
  2195.         --
  2196.         library.ended[#library.ended + 1] = function(Input)
  2197.             if Input.UserInputType == Enum.UserInputType.MouseButton1 and slider.holding and window.isVisible then
  2198.                 slider.holding = false
  2199.             end
  2200.         end
  2201.         --
  2202.         library.changed[#library.changed + 1] = function(Input)
  2203.             if slider.holding and window.isVisible then
  2204.                 slider:Refresh()
  2205.             end
  2206.         end
  2207.         --
  2208.         if pointer and tostring(pointer) ~= "" and tostring(pointer) ~= " " and not library.pointers[tostring(pointer)] then
  2209.             library.pointers[tostring(pointer)] = slider
  2210.         end
  2211.         --
  2212.         section.currentAxis = section.currentAxis + 27 + 4
  2213.         section:Update()
  2214.         --
  2215.         return slider
  2216.     end
  2217.     --
  2218.     function sections:Button(info)
  2219.         local info = info or {}
  2220.         local name = info.name or info.Name or info.title or info.Title or "New Button"
  2221.         local pointer = info.pointer or info.Pointer or info.flag or info.Flag or nil
  2222.         local callback = info.callback or info.callBack or info.Callback or info.CallBack or function()end
  2223.         --
  2224.         local window = self.window
  2225.         local page = self.page
  2226.         local section = self
  2227.         --
  2228.         local button = {axis = section.currentAxis}
  2229.         --
  2230.         local button_outline = utility:Create("Frame", {Vector2.new(4,button.axis), section.section_frame}, {
  2231.             Size = utility:Size(1, -8, 0, 20, section.section_frame),
  2232.             Position = utility:Position(0, 4, 0, button.axis, section.section_frame),
  2233.             Color = theme.outline,
  2234.             Visible = page.open
  2235.         }, section.visibleContent)
  2236.         --
  2237.         local button_inline = utility:Create("Frame", {Vector2.new(1,1), button_outline}, {
  2238.             Size = utility:Size(1, -2, 1, -2, button_outline),
  2239.             Position = utility:Position(0, 1, 0, 1, button_outline),
  2240.             Color = theme.inline,
  2241.             Visible = page.open
  2242.         }, section.visibleContent)
  2243.         --
  2244.         local button_frame = utility:Create("Frame", {Vector2.new(1,1), button_inline}, {
  2245.             Size = utility:Size(1, -2, 1, -2, button_inline),
  2246.             Position = utility:Position(0, 1, 0, 1, button_inline),
  2247.             Color = theme.light_contrast,
  2248.             Visible = page.open
  2249.         }, section.visibleContent)
  2250.         --
  2251.         local button_gradient = utility:Create("Image", {Vector2.new(0,0), button_frame}, {
  2252.             Size = utility:Size(1, 0, 1, 0, button_frame),
  2253.             Position = utility:Position(0, 0, 0 , 0, button_frame),
  2254.             Transparency = 0.5,
  2255.             Visible = page.open
  2256.         }, section.visibleContent)
  2257.         --
  2258.         local button_title = utility:Create("TextLabel", {Vector2.new(button_frame.Size.X/2,1), button_frame}, {
  2259.             Text = name,
  2260.             Size = theme.textsize,
  2261.             Font = theme.font,
  2262.             Color = theme.textcolor,
  2263.             OutlineColor = theme.textborder,
  2264.             Center = true,
  2265.             Position = utility:Position(0.5, 0, 0, 1, button_frame),
  2266.             Visible = page.open
  2267.         }, section.visibleContent)
  2268.         --
  2269.         utility:LoadImage(button_gradient, "gradient", "https://i.imgur.com/5hmlrjX.png")
  2270.         --
  2271.         library.began[#library.began + 1] = function(Input)
  2272.             if Input.UserInputType == Enum.UserInputType.MouseButton1 and button_outline.Visible and window.isVisible and utility:MouseOverDrawing({section.section_frame.Position.X, section.section_frame.Position.Y + button.axis, section.section_frame.Position.X + section.section_frame.Size.X, section.section_frame.Position.Y + button.axis + 20}) and not window:IsOverContent() then
  2273.                 callback()
  2274.             end
  2275.         end
  2276.         --
  2277.         if pointer and tostring(pointer) ~= "" and tostring(pointer) ~= " " and not library.pointers[tostring(pointer)] then
  2278.             library.pointers[tostring(pointer)] = button
  2279.         end
  2280.         --
  2281.         section.currentAxis = section.currentAxis + 20 + 4
  2282.         section:Update()
  2283.         --
  2284.         return button
  2285.     end
  2286.     --
  2287.     function sections:ButtonHolder(info)
  2288.         local info = info or {}
  2289.         local buttons = info.buttons or info.Buttons or {}
  2290.         --
  2291.         local window = self.window
  2292.         local page = self.page
  2293.         local section = self
  2294.         --
  2295.         local buttonHolder = {buttons = {}}
  2296.         --
  2297.         for i=1, 2 do
  2298.             local button = {axis = section.currentAxis}
  2299.             --
  2300.             local button_outline = utility:Create("Frame", {Vector2.new(i == 2 and ((section.section_frame.Size.X / 2) + 2) or 4,button.axis), section.section_frame}, {
  2301.                 Size = utility:Size(0.5, -6, 0, 20, section.section_frame),
  2302.                 Position = utility:Position(0, i == 2 and 2 or 4, 0, button.axis, section.section_frame),
  2303.                 Color = theme.outline,
  2304.                 Visible = page.open
  2305.             }, section.visibleContent)
  2306.             --
  2307.             local button_inline = utility:Create("Frame", {Vector2.new(1,1), button_outline}, {
  2308.                 Size = utility:Size(1, -2, 1, -2, button_outline),
  2309.                 Position = utility:Position(0, 1, 0, 1, button_outline),
  2310.                 Color = theme.inline,
  2311.                 Visible = page.open
  2312.             }, section.visibleContent)
  2313.             --
  2314.             local button_frame = utility:Create("Frame", {Vector2.new(1,1), button_inline}, {
  2315.                 Size = utility:Size(1, -2, 1, -2, button_inline),
  2316.                 Position = utility:Position(0, 1, 0, 1, button_inline),
  2317.                 Color = theme.light_contrast,
  2318.                 Visible = page.open
  2319.             }, section.visibleContent)
  2320.             --
  2321.             local button_gradient = utility:Create("Image", {Vector2.new(0,0), button_frame}, {
  2322.                 Size = utility:Size(1, 0, 1, 0, button_frame),
  2323.                 Position = utility:Position(0, 0, 0 , 0, button_frame),
  2324.                 Transparency = 0.5,
  2325.                 Visible = page.open
  2326.             }, section.visibleContent)
  2327.             --
  2328.             local button_title = utility:Create("TextLabel", {Vector2.new(button_frame.Size.X/2,1), button_frame}, {
  2329.                 Text = buttons[i][1],
  2330.                 Size = theme.textsize,
  2331.                 Font = theme.font,
  2332.                 Color = theme.textcolor,
  2333.                 OutlineColor = theme.textborder,
  2334.                 Center = true,
  2335.                 Position = utility:Position(0.5, 0, 0, 1, button_frame),
  2336.                 Visible = page.open
  2337.             }, section.visibleContent)
  2338.             --
  2339.             utility:LoadImage(button_gradient, "gradient", "https://i.imgur.com/5hmlrjX.png")
  2340.             --
  2341.             library.began[#library.began + 1] = function(Input)
  2342.                 if Input.UserInputType == Enum.UserInputType.MouseButton1 and button_outline.Visible and window.isVisible and utility:MouseOverDrawing({section.section_frame.Position.X + (i == 2 and (section.section_frame.Size.X/2) or 0), section.section_frame.Position.Y + button.axis, section.section_frame.Position.X + section.section_frame.Size.X - (i == 1 and (section.section_frame.Size.X/2) or 0), section.section_frame.Position.Y + button.axis + 20}) and not window:IsOverContent() then
  2343.                     buttons[i][2]()
  2344.                 end
  2345.             end
  2346.         end
  2347.         --
  2348.         section.currentAxis = section.currentAxis + 20 + 4
  2349.         section:Update()
  2350.     end
  2351.     --
  2352.     function sections:Dropdown(info)
  2353.         local info = info or {}
  2354.         local name = info.name or info.Name or info.title or info.Title or "New Dropdown"
  2355.         local options = info.options or info.Options or {"1", "2", "3"}
  2356.         local def = info.def or info.Def or info.default or info.Default or options[1]
  2357.         local pointer = info.pointer or info.Pointer or info.flag or info.Flag or nil
  2358.         local callback = info.callback or info.callBack or info.Callback or info.CallBack or function()end
  2359.         --
  2360.         local window = self.window
  2361.         local page = self.page
  2362.         local section = self
  2363.         --
  2364.         local dropdown = {open = false, current = tostring(def), holder = {buttons = {}, drawings = {}}, axis = section.currentAxis}
  2365.         --
  2366.         local dropdown_outline = utility:Create("Frame", {Vector2.new(4,dropdown.axis + 15), section.section_frame}, {
  2367.             Size = utility:Size(1, -8, 0, 20, section.section_frame),
  2368.             Position = utility:Position(0, 4, 0, dropdown.axis + 15, section.section_frame),
  2369.             Color = theme.outline,
  2370.             Visible = page.open
  2371.         }, section.visibleContent)
  2372.         --
  2373.         local dropdown_inline = utility:Create("Frame", {Vector2.new(1,1), dropdown_outline}, {
  2374.             Size = utility:Size(1, -2, 1, -2, dropdown_outline),
  2375.             Position = utility:Position(0, 1, 0, 1, dropdown_outline),
  2376.             Color = theme.inline,
  2377.             Visible = page.open
  2378.         }, section.visibleContent)
  2379.         --
  2380.         local dropdown_frame = utility:Create("Frame", {Vector2.new(1,1), dropdown_inline}, {
  2381.             Size = utility:Size(1, -2, 1, -2, dropdown_inline),
  2382.             Position = utility:Position(0, 1, 0, 1, dropdown_inline),
  2383.             Color = theme.light_contrast,
  2384.             Visible = page.open
  2385.         }, section.visibleContent)
  2386.         --
  2387.         local dropdown_title = utility:Create("TextLabel", {Vector2.new(4,dropdown.axis), section.section_frame}, {
  2388.             Text = name,
  2389.             Size = theme.textsize,
  2390.             Font = theme.font,
  2391.             Color = theme.textcolor,
  2392.             OutlineColor = theme.textborder,
  2393.             Position = utility:Position(0, 4, 0, dropdown.axis, section.section_frame),
  2394.             Visible = page.open
  2395.         }, section.visibleContent)
  2396.         --
  2397.         local dropdown__gradient = utility:Create("Image", {Vector2.new(0,0), dropdown_frame}, {
  2398.             Size = utility:Size(1, 0, 1, 0, dropdown_frame),
  2399.             Position = utility:Position(0, 0, 0 , 0, dropdown_frame),
  2400.             Transparency = 0.5,
  2401.             Visible = page.open
  2402.         }, section.visibleContent)
  2403.         --
  2404.         local dropdown_value = utility:Create("TextLabel", {Vector2.new(3,dropdown_frame.Size.Y/2 - 7), dropdown_frame}, {
  2405.             Text = dropdown.current,
  2406.             Size = theme.textsize,
  2407.             Font = theme.font,
  2408.             Color = theme.textcolor,
  2409.             OutlineColor = theme.textborder,
  2410.             Position = utility:Position(0, 3, 0, (dropdown_frame.Size.Y/2) - 7, dropdown_frame),
  2411.             Visible = page.open
  2412.         }, section.visibleContent)
  2413.         --
  2414.         local dropdown_image = utility:Create("Image", {Vector2.new(dropdown_frame.Size.X - 15,dropdown_frame.Size.Y/2 - 3), dropdown_frame}, {
  2415.             Size = utility:Size(0, 9, 0, 6, dropdown_frame),
  2416.             Position = utility:Position(1, -15, 0.5, -3, dropdown_frame),
  2417.             Visible = page.open
  2418.         }, section.visibleContent);dropdown["dropdown_image"] = dropdown_image
  2419.         --
  2420.         utility:LoadImage(dropdown_image, "arrow_down", "https://i.imgur.com/tVqy0nL.png")
  2421.         utility:LoadImage(dropdown__gradient, "gradient", "https://i.imgur.com/5hmlrjX.png")
  2422.         --
  2423.         function dropdown:Update()
  2424.             if dropdown.open and dropdown.holder.inline then
  2425.                 for i,v in pairs(dropdown.holder.buttons) do
  2426.                     v[1].Color = v[1].Text == tostring(dropdown.current) and theme.accent or theme.textcolor
  2427.                     v[1].Position = utility:Position(0, v[1].Text == tostring(dropdown.current) and 8 or 6, 0, 2, v[2])
  2428.                     utility:UpdateOffset(v[1], {Vector2.new(v[1].Text == tostring(dropdown.current) and 8 or 6, 2), v[2]})
  2429.                 end
  2430.             end
  2431.         end
  2432.         --
  2433.         function dropdown:Set(value)
  2434.             if typeof(value) == "string" and table.find(options, value) then
  2435.                 dropdown.current = value
  2436.                 dropdown_value.Text = value
  2437.             end
  2438.         end
  2439.         --
  2440.         function dropdown:Get()
  2441.             return dropdown.current
  2442.         end
  2443.         --
  2444.         library.began[#library.began + 1] = function(Input)
  2445.             if Input.UserInputType == Enum.UserInputType.MouseButton1 and window.isVisible and dropdown_outline.Visible then
  2446.                 if dropdown.open and dropdown.holder.inline and utility:MouseOverDrawing({dropdown.holder.inline.Position.X, dropdown.holder.inline.Position.Y, dropdown.holder.inline.Position.X + dropdown.holder.inline.Size.X, dropdown.holder.inline.Position.Y + dropdown.holder.inline.Size.Y}) then
  2447.                     for i,v in pairs(dropdown.holder.buttons) do
  2448.                         if utility:MouseOverDrawing({v[2].Position.X, v[2].Position.Y, v[2].Position.X + v[2].Size.X, v[2].Position.Y + v[2].Size.Y}) and v[1].Text ~= dropdown.current then
  2449.                             dropdown.current = v[1].Text
  2450.                             dropdown_value.Text = dropdown.current
  2451.                             dropdown:Update()
  2452.                         end
  2453.                     end
  2454.                 elseif utility:MouseOverDrawing({section.section_frame.Position.X, section.section_frame.Position.Y + dropdown.axis, section.section_frame.Position.X + section.section_frame.Size.X, section.section_frame.Position.Y + dropdown.axis + 15 +  20}) and not window:IsOverContent() then
  2455.                     if not dropdown.open then
  2456.                         window:CloseContent()
  2457.                         dropdown.open = not dropdown.open
  2458.                         utility:LoadImage(dropdown_image, "arrow_up", "https://i.imgur.com/SL9cbQp.png")
  2459.                         --
  2460.                         local dropdown_open_outline = utility:Create("Frame", {Vector2.new(0,19), dropdown_outline}, {
  2461.                             Size = utility:Size(1, 0, 0, 3 + (#options * 19), dropdown_outline),
  2462.                             Position = utility:Position(0, 0, 0, 19, dropdown_outline),
  2463.                             Color = theme.outline,
  2464.                             Visible = page.open
  2465.                         }, dropdown.holder.drawings);dropdown.holder.outline = dropdown_open_outline
  2466.                         --
  2467.                         local dropdown_open_inline = utility:Create("Frame", {Vector2.new(1,1), dropdown_open_outline}, {
  2468.                             Size = utility:Size(1, -2, 1, -2, dropdown_open_outline),
  2469.                             Position = utility:Position(0, 1, 0, 1, dropdown_open_outline),
  2470.                             Color = theme.inline,
  2471.                             Visible = page.open
  2472.                         }, dropdown.holder.drawings);dropdown.holder.inline = dropdown_open_inline
  2473.                         --
  2474.                         for i,v in pairs(options) do
  2475.                             local dropdown_value_frame = utility:Create("Frame", {Vector2.new(1,1 + (19 * (i-1))), dropdown_open_inline}, {
  2476.                                 Size = utility:Size(1, -2, 0, 18, dropdown_open_inline),
  2477.                                 Position = utility:Position(0, 1, 0, 1 + (19 * (i-1)), dropdown_open_inline),
  2478.                                 Color = theme.light_contrast,
  2479.                                 Visible = page.open
  2480.                             }, dropdown.holder.drawings)
  2481.                             --[[
  2482.                             local dropdown_value_gradient = utility:Create("Image", {Vector2.new(0,0), dropdown_value_frame}, {
  2483.                                 Size = utility:Size(1, 0, 1, 0, dropdown_value_frame),
  2484.                                 Position = utility:Position(0, 0, 0 , 0, dropdown_value_frame),
  2485.                                 Transparency = 0.5,
  2486.                                 Visible = page.open
  2487.                             }, dropdown.holder.drawings)
  2488.                             --
  2489.                             utility:LoadImage(dropdown_value_gradient, "gradient", "https://i.imgur.com/5hmlrjX.png")]]
  2490.                             --
  2491.                             local dropdown_value = utility:Create("TextLabel", {Vector2.new(v == tostring(dropdown.current) and 8 or 6,2), dropdown_value_frame}, {
  2492.                                 Text = v,
  2493.                                 Size = theme.textsize,
  2494.                                 Font = theme.font,
  2495.                                 Color = v == tostring(dropdown.current) and theme.accent or theme.textcolor,
  2496.                                 OutlineColor = theme.textborder,
  2497.                                 Position = utility:Position(0, v == tostring(dropdown.current) and 8 or 6, 0, 2, dropdown_value_frame),
  2498.                                 Visible = page.open
  2499.                             }, dropdown.holder.drawings);dropdown.holder.buttons[#dropdown.holder.buttons + 1] = {dropdown_value, dropdown_value_frame}
  2500.                         end
  2501.                         --
  2502.                         window.currentContent.frame = dropdown_open_inline
  2503.                         window.currentContent.dropdown = dropdown
  2504.                     else
  2505.                         dropdown.open = not dropdown.open
  2506.                         utility:LoadImage(dropdown_image, "arrow_down", "https://i.imgur.com/tVqy0nL.png")
  2507.                         --
  2508.                         for i,v in pairs(dropdown.holder.drawings) do
  2509.                             utility:Remove(v)
  2510.                         end
  2511.                         --
  2512.                         dropdown.holder.drawings = {}
  2513.                         dropdown.holder.buttons = {}
  2514.                         dropdown.holder.inline = nil
  2515.                         --
  2516.                         window.currentContent.frame = nil
  2517.                         window.currentContent.dropdown = nil
  2518.                     end
  2519.                 else
  2520.                     if dropdown.open then
  2521.                         dropdown.open = not dropdown.open
  2522.                         utility:LoadImage(dropdown_image, "arrow_down", "https://i.imgur.com/tVqy0nL.png")
  2523.                         --
  2524.                         for i,v in pairs(dropdown.holder.drawings) do
  2525.                             utility:Remove(v)
  2526.                         end
  2527.                         --
  2528.                         dropdown.holder.drawings = {}
  2529.                         dropdown.holder.buttons = {}
  2530.                         dropdown.holder.inline = nil
  2531.                         --
  2532.                         window.currentContent.frame = nil
  2533.                         window.currentContent.dropdown = nil
  2534.                     end
  2535.                 end
  2536.             elseif Input.UserInputType == Enum.UserInputType.MouseButton1 and dropdown.open then
  2537.                 dropdown.open = not dropdown.open
  2538.                 utility:LoadImage(dropdown_image, "arrow_down", "https://i.imgur.com/tVqy0nL.png")
  2539.                 --
  2540.                 for i,v in pairs(dropdown.holder.drawings) do
  2541.                     utility:Remove(v)
  2542.                 end
  2543.                 --
  2544.                 dropdown.holder.drawings = {}
  2545.                 dropdown.holder.buttons = {}
  2546.                 dropdown.holder.inline = nil
  2547.                 --
  2548.                 window.currentContent.frame = nil
  2549.                 window.currentContent.dropdown = nil
  2550.             end
  2551.         end
  2552.         --
  2553.         if pointer and tostring(pointer) ~= "" and tostring(pointer) ~= " " and not library.pointers[tostring(pointer)] then
  2554.             library.pointers[tostring(pointer)] = dropdown
  2555.         end
  2556.         --
  2557.         section.currentAxis = section.currentAxis + 35 + 4
  2558.         section:Update()
  2559.         --
  2560.         return dropdown
  2561.     end
  2562.     --
  2563.     function sections:Multibox(info)
  2564.         local info = info or {}
  2565.         local name = info.name or info.Name or info.title or info.Title or "New Multibox"
  2566.         local options = info.options or info.Options or {"1", "2", "3"}
  2567.         local def = info.def or info.Def or info.default or info.Default or {options[1]}
  2568.         local pointer = info.pointer or info.Pointer or info.flag or info.Flag or nil
  2569.         local callback = info.callback or info.callBack or info.Callback or info.CallBack or function()end
  2570.         local min = info.min or info.Min or info.minimum or info.Minimum or 0
  2571.         --
  2572.         local window = self.window
  2573.         local page = self.page
  2574.         local section = self
  2575.         --
  2576.         local multibox = {open = false, current = def, holder = {buttons = {}, drawings = {}}, axis = section.currentAxis}
  2577.         --
  2578.         local multibox_outline = utility:Create("Frame", {Vector2.new(4,multibox.axis + 15), section.section_frame}, {
  2579.             Size = utility:Size(1, -8, 0, 20, section.section_frame),
  2580.             Position = utility:Position(0, 4, 0, multibox.axis + 15, section.section_frame),
  2581.             Color = theme.outline,
  2582.             Visible = page.open
  2583.         }, section.visibleContent)
  2584.         --
  2585.         local multibox_inline = utility:Create("Frame", {Vector2.new(1,1), multibox_outline}, {
  2586.             Size = utility:Size(1, -2, 1, -2, multibox_outline),
  2587.             Position = utility:Position(0, 1, 0, 1, multibox_outline),
  2588.             Color = theme.inline,
  2589.             Visible = page.open
  2590.         }, section.visibleContent)
  2591.         --
  2592.         local multibox_frame = utility:Create("Frame", {Vector2.new(1,1), multibox_inline}, {
  2593.             Size = utility:Size(1, -2, 1, -2, multibox_inline),
  2594.             Position = utility:Position(0, 1, 0, 1, multibox_inline),
  2595.             Color = theme.light_contrast,
  2596.             Visible = page.open
  2597.         }, section.visibleContent)
  2598.         --
  2599.         local multibox_title = utility:Create("TextLabel", {Vector2.new(4,multibox.axis), section.section_frame}, {
  2600.             Text = name,
  2601.             Size = theme.textsize,
  2602.             Font = theme.font,
  2603.             Color = theme.textcolor,
  2604.             OutlineColor = theme.textborder,
  2605.             Position = utility:Position(0, 4, 0, multibox.axis, section.section_frame),
  2606.             Visible = page.open
  2607.         }, section.visibleContent)
  2608.         --
  2609.         local multibox__gradient = utility:Create("Image", {Vector2.new(0,0), multibox_frame}, {
  2610.             Size = utility:Size(1, 0, 1, 0, multibox_frame),
  2611.             Position = utility:Position(0, 0, 0 , 0, multibox_frame),
  2612.             Transparency = 0.5,
  2613.             Visible = page.open
  2614.         }, section.visibleContent)
  2615.         --
  2616.         local multibox_value = utility:Create("TextLabel", {Vector2.new(3,multibox_frame.Size.Y/2 - 7), multibox_frame}, {
  2617.             Text = "",
  2618.             Size = theme.textsize,
  2619.             Font = theme.font,
  2620.             Color = theme.textcolor,
  2621.             OutlineColor = theme.textborder,
  2622.             Position = utility:Position(0, 3, 0, (multibox_frame.Size.Y/2) - 7, multibox_frame),
  2623.             Visible = page.open
  2624.         }, section.visibleContent)
  2625.         --
  2626.         local multibox_image = utility:Create("Image", {Vector2.new(multibox_frame.Size.X - 15,multibox_frame.Size.Y/2 - 3), multibox_frame}, {
  2627.             Size = utility:Size(0, 9, 0, 6, multibox_frame),
  2628.             Position = utility:Position(1, -15, 0.5, -3, multibox_frame),
  2629.             Visible = page.open
  2630.         }, section.visibleContent);multibox["multibox_image"] = multibox_image
  2631.         --
  2632.         utility:LoadImage(multibox_image, "arrow_down", "https://i.imgur.com/tVqy0nL.png")
  2633.         utility:LoadImage(multibox__gradient, "gradient", "https://i.imgur.com/5hmlrjX.png")
  2634.         --
  2635.         function multibox:Update()
  2636.             if multibox.open and multibox.holder.inline then
  2637.                 for i,v in pairs(multibox.holder.buttons) do
  2638.                     v[1].Color = table.find(multibox.current, v[1].Text) and theme.accent or theme.textcolor
  2639.                     v[1].Position = utility:Position(0, table.find(multibox.current, v[1].Text) and 8 or 6, 0, 2, v[2])
  2640.                     utility:UpdateOffset(v[1], {Vector2.new(table.find(multibox.current, v[1].Text) and 8 or 6, 2), v[2]})
  2641.                 end
  2642.             end
  2643.         end
  2644.         --
  2645.         function multibox:Serialize(tbl)
  2646.             local str = ""
  2647.             --
  2648.             for i,v in pairs(tbl) do
  2649.                 str = str..v..", "
  2650.             end
  2651.             --
  2652.             return string.sub(str, 0, #str - 2)
  2653.         end
  2654.         --
  2655.         function multibox:Resort(tbl,original)
  2656.             local newtbl = {}
  2657.             --
  2658.             for i,v in pairs(original) do
  2659.                 if table.find(tbl, v) then
  2660.                     newtbl[#newtbl + 1] = v
  2661.                 end
  2662.             end
  2663.             --
  2664.             return newtbl
  2665.         end
  2666.         --
  2667.         function multibox:Set(tbl)
  2668.             if typeof(tbl) == "table" then
  2669.                 multibox.current = tbl
  2670.                 multibox_value.Text =  multibox:Serialize(multibox:Resort(multibox.current, options))
  2671.             end
  2672.         end
  2673.         --
  2674.         function multibox:Get()
  2675.             return multibox.current
  2676.         end
  2677.         --
  2678.         multibox_value.Text = multibox:Serialize(multibox:Resort(multibox.current, options))
  2679.         --
  2680.         library.began[#library.began + 1] = function(Input)
  2681.             if Input.UserInputType == Enum.UserInputType.MouseButton1 and window.isVisible and multibox_outline.Visible then
  2682.                 if multibox.open and multibox.holder.inline and utility:MouseOverDrawing({multibox.holder.inline.Position.X, multibox.holder.inline.Position.Y, multibox.holder.inline.Position.X + multibox.holder.inline.Size.X, multibox.holder.inline.Position.Y + multibox.holder.inline.Size.Y}) then
  2683.                     for i,v in pairs(multibox.holder.buttons) do
  2684.                         if utility:MouseOverDrawing({v[2].Position.X, v[2].Position.Y, v[2].Position.X + v[2].Size.X, v[2].Position.Y + v[2].Size.Y}) and v[1].Text ~= multibox.current then
  2685.                             if not table.find(multibox.current, v[1].Text) then
  2686.                                 multibox.current[#multibox.current + 1] = v[1].Text
  2687.                                 multibox_value.Text = multibox:Serialize(multibox:Resort(multibox.current, options))
  2688.                                 multibox:Update()
  2689.                             else
  2690.                                 if #multibox.current > min then
  2691.                                     table.remove(multibox.current, table.find(multibox.current, v[1].Text))
  2692.                                     multibox_value.Text = multibox:Serialize(multibox:Resort(multibox.current, options))
  2693.                                     multibox:Update()
  2694.                                 end
  2695.                             end
  2696.                         end
  2697.                     end
  2698.                 elseif utility:MouseOverDrawing({section.section_frame.Position.X, section.section_frame.Position.Y + multibox.axis, section.section_frame.Position.X + section.section_frame.Size.X, section.section_frame.Position.Y + multibox.axis + 15 +  20}) and not window:IsOverContent() then
  2699.                     if not multibox.open then
  2700.                         window:CloseContent()
  2701.                         multibox.open = not multibox.open
  2702.                         utility:LoadImage(multibox_image, "arrow_up", "https://i.imgur.com/SL9cbQp.png")
  2703.                         --
  2704.                         local multibox_open_outline = utility:Create("Frame", {Vector2.new(0,19), multibox_outline}, {
  2705.                             Size = utility:Size(1, 0, 0, 3 + (#options * 19), multibox_outline),
  2706.                             Position = utility:Position(0, 0, 0, 19, multibox_outline),
  2707.                             Color = theme.outline,
  2708.                             Visible = page.open
  2709.                         }, multibox.holder.drawings);multibox.holder.outline = multibox_open_outline
  2710.                         --
  2711.                         local multibox_open_inline = utility:Create("Frame", {Vector2.new(1,1), multibox_open_outline}, {
  2712.                             Size = utility:Size(1, -2, 1, -2, multibox_open_outline),
  2713.                             Position = utility:Position(0, 1, 0, 1, multibox_open_outline),
  2714.                             Color = theme.inline,
  2715.                             Visible = page.open
  2716.                         }, multibox.holder.drawings);multibox.holder.inline = multibox_open_inline
  2717.                         --
  2718.                         for i,v in pairs(options) do
  2719.                             local multibox_value_frame = utility:Create("Frame", {Vector2.new(1,1 + (19 * (i-1))), multibox_open_inline}, {
  2720.                                 Size = utility:Size(1, -2, 0, 18, multibox_open_inline),
  2721.                                 Position = utility:Position(0, 1, 0, 1 + (19 * (i-1)), multibox_open_inline),
  2722.                                 Color = theme.light_contrast,
  2723.                                 Visible = page.open
  2724.                             }, multibox.holder.drawings)
  2725.                             --[[
  2726.                             local multibox_value_gradient = utility:Create("Image", {Vector2.new(0,0), multibox_value_frame}, {
  2727.                                 Size = utility:Size(1, 0, 1, 0, multibox_value_frame),
  2728.                                 Position = utility:Position(0, 0, 0 , 0, multibox_value_frame),
  2729.                                 Transparency = 0.5,
  2730.                                 Visible = page.open
  2731.                             }, multibox.holder.drawings)
  2732.                             --
  2733.                             utility:LoadImage(multibox_value_gradient, "gradient", "https://i.imgur.com/5hmlrjX.png")]]
  2734.                             --
  2735.                             local multibox_value = utility:Create("TextLabel", {Vector2.new(table.find(multibox.current, v) and 8 or 6,2), multibox_value_frame}, {
  2736.                                 Text = v,
  2737.                                 Size = theme.textsize,
  2738.                                 Font = theme.font,
  2739.                                 Color = table.find(multibox.current, v) and theme.accent or theme.textcolor,
  2740.                                 OutlineColor = theme.textborder,
  2741.                                 Position = utility:Position(0, table.find(multibox.current, v) and 8 or 6, 0, 2, multibox_value_frame),
  2742.                                 Visible = page.open
  2743.                             }, multibox.holder.drawings);multibox.holder.buttons[#multibox.holder.buttons + 1] = {multibox_value, multibox_value_frame}
  2744.                         end
  2745.                         --
  2746.                         window.currentContent.frame = multibox_open_inline
  2747.                         window.currentContent.multibox = multibox
  2748.                     else
  2749.                         multibox.open = not multibox.open
  2750.                         utility:LoadImage(multibox_image, "arrow_down", "https://i.imgur.com/tVqy0nL.png")
  2751.                         --
  2752.                         for i,v in pairs(multibox.holder.drawings) do
  2753.                             utility:Remove(v)
  2754.                         end
  2755.                         --
  2756.                         multibox.holder.drawings = {}
  2757.                         multibox.holder.buttons = {}
  2758.                         multibox.holder.inline = nil
  2759.                         --
  2760.                         window.currentContent.frame = nil
  2761.                         window.currentContent.multibox = nil
  2762.                     end
  2763.                 else
  2764.                     if multibox.open then
  2765.                         multibox.open = not multibox.open
  2766.                         utility:LoadImage(multibox_image, "arrow_down", "https://i.imgur.com/tVqy0nL.png")
  2767.                         --
  2768.                         for i,v in pairs(multibox.holder.drawings) do
  2769.                             utility:Remove(v)
  2770.                         end
  2771.                         --
  2772.                         multibox.holder.drawings = {}
  2773.                         multibox.holder.buttons = {}
  2774.                         multibox.holder.inline = nil
  2775.                         --
  2776.                         window.currentContent.frame = nil
  2777.                         window.currentContent.multibox = nil
  2778.                     end
  2779.                 end
  2780.             elseif Input.UserInputType == Enum.UserInputType.MouseButton1 and multibox.open then
  2781.                 multibox.open = not multibox.open
  2782.                 utility:LoadImage(multibox_image, "arrow_down", "https://i.imgur.com/tVqy0nL.png")
  2783.                 --
  2784.                 for i,v in pairs(multibox.holder.drawings) do
  2785.                     utility:Remove(v)
  2786.                 end
  2787.                 --
  2788.                 multibox.holder.drawings = {}
  2789.                 multibox.holder.buttons = {}
  2790.                 multibox.holder.inline = nil
  2791.                 --
  2792.                 window.currentContent.frame = nil
  2793.                 window.currentContent.multibox = nil
  2794.             end
  2795.         end
  2796.         --
  2797.         if pointer and tostring(pointer) ~= "" and tostring(pointer) ~= " " and not library.pointers[tostring(pointer)] then
  2798.             library.pointers[tostring(pointer)] = multibox
  2799.         end
  2800.         --
  2801.         section.currentAxis = section.currentAxis + 35 + 4
  2802.         section:Update()
  2803.         --
  2804.         return multibox
  2805.     end
  2806.     --
  2807.     function sections:Keybind(info)
  2808.         local info = info or {}
  2809.         local name = info.name or info.Name or info.title or info.Title or "New Keybind"
  2810.         local def = info.def or info.Def or info.default or info.Default or nil
  2811.         local pointer = info.pointer or info.Pointer or info.flag or info.Flag or nil
  2812.         local mode = info.mode or info.Mode or "Always"
  2813.         local keybindname = info.keybindname or info.keybindName or info.Keybindname or info.KeybindName or nil
  2814.         local callback = info.callback or info.callBack or info.Callback or info.CallBack or function()end
  2815.         --
  2816.         local window = self.window
  2817.         local page = self.page
  2818.         local section = self
  2819.         --
  2820.         local keybind = {keybindname = keybindname or name, axis = section.currentAxis, current = {}, selecting = false, mode = mode, open = false, modemenu = {buttons = {}, drawings = {}}, active = false}
  2821.         --
  2822.         local allowedKeyCodes = {"Q","W","E","R","T","Y","U","I","O","P","A","S","D","F","G","H","J","K","L","Z","X","C","V","B","N","M","One","Two","Three","Four","Five","Six","Seveen","Eight","Nine","0","Insert","Tab","Home","End","LeftAlt","LeftControl","LeftShift","RightAlt","RightControl","RightShift","CapsLock"}
  2823.         local allowedInputTypes = {"MouseButton1","MouseButton2","MouseButton3"}
  2824.         local shortenedInputs = {["MouseButton1"] = "MB1", ["MouseButton2"] = "MB2", ["MouseButton3"] = "MB3", ["Insert"] = "Ins", ["LeftAlt"] = "LAlt", ["LeftControl"] = "LC", ["LeftShift"] = "LS", ["RightAlt"] = "RAlt", ["RightControl"] = "RC", ["RightShift"] = "RS", ["CapsLock"] = "Caps"}
  2825.         --
  2826.         local keybind_outline = utility:Create("Frame", {Vector2.new(section.section_frame.Size.X-(40+4),keybind.axis), section.section_frame}, {
  2827.             Size = utility:Size(0, 40, 0, 17),
  2828.             Position = utility:Position(1, -(40+4), 0, keybind.axis, section.section_frame),
  2829.             Color = theme.outline,
  2830.             Visible = page.open
  2831.         }, section.visibleContent)
  2832.         --
  2833.         local keybind_inline = utility:Create("Frame", {Vector2.new(1,1), keybind_outline}, {
  2834.             Size = utility:Size(1, -2, 1, -2, keybind_outline),
  2835.             Position = utility:Position(0, 1, 0, 1, keybind_outline),
  2836.             Color = theme.inline,
  2837.             Visible = page.open
  2838.         }, section.visibleContent)
  2839.         --
  2840.         local keybind_frame = utility:Create("Frame", {Vector2.new(1,1), keybind_inline}, {
  2841.             Size = utility:Size(1, -2, 1, -2, keybind_inline),
  2842.             Position = utility:Position(0, 1, 0, 1, keybind_inline),
  2843.             Color = theme.light_contrast,
  2844.             Visible = page.open
  2845.         }, section.visibleContent)
  2846.         --
  2847.         local keybind_title = utility:Create("TextLabel", {Vector2.new(4,keybind.axis + (17/2) - (utility:GetTextBounds(name, theme.textsize, theme.font).Y/2)), section.section_frame}, {
  2848.             Text = name,
  2849.             Size = theme.textsize,
  2850.             Font = theme.font,
  2851.             Color = theme.textcolor,
  2852.             OutlineColor = theme.textborder,
  2853.             Position = utility:Position(0, 4, 0, keybind.axis + (17/2) - (utility:GetTextBounds(name, theme.textsize, theme.font).Y/2), section.section_frame),
  2854.             Visible = page.open
  2855.         }, section.visibleContent)
  2856.         --
  2857.         local keybind__gradient = utility:Create("Image", {Vector2.new(0,0), keybind_frame}, {
  2858.             Size = utility:Size(1, 0, 1, 0, keybind_frame),
  2859.             Position = utility:Position(0, 0, 0 , 0, keybind_frame),
  2860.             Transparency = 0.5,
  2861.             Visible = page.open
  2862.         }, section.visibleContent)
  2863.         --
  2864.         local keybind_value = utility:Create("TextLabel", {Vector2.new(keybind_outline.Size.X/2,1), keybind_outline}, {
  2865.             Text = "...",
  2866.             Size = theme.textsize,
  2867.             Font = theme.font,
  2868.             Color = theme.textcolor,
  2869.             OutlineColor = theme.textborder,
  2870.             Center = true,
  2871.             Position = utility:Position(0.5, 0, 1, 0, keybind_outline),
  2872.             Visible = page.open
  2873.         }, section.visibleContent)
  2874.         --
  2875.         utility:LoadImage(keybind__gradient, "gradient", "https://i.imgur.com/5hmlrjX.png")
  2876.         --
  2877.         function keybind:Shorten(string)
  2878.             for i,v in pairs(shortenedInputs) do
  2879.                 string = string.gsub(string, i, v)
  2880.             end
  2881.             return string
  2882.         end
  2883.         --
  2884.         function keybind:Change(input)
  2885.             input = input or "..."
  2886.             local inputTable = {}
  2887.             --
  2888.             if input.EnumType then
  2889.                 if input.EnumType == Enum.KeyCode or input.EnumType == Enum.UserInputType then
  2890.                     if table.find(allowedKeyCodes, input.Name) or table.find(allowedInputTypes, input.Name) then
  2891.                         inputTable = {input.EnumType == Enum.KeyCode and "KeyCode" or "UserInputType", input.Name}
  2892.                         --
  2893.                         keybind.current = inputTable
  2894.                         keybind_value.Text = #keybind.current > 0 and keybind:Shorten(keybind.current[2]) or "..."
  2895.                         --
  2896.                         return true
  2897.                     end
  2898.                 end
  2899.             end
  2900.             --
  2901.             return false
  2902.         end
  2903.         --
  2904.         function keybind:Get()
  2905.             return keybind.current
  2906.         end
  2907.         --
  2908.         function keybind:Active()
  2909.             return keybind.active
  2910.         end
  2911.         --
  2912.         function keybind:Reset()
  2913.             for i,v in pairs(keybind.modemenu.buttons) do
  2914.                 v.Color = v.Text == keybind.mode and theme.accent or theme.textcolor
  2915.             end
  2916.             --
  2917.             keybind.active = keybind.mode == "Always" and true or false
  2918.             if keybind.current[1] and keybind.current[2] then
  2919.                 callback(Enum[keybind.current[1]][keybind.current[2]], keybind.active)
  2920.             end
  2921.         end
  2922.         --
  2923.         keybind:Change(def)
  2924.         --
  2925.         library.began[#library.began + 1] = function(Input)
  2926.             if keybind.current[1] and keybind.current[2] then
  2927.                 if Input.KeyCode == Enum[keybind.current[1]][keybind.current[2]] or Input.UserInputType == Enum[keybind.current[1]][keybind.current[2]] then
  2928.                     if keybind.mode == "Hold" then
  2929.                         keybind.active = true
  2930.                         if keybind.active then window.keybindslist:Add(keybindname or name, keybind_value.Text) else window.keybindslist:Remove(keybindname or name) end
  2931.                         callback(Enum[keybind.current[1]][keybind.current[2]], keybind.active)
  2932.                     elseif keybind.mode == "Toggle" then
  2933.                         keybind.active = not keybind.active
  2934.                         if keybind.active then window.keybindslist:Add(keybindname or name, keybind_value.Text) else window.keybindslist:Remove(keybindname or name) end
  2935.                         callback(Enum[keybind.current[1]][keybind.current[2]], keybind.active)
  2936.                     end
  2937.                 end
  2938.             end
  2939.             --
  2940.             if keybind.selecting and window.isVisible then
  2941.                 local done = keybind:Change(Input.KeyCode.Name ~= "Unknown" and Input.KeyCode or Input.UserInputType)
  2942.                 if done then
  2943.                     keybind.selecting = false
  2944.                     keybind.active = keybind.mode == "Always" and true or false
  2945.                     keybind_frame.Color = theme.light_contrast
  2946.                     --
  2947.                     window.keybindslist:Remove(keybindname or name)
  2948.                     --
  2949.                     callback(Enum[keybind.current[1]][keybind.current[2]], keybind.active)
  2950.                 end
  2951.             end
  2952.             --
  2953.             if not window.isVisible and keybind.selecting then
  2954.                 keybind.selecting = false
  2955.                 keybind_frame.Color = theme.light_contrast
  2956.             end
  2957.             --
  2958.             if Input.UserInputType == Enum.UserInputType.MouseButton1 and window.isVisible and keybind_outline.Visible then
  2959.                 if utility:MouseOverDrawing({section.section_frame.Position.X, section.section_frame.Position.Y + keybind.axis, section.section_frame.Position.X + section.section_frame.Size.X, section.section_frame.Position.Y + keybind.axis + 17}) and not window:IsOverContent() and not keybind.selecting then
  2960.                     keybind.selecting = true
  2961.                     keybind_frame.Color = theme.dark_contrast
  2962.                 end
  2963.                 if keybind.open and keybind.modemenu.frame then
  2964.                     if utility:MouseOverDrawing({keybind.modemenu.frame.Position.X, keybind.modemenu.frame.Position.Y, keybind.modemenu.frame.Position.X + keybind.modemenu.frame.Size.X, keybind.modemenu.frame.Position.Y + keybind.modemenu.frame.Size.Y}) then
  2965.                         local changed = false
  2966.                         --
  2967.                         for i,v in pairs(keybind.modemenu.buttons) do
  2968.                             if utility:MouseOverDrawing({keybind.modemenu.frame.Position.X, keybind.modemenu.frame.Position.Y + (15 * (i - 1)), keybind.modemenu.frame.Position.X + keybind.modemenu.frame.Size.X, keybind.modemenu.frame.Position.Y + (15 * (i - 1)) + 15}) then
  2969.                                 keybind.mode = v.Text
  2970.                                 changed = true
  2971.                             end
  2972.                         end
  2973.                         --
  2974.                         if changed then keybind:Reset() end
  2975.                     else
  2976.                         keybind.open = not keybind.open
  2977.                         --
  2978.                         for i,v in pairs(keybind.modemenu.drawings) do
  2979.                             utility:Remove(v)
  2980.                         end
  2981.                         --
  2982.                         keybind.modemenu.drawings = {}
  2983.                         keybind.modemenu.buttons = {}
  2984.                         keybind.modemenu.frame = nil
  2985.                         --
  2986.                         window.currentContent.frame = nil
  2987.                         window.currentContent.keybind = nil
  2988.                     end
  2989.                 end
  2990.             end
  2991.             --
  2992.             if Input.UserInputType == Enum.UserInputType.MouseButton2 and window.isVisible and keybind_outline.Visible then
  2993.                 if utility:MouseOverDrawing({section.section_frame.Position.X, section.section_frame.Position.Y + keybind.axis, section.section_frame.Position.X + section.section_frame.Size.X, section.section_frame.Position.Y + keybind.axis + 17}) and not window:IsOverContent() and not keybind.selecting then
  2994.                     window:CloseContent()
  2995.                     keybind.open = not keybind.open
  2996.                     --
  2997.                     local modemenu = utility:Create("Frame", {Vector2.new(keybind_outline.Size.X + 2,0), keybind_outline}, {
  2998.                         Size = utility:Size(0, 64, 0, 49),
  2999.                         Position = utility:Position(1, 2, 0, 0, keybind_outline),
  3000.                         Color = theme.outline,
  3001.                         Visible = page.open
  3002.                     }, keybind.modemenu.drawings);keybind.modemenu.frame = modemenu
  3003.                     --
  3004.                     local modemenu_inline = utility:Create("Frame", {Vector2.new(1,1), modemenu}, {
  3005.                         Size = utility:Size(1, -2, 1, -2, modemenu),
  3006.                         Position = utility:Position(0, 1, 0, 1, modemenu),
  3007.                         Color = theme.inline,
  3008.                         Visible = page.open
  3009.                     }, keybind.modemenu.drawings)
  3010.                     --
  3011.                     local modemenu_frame = utility:Create("Frame", {Vector2.new(1,1), modemenu_inline}, {
  3012.                         Size = utility:Size(1, -2, 1, -2, modemenu_inline),
  3013.                         Position = utility:Position(0, 1, 0, 1, modemenu_inline),
  3014.                         Color = theme.light_contrast,
  3015.                         Visible = page.open
  3016.                     }, keybind.modemenu.drawings)
  3017.                     --
  3018.                     local keybind__gradient = utility:Create("Image", {Vector2.new(0,0), modemenu_frame}, {
  3019.                         Size = utility:Size(1, 0, 1, 0, modemenu_frame),
  3020.                         Position = utility:Position(0, 0, 0 , 0, modemenu_frame),
  3021.                         Transparency = 0.5,
  3022.                         Visible = page.open
  3023.                     }, keybind.modemenu.drawings)
  3024.                     --
  3025.                     utility:LoadImage(keybind__gradient, "gradient", "https://i.imgur.com/5hmlrjX.png")
  3026.                     --
  3027.                     for i,v in pairs({"Always", "Toggle", "Hold"}) do
  3028.                         local button_title = utility:Create("TextLabel", {Vector2.new(modemenu_frame.Size.X/2,15 * (i-1)), modemenu_frame}, {
  3029.                             Text = v,
  3030.                             Size = theme.textsize,
  3031.                             Font = theme.font,
  3032.                             Color = v == keybind.mode and theme.accent or theme.textcolor,
  3033.                             Center = true,
  3034.                             OutlineColor = theme.textborder,
  3035.                             Position = utility:Position(0.5, 0, 0, 15 * (i-1), modemenu_frame),
  3036.                             Visible = page.open
  3037.                         }, keybind.modemenu.drawings);keybind.modemenu.buttons[#keybind.modemenu.buttons + 1] = button_title
  3038.                     end
  3039.                     --
  3040.                     window.currentContent.frame = modemenu
  3041.                     window.currentContent.keybind = keybind
  3042.                 end
  3043.             end
  3044.         end
  3045.         --
  3046.         library.ended[#library.ended + 1] = function(Input)
  3047.             if keybind.active and keybind.mode == "Hold" then
  3048.                 if keybind.current[1] and keybind.current[2] then
  3049.                     if Input.KeyCode == Enum[keybind.current[1]][keybind.current[2]] or Input.UserInputType == Enum[keybind.current[1]][keybind.current[2]] then
  3050.                         keybind.active = false
  3051.                         window.keybindslist:Remove(keybindname or name)
  3052.                         callback(Enum[keybind.current[1]][keybind.current[2]], keybind.active)
  3053.                     end
  3054.                 end
  3055.             end
  3056.         end
  3057.         --
  3058.         if pointer and tostring(pointer) ~= "" and tostring(pointer) ~= " " and not library.pointers[tostring(pointer)] then
  3059.             library.pointers[tostring(pointer)] = keybind
  3060.         end
  3061.         --
  3062.         section.currentAxis = section.currentAxis + 17 + 4
  3063.         section:Update()
  3064.         --
  3065.         return keybind
  3066.     end
  3067.     --
  3068.     function sections:Colorpicker(info)
  3069.         local info = info or {}
  3070.         local name = info.name or info.Name or info.title or info.Title or "New Colorpicker"
  3071.         local cpinfo = info.info or info.Info or name
  3072.         local def = info.def or info.Def or info.default or info.Default or Color3.fromRGB(255, 0, 0)
  3073.         local transp = info.transparency or info.Transparency or info.transp or info.Transp or info.alpha or info.Alpha or nil
  3074.         local pointer = info.pointer or info.Pointer or info.flag or info.Flag or nil
  3075.         local callback = info.callback or info.callBack or info.Callback or info.CallBack or function()end
  3076.         --
  3077.         local window = self.window
  3078.         local page = self.page
  3079.         local section = self
  3080.         --
  3081.         local hh, ss, vv = def:ToHSV()
  3082.         local colorpicker = {axis = section.currentAxis, secondColorpicker = false, current = {hh, ss, vv , (transp or 0)}, holding = {picker = false, huepicker = false, transparency = false}, holder = {inline = nil, picker = nil, picker_cursor = nil, huepicker = nil, huepicker_cursor = {}, transparency = nil, transparencybg = nil, transparency_cursor = {}, drawings = {}}}
  3083.         --
  3084.         local colorpicker_outline = utility:Create("Frame", {Vector2.new(section.section_frame.Size.X-(30+4),colorpicker.axis), section.section_frame}, {
  3085.             Size = utility:Size(0, 30, 0, 15),
  3086.             Position = utility:Position(1, -(30+4), 0, colorpicker.axis, section.section_frame),
  3087.             Color = theme.outline,
  3088.             Visible = page.open
  3089.         }, section.visibleContent)
  3090.         --
  3091.         local colorpicker_inline = utility:Create("Frame", {Vector2.new(1,1), colorpicker_outline}, {
  3092.             Size = utility:Size(1, -2, 1, -2, colorpicker_outline),
  3093.             Position = utility:Position(0, 1, 0, 1, colorpicker_outline),
  3094.             Color = theme.inline,
  3095.             Visible = page.open
  3096.         }, section.visibleContent)
  3097.         --
  3098.         local colorpicker__transparency
  3099.         if transp then
  3100.             colorpicker__transparency = utility:Create("Image", {Vector2.new(1,1), colorpicker_inline}, {
  3101.                 Size = utility:Size(1, -2, 1, -2, colorpicker_inline),
  3102.                 Position = utility:Position(0, 1, 0 , 1, colorpicker_inline),
  3103.                 Visible = page.open
  3104.             }, section.visibleContent)
  3105.         end
  3106.         --
  3107.         local colorpicker_frame = utility:Create("Frame", {Vector2.new(1,1), colorpicker_inline}, {
  3108.             Size = utility:Size(1, -2, 1, -2, colorpicker_inline),
  3109.             Position = utility:Position(0, 1, 0, 1, colorpicker_inline),
  3110.             Color = def,
  3111.             Transparency = transp and (1 - transp) or 1,
  3112.             Visible = page.open
  3113.         }, section.visibleContent)
  3114.         --
  3115.         local colorpicker__gradient = utility:Create("Image", {Vector2.new(0,0), colorpicker_frame}, {
  3116.             Size = utility:Size(1, 0, 1, 0, colorpicker_frame),
  3117.             Position = utility:Position(0, 0, 0 , 0, colorpicker_frame),
  3118.             Transparency = 0.5,
  3119.             Visible = page.open
  3120.         }, section.visibleContent)
  3121.         --
  3122.         local colorpicker_title = utility:Create("TextLabel", {Vector2.new(4,colorpicker.axis + (15/2) - (utility:GetTextBounds(name, theme.textsize, theme.font).Y/2)), section.section_frame}, {
  3123.             Text = name,
  3124.             Size = theme.textsize,
  3125.             Font = theme.font,
  3126.             Color = theme.textcolor,
  3127.             OutlineColor = theme.textborder,
  3128.             Position = utility:Position(0, 4, 0, colorpicker.axis + (15/2) - (utility:GetTextBounds(name, theme.textsize, theme.font).Y/2), section.section_frame),
  3129.             Visible = page.open
  3130.         }, section.visibleContent)
  3131.         --
  3132.         if transp then
  3133.             utility:LoadImage(colorpicker__transparency, "cptransp", "https://i.imgur.com/IIPee2A.png")
  3134.         end
  3135.         utility:LoadImage(colorpicker__gradient, "gradient", "https://i.imgur.com/5hmlrjX.png")
  3136.         --
  3137.         function colorpicker:Set(color, transp_val)
  3138.             if typeof(color) == "table" then
  3139.                 colorpicker.current = color
  3140.                 colorpicker_frame.Color = Color3.fromHSV(colorpicker.current[1], colorpicker.current[2], colorpicker.current[3])
  3141.                 colorpicker_frame.Transparency = 1 - colorpicker.current[4]
  3142.                 callback(Color3.fromHSV(colorpicker.current[1], colorpicker.current[2], colorpicker.current[3]), colorpicker.current[4])
  3143.             elseif typeof(color) == "color3" then
  3144.                 local h, s, v = color:ToHSV()
  3145.                 colorpicker.current = {h, s, v, (transp_val or 0)}
  3146.                 colorpicker_frame.Color = Color3.fromHSV(colorpicker.current[1], colorpicker.current[2], colorpicker.current[3])
  3147.                 colorpicker_frame.Transparency = 1 - colorpicker.current[4]
  3148.                 callback(Color3.fromHSV(colorpicker.current[1], colorpicker.current[2], colorpicker.current[3]), colorpicker.current[4])
  3149.             end
  3150.         end
  3151.         --
  3152.         function colorpicker:Refresh()
  3153.             local mouseLocation = utility:MouseLocation()
  3154.             if colorpicker.open and colorpicker.holder.picker and colorpicker.holding.picker then
  3155.                 colorpicker.current[2] = math.clamp(mouseLocation.X - colorpicker.holder.picker.Position.X, 0, colorpicker.holder.picker.Size.X) / colorpicker.holder.picker.Size.X
  3156.                 --
  3157.                 colorpicker.current[3] = 1-(math.clamp(mouseLocation.Y - colorpicker.holder.picker.Position.Y, 0, colorpicker.holder.picker.Size.Y) / colorpicker.holder.picker.Size.Y)
  3158.                 --
  3159.                 colorpicker.holder.picker_cursor.Position = utility:Position(colorpicker.current[2], -3, 1-colorpicker.current[3] , -3, colorpicker.holder.picker)
  3160.                 --
  3161.                 utility:UpdateOffset(colorpicker.holder.picker_cursor, {Vector2.new((colorpicker.holder.picker.Size.X*colorpicker.current[2])-3,(colorpicker.holder.picker.Size.Y*(1-colorpicker.current[3]))-3), colorpicker.holder.picker})
  3162.                 --
  3163.                 if colorpicker.holder.transparencybg then
  3164.                     colorpicker.holder.transparencybg.Color = Color3.fromHSV(colorpicker.current[1], colorpicker.current[2], colorpicker.current[3])
  3165.                 end
  3166.             elseif colorpicker.open and colorpicker.holder.huepicker and colorpicker.holding.huepicker then
  3167.                 colorpicker.current[1] = (math.clamp(mouseLocation.Y - colorpicker.holder.huepicker.Position.Y, 0, colorpicker.holder.huepicker.Size.Y) / colorpicker.holder.huepicker.Size.Y)
  3168.                 --
  3169.                 colorpicker.holder.huepicker_cursor[1].Position = utility:Position(0, -3, colorpicker.current[1], -3, colorpicker.holder.huepicker)
  3170.                 colorpicker.holder.huepicker_cursor[2].Position = utility:Position(0, 1, 0, 1, colorpicker.holder.huepicker_cursor[1])
  3171.                 colorpicker.holder.huepicker_cursor[3].Position = utility:Position(0, 1, 0, 1, colorpicker.holder.huepicker_cursor[2])
  3172.                 colorpicker.holder.huepicker_cursor[3].Color = Color3.fromHSV(colorpicker.current[1], 1, 1)
  3173.                 --
  3174.                 utility:UpdateOffset(colorpicker.holder.huepicker_cursor[1], {Vector2.new(-3,(colorpicker.holder.huepicker.Size.Y*colorpicker.current[1])-3), colorpicker.holder.huepicker})
  3175.                 --
  3176.                 colorpicker.holder.background.Color = Color3.fromHSV(colorpicker.current[1], 1, 1)
  3177.                 --
  3178.                 if colorpicker.holder.transparency_cursor and colorpicker.holder.transparency_cursor[3] then
  3179.                     colorpicker.holder.transparency_cursor[3].Color = Color3.fromHSV(0, 0, 1 - colorpicker.current[4])
  3180.                 end
  3181.                 --
  3182.                 if colorpicker.holder.transparencybg then
  3183.                     colorpicker.holder.transparencybg.Color = Color3.fromHSV(colorpicker.current[1], colorpicker.current[2], colorpicker.current[3])
  3184.                 end
  3185.             elseif colorpicker.open and colorpicker.holder.transparency and colorpicker.holding.transparency then
  3186.                 colorpicker.current[4] = 1 - (math.clamp(mouseLocation.X - colorpicker.holder.transparency.Position.X, 0, colorpicker.holder.transparency.Size.X) / colorpicker.holder.transparency.Size.X)
  3187.                 --
  3188.                 colorpicker.holder.transparency_cursor[1].Position = utility:Position(1-colorpicker.current[4], -3, 0, -3, colorpicker.holder.transparency)
  3189.                 colorpicker.holder.transparency_cursor[2].Position = utility:Position(0, 1, 0, 1, colorpicker.holder.transparency_cursor[1])
  3190.                 colorpicker.holder.transparency_cursor[3].Position = utility:Position(0, 1, 0, 1, colorpicker.holder.transparency_cursor[2])
  3191.                 colorpicker.holder.transparency_cursor[3].Color = Color3.fromHSV(0, 0, 1 - colorpicker.current[4])
  3192.                 colorpicker_frame.Transparency = (1 - colorpicker.current[4])
  3193.                 --
  3194.                 utility:UpdateTransparency(colorpicker_frame, (1 - colorpicker.current[4]))
  3195.                 utility:UpdateOffset(colorpicker.holder.transparency_cursor[1], {Vector2.new((colorpicker.holder.transparency.Size.X*(1-colorpicker.current[4]))-3,-3), colorpicker.holder.transparency})
  3196.                 --
  3197.                 colorpicker.holder.background.Color = Color3.fromHSV(colorpicker.current[1], 1, 1)
  3198.             end
  3199.             --
  3200.             colorpicker:Set(colorpicker.current)
  3201.         end
  3202.         --
  3203.         function colorpicker:Get()
  3204.             return Color3.fromHSV(colorpicker.current[1], colorpicker.current[2], colorpicker.current[3])
  3205.         end
  3206.         --
  3207.         library.began[#library.began + 1] = function(Input)
  3208.             if Input.UserInputType == Enum.UserInputType.MouseButton1 and window.isVisible and colorpicker_outline.Visible then
  3209.                 if colorpicker.open and colorpicker.holder.inline and utility:MouseOverDrawing({colorpicker.holder.inline.Position.X, colorpicker.holder.inline.Position.Y, colorpicker.holder.inline.Position.X + colorpicker.holder.inline.Size.X, colorpicker.holder.inline.Position.Y + colorpicker.holder.inline.Size.Y}) then
  3210.                     if colorpicker.holder.picker and utility:MouseOverDrawing({colorpicker.holder.picker.Position.X - 2, colorpicker.holder.picker.Position.Y - 2, colorpicker.holder.picker.Position.X - 2 + colorpicker.holder.picker.Size.X + 4, colorpicker.holder.picker.Position.Y - 2 + colorpicker.holder.picker.Size.Y + 4}) then
  3211.                         colorpicker.holding.picker = true
  3212.                         colorpicker:Refresh()
  3213.                     elseif colorpicker.holder.huepicker and utility:MouseOverDrawing({colorpicker.holder.huepicker.Position.X - 2, colorpicker.holder.huepicker.Position.Y - 2, colorpicker.holder.huepicker.Position.X - 2 + colorpicker.holder.huepicker.Size.X + 4, colorpicker.holder.huepicker.Position.Y - 2 + colorpicker.holder.huepicker.Size.Y + 4}) then
  3214.                         colorpicker.holding.huepicker = true
  3215.                         colorpicker:Refresh()
  3216.                     elseif colorpicker.holder.transparency and utility:MouseOverDrawing({colorpicker.holder.transparency.Position.X - 2, colorpicker.holder.transparency.Position.Y - 2, colorpicker.holder.transparency.Position.X - 2 + colorpicker.holder.transparency.Size.X + 4, colorpicker.holder.transparency.Position.Y - 2 + colorpicker.holder.transparency.Size.Y + 4}) then
  3217.                         colorpicker.holding.transparency = true
  3218.                         colorpicker:Refresh()
  3219.                     end
  3220.                 elseif utility:MouseOverDrawing({section.section_frame.Position.X, section.section_frame.Position.Y + colorpicker.axis, section.section_frame.Position.X + section.section_frame.Size.X - (colorpicker.secondColorpicker and (30+4) or 0), section.section_frame.Position.Y + colorpicker.axis + 15}) and not window:IsOverContent() then
  3221.                     if not colorpicker.open then
  3222.                         window:CloseContent()
  3223.                         colorpicker.open = not colorpicker.open
  3224.                         --
  3225.                         local colorpicker_open_outline = utility:Create("Frame", {Vector2.new(4,colorpicker.axis + 19), section.section_frame}, {
  3226.                             Size = utility:Size(1, -8, 0, transp and 219 or 200, section.section_frame),
  3227.                             Position = utility:Position(0, 4, 0, colorpicker.axis + 19, section.section_frame),
  3228.                             Color = theme.outline
  3229.                         }, colorpicker.holder.drawings);colorpicker.holder.inline = colorpicker_open_outline
  3230.                         --
  3231.                         local colorpicker_open_inline = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_outline}, {
  3232.                             Size = utility:Size(1, -2, 1, -2, colorpicker_open_outline),
  3233.                             Position = utility:Position(0, 1, 0, 1, colorpicker_open_outline),
  3234.                             Color = theme.inline
  3235.                         }, colorpicker.holder.drawings)
  3236.                         --
  3237.                         local colorpicker_open_frame = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_inline}, {
  3238.                             Size = utility:Size(1, -2, 1, -2, colorpicker_open_inline),
  3239.                             Position = utility:Position(0, 1, 0, 1, colorpicker_open_inline),
  3240.                             Color = theme.dark_contrast
  3241.                         }, colorpicker.holder.drawings)
  3242.                         --
  3243.                         local colorpicker_open_accent = utility:Create("Frame", {Vector2.new(0,0), colorpicker_open_frame}, {
  3244.                             Size = utility:Size(1, 0, 0, 2, colorpicker_open_frame),
  3245.                             Position = utility:Position(0, 0, 0, 0, colorpicker_open_frame),
  3246.                             Color = theme.accent
  3247.                         }, colorpicker.holder.drawings)
  3248.                         --
  3249.                         local colorpicker_title = utility:Create("TextLabel", {Vector2.new(4,2), colorpicker_open_frame}, {
  3250.                             Text = cpinfo,
  3251.                             Size = theme.textsize,
  3252.                             Font = theme.font,
  3253.                             Color = theme.textcolor,
  3254.                             OutlineColor = theme.textborder,
  3255.                             Position = utility:Position(0, 4, 0, 2, colorpicker_open_frame),
  3256.                         }, colorpicker.holder.drawings)
  3257.                         --
  3258.                         local colorpicker_open_picker_outline = utility:Create("Frame", {Vector2.new(4,17), colorpicker_open_frame}, {
  3259.                             Size = utility:Size(1, -27, 1, transp and -40 or -21, colorpicker_open_frame),
  3260.                             Position = utility:Position(0, 4, 0, 17, colorpicker_open_frame),
  3261.                             Color = theme.outline
  3262.                         }, colorpicker.holder.drawings)
  3263.                         --
  3264.                         local colorpicker_open_picker_inline = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_picker_outline}, {
  3265.                             Size = utility:Size(1, -2, 1, -2, colorpicker_open_picker_outline),
  3266.                             Position = utility:Position(0, 1, 0, 1, colorpicker_open_picker_outline),
  3267.                             Color = theme.inline
  3268.                         }, colorpicker.holder.drawings)
  3269.                         --
  3270.                         local colorpicker_open_picker_bg = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_picker_inline}, {
  3271.                             Size = utility:Size(1, -2, 1, -2, colorpicker_open_picker_inline),
  3272.                             Position = utility:Position(0, 1, 0, 1, colorpicker_open_picker_inline),
  3273.                             Color = Color3.fromHSV(colorpicker.current[1],1,1)
  3274.                         }, colorpicker.holder.drawings);colorpicker.holder.background = colorpicker_open_picker_bg
  3275.                         --
  3276.                         local colorpicker_open_picker_image = utility:Create("Image", {Vector2.new(0,0), colorpicker_open_picker_bg}, {
  3277.                             Size = utility:Size(1, 0, 1, 0, colorpicker_open_picker_bg),
  3278.                             Position = utility:Position(0, 0, 0 , 0, colorpicker_open_picker_bg),
  3279.                         }, colorpicker.holder.drawings);colorpicker.holder.picker = colorpicker_open_picker_image
  3280.                         --
  3281.                         local colorpicker_open_picker_cursor = utility:Create("Image", {Vector2.new((colorpicker_open_picker_image.Size.X*colorpicker.current[2])-3,(colorpicker_open_picker_image.Size.Y*(1-colorpicker.current[3]))-3), colorpicker_open_picker_image}, {
  3282.                             Size = utility:Size(0, 6, 0, 6, colorpicker_open_picker_image),
  3283.                             Position = utility:Position(colorpicker.current[2], -3, 1-colorpicker.current[3] , -3, colorpicker_open_picker_image),
  3284.                         }, colorpicker.holder.drawings);colorpicker.holder.picker_cursor = colorpicker_open_picker_cursor
  3285.                         --
  3286.                         local colorpicker_open_huepicker_outline = utility:Create("Frame", {Vector2.new(colorpicker_open_frame.Size.X-19,17), colorpicker_open_frame}, {
  3287.                             Size = utility:Size(0, 15, 1, transp and -40 or -21, colorpicker_open_frame),
  3288.                             Position = utility:Position(1, -19, 0, 17, colorpicker_open_frame),
  3289.                             Color = theme.outline
  3290.                         }, colorpicker.holder.drawings)
  3291.                         --
  3292.                         local colorpicker_open_huepicker_inline = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_huepicker_outline}, {
  3293.                             Size = utility:Size(1, -2, 1, -2, colorpicker_open_huepicker_outline),
  3294.                             Position = utility:Position(0, 1, 0, 1, colorpicker_open_huepicker_outline),
  3295.                             Color = theme.inline
  3296.                         }, colorpicker.holder.drawings)
  3297.                         --
  3298.                         local colorpicker_open_huepicker_image = utility:Create("Image", {Vector2.new(1,1), colorpicker_open_huepicker_inline}, {
  3299.                             Size = utility:Size(1, -2, 1, -2, colorpicker_open_huepicker_inline),
  3300.                             Position = utility:Position(0, 1, 0 , 1, colorpicker_open_huepicker_inline),
  3301.                         }, colorpicker.holder.drawings);colorpicker.holder.huepicker = colorpicker_open_huepicker_image
  3302.                         --
  3303.                         local colorpicker_open_huepicker_cursor_outline = utility:Create("Frame", {Vector2.new(-3,(colorpicker_open_huepicker_image.Size.Y*colorpicker.current[1])-3), colorpicker_open_huepicker_image}, {
  3304.                             Size = utility:Size(1, 6, 0, 6, colorpicker_open_huepicker_image),
  3305.                             Position = utility:Position(0, -3, colorpicker.current[1], -3, colorpicker_open_huepicker_image),
  3306.                             Color = theme.outline
  3307.                         }, colorpicker.holder.drawings);colorpicker.holder.huepicker_cursor[1] = colorpicker_open_huepicker_cursor_outline
  3308.                         --
  3309.                         local colorpicker_open_huepicker_cursor_inline = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_huepicker_cursor_outline}, {
  3310.                             Size = utility:Size(1, -2, 1, -2, colorpicker_open_huepicker_cursor_outline),
  3311.                             Position = utility:Position(0, 1, 0, 1, colorpicker_open_huepicker_cursor_outline),
  3312.                             Color = theme.textcolor
  3313.                         }, colorpicker.holder.drawings);colorpicker.holder.huepicker_cursor[2] = colorpicker_open_huepicker_cursor_inline
  3314.                         --
  3315.                         local colorpicker_open_huepicker_cursor_color = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_huepicker_cursor_inline}, {
  3316.                             Size = utility:Size(1, -2, 1, -2, colorpicker_open_huepicker_cursor_inline),
  3317.                             Position = utility:Position(0, 1, 0, 1, colorpicker_open_huepicker_cursor_inline),
  3318.                             Color = Color3.fromHSV(colorpicker.current[1], 1, 1)
  3319.                         }, colorpicker.holder.drawings);colorpicker.holder.huepicker_cursor[3] = colorpicker_open_huepicker_cursor_color
  3320.                         --
  3321.                         if transp then
  3322.                             local colorpicker_open_transparency_outline = utility:Create("Frame", {Vector2.new(4,colorpicker_open_frame.Size.X-19), colorpicker_open_frame}, {
  3323.                                 Size = utility:Size(1, -27, 0, 15, colorpicker_open_frame),
  3324.                                 Position = utility:Position(0, 4, 1, -19, colorpicker_open_frame),
  3325.                                 Color = theme.outline
  3326.                             }, colorpicker.holder.drawings)
  3327.                             --
  3328.                             local colorpicker_open_transparency_inline = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_transparency_outline}, {
  3329.                                 Size = utility:Size(1, -2, 1, -2, colorpicker_open_transparency_outline),
  3330.                                 Position = utility:Position(0, 1, 0, 1, colorpicker_open_transparency_outline),
  3331.                                 Color = theme.inline
  3332.                             }, colorpicker.holder.drawings)
  3333.                             --
  3334.                             local colorpicker_open_transparency_bg = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_transparency_inline}, {
  3335.                                 Size = utility:Size(1, -2, 1, -2, colorpicker_open_transparency_inline),
  3336.                                 Position = utility:Position(0, 1, 0, 1, colorpicker_open_transparency_inline),
  3337.                                 Color = Color3.fromHSV(colorpicker.current[1], colorpicker.current[2], colorpicker.current[3])
  3338.                             }, colorpicker.holder.drawings);colorpicker.holder.transparencybg = colorpicker_open_transparency_bg
  3339.                             --
  3340.                             local colorpicker_open_transparency_image = utility:Create("Image", {Vector2.new(1,1), colorpicker_open_transparency_inline}, {
  3341.                                 Size = utility:Size(1, -2, 1, -2, colorpicker_open_transparency_inline),
  3342.                                 Position = utility:Position(0, 1, 0 , 1, colorpicker_open_transparency_inline),
  3343.                             }, colorpicker.holder.drawings);colorpicker.holder.transparency = colorpicker_open_transparency_image
  3344.                             --
  3345.                             local colorpicker_open_transparency_cursor_outline = utility:Create("Frame", {Vector2.new((colorpicker_open_transparency_image.Size.X*(1-colorpicker.current[4]))-3,-3), colorpicker_open_transparency_image}, {
  3346.                                 Size = utility:Size(0, 6, 1, 6, colorpicker_open_transparency_image),
  3347.                                 Position = utility:Position(1-colorpicker.current[4], -3, 0, -3, colorpicker_open_transparency_image),
  3348.                                 Color = theme.outline
  3349.                             }, colorpicker.holder.drawings);colorpicker.holder.transparency_cursor[1] = colorpicker_open_transparency_cursor_outline
  3350.                             --
  3351.                             local colorpicker_open_transparency_cursor_inline = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_transparency_cursor_outline}, {
  3352.                                 Size = utility:Size(1, -2, 1, -2, colorpicker_open_transparency_cursor_outline),
  3353.                                 Position = utility:Position(0, 1, 0, 1, colorpicker_open_transparency_cursor_outline),
  3354.                                 Color = theme.textcolor
  3355.                             }, colorpicker.holder.drawings);colorpicker.holder.transparency_cursor[2] = colorpicker_open_transparency_cursor_inline
  3356.                             --
  3357.                             local colorpicker_open_transparency_cursor_color = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_transparency_cursor_inline}, {
  3358.                                 Size = utility:Size(1, -2, 1, -2, colorpicker_open_transparency_cursor_inline),
  3359.                                 Position = utility:Position(0, 1, 0, 1, colorpicker_open_transparency_cursor_inline),
  3360.                                 Color = Color3.fromHSV(0, 0, 1 - colorpicker.current[4]),
  3361.                             }, colorpicker.holder.drawings);colorpicker.holder.transparency_cursor[3] = colorpicker_open_transparency_cursor_color
  3362.                             --
  3363.                             utility:LoadImage(colorpicker_open_transparency_image, "transp", "https://i.imgur.com/ncssKbH.png")
  3364.                             --utility:LoadImage(colorpicker_open_transparency_image, "transp", "https://i.imgur.com/VcMAYjL.png")
  3365.                         end
  3366.                         --
  3367.                         utility:LoadImage(colorpicker_open_picker_image, "valsat", "https://i.imgur.com/wpDRqVH.png")
  3368.                         utility:LoadImage(colorpicker_open_picker_cursor, "valsat_cursor", "https://raw.githubusercontent.com/mvonwalk/splix-assets/main/Images-cursor.png")
  3369.                         utility:LoadImage(colorpicker_open_huepicker_image, "hue", "https://i.imgur.com/iEOsHFv.png")
  3370.                         --
  3371.                         window.currentContent.frame = colorpicker_open_inline
  3372.                         window.currentContent.colorpicker = colorpicker
  3373.                     else
  3374.                         colorpicker.open = not colorpicker.open
  3375.                         --
  3376.                         for i,v in pairs(colorpicker.holder.drawings) do
  3377.                             utility:Remove(v)
  3378.                         end
  3379.                         --
  3380.                         colorpicker.holder.drawings = {}
  3381.                         colorpicker.holder.inline = nil
  3382.                         --
  3383.                         window.currentContent.frame = nil
  3384.                         window.currentContent.colorpicker = nil
  3385.                     end
  3386.                 else
  3387.                     if colorpicker.open then
  3388.                         colorpicker.open = not colorpicker.open
  3389.                         --
  3390.                         for i,v in pairs(colorpicker.holder.drawings) do
  3391.                             utility:Remove(v)
  3392.                         end
  3393.                         --
  3394.                         colorpicker.holder.drawings = {}
  3395.                         colorpicker.holder.inline = nil
  3396.                         --
  3397.                         window.currentContent.frame = nil
  3398.                         window.currentContent.colorpicker = nil
  3399.                     end
  3400.                 end
  3401.             elseif Input.UserInputType == Enum.UserInputType.MouseButton1 and colorpicker.open then
  3402.                 colorpicker.open = not colorpicker.open
  3403.                 --
  3404.                 for i,v in pairs(colorpicker.holder.drawings) do
  3405.                     utility:Remove(v)
  3406.                 end
  3407.                 --
  3408.                 colorpicker.holder.drawings = {}
  3409.                 colorpicker.holder.inline = nil
  3410.                 --
  3411.                 window.currentContent.frame = nil
  3412.                 window.currentContent.colorpicker = nil
  3413.             end
  3414.         end
  3415.         --
  3416.         library.ended[#library.ended + 1] = function(Input)
  3417.             if Input.UserInputType == Enum.UserInputType.MouseButton1 then
  3418.                 if colorpicker.holding.picker then
  3419.                     colorpicker.holding.picker = not colorpicker.holding.picker
  3420.                 end
  3421.                 if colorpicker.holding.huepicker then
  3422.                     colorpicker.holding.huepicker = not colorpicker.holding.huepicker
  3423.                 end
  3424.                 if colorpicker.holding.transparency then
  3425.                     colorpicker.holding.transparency = not colorpicker.holding.transparency
  3426.                 end
  3427.             end
  3428.         end
  3429.         --
  3430.         library.changed[#library.changed + 1] = function()
  3431.             if colorpicker.open and colorpicker.holding.picker or colorpicker.holding.huepicker or colorpicker.holding.transparency then
  3432.                 if window.isVisible then
  3433.                     colorpicker:Refresh()
  3434.                 else
  3435.                     if colorpicker.holding.picker then
  3436.                         colorpicker.holding.picker = not colorpicker.holding.picker
  3437.                     end
  3438.                     if colorpicker.holding.huepicker then
  3439.                         colorpicker.holding.huepicker = not colorpicker.holding.huepicker
  3440.                     end
  3441.                     if colorpicker.holding.transparency then
  3442.                         colorpicker.holding.transparency = not colorpicker.holding.transparency
  3443.                     end
  3444.                 end
  3445.             end
  3446.         end
  3447.         --
  3448.         if pointer and tostring(pointer) ~= "" and tostring(pointer) ~= " " and not library.pointers[tostring(pointer)] then
  3449.             library.pointers[tostring(pointer)] = colorpicker
  3450.         end
  3451.         --
  3452.         section.currentAxis = section.currentAxis + 15 + 4
  3453.         section:Update()
  3454.         --
  3455.         function colorpicker:Colorpicker(info)
  3456.             local info = info or {}
  3457.             local cpinfo = info.info or info.Info or name
  3458.             local def = info.def or info.Def or info.default or info.Default or Color3.fromRGB(255, 0, 0)
  3459.             local transp = info.transparency or info.Transparency or info.transp or info.Transp or info.alpha or info.Alpha or nil
  3460.             local pointer = info.pointer or info.Pointer or info.flag or info.Flag or nil
  3461.             local callback = info.callback or info.callBack or info.Callback or info.CallBack or function()end
  3462.             --
  3463.             colorpicker.secondColorpicker = true
  3464.             --
  3465.             local hh, ss, vv = def:ToHSV()
  3466.             local colorpicker = {axis = colorpicker.axis, current = {hh, ss, vv , (transp or 0)}, holding = {picker = false, huepicker = false, transparency = false}, holder = {inline = nil, picker = nil, picker_cursor = nil, huepicker = nil, huepicker_cursor = {}, transparency = nil, transparencybg = nil, transparency_cursor = {}, drawings = {}}}
  3467.             --
  3468.             colorpicker_outline.Position = utility:Position(1, -(60+8), 0, colorpicker.axis, section.section_frame)
  3469.             utility:UpdateOffset(colorpicker_outline, {Vector2.new(section.section_frame.Size.X-(60+8),colorpicker.axis), section.section_frame})
  3470.             --
  3471.             local colorpicker_outline = utility:Create("Frame", {Vector2.new(section.section_frame.Size.X-(30+4),colorpicker.axis), section.section_frame}, {
  3472.                 Size = utility:Size(0, 30, 0, 15),
  3473.                 Position = utility:Position(1, -(30+4), 0, colorpicker.axis, section.section_frame),
  3474.                 Color = theme.outline,
  3475.                 Visible = page.open
  3476.             }, section.visibleContent)
  3477.             --
  3478.             local colorpicker_inline = utility:Create("Frame", {Vector2.new(1,1), colorpicker_outline}, {
  3479.                 Size = utility:Size(1, -2, 1, -2, colorpicker_outline),
  3480.                 Position = utility:Position(0, 1, 0, 1, colorpicker_outline),
  3481.                 Color = theme.inline,
  3482.                 Visible = page.open
  3483.             }, section.visibleContent)
  3484.             --
  3485.             local colorpicker__transparency
  3486.             if transp then
  3487.                 colorpicker__transparency = utility:Create("Image", {Vector2.new(1,1), colorpicker_inline}, {
  3488.                     Size = utility:Size(1, -2, 1, -2, colorpicker_inline),
  3489.                     Position = utility:Position(0, 1, 0 , 1, colorpicker_inline),
  3490.                     Visible = page.open
  3491.                 }, section.visibleContent)
  3492.             end
  3493.             --
  3494.             local colorpicker_frame = utility:Create("Frame", {Vector2.new(1,1), colorpicker_inline}, {
  3495.                 Size = utility:Size(1, -2, 1, -2, colorpicker_inline),
  3496.                 Position = utility:Position(0, 1, 0, 1, colorpicker_inline),
  3497.                 Color = def,
  3498.                 Transparency = transp and (1 - transp) or 1,
  3499.                 Visible = page.open
  3500.             }, section.visibleContent)
  3501.             --
  3502.             local colorpicker__gradient = utility:Create("Image", {Vector2.new(0,0), colorpicker_frame}, {
  3503.                 Size = utility:Size(1, 0, 1, 0, colorpicker_frame),
  3504.                 Position = utility:Position(0, 0, 0 , 0, colorpicker_frame),
  3505.                 Transparency = 0.5,
  3506.                 Visible = page.open
  3507.             }, section.visibleContent)
  3508.             --
  3509.             if transp then
  3510.                 utility:LoadImage(colorpicker__transparency, "cptransp", "https://i.imgur.com/IIPee2A.png")
  3511.             end
  3512.             utility:LoadImage(colorpicker__gradient, "gradient", "https://i.imgur.com/5hmlrjX.png")
  3513.             --
  3514.             function colorpicker:Set(color, transp_val)
  3515.                 if typeof(color) == "table" then
  3516.                     colorpicker.current = color
  3517.                     colorpicker_frame.Color = Color3.fromHSV(colorpicker.current[1], colorpicker.current[2], colorpicker.current[3])
  3518.                     colorpicker_frame.Transparency = 1 - colorpicker.current[4]
  3519.                     callback(Color3.fromHSV(colorpicker.current[1], colorpicker.current[2], colorpicker.current[3]), colorpicker.current[4])
  3520.                 elseif typeof(color) == "color3" then
  3521.                     local h, s, v = color:ToHSV()
  3522.                     colorpicker.current = {h, s, v, (transp_val or 0)}
  3523.                     colorpicker_frame.Color = Color3.fromHSV(colorpicker.current[1], colorpicker.current[2], colorpicker.current[3])
  3524.                     colorpicker_frame.Transparency = 1 - colorpicker.current[4]
  3525.                     callback(Color3.fromHSV(colorpicker.current[1], colorpicker.current[2], colorpicker.current[3]), colorpicker.current[4])
  3526.                 end
  3527.             end
  3528.             --
  3529.             function colorpicker:Refresh()
  3530.                 local mouseLocation = utility:MouseLocation()
  3531.                 if colorpicker.open and colorpicker.holder.picker and colorpicker.holding.picker then
  3532.                     colorpicker.current[2] = math.clamp(mouseLocation.X - colorpicker.holder.picker.Position.X, 0, colorpicker.holder.picker.Size.X) / colorpicker.holder.picker.Size.X
  3533.                     --
  3534.                     colorpicker.current[3] = 1-(math.clamp(mouseLocation.Y - colorpicker.holder.picker.Position.Y, 0, colorpicker.holder.picker.Size.Y) / colorpicker.holder.picker.Size.Y)
  3535.                     --
  3536.                     colorpicker.holder.picker_cursor.Position = utility:Position(colorpicker.current[2], -3, 1-colorpicker.current[3] , -3, colorpicker.holder.picker)
  3537.                     --
  3538.                     utility:UpdateOffset(colorpicker.holder.picker_cursor, {Vector2.new((colorpicker.holder.picker.Size.X*colorpicker.current[2])-3,(colorpicker.holder.picker.Size.Y*(1-colorpicker.current[3]))-3), colorpicker.holder.picker})
  3539.                     --
  3540.                     if colorpicker.holder.transparencybg then
  3541.                         colorpicker.holder.transparencybg.Color = Color3.fromHSV(colorpicker.current[1], colorpicker.current[2], colorpicker.current[3])
  3542.                     end
  3543.                 elseif colorpicker.open and colorpicker.holder.huepicker and colorpicker.holding.huepicker then
  3544.                     colorpicker.current[1] = (math.clamp(mouseLocation.Y - colorpicker.holder.huepicker.Position.Y, 0, colorpicker.holder.huepicker.Size.Y) / colorpicker.holder.huepicker.Size.Y)
  3545.                     --
  3546.                     colorpicker.holder.huepicker_cursor[1].Position = utility:Position(0, -3, colorpicker.current[1], -3, colorpicker.holder.huepicker)
  3547.                     colorpicker.holder.huepicker_cursor[2].Position = utility:Position(0, 1, 0, 1, colorpicker.holder.huepicker_cursor[1])
  3548.                     colorpicker.holder.huepicker_cursor[3].Position = utility:Position(0, 1, 0, 1, colorpicker.holder.huepicker_cursor[2])
  3549.                     colorpicker.holder.huepicker_cursor[3].Color = Color3.fromHSV(colorpicker.current[1], 1, 1)
  3550.                     --
  3551.                     utility:UpdateOffset(colorpicker.holder.huepicker_cursor[1], {Vector2.new(-3,(colorpicker.holder.huepicker.Size.Y*colorpicker.current[1])-3), colorpicker.holder.huepicker})
  3552.                     --
  3553.                     colorpicker.holder.background.Color = Color3.fromHSV(colorpicker.current[1], 1, 1)
  3554.                     --
  3555.                     if colorpicker.holder.transparency_cursor and colorpicker.holder.transparency_cursor[3] then
  3556.                         colorpicker.holder.transparency_cursor[3].Color = Color3.fromHSV(0, 0, 1 - colorpicker.current[4])
  3557.                     end
  3558.                     --
  3559.                     if colorpicker.holder.transparencybg then
  3560.                         colorpicker.holder.transparencybg.Color = Color3.fromHSV(colorpicker.current[1], colorpicker.current[2], colorpicker.current[3])
  3561.                     end
  3562.                 elseif colorpicker.open and colorpicker.holder.transparency and colorpicker.holding.transparency then
  3563.                     colorpicker.current[4] = 1 - (math.clamp(mouseLocation.X - colorpicker.holder.transparency.Position.X, 0, colorpicker.holder.transparency.Size.X) / colorpicker.holder.transparency.Size.X)
  3564.                     --
  3565.                     colorpicker.holder.transparency_cursor[1].Position = utility:Position(1-colorpicker.current[4], -3, 0, -3, colorpicker.holder.transparency)
  3566.                     colorpicker.holder.transparency_cursor[2].Position = utility:Position(0, 1, 0, 1, colorpicker.holder.transparency_cursor[1])
  3567.                     colorpicker.holder.transparency_cursor[3].Position = utility:Position(0, 1, 0, 1, colorpicker.holder.transparency_cursor[2])
  3568.                     colorpicker.holder.transparency_cursor[3].Color = Color3.fromHSV(0, 0, 1 - colorpicker.current[4])
  3569.                     colorpicker_frame.Transparency = (1 - colorpicker.current[4])
  3570.                     --
  3571.                     utility:UpdateTransparency(colorpicker_frame, (1 - colorpicker.current[4]))
  3572.                     utility:UpdateOffset(colorpicker.holder.transparency_cursor[1], {Vector2.new((colorpicker.holder.transparency.Size.X*(1-colorpicker.current[4]))-3,-3), colorpicker.holder.transparency})
  3573.                     --
  3574.                     colorpicker.holder.background.Color = Color3.fromHSV(colorpicker.current[1], 1, 1)
  3575.                 end
  3576.                 --
  3577.                 colorpicker:Set(colorpicker.current)
  3578.             end
  3579.             --
  3580.             function colorpicker:Get()
  3581.                 return Color3.fromHSV(colorpicker.current[1], colorpicker.current[2], colorpicker.current[3])
  3582.             end
  3583.             --
  3584.             library.began[#library.began + 1] = function(Input)
  3585.                 if Input.UserInputType == Enum.UserInputType.MouseButton1 and window.isVisible and colorpicker_outline.Visible then
  3586.                     if colorpicker.open and colorpicker.holder.inline and utility:MouseOverDrawing({colorpicker.holder.inline.Position.X, colorpicker.holder.inline.Position.Y, colorpicker.holder.inline.Position.X + colorpicker.holder.inline.Size.X, colorpicker.holder.inline.Position.Y + colorpicker.holder.inline.Size.Y}) then
  3587.                         if colorpicker.holder.picker and utility:MouseOverDrawing({colorpicker.holder.picker.Position.X - 2, colorpicker.holder.picker.Position.Y - 2, colorpicker.holder.picker.Position.X - 2 + colorpicker.holder.picker.Size.X + 4, colorpicker.holder.picker.Position.Y - 2 + colorpicker.holder.picker.Size.Y + 4}) then
  3588.                             colorpicker.holding.picker = true
  3589.                             colorpicker:Refresh()
  3590.                         elseif colorpicker.holder.huepicker and utility:MouseOverDrawing({colorpicker.holder.huepicker.Position.X - 2, colorpicker.holder.huepicker.Position.Y - 2, colorpicker.holder.huepicker.Position.X - 2 + colorpicker.holder.huepicker.Size.X + 4, colorpicker.holder.huepicker.Position.Y - 2 + colorpicker.holder.huepicker.Size.Y + 4}) then
  3591.                             colorpicker.holding.huepicker = true
  3592.                             colorpicker:Refresh()
  3593.                         elseif colorpicker.holder.transparency and utility:MouseOverDrawing({colorpicker.holder.transparency.Position.X - 2, colorpicker.holder.transparency.Position.Y - 2, colorpicker.holder.transparency.Position.X - 2 + colorpicker.holder.transparency.Size.X + 4, colorpicker.holder.transparency.Position.Y - 2 + colorpicker.holder.transparency.Size.Y + 4}) then
  3594.                             colorpicker.holding.transparency = true
  3595.                             colorpicker:Refresh()
  3596.                         end
  3597.                     elseif utility:MouseOverDrawing({section.section_frame.Position.X + (section.section_frame.Size.X - (30 + 4 + 2)), section.section_frame.Position.Y + colorpicker.axis, section.section_frame.Position.X + section.section_frame.Size.X, section.section_frame.Position.Y + colorpicker.axis + 15}) and not window:IsOverContent() then
  3598.                         if not colorpicker.open then
  3599.                             window:CloseContent()
  3600.                             colorpicker.open = not colorpicker.open
  3601.                             --
  3602.                             local colorpicker_open_outline = utility:Create("Frame", {Vector2.new(4,colorpicker.axis + 19), section.section_frame}, {
  3603.                                 Size = utility:Size(1, -8, 0, transp and 219 or 200, section.section_frame),
  3604.                                 Position = utility:Position(0, 4, 0, colorpicker.axis + 19, section.section_frame),
  3605.                                 Color = theme.outline
  3606.                             }, colorpicker.holder.drawings);colorpicker.holder.inline = colorpicker_open_outline
  3607.                             --
  3608.                             local colorpicker_open_inline = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_outline}, {
  3609.                                 Size = utility:Size(1, -2, 1, -2, colorpicker_open_outline),
  3610.                                 Position = utility:Position(0, 1, 0, 1, colorpicker_open_outline),
  3611.                                 Color = theme.inline
  3612.                             }, colorpicker.holder.drawings)
  3613.                             --
  3614.                             local colorpicker_open_frame = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_inline}, {
  3615.                                 Size = utility:Size(1, -2, 1, -2, colorpicker_open_inline),
  3616.                                 Position = utility:Position(0, 1, 0, 1, colorpicker_open_inline),
  3617.                                 Color = theme.dark_contrast
  3618.                             }, colorpicker.holder.drawings)
  3619.                             --
  3620.                             local colorpicker_open_accent = utility:Create("Frame", {Vector2.new(0,0), colorpicker_open_frame}, {
  3621.                                 Size = utility:Size(1, 0, 0, 2, colorpicker_open_frame),
  3622.                                 Position = utility:Position(0, 0, 0, 0, colorpicker_open_frame),
  3623.                                 Color = theme.accent
  3624.                             }, colorpicker.holder.drawings)
  3625.                             --
  3626.                             local colorpicker_title = utility:Create("TextLabel", {Vector2.new(4,2), colorpicker_open_frame}, {
  3627.                                 Text = cpinfo,
  3628.                                 Size = theme.textsize,
  3629.                                 Font = theme.font,
  3630.                                 Color = theme.textcolor,
  3631.                                 OutlineColor = theme.textborder,
  3632.                                 Position = utility:Position(0, 4, 0, 2, colorpicker_open_frame),
  3633.                             }, colorpicker.holder.drawings)
  3634.                             --
  3635.                             local colorpicker_open_picker_outline = utility:Create("Frame", {Vector2.new(4,17), colorpicker_open_frame}, {
  3636.                                 Size = utility:Size(1, -27, 1, transp and -40 or -21, colorpicker_open_frame),
  3637.                                 Position = utility:Position(0, 4, 0, 17, colorpicker_open_frame),
  3638.                                 Color = theme.outline
  3639.                             }, colorpicker.holder.drawings)
  3640.                             --
  3641.                             local colorpicker_open_picker_inline = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_picker_outline}, {
  3642.                                 Size = utility:Size(1, -2, 1, -2, colorpicker_open_picker_outline),
  3643.                                 Position = utility:Position(0, 1, 0, 1, colorpicker_open_picker_outline),
  3644.                                 Color = theme.inline
  3645.                             }, colorpicker.holder.drawings)
  3646.                             --
  3647.                             local colorpicker_open_picker_bg = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_picker_inline}, {
  3648.                                 Size = utility:Size(1, -2, 1, -2, colorpicker_open_picker_inline),
  3649.                                 Position = utility:Position(0, 1, 0, 1, colorpicker_open_picker_inline),
  3650.                                 Color = Color3.fromHSV(colorpicker.current[1],1,1)
  3651.                             }, colorpicker.holder.drawings);colorpicker.holder.background = colorpicker_open_picker_bg
  3652.                             --
  3653.                             local colorpicker_open_picker_image = utility:Create("Image", {Vector2.new(0,0), colorpicker_open_picker_bg}, {
  3654.                                 Size = utility:Size(1, 0, 1, 0, colorpicker_open_picker_bg),
  3655.                                 Position = utility:Position(0, 0, 0 , 0, colorpicker_open_picker_bg),
  3656.                             }, colorpicker.holder.drawings);colorpicker.holder.picker = colorpicker_open_picker_image
  3657.                             --
  3658.                             local colorpicker_open_picker_cursor = utility:Create("Image", {Vector2.new((colorpicker_open_picker_image.Size.X*colorpicker.current[2])-3,(colorpicker_open_picker_image.Size.Y*(1-colorpicker.current[3]))-3), colorpicker_open_picker_image}, {
  3659.                                 Size = utility:Size(0, 6, 0, 6, colorpicker_open_picker_image),
  3660.                                 Position = utility:Position(colorpicker.current[2], -3, 1-colorpicker.current[3] , -3, colorpicker_open_picker_image),
  3661.                             }, colorpicker.holder.drawings);colorpicker.holder.picker_cursor = colorpicker_open_picker_cursor
  3662.                             --
  3663.                             local colorpicker_open_huepicker_outline = utility:Create("Frame", {Vector2.new(colorpicker_open_frame.Size.X-19,17), colorpicker_open_frame}, {
  3664.                                 Size = utility:Size(0, 15, 1, transp and -40 or -21, colorpicker_open_frame),
  3665.                                 Position = utility:Position(1, -19, 0, 17, colorpicker_open_frame),
  3666.                                 Color = theme.outline
  3667.                             }, colorpicker.holder.drawings)
  3668.                             --
  3669.                             local colorpicker_open_huepicker_inline = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_huepicker_outline}, {
  3670.                                 Size = utility:Size(1, -2, 1, -2, colorpicker_open_huepicker_outline),
  3671.                                 Position = utility:Position(0, 1, 0, 1, colorpicker_open_huepicker_outline),
  3672.                                 Color = theme.inline
  3673.                             }, colorpicker.holder.drawings)
  3674.                             --
  3675.                             local colorpicker_open_huepicker_image = utility:Create("Image", {Vector2.new(1,1), colorpicker_open_huepicker_inline}, {
  3676.                                 Size = utility:Size(1, -2, 1, -2, colorpicker_open_huepicker_inline),
  3677.                                 Position = utility:Position(0, 1, 0 , 1, colorpicker_open_huepicker_inline),
  3678.                             }, colorpicker.holder.drawings);colorpicker.holder.huepicker = colorpicker_open_huepicker_image
  3679.                             --
  3680.                             local colorpicker_open_huepicker_cursor_outline = utility:Create("Frame", {Vector2.new(-3,(colorpicker_open_huepicker_image.Size.Y*colorpicker.current[1])-3), colorpicker_open_huepicker_image}, {
  3681.                                 Size = utility:Size(1, 6, 0, 6, colorpicker_open_huepicker_image),
  3682.                                 Position = utility:Position(0, -3, colorpicker.current[1], -3, colorpicker_open_huepicker_image),
  3683.                                 Color = theme.outline
  3684.                             }, colorpicker.holder.drawings);colorpicker.holder.huepicker_cursor[1] = colorpicker_open_huepicker_cursor_outline
  3685.                             --
  3686.                             local colorpicker_open_huepicker_cursor_inline = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_huepicker_cursor_outline}, {
  3687.                                 Size = utility:Size(1, -2, 1, -2, colorpicker_open_huepicker_cursor_outline),
  3688.                                 Position = utility:Position(0, 1, 0, 1, colorpicker_open_huepicker_cursor_outline),
  3689.                                 Color = theme.textcolor
  3690.                             }, colorpicker.holder.drawings);colorpicker.holder.huepicker_cursor[2] = colorpicker_open_huepicker_cursor_inline
  3691.                             --
  3692.                             local colorpicker_open_huepicker_cursor_color = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_huepicker_cursor_inline}, {
  3693.                                 Size = utility:Size(1, -2, 1, -2, colorpicker_open_huepicker_cursor_inline),
  3694.                                 Position = utility:Position(0, 1, 0, 1, colorpicker_open_huepicker_cursor_inline),
  3695.                                 Color = Color3.fromHSV(colorpicker.current[1], 1, 1)
  3696.                             }, colorpicker.holder.drawings);colorpicker.holder.huepicker_cursor[3] = colorpicker_open_huepicker_cursor_color
  3697.                             --
  3698.                             if transp then
  3699.                                 local colorpicker_open_transparency_outline = utility:Create("Frame", {Vector2.new(4,colorpicker_open_frame.Size.X-19), colorpicker_open_frame}, {
  3700.                                     Size = utility:Size(1, -27, 0, 15, colorpicker_open_frame),
  3701.                                     Position = utility:Position(0, 4, 1, -19, colorpicker_open_frame),
  3702.                                     Color = theme.outline
  3703.                                 }, colorpicker.holder.drawings)
  3704.                                 --
  3705.                                 local colorpicker_open_transparency_inline = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_transparency_outline}, {
  3706.                                     Size = utility:Size(1, -2, 1, -2, colorpicker_open_transparency_outline),
  3707.                                     Position = utility:Position(0, 1, 0, 1, colorpicker_open_transparency_outline),
  3708.                                     Color = theme.inline
  3709.                                 }, colorpicker.holder.drawings)
  3710.                                 --
  3711.                                 local colorpicker_open_transparency_bg = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_transparency_inline}, {
  3712.                                     Size = utility:Size(1, -2, 1, -2, colorpicker_open_transparency_inline),
  3713.                                     Position = utility:Position(0, 1, 0, 1, colorpicker_open_transparency_inline),
  3714.                                     Color = Color3.fromHSV(colorpicker.current[1], colorpicker.current[2], colorpicker.current[3])
  3715.                                 }, colorpicker.holder.drawings);colorpicker.holder.transparencybg = colorpicker_open_transparency_bg
  3716.                                 --
  3717.                                 local colorpicker_open_transparency_image = utility:Create("Image", {Vector2.new(1,1), colorpicker_open_transparency_inline}, {
  3718.                                     Size = utility:Size(1, -2, 1, -2, colorpicker_open_transparency_inline),
  3719.                                     Position = utility:Position(0, 1, 0 , 1, colorpicker_open_transparency_inline),
  3720.                                 }, colorpicker.holder.drawings);colorpicker.holder.transparency = colorpicker_open_transparency_image
  3721.                                 --
  3722.                                 local colorpicker_open_transparency_cursor_outline = utility:Create("Frame", {Vector2.new((colorpicker_open_transparency_image.Size.X*(1-colorpicker.current[4]))-3,-3), colorpicker_open_transparency_image}, {
  3723.                                     Size = utility:Size(0, 6, 1, 6, colorpicker_open_transparency_image),
  3724.                                     Position = utility:Position(1-colorpicker.current[4], -3, 0, -3, colorpicker_open_transparency_image),
  3725.                                     Color = theme.outline
  3726.                                 }, colorpicker.holder.drawings);colorpicker.holder.transparency_cursor[1] = colorpicker_open_transparency_cursor_outline
  3727.                                 --
  3728.                                 local colorpicker_open_transparency_cursor_inline = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_transparency_cursor_outline}, {
  3729.                                     Size = utility:Size(1, -2, 1, -2, colorpicker_open_transparency_cursor_outline),
  3730.                                     Position = utility:Position(0, 1, 0, 1, colorpicker_open_transparency_cursor_outline),
  3731.                                     Color = theme.textcolor
  3732.                                 }, colorpicker.holder.drawings);colorpicker.holder.transparency_cursor[2] = colorpicker_open_transparency_cursor_inline
  3733.                                 --
  3734.                                 local colorpicker_open_transparency_cursor_color = utility:Create("Frame", {Vector2.new(1,1), colorpicker_open_transparency_cursor_inline}, {
  3735.                                     Size = utility:Size(1, -2, 1, -2, colorpicker_open_transparency_cursor_inline),
  3736.                                     Position = utility:Position(0, 1, 0, 1, colorpicker_open_transparency_cursor_inline),
  3737.                                     Color = Color3.fromHSV(0, 0, 1 - colorpicker.current[4]),
  3738.                                 }, colorpicker.holder.drawings);colorpicker.holder.transparency_cursor[3] = colorpicker_open_transparency_cursor_color
  3739.                                 --
  3740.                                 utility:LoadImage(colorpicker_open_transparency_image, "transp", "https://i.imgur.com/ncssKbH.png")
  3741.                                 --utility:LoadImage(colorpicker_open_transparency_image, "transp", "https://i.imgur.com/VcMAYjL.png")
  3742.                             end
  3743.                             --
  3744.                             utility:LoadImage(colorpicker_open_picker_image, "valsat", "https://i.imgur.com/wpDRqVH.png")
  3745.                             utility:LoadImage(colorpicker_open_picker_cursor, "valsat_cursor", "https://raw.githubusercontent.com/mvonwalk/splix-assets/main/Images-cursor.png")
  3746.                             utility:LoadImage(colorpicker_open_huepicker_image, "hue", "https://i.imgur.com/iEOsHFv.png")
  3747.                             --
  3748.                             window.currentContent.frame = colorpicker_open_inline
  3749.                             window.currentContent.colorpicker = colorpicker
  3750.                         else
  3751.                             colorpicker.open = not colorpicker.open
  3752.                             --
  3753.                             for i,v in pairs(colorpicker.holder.drawings) do
  3754.                                 utility:Remove(v)
  3755.                             end
  3756.                             --
  3757.                             colorpicker.holder.drawings = {}
  3758.                             colorpicker.holder.inline = nil
  3759.                             --
  3760.                             window.currentContent.frame = nil
  3761.                             window.currentContent.colorpicker = nil
  3762.                         end
  3763.                     else
  3764.                         if colorpicker.open then
  3765.                             colorpicker.open = not colorpicker.open
  3766.                             --
  3767.                             for i,v in pairs(colorpicker.holder.drawings) do
  3768.                                 utility:Remove(v)
  3769.                             end
  3770.                             --
  3771.                             colorpicker.holder.drawings = {}
  3772.                             colorpicker.holder.inline = nil
  3773.                             --
  3774.                             window.currentContent.frame = nil
  3775.                             window.currentContent.colorpicker = nil
  3776.                         end
  3777.                     end
  3778.                 elseif Input.UserInputType == Enum.UserInputType.MouseButton1 and colorpicker.open then
  3779.                     colorpicker.open = not colorpicker.open
  3780.                     --
  3781.                     for i,v in pairs(colorpicker.holder.drawings) do
  3782.                         utility:Remove(v)
  3783.                     end
  3784.                     --
  3785.                     colorpicker.holder.drawings = {}
  3786.                     colorpicker.holder.inline = nil
  3787.                     --
  3788.                     window.currentContent.frame = nil
  3789.                     window.currentContent.colorpicker = nil
  3790.                 end
  3791.             end
  3792.             --
  3793.             library.ended[#library.ended + 1] = function(Input)
  3794.                 if Input.UserInputType == Enum.UserInputType.MouseButton1 then
  3795.                     if colorpicker.holding.picker then
  3796.                         colorpicker.holding.picker = not colorpicker.holding.picker
  3797.                     end
  3798.                     if colorpicker.holding.huepicker then
  3799.                         colorpicker.holding.huepicker = not colorpicker.holding.huepicker
  3800.                     end
  3801.                     if colorpicker.holding.transparency then
  3802.                         colorpicker.holding.transparency = not colorpicker.holding.transparency
  3803.                     end
  3804.                 end
  3805.             end
  3806.             --
  3807.             library.changed[#library.changed + 1] = function()
  3808.                 if colorpicker.open and colorpicker.holding.picker or colorpicker.holding.huepicker or colorpicker.holding.transparency then
  3809.                     if window.isVisible then
  3810.                         colorpicker:Refresh()
  3811.                     else
  3812.                         if colorpicker.holding.picker then
  3813.                             colorpicker.holding.picker = not colorpicker.holding.picker
  3814.                         end
  3815.                         if colorpicker.holding.huepicker then
  3816.                             colorpicker.holding.huepicker = not colorpicker.holding.huepicker
  3817.                         end
  3818.                         if colorpicker.holding.transparency then
  3819.                             colorpicker.holding.transparency = not colorpicker.holding.transparency
  3820.                         end
  3821.                     end
  3822.                 end
  3823.             end
  3824.             --
  3825.             if pointer and tostring(pointer) ~= "" and tostring(pointer) ~= " " and not library.pointers[tostring(pointer)] then
  3826.                 library.pointers[tostring(pointer)] = keybind
  3827.             end
  3828.             --
  3829.             return colorpicker
  3830.         end
  3831.         --
  3832.         return colorpicker
  3833.     end
  3834.     --
  3835.     function sections:ConfigBox(info)
  3836.         local info = info or {}
  3837.         --
  3838.         local window = self.window
  3839.         local page = self.page
  3840.         local section = self
  3841.         --
  3842.         local configLoader = {axis = section.currentAxis, current = 1, buttons = {}}
  3843.         --
  3844.         local configLoader_outline = utility:Create("Frame", {Vector2.new(4,configLoader.axis), section.section_frame}, {
  3845.             Size = utility:Size(1, -8, 0, 148, section.section_frame),
  3846.             Position = utility:Position(0, 4, 0, configLoader.axis, section.section_frame),
  3847.             Color = theme.outline,
  3848.             Visible = page.open
  3849.         }, section.visibleContent)
  3850.         --
  3851.         local configLoader_inline = utility:Create("Frame", {Vector2.new(1,1), configLoader_outline}, {
  3852.             Size = utility:Size(1, -2, 1, -2, configLoader_outline),
  3853.             Position = utility:Position(0, 1, 0, 1, configLoader_outline),
  3854.             Color = theme.inline,
  3855.             Visible = page.open
  3856.         }, section.visibleContent)
  3857.         --
  3858.         local configLoader_frame = utility:Create("Frame", {Vector2.new(1,1), configLoader_inline}, {
  3859.             Size = utility:Size(1, -2, 1, -2, configLoader_inline),
  3860.             Position = utility:Position(0, 1, 0, 1, configLoader_inline),
  3861.             Color = theme.light_contrast,
  3862.             Visible = page.open
  3863.         }, section.visibleContent)
  3864.         --
  3865.         local configLoader_gradient = utility:Create("Image", {Vector2.new(0,0), configLoader_frame}, {
  3866.             Size = utility:Size(1, 0, 1, 0, configLoader_frame),
  3867.             Position = utility:Position(0, 0, 0 , 0, configLoader_frame),
  3868.             Transparency = 0.5,
  3869.             Visible = page.open
  3870.         }, section.visibleContent)
  3871.         --
  3872.         for i=1, 8 do
  3873.             local config_title = utility:Create("TextLabel", {Vector2.new(configLoader_frame.Size.X/2,2 + (18 * (i-1))), configLoader_frame}, {
  3874.                 Text = "Config-Slot: "..tostring(i),
  3875.                 Size = theme.textsize,
  3876.                 Font = theme.font,
  3877.                 Color = i == 1 and theme.accent or theme.textcolor,
  3878.                 OutlineColor = theme.textborder,
  3879.                 Center = true,
  3880.                 Position = utility:Position(0.5, 0, 0, 2 + (18 * (i-1)), configLoader_frame),
  3881.                 Visible = page.open
  3882.             }, section.visibleContent)
  3883.             --
  3884.             configLoader.buttons[i] = config_title
  3885.         end
  3886.         --
  3887.         utility:LoadImage(configLoader_gradient, "gradient", "https://i.imgur.com/5hmlrjX.png")
  3888.         --
  3889.         function configLoader:Refresh()
  3890.             for i,v in pairs(configLoader.buttons) do
  3891.                 v.Color = i == configLoader.current and theme.accent or theme.textcolor
  3892.             end
  3893.         end
  3894.         --
  3895.         function configLoader:Get()
  3896.             return configLoader.current
  3897.         end
  3898.         --
  3899.         function configLoader:Set(current)
  3900.             configLoader.current = current
  3901.             configLoader:Refresh()
  3902.         end
  3903.         --
  3904.         library.began[#library.began + 1] = function(Input)
  3905.             if Input.UserInputType == Enum.UserInputType.MouseButton1 and configLoader_outline.Visible and window.isVisible and utility:MouseOverDrawing({section.section_frame.Position.X, section.section_frame.Position.Y + configLoader.axis, section.section_frame.Position.X + section.section_frame.Size.X, section.section_frame.Position.Y + configLoader.axis + 148}) and not window:IsOverContent() then
  3906.                 for i=1, 8 do
  3907.                     if utility:MouseOverDrawing({section.section_frame.Position.X, section.section_frame.Position.Y + configLoader.axis + 2 + (18 * (i-1)), section.section_frame.Position.X + section.section_frame.Size.X, section.section_frame.Position.Y + configLoader.axis + 2 + (18 * (i-1)) + 18}) then
  3908.                         configLoader.current = i
  3909.                         configLoader:Refresh()
  3910.                     end
  3911.                 end
  3912.             end
  3913.         end
  3914.         --
  3915.         window.pointers["configbox"] = configLoader
  3916.         section.currentAxis = section.currentAxis + 148 + 4
  3917.         section:Update()
  3918.         --
  3919.         return configLoader
  3920.     end
  3921. end
  3922. -- // Init
  3923. --[[do
  3924.     local title_string = "Splix - Private | %A, %B"
  3925.     local day = os.date(" %d", os.time())
  3926.     local second_string = ", %Y."
  3927.     title_string = os.date(title_string, os.time())..day..utility:GetSubPrefix(day)..os.date(second_string, os.time())
  3928.     --
  3929.     local lib = library:New({name = title_string})
  3930.     --
  3931.     local aimbot = lib:Page({name = "Aimbot"})
  3932.     local visuals = lib:Page({name = "Visuals"})
  3933.     local exploits = lib:Page({name = "Exploits"})
  3934.     local misc = lib:Page({name = "Miscellaneous"})
  3935.     --
  3936.     local aimbot_main = aimbot:Section({name = "Main"})
  3937.     local aimbot_br = aimbot:Section({name = "Bullet Redirection",side = "right"})
  3938.     local aimbot_m, aimbot_mi, aimbot_s = aimbot:MultiSection({sections = {"Main", "Misc", "Settings"}, side = "left"})
  3939.     --
  3940.     local visuals_team, visuals_enemies, visuals_allies = visuals:MultiSection({sections = {"Team", "Enemies", "Allies"}, side = "left"})
  3941.     local visuals_player = visuals:Section({name = "Players"})
  3942.     local visuals_miscellaneous = visuals:Section({name = "Miscellaneous",side = "right"})
  3943.     --
  3944.     local exploits_main = exploits:Section({name = "Main"})
  3945.     local exploits_skin = exploits:Section({name = "Skin Changer",side = "right"})
  3946.     local exploits_freeze = exploits:Section({name = "Freeze Players"})
  3947.     --
  3948.     local misc_main = misc:Section({name = "Main"})
  3949.     local misc_adj = misc:Section({name = "Adjustments",side = "right"})
  3950.     --
  3951.     local asd = aimbot_m:Toggle({name = "Aimbot Toggle", def = true, pointer = "aimbot_toggle"})
  3952.     asd:Colorpicker({info = "Aimbot FOV Color", def = Color3.fromRGB(0,255,150), transparency = 0.5})
  3953.     asd:Colorpicker({info = "Aimbot Outline FOV Color", def = Color3.fromRGB(45,45,45), transparency = 0.25})
  3954.     aimbot_s:Label({name = "Some of the features\nhere, May be unsafe.\nUse with caution."})
  3955.     aimbot_mi:Colorpicker({info = "Aimbot FOV Color", def = Color3.fromRGB(0,255,150), transparency = 0.5})
  3956.     aimbot_mi:Multibox({name = "Aimbot Hitpart", min = 1, options = {"Head", "Torso", "Arms", "Legs"}, def = {"Head", "Torso"}})
  3957.     aimbot_s:Dropdown({name = "Aimbot Hitpart", options = {"Head", "Torso", "Arms", "Legs"}, def = "Head"})
  3958.     --
  3959.     aimbot_main:Label({name = "Some of the features\nhere, May be unsafe.\nUse with caution."})
  3960.     local aimbot_toggle = aimbot_main:Toggle({name = "Aimbot Toggle", def = true, pointer = "aimbot_toggle"})
  3961.     aimbot_toggle:Colorpicker({info = "Aimbot FOV Color", def = Color3.fromRGB(0,255,150), transparency = 0.5})
  3962.     aimbot_toggle:Colorpicker({info = "Aimbot Outline FOV Color", def = Color3.fromRGB(45,45,45), transparency = 0.25})
  3963.     aimbot_main:Colorpicker({name = "Locking Color", info = "Aimbot Locked Player Color", def = Color3.fromRGB(205,50,50)}):Colorpicker({info = "Aimbot Outline FOV Color", def = Color3.fromRGB(45,45,45), transparency = 0.25})
  3964.     aimbot_main:Toggle({name = "Aimbot Visible", def = true})
  3965.     aimbot_main:Slider({name = "Watermark X Offset", min = 0, max = utility:GetScreenSize().X, def = 100, decimals = 1, callback = function(value)
  3966.         if lib.watermark and lib.watermark.outline then
  3967.             lib.watermark:Update("Offset", Vector2.new(value, lib.watermark.outline.Position.Y))
  3968.         end
  3969.     end})
  3970.     aimbot_main:Slider({name = "Watermark Y Offset", min = 0, max = utility:GetScreenSize().Y, def = 38/2-10, decimals = 1, callback = function(value)
  3971.         if lib.watermark and lib.watermark.outline then
  3972.             lib.watermark:Update("Offset", Vector2.new(lib.watermark.outline.Position.X, value))
  3973.         end
  3974.     end})
  3975.     aimbot_main:Slider({name = "Aimbot Field Of View", min = 0, max = 1000, def = 125, suffix = "°"})
  3976.     aimbot_main:Toggle({name = "Aimbot Toggle", def = true, pointer = "aimbot_toggle"}):Keybind({callback = function(input, active) print(active) end})
  3977.     aimbot_main:Keybind({name = "Aimbot Keybind", mode = "Toggle", callback = function(input, active) print(active) end})
  3978.     aimbot_main:Keybind({name = "Aimbot Keybind", mode = "Hold", callback = function(input, active) print(active) end})
  3979.     aimbot_main:Multibox({name = "Aimbot Hitpart", min = 1, options = {"Head", "Torso", "Arms", "Legs"}, def = {"Head", "Torso"}})
  3980.     aimbot_main:Dropdown({name = "Aimbot Hitpart", options = {"Head", "Torso", "Arms", "Legs"}, def = "Head"})
  3981.     --
  3982.     aimbot_br:Toggle({name = "Bullet Redirection Toggle", def = true})
  3983.     aimbot_br:Slider({name = "B.R. Hitchance", min = 0, max = 100, def = 65, suffix = "%"})
  3984.     aimbot_br:Slider({name = "B.R. Accuracy", min = 0, max = 100, def = 90, suffix = "%"})
  3985.     --
  3986.     visuals_team:Toggle({name = "Draw Boxes", def = true})
  3987.     visuals_team:Toggle({name = "Draw Names", def = true})
  3988.     visuals_team:Toggle({name = "Draw Health", def = true})
  3989.     --
  3990.     visuals_enemies:Toggle({name = "Draw Boxes", def = true})
  3991.     visuals_enemies:Toggle({name = "Draw Names", def = true})
  3992.     visuals_enemies:Toggle({name = "Draw Health", def = true})
  3993.     --
  3994.     visuals_allies:Toggle({name = "Draw Boxes", def = true})
  3995.     visuals_allies:Toggle({name = "Draw Names", def = true})
  3996.     visuals_allies:Toggle({name = "Draw Health", def = true})
  3997.  
  3998.     --
  3999.     visuals_miscellaneous:Toggle({name = "Draw Field Of View"})
  4000.     visuals_miscellaneous:Toggle({name = "Draw Server Position"})
  4001.     --
  4002.     exploits_main:Toggle({name = "God Mode"})
  4003.     exploits_main:Toggle({name = "Bypass Suppresion"})
  4004.     exploits_main:Toggle({name = "Bypass Fall"})
  4005.     exploits_main:Button({name = "Stress Server"})
  4006.     exploits_main:Button({name = "Crash Server"})
  4007.     --
  4008.     exploits_freeze:Toggle({name = "Freeze Toggle"})
  4009.     exploits_freeze:Toggle({name = "Freeze On Shoot"})
  4010.     exploits_freeze:Slider({name = "Freeze Interval", min = 1, max = 3000, def = 1000, suffix = "ms"})
  4011.     --
  4012.     exploits_skin:Toggle({name = "Custom Skin"})
  4013.     exploits_skin:Slider({name = "Skin Offset Vertical", min = 0, max = 4, def = 1, decimals = 0.01})
  4014.     exploits_skin:Slider({name = "Skin Offset Horizontal", min = 0, max = 4, def = 1, decimals = 0.01})
  4015.     exploits_skin:Slider({name = "Skin Studs Vertical", min = 0, max = 4, def = 1, decimals = 0.01})
  4016.     exploits_skin:Slider({name = "Skin Studs Horizontal", min = 0, max = 4, def = 1, decimals = 0.01})
  4017.     --
  4018.     misc_main:Toggle({name = "Fly"})
  4019.     misc_main:Toggle({name = "Auto Spot", def = true})
  4020.     misc_main:Toggle({name = "Hit Logs", def = true})
  4021.     misc_main:Toggle({name = "Chat Spam"})
  4022.     misc_main:Toggle({name = "Auto Vote"})
  4023.     misc_main:Dropdown({name = "Auto Vote Options", options = {"Yes", "No"}, def = "Yes"})
  4024.     --
  4025.     misc_adj:Toggle({name = "Walk Speed"})
  4026.     misc_adj:Toggle({name = "Jump Height"})
  4027.     misc_adj:Slider({name = "Walk Speed", min = 16, max = 200, def = 16})
  4028.     misc_adj:Slider({name = "Jump Height", min = 50, max = 400, def = 50})
  4029.     --
  4030.     lib:Initialize()
  4031. end]]
  4032. --
  4033. return library, utility, library.pointers, theme
Advertisement
Comments
  • TimesOGrace
    2 years
    # text 0.20 KB | 0 0
    1. my guy, you need to learn to follow Roblox's standard style guide. reading this is giving me a migraine. not even going to mention how poor this code is. and finally, exploiting in roblox, lmfao.
    2. 2/10
Add Comment
Please, Sign In to add comment