xTh3_Hunter

Wally's UI Library (Edited)

Feb 3rd, 2020
493
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 46.20 KB | None | 0 0
  1. local library = {
  2.     count = 0,
  3.     queue = {},
  4.     callbacks = {},
  5.     rainbowtable = {},
  6.     toggled = true,
  7.     binds = {}
  8. }
  9. local defaults
  10. do
  11.     local dragger = {}
  12.     do
  13.         local mouse = game:service("Players").LocalPlayer:GetMouse()
  14.         dragger.new = function(obj)
  15.             spawn(function()
  16.                 local minitial
  17.                 local initial
  18.                 local isdragging
  19.                 obj.InputBegan:Connect(function(input)
  20.                     if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
  21.                         isdragging = true
  22.                         minitial = input.Position
  23.                         initial = obj.Position
  24.                         local con
  25.                         con = game:service("RunService").Stepped:Connect(function()
  26.                             if isdragging then
  27.                                 local delta = Vector3.new(mouse.X, mouse.Y, 0) - minitial
  28.                                 obj.Position = UDim2.new(initial.X.Scale, initial.X.Offset + delta.X, initial.Y.Scale, initial.Y.Offset + delta.Y)
  29.                             else
  30.                                 con:Disconnect()
  31.                             end
  32.                         end)
  33.                         input.Changed:Connect(function()
  34.                             if input.UserInputState == Enum.UserInputState.End then
  35.                                 isdragging = false
  36.                             end
  37.                         end)
  38.                     end
  39.                 end)
  40.             end)
  41.         end
  42.     end
  43.     local types = {}
  44.     do
  45.         types.__index = types
  46.         function types.window(name, options)
  47.             library.count = library.count + 1
  48.             local newWindow = library:Create("Frame", {
  49.                 Name = name,
  50.                 Size = UDim2.new(0, 190, 0, 30),
  51.                 BackgroundColor3 = options.topcolor,
  52.                 BorderSizePixel = 0,
  53.                 Parent = library.container,
  54.                 Position = UDim2.new(0, (15 + (200 * library.count) - 200), 0, 0),
  55.                 ZIndex = 3,
  56.                 library:Create("TextLabel", {
  57.                     Text = name,
  58.                     Size = UDim2.new(1, -10, 1, 0),
  59.                     Position = UDim2.new(0, 5, 0, 0),
  60.                     BackgroundTransparency = 1,
  61.                     Font = Enum.Font.Code,
  62.                     TextSize = options.titlesize,
  63.                     Font = options.titlefont,
  64.                     TextColor3 = options.titletextcolor,
  65.                     TextStrokeTransparency = library.options.titlestroke,
  66.                     TextStrokeColor3 = library.options.titlestrokecolor,
  67.                     ZIndex = 3
  68.                 }),
  69.                 library:Create("TextButton", {
  70.                     Size = UDim2.new(0, 30, 0, 30),
  71.                     Position = UDim2.new(1, -35, 0, 0),
  72.                     BackgroundTransparency = 1,
  73.                     Text = "-",
  74.                     TextSize = options.titlesize,
  75.                     Font = options.titlefont,
  76.                     Name = "window_toggle",
  77.                     TextColor3 = options.titletextcolor,
  78.                     TextStrokeTransparency = library.options.titlestroke,
  79.                     TextStrokeColor3 = library.options.titlestrokecolor,
  80.                     ZIndex = 3
  81.                 }),
  82.                 library:Create("Frame", {
  83.                     Name = "Underline",
  84.                     Size = UDim2.new(1, 0, 0, 2),
  85.                     Position = UDim2.new(0, 0, 1, -2),
  86.                     BackgroundColor3 = (options.underlinecolor ~= "rainbow" and options.underlinecolor or Color3.new()),
  87.                     BorderSizePixel = 0,
  88.                     ZIndex = 3
  89.                 }),
  90.                 library:Create("Frame", {
  91.                     Name = "container",
  92.                     Position = UDim2.new(0, 0, 1, 0),
  93.                     Size = UDim2.new(1, 0, 0, 0),
  94.                     BorderSizePixel = 0,
  95.                     BackgroundColor3 = options.bgcolor,
  96.                     ClipsDescendants = false,
  97.                     library:Create("UIListLayout", {
  98.                         Name = "List",
  99.                         SortOrder = Enum.SortOrder.LayoutOrder
  100.                     })
  101.                 })
  102.             })
  103.             if options.underlinecolor == "rainbow" then
  104.                 table.insert(library.rainbowtable, newWindow:FindFirstChild("Underline"))
  105.             end
  106.             local window = setmetatable({
  107.                 count = 0,
  108.                 object = newWindow,
  109.                 container = newWindow.container,
  110.                 toggled = true,
  111.                 flags = {}
  112.             }, types)
  113.             table.insert(library.queue, {
  114.                 w = window.object,
  115.                 p = window.object.Position
  116.             })
  117.             newWindow:FindFirstChild("window_toggle").MouseButton1Click:connect(function()
  118.                 window.toggled = not window.toggled
  119.                 newWindow:FindFirstChild("window_toggle").Text = (window.toggled and "+" or "-")
  120.                 if (not window.toggled) then
  121.                     window.container.ClipsDescendants = true
  122.                 end
  123.                 wait()
  124.                 local y = 0
  125.                 for i, v in next, window.container:GetChildren() do
  126.                     if (not v:IsA("UIListLayout")) then
  127.                         y = y + v.AbsoluteSize.Y
  128.                     end
  129.                 end
  130.                 local targetSize = window.toggled and UDim2.new(1, 0, 0, y + 5) or UDim2.new(1, 0, 0, 0)
  131.                 local targetDirection = window.toggled and "In" or "Out"
  132.                 window.container:TweenSize(targetSize, targetDirection, "Quad", 0.15, true)
  133.                 wait(.15)
  134.                 if window.toggled then
  135.                     window.container.ClipsDescendants = false
  136.                 end
  137.             end)
  138.             return window
  139.         end
  140.         function types:Resize()
  141.             local y = 0
  142.             for i, v in next, self.container:GetChildren() do
  143.                 if (not v:IsA("UIListLayout")) then
  144.                     y = y + v.AbsoluteSize.Y
  145.                 end
  146.             end
  147.             self.container.Size = UDim2.new(1, 0, 0, y + 5)
  148.         end
  149.         function types:GetOrder()
  150.             local c = 0
  151.             for i, v in next, self.container:GetChildren() do
  152.                 if (not v:IsA("UIListLayout")) then
  153.                     c = c + 1
  154.                 end
  155.             end
  156.             return c
  157.         end
  158.         function types:Toggle(name, options, callback)
  159.             local default = options.default or false
  160.             local location = options.location or self.flags
  161.             local flag = options.flag or ""
  162.             local callback = callback or function()
  163.             end
  164.             location[flag] = default
  165.             local check = library:Create("Frame", {
  166.                 BackgroundTransparency = 1,
  167.                 Size = UDim2.new(1, 0, 0, 25),
  168.                 LayoutOrder = self:GetOrder(),
  169.                 library:Create("TextLabel", {
  170.                     Name = name,
  171.                     Text = "\r" .. name,
  172.                     BackgroundTransparency = 1,
  173.                     TextColor3 = library.options.textcolor,
  174.                     Position = UDim2.new(0, 5, 0, 0),
  175.                     Size = UDim2.new(1, -5, 1, 0),
  176.                     TextXAlignment = Enum.TextXAlignment.Left,
  177.                     Font = library.options.font,
  178.                     TextSize = library.options.fontsize,
  179.                     TextStrokeTransparency = library.options.textstroke,
  180.                     TextStrokeColor3 = library.options.strokecolor,
  181.                     library:Create("TextButton", {
  182.                         Text = (location[flag] and utf8.char(10003) or ""),
  183.                         Font = library.options.font,
  184.                         TextSize = library.options.fontsize,
  185.                         Name = "Checkmark",
  186.                         Size = UDim2.new(0, 20, 0, 20),
  187.                         Position = UDim2.new(1, -25, 0, 4),
  188.                         TextColor3 = library.options.textcolor,
  189.                         BackgroundColor3 = library.options.bgcolor,
  190.                         BorderColor3 = library.options.bordercolor,
  191.                         TextStrokeTransparency = library.options.textstroke,
  192.                         TextStrokeColor3 = library.options.strokecolor
  193.                     })
  194.                 }),
  195.                 Parent = self.container
  196.             })
  197.             local function click(t)
  198.                 location[flag] = not location[flag]
  199.                 callback(location[flag])
  200.                 check:FindFirstChild(name).Checkmark.Text = location[flag] and utf8.char(10003) or ""
  201.             end
  202.             check:FindFirstChild(name).Checkmark.MouseButton1Click:connect(click)
  203.             library.callbacks[flag] = click
  204.             if location[flag] == true then
  205.                 callback(location[flag])
  206.             end
  207.             self:Resize()
  208.             return {
  209.                 Set = function(self, b)
  210.                     location[flag] = b
  211.                     callback(location[flag])
  212.                     check:FindFirstChild(name).Checkmark.Text = location[flag] and utf8.char(10003) or ""
  213.                 end
  214.             }
  215.         end
  216.         function types:Button(name, callback)
  217.             callback = callback or function()
  218.             end
  219.             local check = library:Create("Frame", {
  220.                 BackgroundTransparency = 1,
  221.                 Size = UDim2.new(1, 0, 0, 25),
  222.                 LayoutOrder = self:GetOrder(),
  223.                 library:Create("TextButton", {
  224.                     Name = name,
  225.                     Text = name,
  226.                     BackgroundColor3 = library.options.btncolor,
  227.                     BorderColor3 = library.options.bordercolor,
  228.                     TextStrokeTransparency = library.options.textstroke,
  229.                     TextStrokeColor3 = library.options.strokecolor,
  230.                     TextColor3 = library.options.textcolor,
  231.                     Position = UDim2.new(0, 5, 0, 5),
  232.                     Size = UDim2.new(1, -10, 0, 20),
  233.                     Font = library.options.font,
  234.                     TextSize = library.options.fontsize
  235.                 }),
  236.                 Parent = self.container
  237.             })
  238.             check:FindFirstChild(name).MouseButton1Click:connect(callback)
  239.             self:Resize()
  240.             return {
  241.                 Fire = function()
  242.                     callback()
  243.                 end
  244.             }
  245.         end
  246.         function types:Box(name, options, callback)
  247.             local type = options.type or ""
  248.             local default = options.default or ""
  249.             local data = options.data
  250.             local location = options.location or self.flags
  251.             local flag = options.flag or ""
  252.             local callback = callback or function()
  253.             end
  254.             local min = options.min or 0
  255.             local max = options.max or 9e9
  256.             if type == "number" and (not tonumber(default)) then
  257.                 location[flag] = default
  258.             else
  259.                 location[flag] = ""
  260.                 default = ""
  261.             end
  262.             local check = library:Create("Frame", {
  263.                 BackgroundTransparency = 1,
  264.                 Size = UDim2.new(1, 0, 0, 25),
  265.                 LayoutOrder = self:GetOrder(),
  266.                 library:Create("TextLabel", {
  267.                     Name = name,
  268.                     Text = "\r" .. name,
  269.                     BackgroundTransparency = 1,
  270.                     TextColor3 = library.options.textcolor,
  271.                     TextStrokeTransparency = library.options.textstroke,
  272.                     TextStrokeColor3 = library.options.strokecolor,
  273.                     Position = UDim2.new(0, 5, 0, 0),
  274.                     Size = UDim2.new(1, -5, 1, 0),
  275.                     TextXAlignment = Enum.TextXAlignment.Left,
  276.                     Font = library.options.font,
  277.                     TextSize = library.options.fontsize,
  278.                     library:Create("TextBox", {
  279.                         TextStrokeTransparency = library.options.textstroke,
  280.                         TextStrokeColor3 = library.options.strokecolor,
  281.                         Text = tostring(default),
  282.                         Font = library.options.font,
  283.                         TextSize = library.options.fontsize,
  284.                         Name = "Box",
  285.                         Size = UDim2.new(0, 60, 0, 20),
  286.                         Position = UDim2.new(1, -65, 0, 3),
  287.                         TextColor3 = library.options.textcolor,
  288.                         BackgroundColor3 = library.options.boxcolor,
  289.                         BorderColor3 = library.options.bordercolor,
  290.                         PlaceholderColor3 = library.options.placeholdercolor
  291.                     })
  292.                 }),
  293.                 Parent = self.container
  294.             })
  295.             local box = check:FindFirstChild(name):FindFirstChild("Box")
  296.             box.FocusLost:connect(function(e)
  297.                 local old = location[flag]
  298.                 if type == "number" then
  299.                     local num = tonumber(box.Text)
  300.                     if (not num) then
  301.                         box.Text = tonumber(location[flag])
  302.                     else
  303.                         location[flag] = math.clamp(num, min, max)
  304.                         box.Text = tonumber(location[flag])
  305.                     end
  306.                 else
  307.                     location[flag] = tostring(box.Text)
  308.                 end
  309.                 callback(location[flag], old, e)
  310.             end)
  311.             if type == "number" then
  312.                 box:GetPropertyChangedSignal("Text"):connect(function()
  313.                     box.Text = string.gsub(box.Text, "[%a+]", "")
  314.                 end)
  315.             end
  316.             self:Resize()
  317.             return box
  318.         end
  319.         function types:Bind(name, options, callback)
  320.             local location = options.location or self.flags
  321.             local keyboardOnly = options.kbonly or false
  322.             local flag = options.flag or ""
  323.             local callback = callback or function()
  324.             end
  325.             local default = options.default
  326.             location[flag] = default
  327.             local banned = {
  328.                 Return = true,
  329.                 Space = true,
  330.                 Tab = true,
  331.                 Unknown = true
  332.             }
  333.             local shortNames = {
  334.                 RightControl = "RightCtrl",
  335.                 LeftControl = "LeftCtrl",
  336.                 LeftShift = "LShift",
  337.                 RightShift = "RShift",
  338.                 MouseButton1 = "Mouse1",
  339.                 MouseButton2 = "Mouse2"
  340.             }
  341.             local allowed = {
  342.                 MouseButton1 = true,
  343.                 MouseButton2 = true
  344.             }
  345.             local nm = (default and (shortNames[default.Name] or default.Name) or "None")
  346.             local check = library:Create("Frame", {
  347.                 BackgroundTransparency = 1,
  348.                 Size = UDim2.new(1, 0, 0, 30),
  349.                 LayoutOrder = self:GetOrder(),
  350.                 library:Create("TextLabel", {
  351.                     Name = name,
  352.                     Text = "\r" .. name,
  353.                     BackgroundTransparency = 1,
  354.                     TextColor3 = library.options.textcolor,
  355.                     Position = UDim2.new(0, 5, 0, 0),
  356.                     Size = UDim2.new(1, -5, 1, 0),
  357.                     TextXAlignment = Enum.TextXAlignment.Left,
  358.                     Font = library.options.font,
  359.                     TextSize = library.options.fontsize,
  360.                     TextStrokeTransparency = library.options.textstroke,
  361.                     TextStrokeColor3 = library.options.strokecolor,
  362.                     BorderColor3 = library.options.bordercolor,
  363.                     BorderSizePixel = 1,
  364.                     library:Create("TextButton", {
  365.                         Name = "Keybind",
  366.                         Text = nm,
  367.                         TextStrokeTransparency = library.options.textstroke,
  368.                         TextStrokeColor3 = library.options.strokecolor,
  369.                         Font = library.options.font,
  370.                         TextSize = library.options.fontsize,
  371.                         Size = UDim2.new(0, 60, 0, 20),
  372.                         Position = UDim2.new(1, -65, 0, 5),
  373.                         TextColor3 = library.options.textcolor,
  374.                         BackgroundColor3 = library.options.bgcolor,
  375.                         BorderColor3 = library.options.bordercolor,
  376.                         BorderSizePixel = 1
  377.                     })
  378.                 }),
  379.                 Parent = self.container
  380.             })
  381.             local button = check:FindFirstChild(name).Keybind
  382.             button.MouseButton1Click:connect(function()
  383.                 library.binding = true
  384.                 button.Text = "..."
  385.                 local a, b = game:GetService("UserInputService").InputBegan:wait()
  386.                 local name = tostring(a.KeyCode.Name)
  387.                 local typeName = tostring(a.UserInputType.Name)
  388.                 if (a.UserInputType ~= Enum.UserInputType.Keyboard and (allowed[a.UserInputType.Name]) and (not keyboardOnly)) or (a.KeyCode and (not banned[a.KeyCode.Name])) then
  389.                     local name = (a.UserInputType ~= Enum.UserInputType.Keyboard and a.UserInputType.Name or a.KeyCode.Name)
  390.                     location[flag] = (a)
  391.                     button.Text = shortNames[name] or name
  392.                 else
  393.                     if (location[flag]) then
  394.                         if (not pcall(function()
  395.                             return location[flag].UserInputType
  396.                         end)) then
  397.                             local name = tostring(location[flag])
  398.                             button.Text = shortNames[name] or name
  399.                         else
  400.                             local name = (location[flag].UserInputType ~= Enum.UserInputType.Keyboard and location[flag].UserInputType.Name or location[flag].KeyCode.Name)
  401.                             button.Text = shortNames[name] or name
  402.                         end
  403.                     end
  404.                 end
  405.                 wait(0.1)
  406.                 library.binding = false
  407.             end)
  408.             if location[flag] then
  409.                 button.Text = shortNames[tostring(location[flag].Name)] or tostring(location[flag].Name)
  410.             end
  411.             library.binds[flag] = {
  412.                 location = location,
  413.                 callback = callback
  414.             }
  415.             self:Resize()
  416.         end
  417.         function types:Section(name)
  418.             local order = self:GetOrder()
  419.             local determinedSize = UDim2.new(1, 0, 0, 25)
  420.             local determinedPos = UDim2.new(0, 0, 0, 4)
  421.             local secondarySize = UDim2.new(1, 0, 0, 20)
  422.             if order == 0 then
  423.                 determinedSize = UDim2.new(1, 0, 0, 21)
  424.                 determinedPos = UDim2.new(0, 0, 0, -1)
  425.                 secondarySize = nil
  426.             end
  427.             local check = library:Create("Frame", {
  428.                 Name = "Section",
  429.                 BackgroundTransparency = 1,
  430.                 Size = determinedSize,
  431.                 BackgroundColor3 = library.options.sectncolor,
  432.                 BorderSizePixel = 0,
  433.                 LayoutOrder = order,
  434.                 library:Create("TextLabel", {
  435.                     Name = "section_lbl",
  436.                     Text = name,
  437.                     BackgroundTransparency = 0,
  438.                     BorderSizePixel = 0,
  439.                     BackgroundColor3 = library.options.sectncolor,
  440.                     TextColor3 = library.options.textcolor,
  441.                     Position = determinedPos,
  442.                     Size = (secondarySize or UDim2.new(1, 0, 1, 0)),
  443.                     Font = library.options.font,
  444.                     TextSize = library.options.fontsize,
  445.                     TextStrokeTransparency = library.options.textstroke,
  446.                     TextStrokeColor3 = library.options.strokecolor
  447.                 }),
  448.                 Parent = self.container
  449.             })
  450.             self:Resize()
  451.         end
  452.         function types:Slider(name, options, callback)
  453.             local default = options.default or options.min
  454.             local min = options.min or 0
  455.             local max = options.max or 1
  456.             local location = options.location or self.flags
  457.             local precise = options.precise or false
  458.             local flag = options.flag or ""
  459.             local callback = callback or function()
  460.             end
  461.             location[flag] = default
  462.             local check = library:Create("Frame", {
  463.                 BackgroundTransparency = 1,
  464.                 Size = UDim2.new(1, 0, 0, 25),
  465.                 LayoutOrder = self:GetOrder(),
  466.                 library:Create("TextLabel", {
  467.                     Name = name,
  468.                     TextStrokeTransparency = library.options.textstroke,
  469.                     TextStrokeColor3 = library.options.strokecolor,
  470.                     Text = "\r" .. name,
  471.                     BackgroundTransparency = 1,
  472.                     TextColor3 = library.options.textcolor,
  473.                     Position = UDim2.new(0, 5, 0, 2),
  474.                     Size = UDim2.new(1, -5, 1, 0),
  475.                     TextXAlignment = Enum.TextXAlignment.Left,
  476.                     Font = library.options.font,
  477.                     TextSize = library.options.fontsize,
  478.                     library:Create("Frame", {
  479.                         Name = "Container",
  480.                         Size = UDim2.new(0, 60, 0, 20),
  481.                         Position = UDim2.new(1, -65, 0, 3),
  482.                         BackgroundTransparency = 1,
  483.                         BorderSizePixel = 0,
  484.                         library:Create("TextLabel", {
  485.                             Name = "ValueLabel",
  486.                             Text = default,
  487.                             BackgroundTransparency = 1,
  488.                             TextColor3 = library.options.textcolor,
  489.                             Position = UDim2.new(0, -10, 0, 0),
  490.                             Size = UDim2.new(0, 1, 1, 0),
  491.                             TextXAlignment = Enum.TextXAlignment.Right,
  492.                             Font = library.options.font,
  493.                             TextSize = library.options.fontsize,
  494.                             TextStrokeTransparency = library.options.textstroke,
  495.                             TextStrokeColor3 = library.options.strokecolor
  496.                         }),
  497.                         library:Create("TextButton", {
  498.                             Name = "Button",
  499.                             Size = UDim2.new(0, 5, 1, -2),
  500.                             Position = UDim2.new(0, 0, 0, 1),
  501.                             AutoButtonColor = false,
  502.                             Text = "",
  503.                             BackgroundColor3 = Color3.fromRGB(20, 20, 20),
  504.                             BorderSizePixel = 0,
  505.                             ZIndex = 2,
  506.                             TextStrokeTransparency = library.options.textstroke,
  507.                             TextStrokeColor3 = library.options.strokecolor
  508.                         }),
  509.                         library:Create("Frame", {
  510.                             Name = "Line",
  511.                             BackgroundTransparency = 0,
  512.                             Position = UDim2.new(0, 0, 0.5, 0),
  513.                             Size = UDim2.new(1, 0, 0, 1),
  514.                             BackgroundColor3 = Color3.fromRGB(255, 255, 255),
  515.                             BorderSizePixel = 0
  516.                         })
  517.                     })
  518.                 }),
  519.                 Parent = self.container
  520.             })
  521.             local overlay = check:FindFirstChild(name)
  522.             local renderSteppedConnection
  523.             local inputBeganConnection
  524.             local inputEndedConnection
  525.             local mouseLeaveConnection
  526.             local mouseDownConnection
  527.             local mouseUpConnection
  528.             check:FindFirstChild(name).Container.MouseEnter:connect(function()
  529.                 local function update()
  530.                     if renderSteppedConnection then
  531.                         renderSteppedConnection:disconnect()
  532.                     end
  533.                     renderSteppedConnection = game:GetService("RunService").RenderStepped:connect(function()
  534.                         local mouse = game:GetService("UserInputService"):GetMouseLocation()
  535.                         local percent = (mouse.X - overlay.Container.AbsolutePosition.X) / (overlay.Container.AbsoluteSize.X)
  536.                         percent = math.clamp(percent, 0, 1)
  537.                         percent = tonumber(string.format("%.2f", percent))
  538.                         overlay.Container.Button.Position = UDim2.new(math.clamp(percent, 0, 0.99), 0, 0, 1)
  539.                         local num = min + (max - min) * percent
  540.                         local value = (precise and num or math.floor(num))
  541.                         overlay.Container.ValueLabel.Text = value
  542.                         callback(tonumber(value))
  543.                         location[flag] = tonumber(value)
  544.                     end)
  545.                 end
  546.                 local function disconnect()
  547.                     if renderSteppedConnection then
  548.                         renderSteppedConnection:disconnect()
  549.                     end
  550.                     if inputBeganConnection then
  551.                         inputBeganConnection:disconnect()
  552.                     end
  553.                     if inputEndedConnection then
  554.                         inputEndedConnection:disconnect()
  555.                     end
  556.                     if mouseLeaveConnection then
  557.                         mouseLeaveConnection:disconnect()
  558.                     end
  559.                     if mouseUpConnection then
  560.                         mouseUpConnection:disconnect()
  561.                     end
  562.                 end
  563.                 inputBeganConnection = check:FindFirstChild(name).Container.InputBegan:connect(function(input)
  564.                     if input.UserInputType == Enum.UserInputType.MouseButton1 then
  565.                         update()
  566.                     end
  567.                 end)
  568.                 inputEndedConnection = check:FindFirstChild(name).Container.InputEnded:connect(function(input)
  569.                     if input.UserInputType == Enum.UserInputType.MouseButton1 then
  570.                         disconnect()
  571.                     end
  572.                 end)
  573.                 mouseDownConnection = check:FindFirstChild(name).Container.Button.MouseButton1Down:connect(update)
  574.                 mouseUpConnection = game:GetService("UserInputService").InputEnded:connect(function(a, b)
  575.                     if a.UserInputType == Enum.UserInputType.MouseButton1 and (mouseDownConnection.Connected) then
  576.                         disconnect()
  577.                     end
  578.                 end)
  579.             end)
  580.             if default ~= min then
  581.                 local percent = 1 - ((max - default) / (max - min))
  582.                 local number = default
  583.                 number = tonumber(string.format("%.2f", number))
  584.                 if (not precise) then
  585.                     number = math.floor(number)
  586.                 end
  587.                 overlay.Container.Button.Position = UDim2.new(math.clamp(percent, 0, 0.99), 0, 0, 1)
  588.                 overlay.Container.ValueLabel.Text = number
  589.             end
  590.             self:Resize()
  591.             return {
  592.                 Set = function(self, value)
  593.                     local percent = 1 - ((max - value) / (max - min))
  594.                     local number = value
  595.                     number = tonumber(string.format("%.2f", number))
  596.                     if (not precise) then
  597.                         number = math.floor(number)
  598.                     end
  599.                     overlay.Container.Button.Position = UDim2.new(math.clamp(percent, 0, 0.99), 0, 0, 1)
  600.                     overlay.Container.ValueLabel.Text = number
  601.                     location[flag] = number
  602.                     callback(number)
  603.                 end
  604.             }
  605.         end
  606.         function types:SearchBox(text, options, callback)
  607.             local list = options.list or {}
  608.             local flag = options.flag or ""
  609.             local location = options.location or self.flags
  610.             local callback = callback or function()
  611.             end
  612.             local busy = false
  613.             local box = library:Create("Frame", {
  614.                 BackgroundTransparency = 1,
  615.                 Size = UDim2.new(1, 0, 0, 25),
  616.                 LayoutOrder = self:GetOrder(),
  617.                 library:Create("TextBox", {
  618.                     Text = "",
  619.                     PlaceholderText = text,
  620.                     PlaceholderColor3 = Color3.fromRGB(60, 60, 60),
  621.                     Font = library.options.font,
  622.                     TextSize = library.options.fontsize,
  623.                     Name = "Box",
  624.                     Size = UDim2.new(1, -10, 0, 20),
  625.                     Position = UDim2.new(0, 5, 0, 4),
  626.                     TextColor3 = library.options.textcolor,
  627.                     BackgroundColor3 = library.options.dropcolor,
  628.                     BorderColor3 = library.options.bordercolor,
  629.                     TextStrokeTransparency = library.options.textstroke,
  630.                     TextStrokeColor3 = library.options.strokecolor,
  631.                     library:Create("ScrollingFrame", {
  632.                         Position = UDim2.new(0, 0, 1, 1),
  633.                         Name = "Container",
  634.                         BackgroundColor3 = library.options.btncolor,
  635.                         ScrollBarThickness = 0,
  636.                         BorderSizePixel = 0,
  637.                         BorderColor3 = library.options.bordercolor,
  638.                         Size = UDim2.new(1, 0, 0, 0),
  639.                         library:Create("UIListLayout", {
  640.                             Name = "ListLayout",
  641.                             SortOrder = Enum.SortOrder.LayoutOrder
  642.                         }),
  643.                         ZIndex = 2
  644.                     })
  645.                 }),
  646.                 Parent = self.container
  647.             })
  648.             local function rebuild(text)
  649.                 box:FindFirstChild("Box").Container.ScrollBarThickness = 0
  650.                 for i, child in next, box:FindFirstChild("Box").Container:GetChildren() do
  651.                     if (not child:IsA("UIListLayout")) then
  652.                         child:Destroy()
  653.                     end
  654.                 end
  655.                 if #text > 0 then
  656.                     for i, v in next, list do
  657.                         if string.sub(string.lower(v), 1, string.len(text)) == string.lower(text) then
  658.                             local button = library:Create("TextButton", {
  659.                                 Text = v,
  660.                                 Font = library.options.font,
  661.                                 TextSize = library.options.fontsize,
  662.                                 TextColor3 = library.options.textcolor,
  663.                                 BorderColor3 = library.options.bordercolor,
  664.                                 TextStrokeTransparency = library.options.textstroke,
  665.                                 TextStrokeColor3 = library.options.strokecolor,
  666.                                 Parent = box:FindFirstChild("Box").Container,
  667.                                 Size = UDim2.new(1, 0, 0, 20),
  668.                                 LayoutOrder = i,
  669.                                 BackgroundColor3 = library.options.btncolor,
  670.                                 ZIndex = 2
  671.                             })
  672.                             button.MouseButton1Click:connect(function()
  673.                                 busy = true
  674.                                 box:FindFirstChild("Box").Text = button.Text
  675.                                 wait()
  676.                                 busy = false
  677.                                 location[flag] = button.Text
  678.                                 callback(location[flag])
  679.                                 box:FindFirstChild("Box").Container.ScrollBarThickness = 0
  680.                                 for i, child in next, box:FindFirstChild("Box").Container:GetChildren() do
  681.                                     if (not child:IsA("UIListLayout")) then
  682.                                         child:Destroy()
  683.                                     end
  684.                                 end
  685.                                 box:FindFirstChild("Box").Container:TweenSize(UDim2.new(1, 0, 0, 0), "Out", "Quad", 0.25, true)
  686.                             end)
  687.                         end
  688.                     end
  689.                 end
  690.                 local c = box:FindFirstChild("Box").Container:GetChildren()
  691.                 local ry = (20 * (#c)) - 20
  692.                 local y = math.clamp((20 * (#c)) - 20, 0, 100)
  693.                 if ry > 100 then
  694.                     box:FindFirstChild("Box").Container.ScrollBarThickness = 5
  695.                 end
  696.                 box:FindFirstChild("Box").Container:TweenSize(UDim2.new(1, 0, 0, y), "Out", "Quad", 0.25, true)
  697.                 box:FindFirstChild("Box").Container.CanvasSize = UDim2.new(1, 0, 0, (20 * (#c)) - 20)
  698.             end
  699.             box:FindFirstChild("Box"):GetPropertyChangedSignal("Text"):connect(function()
  700.                 if (not busy) then
  701.                     rebuild(box:FindFirstChild("Box").Text)
  702.                 end
  703.             end)
  704.             local function reload(new_list)
  705.                 list = new_list
  706.                 rebuild("")
  707.             end
  708.             self:Resize()
  709.             return reload, box:FindFirstChild("Box")
  710.         end
  711.         function types:Dropdown(name, options, callback)
  712.             local location = options.location or self.flags
  713.             local flag = options.flag or ""
  714.             local callback = callback or function()
  715.             end
  716.             local list = options.list or {}
  717.             location[flag] = list[1]
  718.             local check = library:Create("Frame", {
  719.                 BackgroundTransparency = 1,
  720.                 Size = UDim2.new(1, 0, 0, 25),
  721.                 BackgroundColor3 = Color3.fromRGB(25, 25, 25),
  722.                 BorderSizePixel = 0,
  723.                 LayoutOrder = self:GetOrder(),
  724.                 library:Create("Frame", {
  725.                     Name = "dropdown_lbl",
  726.                     BackgroundTransparency = 0,
  727.                     BackgroundColor3 = library.options.dropcolor,
  728.                     Position = UDim2.new(0, 5, 0, 4),
  729.                     BorderColor3 = library.options.bordercolor,
  730.                     Size = UDim2.new(1, -10, 0, 20),
  731.                     library:Create("TextLabel", {
  732.                         Name = "Selection",
  733.                         Size = UDim2.new(1, 0, 1, 0),
  734.                         Text = list[1],
  735.                         TextColor3 = library.options.textcolor,
  736.                         BackgroundTransparency = 1,
  737.                         Font = library.options.font,
  738.                         TextSize = library.options.fontsize,
  739.                         TextStrokeTransparency = library.options.textstroke,
  740.                         TextStrokeColor3 = library.options.strokecolor
  741.                     }),
  742.                     library:Create("TextButton", {
  743.                         Name = "drop",
  744.                         BackgroundTransparency = 1,
  745.                         Size = UDim2.new(0, 20, 1, 0),
  746.                         Position = UDim2.new(1, -25, 0, 0),
  747.                         Text = "v",
  748.                         TextColor3 = library.options.textcolor,
  749.                         Font = library.options.font,
  750.                         TextSize = library.options.fontsize,
  751.                         TextStrokeTransparency = library.options.textstroke,
  752.                         TextStrokeColor3 = library.options.strokecolor
  753.                     })
  754.                 }),
  755.                 Parent = self.container
  756.             })
  757.             local button = check:FindFirstChild("dropdown_lbl").drop
  758.             local input
  759.             button.MouseButton1Click:connect(function()
  760.                 if (input and input.Connected) then
  761.                     return
  762.                 end
  763.                 check:FindFirstChild("dropdown_lbl"):WaitForChild("Selection").TextColor3 = Color3.fromRGB(60, 60, 60)
  764.                 check:FindFirstChild("dropdown_lbl"):WaitForChild("Selection").Text = name
  765.                 local c = 0
  766.                 for i, v in next, list do
  767.                     c = c + 20
  768.                 end
  769.                 local size = UDim2.new(1, 0, 0, c)
  770.                 local clampedSize
  771.                 local scrollSize = 0
  772.                 if size.Y.Offset > 100 then
  773.                     clampedSize = UDim2.new(1, 0, 0, 100)
  774.                     scrollSize = 5
  775.                 end
  776.                 local goSize = (clampedSize ~= nil and clampedSize) or size
  777.                 local container = library:Create("ScrollingFrame", {
  778.                     TopImage = "rbxasset://textures/ui/Scroll/scroll-middle.png",
  779.                     BottomImage = "rbxasset://textures/ui/Scroll/scroll-middle.png",
  780.                     Name = "DropContainer",
  781.                     Parent = check:FindFirstChild("dropdown_lbl"),
  782.                     Size = UDim2.new(1, 0, 0, 0),
  783.                     BackgroundColor3 = library.options.bgcolor,
  784.                     BorderColor3 = library.options.bordercolor,
  785.                     Position = UDim2.new(0, 0, 1, 0),
  786.                     ScrollBarThickness = scrollSize,
  787.                     CanvasSize = UDim2.new(0, 0, 0, size.Y.Offset),
  788.                     ZIndex = 5,
  789.                     ClipsDescendants = true,
  790.                     library:Create("UIListLayout", {
  791.                         Name = "List",
  792.                         SortOrder = Enum.SortOrder.LayoutOrder
  793.                     })
  794.                 })
  795.                 for i, v in next, list do
  796.                     local btn = library:Create("TextButton", {
  797.                         Size = UDim2.new(1, 0, 0, 20),
  798.                         BackgroundColor3 = library.options.btncolor,
  799.                         BorderColor3 = library.options.bordercolor,
  800.                         Text = v,
  801.                         Font = library.options.font,
  802.                         TextSize = library.options.fontsize,
  803.                         LayoutOrder = i,
  804.                         Parent = container,
  805.                         ZIndex = 5,
  806.                         TextColor3 = library.options.textcolor,
  807.                         TextStrokeTransparency = library.options.textstroke,
  808.                         TextStrokeColor3 = library.options.strokecolor
  809.                     })
  810.                     btn.MouseButton1Click:connect(function()
  811.                         check:FindFirstChild("dropdown_lbl"):WaitForChild("Selection").TextColor3 = library.options.textcolor
  812.                         check:FindFirstChild("dropdown_lbl"):WaitForChild("Selection").Text = btn.Text
  813.                         location[flag] = tostring(btn.Text)
  814.                         callback(location[flag])
  815.                         game:GetService("Debris"):AddItem(container, 0)
  816.                         input:disconnect()
  817.                     end)
  818.                 end
  819.                 container:TweenSize(goSize, "Out", "Quad", 0.15, true)
  820.                 local function isInGui(frame)
  821.                     local mloc = game:GetService("UserInputService"):GetMouseLocation()
  822.                     local mouse = Vector2.new(mloc.X, mloc.Y - 36)
  823.                     local x1, x2 = frame.AbsolutePosition.X, frame.AbsolutePosition.X + frame.AbsoluteSize.X
  824.                     local y1, y2 = frame.AbsolutePosition.Y, frame.AbsolutePosition.Y + frame.AbsoluteSize.Y
  825.                     return (mouse.X >= x1 and mouse.X <= x2) and (mouse.Y >= y1 and mouse.Y <= y2)
  826.                 end
  827.                 input = game:GetService("UserInputService").InputBegan:connect(function(a)
  828.                     if a.UserInputType == Enum.UserInputType.MouseButton1 and (not isInGui(container)) then
  829.                         check:FindFirstChild("dropdown_lbl"):WaitForChild("Selection").TextColor3 = library.options.textcolor
  830.                         check:FindFirstChild("dropdown_lbl"):WaitForChild("Selection").Text = location[flag]
  831.                         container:TweenSize(UDim2.new(1, 0, 0, 0), "In", "Quad", 0.15, true)
  832.                         wait(0.15)
  833.                         game:GetService("Debris"):AddItem(container, 0)
  834.                         input:disconnect()
  835.                     end
  836.                 end)
  837.             end)
  838.             self:Resize()
  839.             local function reload(self, array)
  840.                 options = array
  841.                 location[flag] = array[1]
  842.                 pcall(function()
  843.                     input:disconnect()
  844.                 end)
  845.                 check:WaitForChild("dropdown_lbl").Selection.Text = location[flag]
  846.                 check:FindFirstChild("dropdown_lbl"):WaitForChild("Selection").TextColor3 = library.options.textcolor
  847.                 game:GetService("Debris"):AddItem(container, 0)
  848.             end
  849.             return {
  850.                 Refresh = reload
  851.             }
  852.         end
  853.     end
  854.     function library:Create(class, data)
  855.         local obj = Instance.new(class)
  856.         for i, v in next, data do
  857.             if i ~= "Parent" then
  858.                 if typeof(v) == "Instance" then
  859.                     v.Parent = obj
  860.                 else
  861.                     obj[i] = v
  862.                 end
  863.             end
  864.         end
  865.         obj.Parent = data.Parent
  866.         return obj
  867.     end
  868.     function library:CreateWindow(name, options)
  869.         if (not library.container) then
  870.             library.container = self:Create("ScreenGui", {
  871.                 self:Create("Frame", {
  872.                     Name = "Container",
  873.                     Size = UDim2.new(1, -30, 1, 0),
  874.                     Position = UDim2.new(0, 20, 0, 20),
  875.                     BackgroundTransparency = 1,
  876.                     Active = false
  877.                 }),
  878.                 Parent = game:GetService("CoreGui")
  879.             }):FindFirstChild("Container")
  880.         end
  881.         if (not library.options) then
  882.             library.options = setmetatable(options or {}, {
  883.                 __index = defaults
  884.             })
  885.         end
  886.         local window = types.window(name, library.options)
  887.         dragger.new(window.object)
  888.         return window
  889.     end
  890.     default = {
  891.         topcolor = Color3.fromRGB(30, 30, 30),
  892.         titlecolor = Color3.fromRGB(255, 255, 255),
  893.         underlinecolor = Color3.fromRGB(0, 255, 140),
  894.         bgcolor = Color3.fromRGB(35, 35, 35),
  895.         boxcolor = Color3.fromRGB(35, 35, 35),
  896.         btncolor = Color3.fromRGB(25, 25, 25),
  897.         dropcolor = Color3.fromRGB(25, 25, 25),
  898.         sectncolor = Color3.fromRGB(25, 25, 25),
  899.         bordercolor = Color3.fromRGB(60, 60, 60),
  900.         font = Enum.Font.SourceSans,
  901.         titlefont = Enum.Font.Code,
  902.         fontsize = 17,
  903.         titlesize = 18,
  904.         textstroke = 1,
  905.         titlestroke = 1,
  906.         strokecolor = Color3.fromRGB(0, 0, 0),
  907.         textcolor = Color3.fromRGB(255, 255, 255),
  908.         titletextcolor = Color3.fromRGB(255, 255, 255),
  909.         placeholdercolor = Color3.fromRGB(255, 255, 255),
  910.         titlestrokecolor = Color3.fromRGB(0, 0, 0)
  911.     }
  912.     library.options = setmetatable({}, {
  913.         __index = default
  914.     })
  915.     spawn(function()
  916.         while true do
  917.             for i = 0, 1, 1 / 300 do
  918.                 for _, obj in next, library.rainbowtable do
  919.                     obj.BackgroundColor3 = Color3.fromHSV(i, 1, 1)
  920.                 end
  921.                 wait()
  922.             end
  923.         end
  924.     end)
  925.     local function isreallypressed(bind, inp)
  926.         local key = bind
  927.         if typeof(key) == "Instance" then
  928.             if key.UserInputType == Enum.UserInputType.Keyboard and inp.KeyCode == key.KeyCode then
  929.                 return true
  930.             elseif tostring(key.UserInputType):find("MouseButton") and inp.UserInputType == key.UserInputType then
  931.                 return true
  932.             end
  933.         end
  934.         if tostring(key):find("MouseButton") then
  935.             return key == inp.UserInputType
  936.         else
  937.             return key == inp.KeyCode
  938.         end
  939.     end
  940.     game:GetService("UserInputService").InputBegan:connect(function(input)
  941.         if (not library.binding) then
  942.             for idx, binds in next, library.binds do
  943.                 local real_binding = binds.location[idx]
  944.                 if real_binding and isreallypressed(real_binding, input) then
  945.                     binds.callback(input, true)
  946.                 end
  947.             end
  948.         end
  949.     end)
  950.     game:GetService("UserInputService").InputEnded:connect(function(input)
  951.         if (not library.binding) then
  952.             for idx, binds in next, library.binds do
  953.                 local real_binding = binds.location[idx]
  954.                 if real_binding and isreallypressed(real_binding, input) then
  955.                     binds.callback(input, false)
  956.                 end
  957.             end
  958.         end
  959.     end)
  960. end
  961. return library
Add Comment
Please, Sign In to add comment