9x17

Untitled

Aug 2nd, 2021
460
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local Library = {
  2.     Toggle = true,
  3.     FirstTab = nil,
  4.     TabCount = 0,
  5.     ColorTable = {}
  6. }
  7. local RunService = game:GetService("RunService")
  8. local HttpService = game:GetService("HttpService")
  9. local TweenService = game:GetService("TweenService")
  10. local UserInputService = game:GetService("UserInputService")
  11.  
  12. local function MakeDraggable(TopbarObject, Object)
  13.     local Dragging = nil
  14.     local DragInput = nil
  15.     local DragStart = nil
  16.     local StartPosition = nil
  17.    
  18.     TopbarObject.InputBegan:Connect(function(Input)
  19.         if Input.UserInputType == Enum.UserInputType.MouseButton1 or Input.UserInputType == Enum.UserInputType.Touch then
  20.             Dragging = true
  21.             DragStart = Input.Position
  22.             StartPosition = Object.Position
  23.            
  24.             Input.Changed:Connect(function()
  25.                 if Input.UserInputState == Enum.UserInputState.End then
  26.                     Dragging = false
  27.                 end
  28.             end)
  29.         end
  30.     end)
  31.    
  32.     TopbarObject.InputChanged:Connect(function(Input)
  33.         if Input.UserInputType == Enum.UserInputType.MouseMovement or Input.UserInputType == Enum.UserInputType.Touch then
  34.             DragInput = Input
  35.         end
  36.     end)
  37.    
  38.     UserInputService.InputChanged:Connect(function(Input)
  39.         if Input == DragInput and Dragging then
  40.             local Delta = Input.Position - DragStart
  41.             Object.Position = UDim2.new(StartPosition.X.Scale, StartPosition.X.Offset + Delta.X, StartPosition.Y.Scale, StartPosition.Y.Offset + Delta.Y)
  42.         end
  43.     end)
  44. end
  45.  
  46. function Library:CreateWindow(Config, Parent)
  47.     local WindowInit = {}
  48.     local Folder = game:GetObjects("rbxassetid://7141683860")[1]
  49.     local Screen = Folder.Bracket:Clone()
  50.     local Main = Screen.Main
  51.     local Holder = Main.Holder
  52.     local Topbar = Main.Topbar
  53.     local TContainer = Holder.TContainer
  54.     local TBContainer = Holder.TBContainer.Holder
  55.  
  56.     Screen.Name =  HttpService:GenerateGUID(false)
  57.     Screen.Parent = Parent
  58.     Topbar.WindowName.Text = Config.WindowName
  59.  
  60.     MakeDraggable(Topbar,Main)
  61.     local function CloseAll()
  62.         for _,Tab in pairs(TContainer:GetChildren()) do
  63.             if Tab:IsA("ScrollingFrame") then
  64.                 Tab.Visible = false
  65.             end
  66.         end
  67.     end
  68.     local function ResetAll()
  69.         for _,TabButton in pairs(TBContainer:GetChildren()) do
  70.             if TabButton:IsA("TextButton") then
  71.                 TabButton.BackgroundTransparency = 1
  72.             end
  73.         end
  74.         for _,TabButton in pairs(TBContainer:GetChildren()) do
  75.             if TabButton:IsA("TextButton") then
  76.                 TabButton.Size = UDim2.new(0,480 / Library.TabCount,1,0)
  77.             end
  78.         end
  79.     end
  80.     local function KeepFirst()
  81.         for _,Tab in pairs(TContainer:GetChildren()) do
  82.             if Tab:IsA("ScrollingFrame") then
  83.                 if Tab.Name == Library.FirstTab .. " T" then
  84.                     Tab.Visible = true
  85.                 else
  86.                     Tab.Visible = false
  87.                 end
  88.             end
  89.         end
  90.         for _,TabButton in pairs(TBContainer:GetChildren()) do
  91.             if TabButton:IsA("TextButton") then
  92.                 if TabButton.Name == Library.FirstTab .. " TB" then
  93.                     TabButton.BackgroundTransparency = 0
  94.                 else
  95.                     TabButton.BackgroundTransparency = 1
  96.                 end
  97.             end
  98.         end
  99.     end
  100.     local function Toggle(State)
  101.         if State then
  102.             Main.Visible = true
  103.         elseif not State then
  104.             for _,Pallete in pairs(Screen:GetChildren()) do
  105.                 if Pallete:IsA("Frame") and Pallete.Name ~= "Main" then
  106.                     Pallete.Visible = false
  107.                 end
  108.             end
  109.             Screen.ToolTip.Visible = false
  110.             Main.Visible = false
  111.         end
  112.         Library.Toggle = State
  113.     end
  114.     local function ChangeColor(Color)
  115.         Config.Color = Color
  116.         for i, v in pairs(Library.ColorTable) do
  117.             if v.BackgroundColor3 ~= Color3.fromRGB(50, 50, 50) then
  118.                 v.BackgroundColor3 = Color
  119.             end
  120.         end
  121.     end
  122.  
  123.     function WindowInit:Toggle(State)
  124.         Toggle(State)
  125.     end
  126.  
  127.     function WindowInit:ChangeColor(Color)
  128.         ChangeColor(Color)
  129.     end
  130.  
  131.     function WindowInit:SetBackground(ImageId)
  132.         Holder.Image = "rbxassetid://" .. ImageId
  133.     end
  134.  
  135.     function WindowInit:SetBackgroundColor(Color)
  136.         Holder.ImageColor3 = Color
  137.     end
  138.     function WindowInit:SetBackgroundTransparency(Transparency)
  139.         Holder.ImageTransparency = Transparency
  140.     end
  141.  
  142.     function WindowInit:SetTileOffset(Offset)
  143.         Holder.TileSize = UDim2.new(0,Offset,0,Offset)
  144.     end
  145.     function WindowInit:SetTileScale(Scale)
  146.         Holder.TileSize = UDim2.new(Scale,0,Scale,0)
  147.     end
  148.  
  149.     RunService.RenderStepped:Connect(function()
  150.         if Library.Toggle then
  151.             Screen.ToolTip.Position = UDim2.new(0,UserInputService:GetMouseLocation().X + 10,0,UserInputService:GetMouseLocation().Y - 5)
  152.         end
  153.     end)
  154.  
  155.     function WindowInit:CreateTab(Name)
  156.         local TabInit = {}
  157.         local Tab = Folder.Tab:Clone()
  158.         local TabButton = Folder.TabButton:Clone()
  159.  
  160.         Tab.Name = Name .. " T"
  161.         Tab.Parent = TContainer
  162.  
  163.         TabButton.Name = Name .. " TB"
  164.         TabButton.Parent = TBContainer
  165.         TabButton.Title.Text = Name
  166.         TabButton.BackgroundColor3 = Config.Color
  167.  
  168.         table.insert(Library.ColorTable, TabButton)
  169.         Library.TabCount = Library.TabCount + 1
  170.         if Library.TabCount == 1 then
  171.             Library.FirstTab = Name
  172.         end
  173.  
  174.         CloseAll()
  175.         ResetAll()
  176.         KeepFirst()
  177.  
  178.         local function GetSide(Longest)
  179.             if Longest then
  180.                 if Tab.LeftSide.ListLayout.AbsoluteContentSize.Y > Tab.RightSide.ListLayout.AbsoluteContentSize.Y then
  181.                     return Tab.LeftSide
  182.                 else
  183.                     return Tab.RightSide
  184.                 end
  185.             else
  186.                 if Tab.LeftSide.ListLayout.AbsoluteContentSize.Y > Tab.RightSide.ListLayout.AbsoluteContentSize.Y then
  187.                     return Tab.RightSide
  188.                 else
  189.                     return Tab.LeftSide
  190.                 end
  191.             end
  192.         end
  193.  
  194.         TabButton.MouseButton1Click:Connect(function()
  195.             CloseAll()
  196.             ResetAll()
  197.             Tab.Visible = true
  198.             TabButton.BackgroundTransparency = 0
  199.         end)
  200.  
  201.         Tab.LeftSide.ListLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
  202.             if GetSide(true).Name == Tab.LeftSide.Name then
  203.                 Tab.CanvasSize = UDim2.new(0,0,0,Tab.LeftSide.ListLayout.AbsoluteContentSize.Y + 10)
  204.             else
  205.                 Tab.CanvasSize = UDim2.new(0,0,0,Tab.RightSide.ListLayout.AbsoluteContentSize.Y + 10)
  206.             end
  207.         end)
  208.         Tab.RightSide.ListLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
  209.             if GetSide(true).Name == Tab.LeftSide.Name then
  210.                 Tab.CanvasSize = UDim2.new(0,0,0,Tab.LeftSide.ListLayout.AbsoluteContentSize.Y + 10)
  211.             else
  212.                 Tab.CanvasSize = UDim2.new(0,0,0,Tab.RightSide.ListLayout.AbsoluteContentSize.Y + 10)
  213.             end
  214.         end)
  215.  
  216.         function TabInit:CreateSection(Name)
  217.             local SectionInit = {}
  218.             local Section = Folder.Section:Clone()
  219.             Section.Name = Name .. " S"
  220.             Section.Parent = GetSide(false)
  221.  
  222.             Section.Title.Text = Name
  223.             Section.Title.Size = UDim2.new(0,Section.Title.TextBounds.X + 10,0,2)
  224.  
  225.             Section.Container.ListLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
  226.                 Section.Size = UDim2.new(1,0,0,Section.Container.ListLayout.AbsoluteContentSize.Y + 15)
  227.             end)
  228.            
  229.             function SectionInit:CreateLabel(Name)
  230.                 local Label = Folder.Label:Clone()
  231.                 Label.Name = Name .. " L"
  232.                 Label.Parent = Section.Container
  233.                 Label.Text = Name
  234.                 Label.Size = UDim2.new(1,-10,0,Label.TextBounds.Y)
  235.             end
  236.             function SectionInit:CreateButton(Name, Callback)
  237.                 local ButtonInit = {}
  238.                 local Button = Folder.Button:Clone()
  239.                 Button.Name = Name .. " B"
  240.                 Button.Parent = Section.Container
  241.                 Button.Title.Text = Name
  242.                 Button.Size = UDim2.new(1,-10,0,Button.Title.TextBounds.Y + 5)
  243.  
  244.                 table.insert(Library.ColorTable, Button)
  245.  
  246.                 Button.MouseButton1Down:Connect(function()
  247.                     Button.BackgroundColor3 = Config.Color
  248.                 end)
  249.  
  250.                 Button.MouseButton1Up:Connect(function()
  251.                     Button.BackgroundColor3 = Color3.fromRGB(50,50,50)
  252.                 end)
  253.  
  254.                 Button.MouseLeave:Connect(function()
  255.                     Button.BackgroundColor3 = Color3.fromRGB(50,50,50)
  256.                 end)
  257.  
  258.                 Button.MouseButton1Click:Connect(function()
  259.                     Callback()
  260.                 end)
  261.  
  262.                 function ButtonInit:AddToolTip(Name)
  263.                     if tostring(Name):gsub(" ", "") ~= "" then
  264.                         Button.MouseEnter:Connect(function()
  265.                             Screen.ToolTip.Text = Name
  266.                             Screen.ToolTip.Size = UDim2.new(0,Screen.ToolTip.TextBounds.X + 5,0,Screen.ToolTip.TextBounds.Y + 5)
  267.                             Screen.ToolTip.Visible = true
  268.                         end)
  269.  
  270.                         Button.MouseLeave:Connect(function()
  271.                             Screen.ToolTip.Visible = false
  272.                         end)
  273.                     end
  274.                 end
  275.  
  276.                 return ButtonInit
  277.             end
  278.             function SectionInit:CreateToggle(Name, Default, Callback)
  279.                 local DefaultLocal = Default or false
  280.                 local ToggleInit = {}
  281.                 local Toggle = Folder.Toggle:Clone()
  282.                 Toggle.Name = Name .. " T"
  283.                 Toggle.Parent = Section.Container
  284.                 Toggle.Title.Text = Name
  285.                 Toggle.Size = UDim2.new(1,-10,0,Toggle.Title.TextBounds.Y + 5)
  286.                
  287.                 table.insert(Library.ColorTable, Toggle.Toggle)
  288.                 local ToggleState = false
  289.  
  290.                 local function SetState(State)
  291.                     if State then
  292.                         Toggle.Toggle.BackgroundColor3 = Config.Color
  293.                     elseif not State then
  294.                         Toggle.Toggle.BackgroundColor3 = Color3.fromRGB(50,50,50)
  295.                     end
  296.                     ToggleState = State
  297.                     Callback(State)
  298.                 end
  299.  
  300.                 Toggle.MouseButton1Click:Connect(function()
  301.                     ToggleState = not ToggleState
  302.                     SetState(ToggleState)
  303.                 end)
  304.  
  305.                 function ToggleInit:AddToolTip(Name)
  306.                     if tostring(Name):gsub(" ", "") ~= "" then
  307.                         Toggle.MouseEnter:Connect(function()
  308.                             Screen.ToolTip.Text = Name
  309.                             Screen.ToolTip.Size = UDim2.new(0,Screen.ToolTip.TextBounds.X + 5,0,Screen.ToolTip.TextBounds.Y + 5)
  310.                             Screen.ToolTip.Visible = true
  311.                         end)
  312.  
  313.                         Toggle.MouseLeave:Connect(function()
  314.                             Screen.ToolTip.Visible = false
  315.                         end)
  316.                     end
  317.                 end
  318.  
  319.                 if Default == nil then
  320.                     function ToggleInit:SetState(State)
  321.                         SetState(State)
  322.                     end
  323.                 else
  324.                     SetState(DefaultLocal)
  325.                 end
  326.  
  327.                 function ToggleInit:GetState(State)
  328.                     return ToggleState
  329.                 end
  330.  
  331.                 function ToggleInit:CreateKeybind(Bind,Callback)
  332.                     local KeybindInit = {}
  333.                     Bind = Bind or "NONE"
  334.  
  335.                     local WaitingForBind = false
  336.                     local Selected = Bind
  337.                     local Blacklist = {"W","A","S","D","Slash","Tab","Backspace","Escape","Space","Delete","Unknown","Backquote"}
  338.  
  339.                     Toggle.Keybind.Visible = true
  340.                     Toggle.Keybind.Text = "[ " .. Bind .. " ]"
  341.  
  342.                     Toggle.Keybind.MouseButton1Click:Connect(function()
  343.                         Toggle.Keybind.Text = "[ ... ]"
  344.                         WaitingForBind = true
  345.                     end)
  346.  
  347.                     Toggle.Keybind:GetPropertyChangedSignal("TextBounds"):Connect(function()
  348.                         Toggle.Keybind.Size = UDim2.new(0,Toggle.Keybind.TextBounds.X,1,0)
  349.                         Toggle.Title.Size = UDim2.new(1,-Toggle.Keybind.Size.X.Offset - 15,1,0)
  350.                     end)
  351.  
  352.                     UserInputService.InputBegan:Connect(function(Input)
  353.                         if WaitingForBind and Input.UserInputType == Enum.UserInputType.Keyboard then
  354.                             local Key = tostring(Input.KeyCode):gsub("Enum.KeyCode.", "")
  355.                             if not table.find(Blacklist, Key) then
  356.                                 Toggle.Keybind.Text = "[ " .. Key .. " ]"
  357.                                 Selected = Key
  358.                             else
  359.                                 Toggle.Keybind.Text = "[ NONE ]"
  360.                                 Selected = "NONE"
  361.                             end
  362.                             WaitingForBind = false
  363.                         elseif Input.UserInputType == Enum.UserInputType.Keyboard then
  364.                             local Key = tostring(Input.KeyCode):gsub("Enum.KeyCode.", "")
  365.                             if Key == Selected then
  366.                                 ToggleState = not ToggleState
  367.                                 SetState(ToggleState)
  368.                                 if Callback then
  369.                                     Callback(Key)
  370.                                 end
  371.                             end
  372.                         end
  373.                     end)
  374.  
  375.                     function KeybindInit:SetBind(Key)
  376.                         Toggle.Keybind.Text = "[ " .. Key .. " ]"
  377.                         Selected = Key
  378.                     end
  379.  
  380.                     function KeybindInit:GetBind()
  381.                         return Selected
  382.                     end
  383.  
  384.                     return KeybindInit
  385.                 end
  386.                 return ToggleInit
  387.             end
  388.             function SectionInit:CreateSlider(Name, Min, Max, Default, Precise, Callback)
  389.                 local DefaultLocal = Default or 50
  390.                 local SliderInit = {}
  391.                 local Slider = Folder.Slider:Clone()
  392.                 Slider.Name = Name .. " S"
  393.                 Slider.Parent = Section.Container
  394.                
  395.                 Slider.Title.Text = Name
  396.                 Slider.Slider.Bar.Size = UDim2.new(Min / Max,0,1,0)
  397.                 Slider.Slider.Bar.BackgroundColor3 = Config.Color
  398.                 Slider.Value.PlaceholderText = tostring(Min / Max)
  399.                 Slider.Title.Size = UDim2.new(1,0,0,Slider.Title.TextBounds.Y + 5)
  400.                 Slider.Size = UDim2.new(1,-10,0,Slider.Title.TextBounds.Y + 15)
  401.                 table.insert(Library.ColorTable, Slider.Slider.Bar)
  402.  
  403.                 local GlobalSliderValue = 0
  404.                 local Dragging = false
  405.                 local function Sliding(Input)
  406.                     local Position = UDim2.new(math.clamp((Input.Position.X - Slider.Slider.AbsolutePosition.X) / Slider.Slider.AbsoluteSize.X,0,1),0,1,0)
  407.                     Slider.Slider.Bar.Size = Position
  408.                     local SliderPrecise = ((Position.X.Scale * Max) / Max) * (Max - Min) + Min
  409.                     local SliderNonPrecise = math.floor(((Position.X.Scale * Max) / Max) * (Max - Min) + Min)
  410.                     local SliderValue = Precise and SliderNonPrecise or SliderPrecise
  411.                     SliderValue = tonumber(string.format("%.2f", SliderValue))
  412.                     GlobalSliderValue = SliderValue
  413.                     Slider.Value.PlaceholderText = tostring(SliderValue)
  414.                     Callback(GlobalSliderValue)
  415.                 end
  416.                 local function SetValue(Value)
  417.                     GlobalSliderValue = Value
  418.                     Slider.Slider.Bar.Size = UDim2.new(Value / Max,0,1,0)
  419.                     Slider.Value.PlaceholderText = Value
  420.                     Callback(Value)
  421.                 end
  422.                 Slider.Value.FocusLost:Connect(function()
  423.                     if not tonumber(Slider.Value.Text) then
  424.                         Slider.Value.Text = GlobalSliderValue
  425.                     elseif Slider.Value.Text == "" or tonumber(Slider.Value.Text) <= Min then
  426.                         Slider.Value.Text = Min
  427.                     elseif Slider.Value.Text == "" or tonumber(Slider.Value.Text) >= Max then
  428.                         Slider.Value.Text = Max
  429.                     end
  430.        
  431.                     GlobalSliderValue = Slider.Value.Text
  432.                     Slider.Slider.Bar.Size = UDim2.new(Slider.Value.Text / Max,0,1,0)
  433.                     Slider.Value.PlaceholderText = Slider.Value.Text
  434.                     Callback(tonumber(Slider.Value.Text))
  435.                     Slider.Value.Text = ""
  436.                 end)
  437.  
  438.                 Slider.InputBegan:Connect(function(Input)
  439.                     if Input.UserInputType == Enum.UserInputType.MouseButton1 then
  440.                         Sliding(Input)
  441.                         Dragging = true
  442.                     end
  443.                 end)
  444.  
  445.                 Slider.InputEnded:Connect(function(Input)
  446.                     if Input.UserInputType == Enum.UserInputType.MouseButton1 then
  447.                         Dragging = false
  448.                     end
  449.                 end)
  450.  
  451.                 UserInputService.InputBegan:Connect(function(Input)
  452.                     if Input.KeyCode == Enum.KeyCode.LeftControl then
  453.                         Slider.Value.ZIndex = 4
  454.                     end
  455.                 end)
  456.  
  457.                 UserInputService.InputEnded:Connect(function(Input)
  458.                     if Input.KeyCode == Enum.KeyCode.LeftControl then
  459.                         Slider.Value.ZIndex = 3
  460.                     end
  461.                 end)
  462.  
  463.                 UserInputService.InputChanged:Connect(function(Input)
  464.                     if Dragging and Input.UserInputType == Enum.UserInputType.MouseMovement then
  465.                         Sliding(Input)
  466.                     end
  467.                 end)
  468.  
  469.                 function SliderInit:AddToolTip(Name)
  470.                     if tostring(Name):gsub(" ", "") ~= "" then
  471.                         Slider.MouseEnter:Connect(function()
  472.                             Screen.ToolTip.Text = Name
  473.                             Screen.ToolTip.Size = UDim2.new(0,Screen.ToolTip.TextBounds.X + 5,0,Screen.ToolTip.TextBounds.Y + 5)
  474.                             Screen.ToolTip.Visible = true
  475.                         end)
  476.  
  477.                         Slider.MouseLeave:Connect(function()
  478.                             Screen.ToolTip.Visible = false
  479.                         end)
  480.                     end
  481.                 end
  482.  
  483.                 if Default == nil then
  484.                     function SliderInit:SetValue(Value)
  485.                         GlobalSliderValue = Value
  486.                         Slider.Slider.Bar.Size = UDim2.new(Value / Max,0,1,0)
  487.                         Slider.Value.PlaceholderText = Value
  488.                         Callback(Value)
  489.                     end
  490.                 else
  491.                     SetValue(DefaultLocal)
  492.                 end
  493.  
  494.                 function SliderInit:GetValue(Value)
  495.                     return GlobalSliderValue
  496.                 end
  497.  
  498.                 return SliderInit
  499.             end
  500.             function SectionInit:CreateDropdown(Name)
  501.                 local DropdownInit = {}
  502.                 local Dropdown = Folder.Dropdown:Clone()
  503.                 Dropdown.Name = Name .. " D"
  504.                 Dropdown.Parent = Section.Container
  505.  
  506.                 Dropdown.Title.Text = Name
  507.                 Dropdown.Title.Size = UDim2.new(1,0,0,Dropdown.Title.TextBounds.Y + 5)
  508.                 Dropdown.Container.Position = UDim2.new(0,0,0,Dropdown.Title.TextBounds.Y + 5)
  509.                 Dropdown.Size = UDim2.new(1,-10,0,Dropdown.Title.TextBounds.Y + 25)
  510.  
  511.                 local DropdownToggle = false
  512.  
  513.                 Dropdown.MouseButton1Click:Connect(function()
  514.                     DropdownToggle = not DropdownToggle
  515.                     if DropdownToggle then
  516.                         Dropdown.Size = UDim2.new(1,-10,0,Dropdown.Container.Holder.Container.ListLayout.AbsoluteContentSize.Y + Dropdown.Title.TextBounds.Y + 30)
  517.                         Dropdown.Container.Holder.Visible = true
  518.                     else
  519.                         Dropdown.Size = UDim2.new(1,-10,0,Dropdown.Title.TextBounds.Y + 25)
  520.                         Dropdown.Container.Holder.Visible = false
  521.                     end
  522.                 end)
  523.  
  524.                 function DropdownInit:AddToolTip(Name)
  525.                     if tostring(Name):gsub(" ", "") ~= "" then
  526.                         Dropdown.MouseEnter:Connect(function()
  527.                             Screen.ToolTip.Text = Name
  528.                             Screen.ToolTip.Size = UDim2.new(0,Screen.ToolTip.TextBounds.X + 5,0,Screen.ToolTip.TextBounds.Y + 5)
  529.                             Screen.ToolTip.Visible = true
  530.                         end)
  531.  
  532.                         Dropdown.MouseLeave:Connect(function()
  533.                             Screen.ToolTip.Visible = false
  534.                         end)
  535.                     end
  536.                 end
  537.  
  538.                 function DropdownInit:AddOption(Name, Callback)
  539.                     local OptionInit = {}
  540.                     local Option = Folder.Option:Clone()
  541.                     Option.Name = Name .. " O"
  542.                     Option.Parent = Dropdown.Container.Holder.Container
  543.  
  544.                     Option.Title.Text = Name
  545.                     Option.BackgroundColor3 = Config.Color
  546.                     Option.Size = UDim2.new(1,0,0,Option.Title.TextBounds.Y + 5)
  547.                     Dropdown.Container.Holder.Size = UDim2.new(1,-5,0,Dropdown.Container.Holder.Container.ListLayout.AbsoluteContentSize.Y)
  548.                     table.insert(Library.ColorTable, Option)
  549.  
  550.                     Option.MouseButton1Down:Connect(function()
  551.                         Option.BackgroundTransparency = 0
  552.                     end)
  553.  
  554.                     Option.MouseButton1Up:Connect(function()
  555.                         Option.BackgroundTransparency = 1
  556.                     end)
  557.  
  558.                     Option.MouseLeave:Connect(function()
  559.                         Option.BackgroundTransparency = 1
  560.                     end)
  561.  
  562.                     Option.MouseButton1Click:Connect(function()
  563.                         Dropdown.Container.Value.Text = Name
  564.                         Callback(Name)
  565.                     end)
  566.  
  567.                     function OptionInit:SetOption()
  568.                         Dropdown.Container.Value.Text = Name
  569.                         Callback(Name)
  570.                     end
  571.                     function OptionInit:Remove()
  572.                         Option:Destroy()
  573.                         Dropdown.Container.Holder.Size = UDim2.new(1,-5,0,Dropdown.Container.Holder.Container.ListLayout.AbsoluteContentSize.Y)
  574.                         Dropdown.Size = UDim2.new(1,-10,0,Dropdown.Container.Holder.Container.ListLayout.AbsoluteContentSize.Y + Dropdown.Title.TextBounds.Y + 30)
  575.                     end
  576.                     return OptionInit
  577.                 end
  578.                 function DropdownInit:ClearOptions()
  579.                     for _, Option in pairs(Dropdown.Container.Holder.Container:GetChildren()) do
  580.                         if Option:IsA("TextButton") then
  581.                             Option:Destroy()
  582.                         end
  583.                     end
  584.                     Dropdown.Container.Holder.Size = UDim2.new(1,-5,0,Dropdown.Container.Holder.Container.ListLayout.AbsoluteContentSize.Y)
  585.                     Dropdown.Size = UDim2.new(1,-10,0,Dropdown.Container.Holder.Container.ListLayout.AbsoluteContentSize.Y + Dropdown.Title.TextBounds.Y + 30)
  586.                 end
  587.                 function DropdownInit:GetOption()
  588.                     return Dropdown.Container.Value.Text
  589.                 end
  590.                 return DropdownInit
  591.             end
  592.             function SectionInit:CreateColorpicker(Name,Callback)
  593.                 local ColorpickerInit = {}
  594.  
  595.                 local Colorpicker = Folder.Colorpicker:Clone()
  596.                 local Pallete = Folder.Pallete:Clone()
  597.                 Colorpicker.Name = Name .. " CP"
  598.                 Colorpicker.Parent = Section.Container
  599.  
  600.                 Colorpicker.Title.Text = Name
  601.                 Colorpicker.Size = UDim2.new(1,-10,0,Colorpicker.Title.TextBounds.Y + 5)
  602.  
  603.                 Pallete.Name = Name .. " P"
  604.                 Pallete.Parent = Screen
  605.                 Pallete.Position = UDim2.new(0,Colorpicker.Color.AbsolutePosition.X - 129,0,Colorpicker.Color.AbsolutePosition.Y + 52)
  606.  
  607.                 local ColorTable = {
  608.                     Hue = 1,
  609.                     Saturation = 0,
  610.                     Value = 0
  611.                 }
  612.                 local ColorRender = nil
  613.                 local HueRender = nil
  614.                 local ColorpickerToggle = false
  615.  
  616.                 local function UpdateColor()
  617.                     Colorpicker.Color.BackgroundColor3 = Color3.fromHSV(ColorTable.Hue,ColorTable.Saturation,ColorTable.Value)
  618.                     Pallete.GradientPallete.BackgroundColor3 = Color3.fromHSV(ColorTable.Hue,1,1)
  619.                     Pallete.Input.InputBox.PlaceholderText = "RGB: " .. math.round(Colorpicker.Color.BackgroundColor3.R* 255) .. "," .. math.round(Colorpicker.Color.BackgroundColor3.G * 255) .. "," .. math.round(Colorpicker.Color.BackgroundColor3.B * 255)
  620.                     Callback(Colorpicker.Color.BackgroundColor3)
  621.                 end
  622.  
  623.                 Colorpicker.MouseButton1Click:Connect(function()
  624.                     ColorpickerToggle = not ColorpickerToggle
  625.                     if ColorpickerToggle then
  626.                         Pallete.Visible = true
  627.                         Pallete.Position = UDim2.new(0,Colorpicker.Color.AbsolutePosition.X - 129,0,Colorpicker.Color.AbsolutePosition.Y + 52)
  628.                     else
  629.                         Pallete.Visible = false
  630.                     end
  631.                 end)
  632.  
  633.                 Pallete.GradientPallete.InputBegan:Connect(function(Input)
  634.                     if Input.UserInputType == Enum.UserInputType.MouseButton1 then
  635.                         if ColorRender then
  636.                             ColorRender:Disconnect()
  637.                         end
  638.                         ColorRender = RunService.RenderStepped:Connect(function()
  639.                             local Mouse = UserInputService:GetMouseLocation()
  640.                             local ColorX = math.clamp(Mouse.X - Pallete.GradientPallete.AbsolutePosition.X, 0, Pallete.GradientPallete.AbsoluteSize.X) / Pallete.GradientPallete.AbsoluteSize.X
  641.                             local ColorY = math.clamp((Mouse.Y - 37) - Pallete.GradientPallete.AbsolutePosition.Y, 0, Pallete.GradientPallete.AbsoluteSize.Y) / Pallete.GradientPallete.AbsoluteSize.Y
  642.                             Pallete.GradientPallete.Dot.Position = UDim2.new(ColorX,0,ColorY,0)
  643.                             ColorTable.Saturation = ColorX
  644.                             ColorTable.Value = 1 - ColorY
  645.                             UpdateColor()
  646.                         end)
  647.                     end
  648.                 end)
  649.  
  650.                 Pallete.GradientPallete.InputEnded:Connect(function(Input)
  651.                     if Input.UserInputType == Enum.UserInputType.MouseButton1 then
  652.                         if ColorRender then
  653.                             ColorRender:Disconnect()
  654.                         end
  655.                     end
  656.                 end)
  657.  
  658.                 Pallete.ColorSlider.InputBegan:Connect(function(Input)
  659.                     if Input.UserInputType == Enum.UserInputType.MouseButton1 then
  660.                         if HueRender then
  661.                             HueRender:Disconnect()
  662.                         end
  663.                         HueRender = RunService.RenderStepped:Connect(function()
  664.                             local Mouse = UserInputService:GetMouseLocation()
  665.                             local HueX = math.clamp(Mouse.X - Pallete.ColorSlider.AbsolutePosition.X, 0, Pallete.ColorSlider.AbsoluteSize.X) / Pallete.ColorSlider.AbsoluteSize.X
  666.                             ColorTable.Hue = 1 - HueX
  667.                             UpdateColor()
  668.                         end)
  669.                     end
  670.                 end)
  671.  
  672.                 Pallete.ColorSlider.InputEnded:Connect(function(Input)
  673.                     if Input.UserInputType == Enum.UserInputType.MouseButton1 then
  674.                         if HueRender then
  675.                             HueRender:Disconnect()
  676.                         end
  677.                     end
  678.                 end)
  679.  
  680.                 function ColorpickerInit:UpdateColor(Color)
  681.                     local Hue, Saturation, Value = Color:ToHSV()
  682.                     Colorpicker.Color.BackgroundColor3 = Color3.fromHSV(Hue,Saturation,Value)
  683.                     Pallete.GradientPallete.BackgroundColor3 = Color3.fromHSV(Hue,1,1)
  684.                     Pallete.Input.InputBox.PlaceholderText = "RGB: " .. math.round(Colorpicker.Color.BackgroundColor3.R* 255) .. "," .. math.round(Colorpicker.Color.BackgroundColor3.G * 255) .. "," .. math.round(Colorpicker.Color.BackgroundColor3.B * 255)
  685.                     ColorTable = {
  686.                         Hue = Hue,
  687.                         Saturation = Saturation,
  688.                         Value = Value
  689.                     }
  690.                     Callback(Color)
  691.                 end
  692.  
  693.                 Pallete.Input.InputBox.FocusLost:Connect(function(Enter)
  694.                     if Enter then
  695.                         local ColorString = string.split(string.gsub(Pallete.Input.InputBox.Text," ", ""), ",")
  696.                         ColorpickerInit:UpdateColor(Color3.fromRGB(ColorString[1],ColorString[2],ColorString[3]))
  697.                         Pallete.Input.InputBox.Text = ""
  698.                     end
  699.                 end)
  700.  
  701.                 function ColorpickerInit:AddToolTip(Name)
  702.                     if tostring(Name):gsub(" ", "") ~= "" then
  703.                         Colorpicker.MouseEnter:Connect(function()
  704.                             Screen.ToolTip.Text = Name
  705.                             Screen.ToolTip.Size = UDim2.new(0,Screen.ToolTip.TextBounds.X + 5,0,Screen.ToolTip.TextBounds.Y + 5)
  706.                             Screen.ToolTip.Visible = true
  707.                         end)
  708.  
  709.                         Colorpicker.MouseLeave:Connect(function()
  710.                             Screen.ToolTip.Visible = false
  711.                         end)
  712.                     end
  713.                 end
  714.  
  715.                 return ColorpickerInit
  716.             end
  717.             return SectionInit
  718.         end
  719.         return TabInit
  720.     end
  721.     return WindowInit
  722. end
  723.  
  724. return Library
RAW Paste Data