Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local Player = game:GetService("Players").LocalPlayer
- local Mouse = Player:GetMouse()
- local TextService = game:GetService("TextService")
- local TweenService = game:GetService("TweenService")
- local RunService = game:GetService("RunService")
- local InputService = game:GetService("UserInputService")
- local CoreGuiService = game:GetService("CoreGui")
- local ContentService = game:GetService("ContentProvider")
- local Themes = {
- Light = {
- MainFrame = Color3.fromRGB(255,255,255),
- Minimise = Color3.fromRGB(255,106,0),
- MinimiseAccent = Color3.fromRGB(147,59,0),
- Maximise = Color3.fromRGB(25,255,0),
- MaximiseAccent = Color3.fromRGB(0,255,110),
- NavBar = Color3.fromRGB(124,37,255),
- NavBarAccent = Color3.fromRGB(255,255,255),
- NavBarInvert = Color3.fromRGB(30,30,30),
- TitleBar = Color3.fromRGB(124,37,255),
- TitleBarAccent = Color3.fromRGB(255,255,255),
- Overlay = Color3.fromRGB(124,37,255),
- Banner = Color3.fromRGB(255,255,255),
- BannerAccent = Color3.fromRGB(124,37,255),
- Content = Color3.fromRGB(124,37,255),
- Button = Color3.fromRGB(124,37,255),
- ButtonAccent = Color3.fromRGB(255,255,255),
- ChipSet = Color3.fromRGB(124,37,255),
- ChipSetAccent = Color3.fromRGB(255,255,255),
- DataTable = Color3.fromRGB(124,37,255),
- DataTableAccent = Color3.fromRGB(255,255,255),
- Slider = Color3.fromRGB(255,255,255),
- SliderAccent = Color3.fromRGB(124,37,255),
- Toggle = Color3.fromRGB(124,37,255),
- ToggleAccent = Color3.fromRGB(255,255,255),
- Dropdown = Color3.fromRGB(255,255,255),
- DropdownAccent = Color3.fromRGB(124,37,255),
- ColorPicker = Color3.fromRGB(255,255,255),
- ColorPickerAccent = Color3.fromRGB(124,37,255),
- TextField = Color3.fromRGB(124,37,255),
- TextFieldAccent = Color3.fromRGB(124,37,255),
- },
- Dark = {
- MainFrame = Color3.fromRGB(30,30,30),
- Minimise = Color3.fromRGB(255,106,0),
- MinimiseAccent = Color3.fromRGB(147,59,0),
- Maximise = Color3.fromRGB(25,255,0),
- MaximiseAccent = Color3.fromRGB(0,255,110),
- NavBar = Color3.fromRGB(55,55,55),
- NavBarAccent = Color3.fromRGB(255,255,255),
- NavBarInvert = Color3.fromRGB(235,235,235),
- TitleBar = Color3.fromRGB(55,55,55),
- TitleBarAccent = Color3.fromRGB(255,255,255),
- Overlay = Color3.fromRGB(175,175,175),
- Banner = Color3.fromRGB(55,55,55),
- BannerAccent = Color3.fromRGB(255,255,255),
- Content = Color3.fromRGB(85,85,85),
- Button = Color3.fromRGB(85,85,85),
- ButtonAccent = Color3.fromRGB(255,255,255),
- ChipSet = Color3.fromRGB(235,235,235),
- ChipSetAccent = Color3.fromRGB(85,85,85),
- DataTable = Color3.fromRGB(235,235,235),
- DataTableAccent = Color3.fromRGB(85,85,85),
- Slider = Color3.fromRGB(85,85,85),
- SliderAccent = Color3.fromRGB(235,235,235),
- Toggle = Color3.fromRGB(205,205,205),
- ToggleAccent = Color3.fromRGB(125,125,125),
- Dropdown = Color3.fromRGB(85,85,85),
- DropdownAccent = Color3.fromRGB(235,235,235),
- ColorPicker = Color3.fromRGB(85,85,85),
- ColorPickerAccent = Color3.fromRGB(235,235,235),
- TextField = Color3.fromRGB(175,175,175),
- TextFieldAccent = Color3.fromRGB(255,255,255),
- },
- Mocha = {
- MainFrame = Color3.fromRGB(255,255,255),
- Minimise = Color3.fromRGB(219, 210, 202),
- MinimiseAccent = Color3.fromRGB(219, 210, 202),
- Maximise = Color3.fromRGB(189, 183, 177),
- MaximiseAccent = Color3.fromRGB(189, 183, 177),
- NavBar = Color3.fromRGB(176, 148, 125),
- NavBarAccent = Color3.fromRGB(255,255,255),
- NavBarInvert = Color3.fromRGB(30,30,30),
- TitleBar = Color3.fromRGB(176, 148, 125),
- TitleBarAccent = Color3.fromRGB(255,255,255),
- Overlay = Color3.fromRGB(176, 148, 125),
- Banner = Color3.fromRGB(255,255,255),
- BannerAccent = Color3.fromRGB(176, 148, 125),
- Content = Color3.fromRGB(176, 148, 125),
- Button = Color3.fromRGB(176, 148, 125),
- ButtonAccent = Color3.fromRGB(255,255,255),
- ChipSet = Color3.fromRGB(176, 148, 125),
- ChipSetAccent = Color3.fromRGB(255,255,255),
- DataTable = Color3.fromRGB(176, 148, 125),
- DataTableAccent = Color3.fromRGB(255,255,255),
- Slider = Color3.fromRGB(255,255,255),
- SliderAccent = Color3.fromRGB(176, 148, 125),
- Toggle = Color3.fromRGB(176, 148, 125),
- ToggleAccent = Color3.fromRGB(255,255,255),
- Dropdown = Color3.fromRGB(255,255,255),
- DropdownAccent = Color3.fromRGB(176, 148, 125),
- ColorPicker = Color3.fromRGB(255,255,255),
- ColorPickerAccent = Color3.fromRGB(176, 148, 125),
- TextField = Color3.fromRGB(175,175,175),
- TextFieldAccent = Color3.fromRGB(255,255,255)
- },
- Aqua = {
- MainFrame = Color3.fromRGB(255,255,255),
- Minimise = Color3.fromRGB(219, 210, 202),
- MinimiseAccent = Color3.fromRGB(219, 210, 202),
- Maximise = Color3.fromRGB(189, 183, 177),
- MaximiseAccent = Color3.fromRGB(189, 183, 177),
- NavBar = Color3.fromRGB(116, 112, 140),
- NavBarAccent = Color3.fromRGB(255,255,255),
- NavBarInvert = Color3.fromRGB(30,30,30),
- TitleBar = Color3.fromRGB(116, 112, 140),
- TitleBarAccent = Color3.fromRGB(255,255,255),
- Overlay = Color3.fromRGB(116, 112, 140),
- Banner = Color3.fromRGB(255,255,255),
- BannerAccent = Color3.fromRGB(116, 112, 140),
- Content = Color3.fromRGB(116, 112, 140),
- Button = Color3.fromRGB(116, 112, 140),
- ButtonAccent = Color3.fromRGB(255,255,255),
- ChipSet = Color3.fromRGB(116, 112, 140),
- ChipSetAccent = Color3.fromRGB(255,255,255),
- DataTable = Color3.fromRGB(116, 112, 140),
- DataTableAccent = Color3.fromRGB(255,255,255),
- Slider = Color3.fromRGB(255,255,255),
- SliderAccent = Color3.fromRGB(116, 112, 140),
- Toggle = Color3.fromRGB(116, 112, 140),
- ToggleAccent = Color3.fromRGB(255,255,255),
- Dropdown = Color3.fromRGB(255,255,255),
- DropdownAccent = Color3.fromRGB(116, 112, 140),
- ColorPicker = Color3.fromRGB(255,255,255),
- ColorPickerAccent = Color3.fromRGB(116, 112, 140),
- TextField = Color3.fromRGB(175,175,175),
- TextFieldAccent = Color3.fromRGB(255,255,255)
- },
- Jester = {
- MainFrame = Color3.fromRGB(255,255,255),
- Minimise = Color3.fromRGB(219, 210, 202),
- MinimiseAccent = Color3.fromRGB(219, 210, 202),
- Maximise = Color3.fromRGB(189, 183, 177),
- MaximiseAccent = Color3.fromRGB(189, 183, 177),
- NavBar = Color3.fromRGB(219, 68, 103),
- NavBarAccent = Color3.fromRGB(255,255,255),
- NavBarInvert = Color3.fromRGB(30,30,30),
- TitleBar = Color3.fromRGB(219, 68, 103),
- TitleBarAccent = Color3.fromRGB(255,255,255),
- Overlay = Color3.fromRGB(219, 68, 103),
- Banner = Color3.fromRGB(255,255,255),
- BannerAccent = Color3.fromRGB(219, 68, 103),
- Content = Color3.fromRGB(219, 68, 103),
- Button = Color3.fromRGB(219, 68, 103),
- ButtonAccent = Color3.fromRGB(255,255,255),
- ChipSet = Color3.fromRGB(219, 68, 103),
- ChipSetAccent = Color3.fromRGB(255,255,255),
- DataTable = Color3.fromRGB(219, 68, 103),
- DataTableAccent = Color3.fromRGB(255,255,255),
- Slider = Color3.fromRGB(255,255,255),
- SliderAccent = Color3.fromRGB(219, 68, 103),
- Toggle = Color3.fromRGB(219, 68, 103),
- ToggleAccent = Color3.fromRGB(255,255,255),
- Dropdown = Color3.fromRGB(255,255,255),
- DropdownAccent = Color3.fromRGB(219, 68, 103),
- ColorPicker = Color3.fromRGB(255,255,255),
- ColorPickerAccent = Color3.fromRGB(219, 68, 103),
- TextField = Color3.fromRGB(175,175,175),
- TextFieldAccent = Color3.fromRGB(255,255,255),
- }
- }
- local Types = {
- "RoundFrame",
- "Shadow",
- "Circle",
- "CircleButton",
- "Frame",
- "Label",
- "Button",
- "SmoothButton",
- "Box",
- "ScrollingFrame",
- "Menu",
- "NavBar"
- }
- local ActualTypes = {
- RoundFrame = "ImageLabel",
- Shadow = "ImageLabel",
- Circle = "ImageLabel",
- CircleButton = "ImageButton",
- Frame = "Frame",
- Label = "TextLabel",
- Button = "TextButton",
- SmoothButton = "ImageButton",
- Box = "TextBox",
- ScrollingFrame = "ScrollingFrame",
- Menu = "ImageButton",
- NavBar = "ImageButton"
- }
- local Properties = {
- RoundFrame = {
- BackgroundTransparency = 1,
- Image = "http://www.roblox.com/asset/?id=5554237731",
- ScaleType = Enum.ScaleType.Slice,
- SliceCenter = Rect.new(3,3,297,297)
- },
- SmoothButton = {
- AutoButtonColor = false,
- BackgroundTransparency = 1,
- Image = "http://www.roblox.com/asset/?id=5554237731",
- ScaleType = Enum.ScaleType.Slice,
- SliceCenter = Rect.new(3,3,297,297)
- },
- Shadow = {
- Name = "Shadow",
- BackgroundTransparency = 1,
- Image = "http://www.roblox.com/asset/?id=5554236805",
- ScaleType = Enum.ScaleType.Slice,
- SliceCenter = Rect.new(23,23,277,277),
- Size = UDim2.fromScale(1,1) + UDim2.fromOffset(30,30),
- Position = UDim2.fromOffset(-15,-15)
- },
- Circle = {
- BackgroundTransparency = 1,
- Image = "http://www.roblox.com/asset/?id=5554831670"
- },
- CircleButton = {
- BackgroundTransparency = 1,
- AutoButtonColor = false,
- Image = "http://www.roblox.com/asset/?id=5554831670"
- },
- Frame = {
- BackgroundTransparency = 1,
- BorderSizePixel = 0,
- Size = UDim2.fromScale(1,1)
- },
- Label = {
- BackgroundTransparency = 1,
- Position = UDim2.fromOffset(5,0),
- Size = UDim2.fromScale(1,1) - UDim2.fromOffset(5,0),
- TextSize = 14,
- TextXAlignment = Enum.TextXAlignment.Left
- },
- Button = {
- BackgroundTransparency = 1,
- Position = UDim2.fromOffset(5,0),
- Size = UDim2.fromScale(1,1) - UDim2.fromOffset(5,0),
- TextSize = 14,
- TextXAlignment = Enum.TextXAlignment.Left
- },
- Box = {
- BackgroundTransparency = 1,
- Position = UDim2.fromOffset(5,0),
- Size = UDim2.fromScale(1,1) - UDim2.fromOffset(5,0),
- TextSize = 14,
- TextXAlignment = Enum.TextXAlignment.Left
- },
- ScrollingFrame = {
- BackgroundTransparency = 1,
- ScrollBarThickness = 0,
- CanvasSize = UDim2.fromScale(0,0),
- Size = UDim2.fromScale(1,1)
- },
- Menu = {
- Name = "More",
- AutoButtonColor = false,
- BackgroundTransparency = 1,
- Image = "http://www.roblox.com/asset/?id=5555108481",
- Size = UDim2.fromOffset(20,20),
- Position = UDim2.fromScale(1,0.5) - UDim2.fromOffset(25,10)
- },
- NavBar = {
- Name = "SheetToggle",
- Image = "http://www.roblox.com/asset/?id=5576439039",
- BackgroundTransparency = 1,
- Size = UDim2.fromOffset(20,20),
- Position = UDim2.fromOffset(5,5),
- AutoButtonColor = false
- }
- }
- function FindType(String)
- for _, Type in next, Types do
- if Type:sub(1, #String):lower() == String:lower() then
- return Type
- end
- end
- return false
- end
- local Objects = {}
- function Objects.new(Type)
- local TargetType = FindType(Type)
- if TargetType then
- local NewImage = Instance.new(ActualTypes[TargetType])
- if Properties[TargetType] then
- for Property, Value in next, Properties[TargetType] do
- NewImage[Property] = Value
- end
- end
- return NewImage
- else
- return Instance.new(Type)
- end
- end
- local function GetXY(GuiObject)
- local Max, May = GuiObject.AbsoluteSize.X, GuiObject.AbsoluteSize.Y
- local Px, Py = math.clamp(Mouse.X - GuiObject.AbsolutePosition.X, 0, Max), math.clamp(Mouse.Y - GuiObject.AbsolutePosition.Y, 0, May)
- return Px/Max, Py/May
- end
- local function CircleAnim(GuiObject, EndColour, StartColour)
- local PX, PY = GetXY(GuiObject)
- local Circle = Objects.new("Circle")
- Circle.Size = UDim2.fromScale(0,0)
- Circle.Position = UDim2.fromScale(PX,PY)
- Circle.ImageColor3 = StartColour or GuiObject.ImageColor3
- Circle.ZIndex = 200
- Circle.Parent = GuiObject
- local Size = GuiObject.AbsoluteSize.X
- TweenService:Create(Circle, TweenInfo.new(1), {Position = UDim2.fromScale(PX,PY) - UDim2.fromOffset(Size/2,Size/2), ImageTransparency = 1, ImageColor3 = EndColour, Size = UDim2.fromOffset(Size,Size)}):Play()
- spawn(function()
- wait(2)
- Circle:Destroy()
- end)
- end
- local Material = {}
- local Styles = {
- [1] = "Normal",
- [2] = "Invert",
- [3] = "Sheets"
- }
- local ThisTheme
- local NavBar = {
- Normal = function()
- local NewNavBar = Objects.new("Round")
- NewNavBar.Name = "NavBar"
- NewNavBar.Size = UDim2.fromScale(1,0) + UDim2.fromOffset(-10,30)
- NewNavBar.Position = UDim2.fromOffset(5,35)
- NewNavBar.ImageColor3 = ThisTheme.NavBar
- NewNavBar.ZIndex = 100
- local NavBarShadow = Objects.new("Shadow")
- NavBarShadow.ImageColor3 = ThisTheme.NavBar
- NavBarShadow.Parent = NewNavBar
- NavBarShadow.ZIndex = 100
- local NavBarContent = Objects.new("Frame")
- NavBarContent.Name = "Content"
- NavBarContent.Parent = NewNavBar
- NavBarContent.ChildAdded:Connect(function(Child)
- pcall(function()
- local Children = #NavBarContent:GetChildren() - 2
- TweenService:Create(Child, TweenInfo.new(1), {TextTransparency = (Children > 1) and 0.5 or 0}):Play()
- end)
- pcall(function()
- local Children = #NavBarContent:GetChildren() - 2
- TweenService:Create(Child, TweenInfo.new(1), {ImageTransparency = (Children > 1) and 0.5 or 0}):Play()
- end)
- pcall(function()
- local Children = #NavBarContent:GetChildren() - 2
- TweenService:Create(Child:FindFirstChildWhichIsA("ImageLabel"), TweenInfo.new(1), {ImageTransparency = (Children > 1) and 0.5 or 0}):Play()
- end)
- pcall(function()
- Child.TextColor3 = ThisTheme.NavBarAccent
- end)
- pcall(function()
- Child:FindFirstChildWhichIsA("ImageLabel").ImageColor3 = ThisTheme.NavBarAccent
- end)
- pcall(function()
- Child.ImageColor3 = ThisTheme.NavBarAccent
- end)
- end)
- local NavBarList = Objects.new("UIListLayout")
- NavBarList.FillDirection = Enum.FillDirection.Horizontal
- NavBarList.HorizontalAlignment = Enum.HorizontalAlignment.Left
- NavBarList.VerticalAlignment = Enum.VerticalAlignment.Center
- NavBarList.SortOrder = Enum.SortOrder.LayoutOrder
- NavBarList.Parent = NavBarContent
- local NavBarPadding = Objects.new("UIPadding")
- NavBarPadding.PaddingLeft = UDim.new(0,5)
- NavBarPadding.Parent = NavBarContent
- return NewNavBar, NavBarContent
- end,
- Invert = function()
- local NewNavBar = Objects.new("Round")
- NewNavBar.Name = "NavBar"
- NewNavBar.Size = UDim2.fromScale(1,0) + UDim2.fromOffset(-10,30)
- NewNavBar.Position = UDim2.fromOffset(5,35)
- NewNavBar.ImageColor3 = ThisTheme.NavBarAccent
- NewNavBar.ImageTransparency = 1
- NewNavBar.ZIndex = 100
- local NavBarShadow = Objects.new("Shadow")
- NavBarShadow.ImageColor3 = ThisTheme.NavBarInvert
- NavBarShadow.ImageTransparency = 1
- NavBarShadow.Parent = NewNavBar
- NavBarShadow.ZIndex = 100
- TweenService:Create(NewNavBar, TweenInfo.new(1), {ImageTransparency = 0}):Play()
- TweenService:Create(NavBarShadow, TweenInfo.new(1), {ImageTransparency = 0}):Play()
- local NavBarContent = Objects.new("Frame")
- NavBarContent.Name = "Content"
- NavBarContent.Parent = NewNavBar
- NavBarContent.ChildAdded:Connect(function(Child)
- pcall(function()
- local Children = #NavBarContent:GetChildren() - 2
- TweenService:Create(Child, TweenInfo.new(1), {TextTransparency = (Children > 1) and 0.5 or 0}):Play()
- end)
- pcall(function()
- local Children = #NavBarContent:GetChildren() - 2
- TweenService:Create(Child, TweenInfo.new(1), {ImageTransparency = (Children > 1) and 0.5 or 0}):Play()
- end)
- pcall(function()
- local Children = #NavBarContent:GetChildren() - 2
- TweenService:Create(Child:FindFirstChildWhichIsA("ImageLabel"), TweenInfo.new(1), {ImageTransparency = (Children > 1) and 0.5 or 0}):Play()
- end)
- pcall(function()
- Child.TextColor3 = ThisTheme.NavBar
- end)
- pcall(function()
- Child:FindFirstChildWhichIsA("ImageLabel").ImageColor3 = ThisTheme.NavBar
- end)
- pcall(function()
- Child.ImageColor3 = ThisTheme.NavBar
- end)
- end)
- local NavBarList = Objects.new("UIListLayout")
- NavBarList.FillDirection = Enum.FillDirection.Horizontal
- NavBarList.HorizontalAlignment = Enum.HorizontalAlignment.Left
- NavBarList.VerticalAlignment = Enum.VerticalAlignment.Center
- NavBarList.SortOrder = Enum.SortOrder.LayoutOrder
- NavBarList.Parent = NavBarContent
- local NavBarPadding = Objects.new("UIPadding")
- NavBarPadding.PaddingLeft = UDim.new(0,5)
- NavBarPadding.Parent = NavBarContent
- return NewNavBar, NavBarContent
- end,
- Sheets = function()
- local NewNavBar = Objects.new("Round")
- NewNavBar.ClipsDescendants = true
- NewNavBar.Name = "NavBar"
- NewNavBar.Size = UDim2.fromScale(0,1) - UDim2.fromOffset(0,30)
- NewNavBar.Position = UDim2.fromOffset(0,30)
- NewNavBar.ImageColor3 = ThisTheme.NavBarAccent
- NewNavBar.ZIndex = 100
- local NavBarOverlay = Objects.new("Frame")
- NavBarOverlay.Name = "Overlay"
- NavBarOverlay.BackgroundColor3 = ThisTheme.NavBar
- NavBarOverlay.BackgroundTransparency = 1
- NavBarOverlay.Size = UDim2.fromScale(1,1) - UDim2.fromOffset(0,30)
- NavBarOverlay.Position = UDim2.fromOffset(0,30)
- NavBarOverlay.ZIndex = 75
- local NavBarMenu = Objects.new("NavBar")
- NavBarMenu.ZIndex = 100
- local NavBarShadow = Objects.new("Shadow")
- NavBarShadow.ImageColor3 = ThisTheme.NavBar
- NavBarShadow.Parent = NewNavBar
- NavBarShadow.ZIndex = 100
- local Effect1, Effect2, Effect3 = Objects.new("Frame"), Objects.new("Frame"), Objects.new("Frame")
- Effect1.ZIndex = 100
- Effect2.ZIndex = 100
- Effect3.ZIndex = 100
- Effect1.BackgroundTransparency = 0
- Effect2.BackgroundTransparency = 0
- Effect3.BackgroundTransparency = 0
- Effect1.BackgroundColor3 = ThisTheme.NavBarAccent
- Effect2.BackgroundColor3 = ThisTheme.NavBarAccent
- Effect3.BackgroundColor3 = ThisTheme.NavBar
- Effect1.Size = UDim2.fromScale(1,0) + UDim2.fromOffset(0,5)
- Effect2.Size = UDim2.fromScale(0,1) + UDim2.fromOffset(5,0)
- Effect3.Size = UDim2.fromScale(0,1) + UDim2.fromOffset(1,0)
- Effect1.Position = UDim2.fromScale(0,0)
- Effect2.Position = UDim2.fromScale(1,0) - UDim2.fromOffset(5,0)
- Effect3.Position = UDim2.fromScale(1,0)
- Effect1.Parent = NewNavBar
- Effect2.Parent = NewNavBar
- Effect3.Parent = NewNavBar
- local NavBarContent = Objects.new("Frame")
- NavBarContent.Name = "Content"
- NavBarContent.Parent = NewNavBar
- local NavBarList = Objects.new("UIListLayout")
- NavBarList.FillDirection = Enum.FillDirection.Vertical
- NavBarList.HorizontalAlignment = Enum.HorizontalAlignment.Center
- NavBarList.VerticalAlignment = Enum.VerticalAlignment.Top
- NavBarList.SortOrder = Enum.SortOrder.LayoutOrder
- NavBarList.Parent = NavBarContent
- local NavBarPadding = Objects.new("UIPadding")
- NavBarPadding.PaddingLeft = UDim.new(0,5)
- NavBarPadding.PaddingRight = UDim.new(0,5)
- NavBarPadding.PaddingTop = UDim.new(0,5)
- NavBarPadding.PaddingBottom = UDim.new(0,5)
- NavBarPadding.Parent = NavBarContent
- NavBarContent.ChildAdded:Connect(function(Child)
- pcall(function()
- local Children = #NavBarContent:GetChildren() - 2
- TweenService:Create(Child, TweenInfo.new(1), {TextTransparency = (Children > 1) and 0.5 or 0}):Play()
- end)
- pcall(function()
- local Children = #NavBarContent:GetChildren() - 2
- TweenService:Create(Child, TweenInfo.new(1), {ImageTransparency = (Children > 1) and 0.5 or 0}):Play()
- end)
- pcall(function()
- local Children = #NavBarContent:GetChildren() - 2
- TweenService:Create(Child:FindFirstChildWhichIsA("ImageLabel"), TweenInfo.new(1), {ImageTransparency = (Children > 1) and 0.5 or 0}):Play()
- end)
- pcall(function()
- Child.Size = UDim2.fromScale(1,0) + UDim2.fromOffset(0,30)
- end)
- pcall(function()
- Child:FindFirstChildWhichIsA("ImageLabel").ImageColor3 = ThisTheme.NavBar
- end)
- pcall(function()
- Child.TextColor3 = ThisTheme.NavBar
- end)
- pcall(function()
- Child.ImageColor3 = ThisTheme.NavBar
- end)
- end)
- return NewNavBar, NavBarContent, NavBarMenu, NavBarOverlay
- end
- }
- local MainGUI
- function TryAddMenu(Object, Menu, ReturnTable)
- local Menu = Menu
- local ReturnTable = ReturnTable
- ReturnTable.Object = Object
- local Total = 0
- table.foreach(Menu, function(_, Value)
- Total = Total + ((typeof(Value) == "function") and 1 or 0)
- end)
- if Total > 0 then
- local MenuToggle = false
- local MenuButton = Objects.new("Menu")
- MenuButton.ImageTransparency = 1
- MenuButton.Parent = Object
- TweenService:Create(MenuButton, TweenInfo.new(0.5), {ImageTransparency = 0}):Play()
- local Size = Total * 30 + ((Total + 1) * 2)
- local MenuBuild = Objects.new("Round")
- MenuBuild.Name = "Menu"
- MenuBuild.ImageColor3 = ThisTheme.ButtonAccent
- MenuBuild.Size = UDim2.fromOffset(120,0)
- MenuBuild.Position = UDim2.fromOffset(MenuButton.AbsolutePosition.X,MenuButton.AbsolutePosition.Y) - UDim2.fromOffset(125,5)
- MenuBuild.ZIndex = 100
- MenuBuild.ClipsDescendants = true
- MenuBuild.Parent = MainGUI
- MenuButton:GetPropertyChangedSignal("AbsolutePosition"):Connect(function()
- MenuBuild.Position = UDim2.fromOffset(MenuButton.AbsolutePosition.X,MenuButton.AbsolutePosition.Y) - UDim2.fromOffset(125,5)
- end)
- local MenuContent = Objects.new("Frame")
- MenuContent.Name = "Content"
- MenuContent.Parent = MenuBuild
- local MenuList = Objects.new("UIListLayout")
- MenuList.Padding = UDim.new(0,2)
- MenuList.Parent = MenuContent
- local MenuPadding = Objects.new("UIPadding")
- MenuPadding.PaddingTop = UDim.new(0,2)
- MenuPadding.PaddingRight = UDim.new(0,2)
- MenuPadding.PaddingLeft = UDim.new(0,2)
- MenuPadding.PaddingBottom = UDim.new(0,2)
- MenuPadding.Parent = MenuContent
- MenuButton.MouseButton1Down:Connect(function()
- MenuToggle = not MenuToggle
- TweenService:Create(MenuBuild, TweenInfo.new(0.15), {Size = MenuToggle and UDim2.fromOffset(120,Size) or UDim2.fromOffset(120,0)}):Play()
- end)
- table.foreach(Menu, function(Option, Value)
- if typeof(Value) == "function" then
- local MenuOption = Objects.new("SmoothButton")
- MenuOption.Name = "MenuOption"
- MenuOption.Size = UDim2.fromScale(1,0) + UDim2.fromOffset(0,30)
- MenuOption.ImageColor3 = ThisTheme.Button
- MenuOption.ImageTransparency = 1
- MenuOption.ZIndex = 150
- MenuOption.Parent = MenuContent
- local OptionShadow = Objects.new("Shadow")
- OptionShadow.ImageColor3 = ThisTheme.Button
- OptionShadow.ImageTransparency = 1
- OptionShadow.Parent = MenuOption
- local OptionValue = Objects.new("Label")
- OptionValue.Name = "Value"
- OptionValue.Position = UDim2.fromScale(0,0)
- OptionValue.Size = UDim2.fromScale(1,1) - UDim2.fromOffset(5,0)
- OptionValue.Text = Option
- OptionValue.TextColor3 = ThisTheme.Button
- OptionValue.Font = Enum.Font.Gotham
- OptionValue.TextSize = 12
- OptionValue.ZIndex = 150
- OptionValue.TextXAlignment = Enum.TextXAlignment.Right
- OptionValue.Parent = MenuOption
- MenuOption.MouseButton1Down:Connect(function()
- Value(ReturnTable)
- MenuToggle = false
- TweenService:Create(MenuBuild, TweenInfo.new(0.15), {Size = UDim2.fromOffset(120,0)}):Play()
- end)
- MenuOption.MouseEnter:Connect(function()
- TweenService:Create(MenuOption, TweenInfo.new(0.15), {ImageTransparency = 0.8}):Play()
- TweenService:Create(OptionShadow, TweenInfo.new(0.15), {ImageTransparency = 0.8}):Play()
- end)
- MenuOption.MouseLeave:Connect(function()
- TweenService:Create(MenuOption, TweenInfo.new(0.15), {ImageTransparency = 1}):Play()
- TweenService:Create(OptionShadow, TweenInfo.new(0.15), {ImageTransparency = 1}):Play()
- end)
- end
- end)
- return true, MenuButton
- end
- return false
- end
- function CreateNewButton(ButtonConfig, Parent)
- local ButtonText = ButtonConfig.Text or "nil button"
- local ButtonCallback = ButtonConfig.Callback or function() print("nil button") end
- local Menu = ButtonConfig.Menu or {}
- local Button = Objects.new("SmoothButton")
- Button.Name = "Button"
- Button.Size = UDim2.fromScale(1,0) + UDim2.fromOffset(0,30)
- Button.ImageColor3 = ThisTheme.Button
- Button.ImageTransparency = 1
- Button.Parent = Parent
- local ButtonShadow = Objects.new("Shadow")
- ButtonShadow.ImageColor3 = ThisTheme.Button
- ButtonShadow.ImageTransparency = 1
- ButtonShadow.Parent = Button
- local ButtonLabel = Objects.new("Label")
- ButtonLabel.Text = ButtonText
- ButtonLabel.TextColor3 = ThisTheme.ButtonAccent
- ButtonLabel.Font = Enum.Font.GothamSemibold
- ButtonLabel.TextSize = 14
- ButtonLabel.ClipsDescendants = true
- ButtonLabel.TextTransparency = 1
- ButtonLabel.Parent = Button
- TweenService:Create(Button, TweenInfo.new(0.5), {ImageTransparency = 0}):Play()
- TweenService:Create(ButtonShadow, TweenInfo.new(0.5), {ImageTransparency = 0}):Play()
- TweenService:Create(ButtonLabel, TweenInfo.new(0.5), {TextTransparency = 0}):Play()
- Button.MouseButton1Down:Connect(function()
- CircleAnim(ButtonLabel, ThisTheme.ButtonAccent, ThisTheme.Button)
- ButtonCallback()
- end)
- local MenuAdded = TryAddMenu(Button, Menu, {})
- return Button, ButtonLabel
- end
- function Material.Load(Config)
- local Style = (Config.Style and math.clamp(Config.Style, 1, 3)) or 1
- local Title = Config.Title or "MaterialLua"
- local SizeX = Config.SizeX or 300
- local SizeY = Config.SizeY or 500
- local Theme = Config.Theme or "Light"
- local Overrides = Config.ColorOverrides or {}
- local Open = true
- Theme = Themes[Theme]
- ThisTheme = Theme
- for KeyOverride, ValueOverride in next, Overrides do
- ThisTheme[KeyOverride] = ValueOverride
- end
- pcall(function() OldInstance:Destroy() end);
- local function GetExploit()
- local Table = {};
- Table.Synapse = syn;
- Table.ProtoSmasher = pebc_create;
- Table.Sentinel = issentinelclosure;
- Table.ScriptWare = getexecutorname;
- for ExploitName, ExploitFunction in next, Table do
- if (ExploitFunction) then
- return ExploitName;
- end;
- end;
- return "Undefined";
- end;
- local ProtectFunctions = {};
- ProtectFunctions.Synapse = function(GuiObject) syn.protect_gui(GuiObject); GuiObject.Parent = CoreGuiService; end;
- ProtectFunctions.ProtoSmasher = function(GuiObject) GuiObject.Parent = get_hidden_gui(); end;
- ProtectFunctions.Sentinel = function(GuiObject) GuiObject.Parent = CoreGuiService; end;
- ProtectFunctions.ScriptWare = function(GuiObject) GuiObject.Parent = gethui(); end;
- ProtectFunctions.Undefined = function(GuiObject) GuiObject.Parent = CoreGuiService; end;
- local NewInstance = Objects.new("ScreenGui")
- NewInstance.Name = Title
- ProtectFunctions[GetExploit()](NewInstance);
- getgenv().OldInstance = NewInstance;
- MainGUI = NewInstance
- local MainFrame = Objects.new("Round")
- MainFrame.Name = "MainFrame"
- MainFrame.Size = UDim2.fromOffset(0,SizeY)
- MainFrame.Position = UDim2.fromScale(0.5,0.5) - UDim2.fromOffset(SizeX/2,SizeY/2)
- MainFrame.ImageColor3 = Theme.MainFrame
- MainFrame.Parent = NewInstance
- TweenService:Create(MainFrame, TweenInfo.new(1), {Size = UDim2.fromOffset(SizeX,SizeY)}):Play()
- wait(1)
- local MainShadow = Objects.new("Shadow")
- MainShadow.ImageColor3 = Theme.MainFrame
- MainShadow.Parent = MainFrame
- local TitleBar = Objects.new("SmoothButton")
- TitleBar.Name = "TitleBar"
- TitleBar.Size = UDim2.fromScale(1,0) + UDim2.fromOffset(0,30)
- TitleBar.ImageColor3 = Theme.TitleBar
- TitleBar.ImageTransparency = 1
- TitleBar.Parent = MainFrame
- local ExtraBar = Objects.new("Frame")
- ExtraBar.Name = "Hidden"
- ExtraBar.Size = UDim2.fromScale(1,0) + UDim2.fromOffset(0,5)
- ExtraBar.Position = UDim2.fromScale(0,1) - UDim2.fromOffset(0,5)
- ExtraBar.BackgroundColor3 = Theme.TitleBar
- ExtraBar.Parent = TitleBar
- local TitleShadow = Objects.new("Shadow")
- TitleShadow.ImageColor3 = Theme.TitleBar
- TitleShadow.ImageTransparency = 1
- TitleShadow.Parent = TitleBar
- local TitleText = Objects.new("Button")
- TitleText.Name = "Title"
- TitleText.Text = Title
- TitleText.TextColor3 = Theme.TitleBarAccent
- TitleText.TextTransparency = 1
- TitleText.Font = Enum.Font.GothamBold
- TitleText.Parent = TitleBar
- TitleText.MouseButton1Down:Connect(function()
- local Mx, My = Mouse.X, Mouse.Y
- local MouseMove, MouseKill
- MouseMove = Mouse.Move:Connect(function()
- local nMx, nMy = Mouse.X, Mouse.Y
- local Dx, Dy = nMx - Mx, nMy - My
- MainFrame.Position = MainFrame.Position + UDim2.fromOffset(Dx, Dy)
- Mx, My = nMx, nMy
- end)
- MouseKill = InputService.InputEnded:Connect(function(UserInput)
- if UserInput.UserInputType == Enum.UserInputType.MouseButton1 then
- MouseMove:Disconnect()
- MouseKill:Disconnect()
- end
- end)
- end)
- local MinimiseButton = Objects.new("SmoothButton")
- MinimiseButton.Size = UDim2.fromOffset(20,20)
- MinimiseButton.Position = UDim2.fromScale(1,0) + UDim2.fromOffset(-25,5)
- MinimiseButton.ImageColor3 = Theme.Minimise
- MinimiseButton.ImageTransparency = 1
- MinimiseButton.Parent = TitleBar
- local MinimiseShadow = Objects.new("Shadow")
- MinimiseShadow.ImageColor3 = Theme.MinimiseAccent
- MinimiseShadow.ImageTransparency = 1
- MinimiseShadow.Parent = MinimiseButton
- MinimiseButton.MouseButton1Down:Connect(function()
- Open = not Open
- TweenService:Create(MainShadow, TweenInfo.new(0.15), {ImageTransparency = 1}):Play()
- TweenService:Create(MainFrame, TweenInfo.new(0.15), {Size = Open and UDim2.fromOffset(SizeX,SizeY) or UDim2.fromOffset(SizeX,30)}):Play()
- TweenService:Create(MinimiseButton, TweenInfo.new(0.15), {ImageColor3 = Open and Theme.Minimise or Theme.Maximise}):Play()
- TweenService:Create(MinimiseShadow, TweenInfo.new(0.15), {ImageColor3 = Open and Theme.MinimiseAccent or Theme.MaximiseAccent}):Play()
- if Open then
- wait(0.15)
- MainFrame.ClipsDescendants = false
- TweenService:Create(MainShadow, TweenInfo.new(0.15), {ImageTransparency = 0}):Play()
- else
- MainFrame.ClipsDescendants = true
- end
- end)
- local Content = Objects.new("Round")
- Content.Name = "Content"
- Content.ImageColor3 = Theme.Content
- Content.Size = UDim2.fromScale(1,1) - UDim2.fromOffset(10,75)
- Content.Position = UDim2.fromOffset(5,70)
- Content.ImageTransparency = 1
- Content.Parent = MainFrame
- local NavigationBar, NavigationBarContent, NavBarMenu, NavBarOverlay = NavBar[Styles[Style]]()
- NavigationBar.Parent = MainFrame
- TweenService:Create(TitleBar, TweenInfo.new(1), {ImageTransparency = 0}):Play()
- TweenService:Create(ExtraBar, TweenInfo.new(1), {BackgroundTransparency = 0}):Play()
- TweenService:Create(TitleShadow, TweenInfo.new(1), {ImageTransparency = 0}):Play()
- TweenService:Create(TitleText, TweenInfo.new(1), {TextTransparency = 0}):Play()
- TweenService:Create(MinimiseButton, TweenInfo.new(1), {ImageTransparency = 0}):Play()
- TweenService:Create(MinimiseShadow, TweenInfo.new(1), {ImageTransparency = 0}):Play()
- TweenService:Create(Content, TweenInfo.new(1), {ImageTransparency = 0.8}):Play()
- wait(1)
- if NavBarMenu then
- TweenService:Create(TitleText, TweenInfo.new(0.5), {
- Size = TitleText.Size - UDim2.fromOffset(25,0),
- Position = TitleText.Position + UDim2.fromOffset(25,0)
- }):Play()
- TweenService:Create(Content, TweenInfo.new(0.5), {
- Size = Content.Size + UDim2.fromOffset(0,35),
- Position = Content.Position - UDim2.fromOffset(0,35)
- }):Play()
- NavBarMenu.ImageTransparency = 1
- NavBarMenu.Parent = TitleBar
- TweenService:Create(NavBarMenu, TweenInfo.new(0.5), {ImageTransparency = 0}):Play()
- NavBarOverlay.Parent = MainFrame
- local MenuToggle = false
- NavBarMenu.MouseButton1Down:Connect(function()
- MenuToggle = not MenuToggle
- TweenService:Create(NavigationBar, TweenInfo.new(0.15), {Size = (MenuToggle and UDim2.fromScale(0.5,1) or UDim2.fromScale(0,1)) - UDim2.fromOffset(0,30)}):Play()
- TweenService:Create(NavBarOverlay, TweenInfo.new(0.15), {BackgroundTransparency = MenuToggle and 0.5 or 1}):Play()
- if MenuToggle then
- wait(0.15)
- NavigationBar.ClipsDescendants = false
- else
- NavigationBar.ClipsDescendants = true
- end
- end)
- end
- local TabCount = 0
- local TabLibrary = {}
- local ButtonTrack = {}
- local PageTrack = {}
- function TabLibrary.Banner(BannerConfig)
- local BannerText = BannerConfig.Text
- local BannerOptions = BannerConfig.Options or {}
- local ExistingBanner, ExistingBannerOverlay = MainFrame:FindFirstChild("BannerOverlay"), MainFrame:FindFirstChild("Banner")
- if ExistingBanner then
- ExistingBanner:Destroy()
- end
- if ExistingBannerOverlay then
- ExistingBannerOverlay:Destroy()
- end
- local BannerOverlay = Objects.new("Frame")
- BannerOverlay.Name = "BannerOverlay"
- BannerOverlay.BackgroundColor3 = Theme.BannerAccent
- BannerOverlay.Size = UDim2.fromScale(1,1) - UDim2.fromOffset(0,30)
- BannerOverlay.Position = UDim2.fromOffset(0,30)
- BannerOverlay.ZIndex = 75
- BannerOverlay.Parent = MainFrame
- local TextSize = TextService:GetTextSize(BannerText, 12, Enum.Font.Gotham, Vector2.new(0,0)).X
- local Lines = math.ceil((TextSize) / (MainFrame.AbsoluteSize.X - 10))
- local BannerSize = UDim2.fromScale(1,0) + UDim2.fromOffset(-10,(Lines*20)+40)
- local BannerPosition = UDim2.fromScale(0,1) + UDim2.fromOffset(5,(-Lines*20)-45)
- local Banner = Objects.new("Round")
- Banner.Name = "Banner"
- Banner.ImageTransparency = 1
- Banner.ImageColor3 = Theme.Banner
- Banner.Size = BannerSize
- Banner.Position = BannerPosition
- Banner.ZIndex = 80
- Banner.Parent = MainFrame
- local BannerLabel = Objects.new("Label")
- BannerLabel.Name = "Value"
- BannerLabel.Text = BannerText
- BannerLabel.TextColor3 = Theme.BannerAccent
- BannerLabel.TextSize = 12
- BannerLabel.Font = Enum.Font.Gotham
- BannerLabel.Size = UDim2.fromScale(1,0) + UDim2.fromOffset(-5,(Lines*20)+5)
- BannerLabel.TextWrapped = true
- BannerLabel.Position = UDim2.fromOffset(5,0)
- BannerLabel.TextTransparency = 1
- BannerLabel.ZIndex = 80
- BannerLabel.Parent = Banner
- TweenService:Create(BannerOverlay, TweenInfo.new(0.5), {BackgroundTransparency = 0.5}):Play()
- TweenService:Create(Banner, TweenInfo.new(0.5), {ImageTransparency = 0}):Play()
- TweenService:Create(BannerLabel, TweenInfo.new(0.5), {TextTransparency = 0}):Play()
- local BannerContainer = Objects.new("Frame")
- BannerContainer.Name = "Options"
- BannerContainer.Size = UDim2.fromScale(1,0) + UDim2.fromOffset(-10,0)
- BannerContainer.Position = UDim2.fromScale(0,1) - UDim2.fromOffset(-5,35)
- BannerContainer.ZIndex = 80
- BannerContainer.ClipsDescendants = true
- BannerContainer.Parent = Banner
- local BannerList = Objects.new("UIListLayout")
- BannerList.FillDirection = Enum.FillDirection.Horizontal
- BannerList.HorizontalAlignment = Enum.HorizontalAlignment.Right
- BannerList.SortOrder = Enum.SortOrder.LayoutOrder
- BannerList.Padding = UDim.new(0,5)
- BannerList.Parent = BannerContainer
- BannerOptions["Ok"] = function()
- TweenService:Create(BannerContainer, TweenInfo.new(0.5), {Size = UDim2.fromScale(1,0) + UDim2.fromOffset(-10,0)}):Play()
- TweenService:Create(BannerOverlay, TweenInfo.new(0.5), {BackgroundTransparency = 1}):Play()
- TweenService:Create(Banner, TweenInfo.new(0.5), {ImageTransparency = 1}):Play()
- TweenService:Create(BannerLabel, TweenInfo.new(0.5), {TextTransparency = 1}):Play()
- end
- table.foreach(BannerOptions, function(Option, Value)
- if typeof(Value) == "function" then
- local TextSize = TextService:GetTextSize(Option:upper(), 12, Enum.Font.GothamBold, Vector2.new(0,0)).X
- local OptionItem = Objects.new("SmoothButton")
- OptionItem.ImageColor3 = Theme.BannerAccent
- OptionItem.ImageTransparency = 0.9
- OptionItem.Size = UDim2.fromOffset(TextSize+10,30)
- OptionItem.ZIndex = 80
- OptionItem.ClipsDescendants = true
- OptionItem.Parent = BannerContainer
- local OptionLabel = Objects.new("Label")
- OptionLabel.Text = Option:upper()
- OptionLabel.TextSize = 12
- OptionLabel.TextColor3 = Theme.BannerAccent
- OptionLabel.Font = Enum.Font.GothamBold
- OptionLabel.Size = UDim2.fromScale(1,1)
- OptionLabel.Position = UDim2.fromScale(0,0)
- OptionLabel.TextXAlignment = Enum.TextXAlignment.Center
- OptionLabel.ZIndex = 80
- OptionLabel.Parent = OptionItem
- OptionItem.MouseButton1Down:Connect(function()
- Value()
- CircleAnim(OptionItem, Theme.Banner)
- end)
- end
- end)
- TweenService:Create(BannerContainer, TweenInfo.new(0.5), {Size = UDim2.fromScale(1,0) + UDim2.fromOffset(-10,30)}):Play()
- end
- function TabLibrary.New(TabConfig)
- local ImageID = TabConfig.ID
- local Title = TabConfig.Title
- local Button
- if ImageID then
- if Title then
- local Settings = {
- TextSize = 12,
- Font = Enum.Font.GothamBold,
- Vector = Vector2.new(0,0)
- }
- local TextSize = TextService:GetTextSize(Title:upper(), Settings.TextSize, Settings.Font, Settings.Vector).X
- Button = Objects.new("Button")
- Button.Name = Title:upper()
- Button.TextXAlignment = Enum.TextXAlignment.Right
- Button.TextSize = Settings.TextSize
- Button.Font = Settings.Font
- Button.Text = Title:upper()
- Button.Size = UDim2.fromScale(0,1) + UDim2.fromOffset(TextSize+35)
- Button.ZIndex = 200
- Button.TextTransparency = 1
- end
- local FetchURL = "rbxassetid://"..ImageID
- local Image = RunService:IsStudio() and "http://www.roblox.com/asset/?id=5472131383" or game:GetObjects(FetchURL)[1].Texture
- local NewImage = Objects.new(Button and "Round" or "SmoothButton")
- NewImage.Name = ImageID
- NewImage.BackgroundTransparency = 1
- NewImage.Size = UDim2.fromOffset(20,20)
- NewImage.ScaleType = Enum.ScaleType.Stretch
- NewImage.Image = Image
- NewImage.ZIndex = 200
- NewImage.ImageTransparency = 1
- if Button then
- NewImage.Position = UDim2.fromScale(0,0.5) - UDim2.fromOffset(0,10)
- NewImage.Parent = Button
- else
- Button = NewImage
- end
- else
- local Settings = {
- TextSize = 12,
- Font = Enum.Font.GothamBold,
- Vector = Vector2.new(0,0)
- }
- local TextSize = TextService:GetTextSize(Title:upper(), Settings.TextSize, Settings.Font, Settings.Vector).X
- Button = Objects.new("Button")
- Button.Name = Title:upper()
- Button.TextXAlignment = Enum.TextXAlignment.Center
- Button.TextSize = Settings.TextSize
- Button.Font = Settings.Font
- Button.Text = Title:upper()
- Button.Size = UDim2.fromScale(0,1) + UDim2.fromOffset(TextSize+10)
- Button.ZIndex = 200
- Button.TextTransparency = 1
- end
- Button.Parent = NavigationBarContent
- local PageContentFrame = Objects.new("Scroll")
- PageContentFrame.Name = Title:upper() or ImageID
- PageContentFrame.Visible = (TabCount == 0)
- PageContentFrame.ZIndex = 50
- PageContentFrame.Parent = Content
- table.insert(ButtonTrack, Button)
- table.insert(PageTrack, PageContentFrame)
- Button.MouseButton1Down:Connect(function()
- for _, Track in next, ButtonTrack do
- if not (Track == Button) then
- TweenService:Create(Track, TweenInfo.new(0.15), {TextTransparency = 0.5}):Play()
- pcall(function()
- TweenService:Create(Track:FindFirstChildWhichIsA("ImageLabel"), TweenInfo.new(0.15), {ImageTransparency = 0.5}):Play()
- end)
- else
- TweenService:Create(Track, TweenInfo.new(0.15), {TextTransparency = 0}):Play()
- pcall(function()
- TweenService:Create(Track:FindFirstChildWhichIsA("ImageLabel"), TweenInfo.new(0.15), {ImageTransparency = 0}):Play()
- end)
- end
- end
- for _, Track in next, PageTrack do
- Track.Visible = (Track == PageContentFrame)
- end
- end)
- local PagePadding = Objects.new("UIPadding")
- PagePadding.PaddingLeft = UDim.new(0,5)
- PagePadding.PaddingRight = UDim.new(0,5)
- PagePadding.PaddingTop = UDim.new(0,5)
- PagePadding.PaddingBottom = UDim.new(0,5)
- PagePadding.Parent = PageContentFrame
- local PageList = Objects.new("UIListLayout")
- PageList.SortOrder = Enum.SortOrder.LayoutOrder
- PageList.Padding = UDim.new(0,5)
- PageList.Parent = PageContentFrame
- PageList:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
- PageContentFrame.CanvasSize = UDim2.fromOffset(0,PageList.AbsoluteContentSize.Y+10)
- end)
- TabCount = TabCount + 1
- local OptionLibrary = {}
- function OptionLibrary.Button(ButtonConfig)
- local NewButton, ButtonLabel = CreateNewButton(ButtonConfig, PageContentFrame)
- local ButtonLibrary = {}
- function ButtonLibrary:SetText(Value)
- ButtonLabel.Text = Value
- end
- function ButtonLibrary:GetText()
- return ButtonLabel.Text
- end
- return ButtonLibrary
- end
- function OptionLibrary.Dropdown(DropdownConfig)
- local DropdownText = DropdownConfig.Text or "nil dropdown"
- local DropdownValue = DropdownConfig.Default
- local DropdownCallback = DropdownConfig.Callback or function() print("nil dropdown") end
- local DropdownOptions = DropdownConfig.Options or {}
- local Menu = DropdownConfig.Menu or {}
- local Dropdown = Objects.new("Frame")
- Dropdown.Name = "Dropdown"
- Dropdown.Size = UDim2.fromScale(1,0) + UDim2.fromOffset(0,30)
- Dropdown.Parent = PageContentFrame
- local DropdownBar = Objects.new("Round")
- DropdownBar.Name = "TitleBar"
- DropdownBar.Size = UDim2.fromScale(1,0) + UDim2.fromOffset(0,30)
- DropdownBar.ImageColor3 = Theme.Dropdown
- DropdownBar.ImageTransparency = 1
- DropdownBar.Parent = Dropdown
- local DropdownTitle = Objects.new("Button")
- DropdownTitle.Name = "Title"
- DropdownTitle.Font = Enum.Font.GothamSemibold
- DropdownTitle.Text = DropdownValue and DropdownText..": "..DropdownValue or DropdownText
- DropdownTitle.TextColor3 = Theme.DropdownAccent
- DropdownTitle.TextTransparency = 1
- DropdownTitle.TextSize = 14
- DropdownTitle.Parent = DropdownBar
- local DropdownToggle = Objects.new("Round")
- DropdownToggle.Name = "Container"
- DropdownToggle.Size = UDim2.fromOffset(24,24)
- DropdownToggle.Position = UDim2.fromScale(1,0.5) - UDim2.fromOffset(27,12)
- DropdownToggle.ImageColor3 = Theme.DropdownAccent
- DropdownToggle.ImageTransparency = 1 -- 0.8
- DropdownToggle.Parent = DropdownBar
- local DropdownButton = Objects.new("Round")
- DropdownButton.Name = "Drop"
- DropdownButton.Image = "http://www.roblox.com/asset/?id=5574299686"
- DropdownButton.ScaleType = Enum.ScaleType.Stretch
- DropdownButton.Size = UDim2.fromScale(1,1) - UDim2.fromOffset(4,4)
- DropdownButton.Position = UDim2.fromOffset(2,2)
- DropdownButton.ImageColor3 = Theme.DropdownAccent
- DropdownButton.ImageTransparency = 1
- DropdownButton.Parent = DropdownToggle
- TweenService:Create(DropdownBar, TweenInfo.new(0.5), {ImageTransparency = 0}):Play()
- TweenService:Create(DropdownTitle, TweenInfo.new(0.5), {TextTransparency = 0}):Play()
- TweenService:Create(DropdownToggle, TweenInfo.new(0.5), {ImageTransparency = 0.8}):Play()
- TweenService:Create(DropdownButton, TweenInfo.new(0.5), {ImageTransparency = 0}):Play()
- local DropdownContent = Objects.new("Frame")
- DropdownContent.Name = "Content"
- DropdownContent.Size = UDim2.fromScale(1,0)
- DropdownContent.Position = UDim2.fromOffset(0,35)
- DropdownContent.ClipsDescendants = true
- DropdownContent.Parent = Dropdown
- local NumberOfOptions = #DropdownOptions
- local DropToggle = false
- local DropdownSize = UDim2.fromScale(1,0) + UDim2.fromOffset(0,(NumberOfOptions*20) + ((NumberOfOptions - 1) * 5))
- local DropdownList = Objects.new("UIListLayout")
- DropdownList.SortOrder = Enum.SortOrder.LayoutOrder
- DropdownList.Padding = UDim.new(0,5)
- DropdownList.Parent = DropdownContent
- DropdownList:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
- if DropToggle then
- DropdownContent.Size = UDim2.fromScale(1,0) + UDim2.fromOffset(DropdownList.AbsoluteContentSize.Y)
- DropdownSize = UDim2.fromScale(1,0) + UDim2.fromOffset(DropdownList.AbsoluteContentSize.Y)
- end
- end)
- table.foreach(DropdownOptions, function(_, Value)
- local NewButton = CreateNewButton({
- Text = Value,
- Callback = function() end
- }, DropdownContent)
- NewButton.Size = UDim2.fromScale(1,0) + UDim2.fromOffset(0,20)
- NewButton.MouseButton1Down:Connect(function()
- DropdownCallback(Value)
- DropdownTitle.Text = DropdownText..": "..Value
- DropdownValue = Value
- end)
- end)
- DropdownTitle.MouseButton1Down:Connect(function()
- DropToggle = not DropToggle
- TweenService:Create(DropdownButton, TweenInfo.new(0.15), {Rotation = DropToggle and 135 or 0}):Play()
- TweenService:Create(DropdownContent, TweenInfo.new(0.15), {Size = DropToggle and DropdownSize or UDim2.fromScale(1,0)}):Play()
- TweenService:Create(Dropdown, TweenInfo.new(0.15), {Size = DropToggle and (DropdownSize + UDim2.fromOffset(0,35)) or (UDim2.fromScale(1,0) + UDim2.fromOffset(0,30))}):Play()
- end)
- local MenuAdded, MenuButton = TryAddMenu(DropdownBar, Menu, {})
- if MenuAdded then
- DropdownToggle.Position = DropdownToggle.Position - UDim2.fromOffset(25,0)
- MenuButton.ImageColor3 = Theme.DropdownAccent
- end
- local DropdownLibrary = {}
- function DropdownLibrary:SetText(Value)
- DropdownTitle.Text = Value
- end
- function DropdownLibrary:GetText()
- return DropdownTitle.Text
- end
- function DropdownLibrary:GetValue()
- return DropdownValue
- end
- function DropdownLibrary:SetOptions(NewMenu)
- DropdownOptions = NewMenu or {}
- NumberOfOptions = #DropdownOptions
- DropdownSize = UDim2.fromScale(1,0) + UDim2.fromOffset(0,(NumberOfOptions*20) + ((NumberOfOptions - 1) * 5))
- if DropdownContent then
- DropdownContent:Destroy()
- end
- TweenService:Create(Dropdown, TweenInfo.new(0.15), {Size = DropToggle and (DropdownSize + UDim2.fromOffset(0,35)) or (UDim2.fromScale(1,0) + UDim2.fromOffset(0,30))}):Play()
- DropdownContent = Objects.new("Frame")
- DropdownContent.Name = "Content"
- DropdownContent.Size = DropToggle and DropdownSize or UDim2.fromScale(1,0)
- DropdownContent.Position = UDim2.fromOffset(0,35)
- DropdownContent.ClipsDescendants = true
- DropdownContent.Parent = Dropdown
- local DropdownList = Objects.new("UIListLayout")
- DropdownList.SortOrder = Enum.SortOrder.LayoutOrder
- DropdownList.Padding = UDim.new(0,5)
- DropdownList.Parent = DropdownContent
- table.foreach(DropdownOptions, function(_, Value)
- local NewButton = CreateNewButton({
- Text = Value,
- Callback = function() end
- }, DropdownContent)
- NewButton.Size = UDim2.fromScale(1,0) + UDim2.fromOffset(0,20)
- NewButton.MouseButton1Down:Connect(function()
- DropdownCallback(Value)
- DropdownTitle.Text = DropdownText..": "..Value
- DropdownValue = Value
- end)
- end)
- end
- function DropdownLibrary:GetOptions()
- return DropdownOptions
- end
- if DropdownOptions.Default then
- DropdownTitle.Text = DropdownText..": "..DropdownOptions.Default
- end
- return DropdownLibrary
- end
- function OptionLibrary.ChipSet(ChipSetConfig)
- local ChipSetText = ChipSetConfig.Text or "nil chipset"
- local ChipSetCallback = ChipSetConfig.Callback or function() print("nil chipset") end
- local ChipSetOptions = ChipSetConfig.Options or {}
- local TotalOptions = 0
- table.foreach(ChipSetOptions, function()
- TotalOptions = TotalOptions + 1
- end)
- if TotalOptions > 0 then
- local Size = UDim2.fromScale(1,0) + UDim2.fromOffset(0,(TotalOptions*30)+((TotalOptions+1)*5))
- local ChipSet = Objects.new("Round")
- ChipSet.Name = "ChipSet"
- ChipSet.Size = Size
- ChipSet.ImageColor3 = Theme.ChipSet
- ChipSet.ImageTransparency = 1
- ChipSet.Parent = PageContentFrame
- local ChipList = Objects.new("UIListLayout")
- ChipList.SortOrder = Enum.SortOrder.LayoutOrder
- ChipList.Padding = UDim.new(0,5)
- ChipList.Parent = ChipSet
- local ChipPadding = Objects.new("UIPadding")
- ChipPadding.PaddingBottom = UDim.new(0,5)
- ChipPadding.PaddingTop = UDim.new(0,5)
- ChipPadding.PaddingRight= UDim.new(0,5)
- ChipPadding.PaddingLeft = UDim.new(0,5)
- ChipPadding.Parent = ChipSet
- local BuildTable = {}
- table.foreach(ChipSetOptions, function(Key, Value)
- if typeof(Value) == "table" then
- BuildTable[Key] = Value.Enabled
- else
- BuildTable[Key] = Value
- end
- end)
- ChipSetCallback(BuildTable)
- TweenService:Create(ChipSet, TweenInfo.new(0.5), {ImageTransparency = 0.9}):Play()
- table.foreach(ChipSetOptions, function(Key, Value)
- local ChipItem = Objects.new("SmoothButton")
- ChipItem.Name = "ChipItem"
- ChipItem.Size = UDim2.fromScale(1,0) + UDim2.fromOffset(0,30)
- ChipItem.ImageColor3 = BuildTable[Key] and Theme.ChipSet or Theme.ChipSetAccent
- ChipItem.ImageTransparency = 1
- ChipItem.Parent = ChipSet
- local ChipShadow = Objects.new("Shadow")
- ChipShadow.ImageColor3 = BuildTable[Key] and Theme.ChipSet or Theme.ChipSetAccent
- ChipShadow.ImageTransparency = 1
- ChipShadow.Parent = ChipItem
- local Tick = Objects.new("Round")
- Tick.ScaleType = Enum.ScaleType.Stretch
- Tick.Image = "http://www.roblox.com/asset/?id=5554953789"
- Tick.ImageColor3 = Theme.ChipSetAccent
- Tick.ImageTransparency = 1
- Tick.Size = UDim2.fromScale(1,1) - UDim2.fromOffset(10,10)
- Tick.SizeConstraint = Enum.SizeConstraint.RelativeYY
- Tick.Position = UDim2.fromOffset(5,5)
- Tick.Parent = ChipItem
- local ChipLabel = Objects.new("Label")
- ChipLabel.Size = BuildTable[Key] and (UDim2.fromScale(1,1) - UDim2.fromOffset(30)) or (UDim2.fromScale(1,1) - UDim2.fromOffset(5))
- ChipLabel.Position = BuildTable[Key] and UDim2.fromOffset(30) or UDim2.fromOffset(5)
- ChipLabel.Text = Key
- ChipLabel.Font = Enum.Font.Gotham
- ChipLabel.TextSize = 12
- ChipLabel.TextColor3 = BuildTable[Key] and Theme.ChipSetAccent or Theme.ChipSet
- ChipLabel.TextTransparency = 1
- ChipLabel.Parent = ChipItem
- TweenService:Create(ChipItem, TweenInfo.new(0.5), {ImageTransparency = 0}):Play()
- TweenService:Create(ChipShadow, TweenInfo.new(0.5), {ImageTransparency = 0.2}):Play()
- TweenService:Create(Tick, TweenInfo.new(0.5), {ImageTransparency = BuildTable[Key] and 0 or 1}):Play()
- TweenService:Create(ChipLabel, TweenInfo.new(0.5), {TextTransparency = 0}):Play()
- local ChipMenu
- if typeof(Value) == "table" then
- local Menu = Value.Menu or {}
- local MenuAdded, MenuButton = TryAddMenu(ChipItem, Menu, {})
- MenuButton.ImageColor3 = BuildTable[Key] and Theme.ChipSetAccent or Theme.ChipSet
- ChipMenu = MenuButton
- end
- ChipItem.MouseButton1Down:Connect(function()
- BuildTable[Key] = not BuildTable[Key]
- local Enabled = BuildTable[Key]
- TweenService:Create(ChipItem, TweenInfo.new(0.15), {ImageColor3 = Enabled and Theme.ChipSet or Theme.ChipSetAccent}):Play()
- TweenService:Create(ChipShadow, TweenInfo.new(0.15), {ImageColor3 = Enabled and Theme.ChipSet or Theme.ChipSetAccent}):Play()
- TweenService:Create(Tick, TweenInfo.new(0.15), {ImageTransparency = Enabled and 0 or 1}):Play()
- TweenService:Create(ChipLabel, TweenInfo.new(0.15), {TextColor3 = Enabled and Theme.ChipSetAccent or Theme.ChipSet, Position = Enabled and UDim2.fromOffset(30) or UDim2.fromOffset(5), Size = Enabled and (UDim2.fromScale(1,1) - UDim2.fromOffset(30)) or (UDim2.fromScale(1,1) - UDim2.fromOffset(5))}):Play()
- if ChipMenu then
- TweenService:Create(ChipMenu, TweenInfo.new(0.15), {ImageColor3 = Enabled and Theme.ChipSetAccent or Theme.ChipSet}):Play()
- end
- ChipSetCallback(BuildTable)
- end)
- end)
- local ChipSetLibrary = {}
- function ChipSetLibrary:SetOptions(NewMenu)
- ChipSetOptions = NewMenu or {}
- TotalOptions = 0
- table.foreach(ChipSetOptions, function()
- TotalOptions = TotalOptions + 1
- end)
- for _, Element in next, ChipSet:GetChildren() do
- Element:Destroy()
- end
- Size = UDim2.fromScale(1,0) + UDim2.fromOffset(0,(TotalOptions*30)+((TotalOptions+1)*5))
- TweenService:Create(ChipSet, TweenInfo.new(0.15), {Size = Size}):Play()
- local ChipList = Objects.new("UIListLayout")
- ChipList.SortOrder = Enum.SortOrder.LayoutOrder
- ChipList.Padding = UDim.new(0,5)
- ChipList.Parent = ChipSet
- local ChipPadding = Objects.new("UIPadding")
- ChipPadding.PaddingBottom = UDim.new(0,5)
- ChipPadding.PaddingTop = UDim.new(0,5)
- ChipPadding.PaddingRight= UDim.new(0,5)
- ChipPadding.PaddingLeft = UDim.new(0,5)
- ChipPadding.Parent = ChipSet
- local BuildTable = {}
- table.foreach(ChipSetOptions, function(Key, Value)
- if typeof(Value) == "table" then
- BuildTable[Key] = Value.Enabled
- else
- BuildTable[Key] = Value
- end
- end)
- ChipSetCallback(BuildTable)
- TweenService:Create(ChipSet, TweenInfo.new(0.5), {ImageTransparency = 0.9}):Play()
- table.foreach(ChipSetOptions, function(Key, Value)
- local ChipItem = Objects.new("SmoothButton")
- ChipItem.Name = "ChipItem"
- ChipItem.Size = UDim2.fromScale(1,0) + UDim2.fromOffset(0,30)
- ChipItem.ImageColor3 = BuildTable[Key] and Theme.ChipSet or Theme.ChipSetAccent
- ChipItem.ImageTransparency = 1
- ChipItem.Parent = ChipSet
- local ChipShadow = Objects.new("Shadow")
- ChipShadow.ImageColor3 = BuildTable[Key] and Theme.ChipSet or Theme.ChipSetAccent
- ChipShadow.ImageTransparency = 1
- ChipShadow.Parent = ChipItem
- local Tick = Objects.new("Round")
- Tick.ScaleType = Enum.ScaleType.Stretch
- Tick.Image = "http://www.roblox.com/asset/?id=5554953789"
- Tick.ImageColor3 = Theme.ChipSetAccent
- Tick.ImageTransparency = 1
- Tick.Size = UDim2.fromScale(1,1) - UDim2.fromOffset(10,10)
- Tick.SizeConstraint = Enum.SizeConstraint.RelativeYY
- Tick.Position = UDim2.fromOffset(5,5)
- Tick.Parent = ChipItem
- local ChipLabel = Objects.new("Label")
- ChipLabel.Size = BuildTable[Key] and (UDim2.fromScale(1,1) - UDim2.fromOffset(30)) or (UDim2.fromScale(1,1) - UDim2.fromOffset(5))
- ChipLabel.Position = BuildTable[Key] and UDim2.fromOffset(30) or UDim2.fromOffset(5)
- ChipLabel.Text = Key
- ChipLabel.Font = Enum.Font.Gotham
- ChipLabel.TextSize = 12
- ChipLabel.TextColor3 = BuildTable[Key] and Theme.ChipSetAccent or Theme.ChipSet
- ChipLabel.TextTransparency = 1
- ChipLabel.Parent = ChipItem
- TweenService:Create(ChipItem, TweenInfo.new(0.5), {ImageTransparency = 0}):Play()
- TweenService:Create(ChipShadow, TweenInfo.new(0.5), {ImageTransparency = 0.2}):Play()
- TweenService:Create(Tick, TweenInfo.new(0.5), {ImageTransparency = BuildTable[Key] and 0 or 1}):Play()
- TweenService:Create(ChipLabel, TweenInfo.new(0.5), {TextTransparency = 0}):Play()
- local ChipMenu
- if typeof(Value) == "table" then
- local Menu = Value.Menu or {}
- local MenuAdded, MenuButton = TryAddMenu(ChipItem, Menu, {})
- MenuButton.ImageColor3 = BuildTable[Key] and Theme.ChipSetAccent or Theme.ChipSet
- ChipMenu = MenuButton
- end
- ChipItem.MouseButton1Down:Connect(function()
- BuildTable[Key] = not BuildTable[Key]
- local Enabled = BuildTable[Key]
- TweenService:Create(ChipItem, TweenInfo.new(0.15), {ImageColor3 = Enabled and Theme.ChipSet or Theme.ChipSetAccent}):Play()
- TweenService:Create(ChipShadow, TweenInfo.new(0.15), {ImageColor3 = Enabled and Theme.ChipSet or Theme.ChipSetAccent}):Play()
- TweenService:Create(Tick, TweenInfo.new(0.15), {ImageTransparency = Enabled and 0 or 1}):Play()
- TweenService:Create(ChipLabel, TweenInfo.new(0.15), {TextColor3 = Enabled and Theme.ChipSetAccent or Theme.ChipSet, Position = Enabled and UDim2.fromOffset(30) or UDim2.fromOffset(5), Size = Enabled and (UDim2.fromScale(1,1) - UDim2.fromOffset(30)) or (UDim2.fromScale(1,1) - UDim2.fromOffset(5))}):Play()
- if ChipMenu then
- TweenService:Create(ChipMenu, TweenInfo.new(0.15), {ImageColor3 = Enabled and Theme.ChipSetAccent or Theme.ChipSet}):Play()
- end
- ChipSetCallback(BuildTable)
- end)
- end)
- end
- function ChipSetLibrary:GetOptions()
- return ChipSetOptions
- end
- return ChipSetLibrary
- end
- end
- function OptionLibrary.DataTable(DataTableConfig)
- local DataTableText = DataTableConfig.Text or "nil chipset"
- local DataTableCallback = DataTableConfig.Callback or function() print("nil chipset") end
- local DataTableOptions = DataTableConfig.Options or {}
- local TotalOptions = 0
- table.foreach(DataTableOptions, function()
- TotalOptions = TotalOptions + 1
- end)
- if TotalOptions > 0 then
- local Size = UDim2.fromScale(1,0) + UDim2.fromOffset(0,(TotalOptions*30)+((TotalOptions+1)*5))
- local DataTable = Objects.new("Round")
- DataTable.Name = "DataTable"
- DataTable.Size = Size
- DataTable.ImageColor3 = Theme.DataTable
- DataTable.ImageTransparency = 1
- DataTable.Parent = PageContentFrame
- local DataShadow = Objects.new("Shadow")
- DataShadow.ImageColor3 = Theme.DataTable
- DataShadow.ImageTransparency = 1
- DataShadow.Parent = DataTable
- local DataContainer = Objects.new("Frame")
- DataContainer.Name = "Container"
- DataContainer.Parent = DataTable
- local DataList = Objects.new("UIListLayout")
- DataList.SortOrder = Enum.SortOrder.LayoutOrder
- DataList.Padding = UDim.new(0,5)
- DataList.Parent = DataContainer
- local DataPadding = Objects.new("UIPadding")
- DataPadding.PaddingBottom = UDim.new(0,5)
- DataPadding.PaddingTop = UDim.new(0,5)
- DataPadding.PaddingRight= UDim.new(0,5)
- DataPadding.PaddingLeft = UDim.new(0,5)
- DataPadding.Parent = DataContainer
- local BuildTable = {}
- table.foreach(DataTableOptions, function(Key, Value)
- if typeof(Value) == "table" then
- BuildTable[Key] = Value.Enabled
- else
- BuildTable[Key] = Value
- end
- end)
- DataTableCallback(BuildTable)
- TweenService:Create(DataTable, TweenInfo.new(0.5), {ImageTransparency = 0.9}):Play()
- TweenService:Create(DataShadow, TweenInfo.new(0.5), {ImageTransparency = 0.8}):Play()
- table.foreach(DataTableOptions, function(Key, Value)
- local DataItem = Objects.new("SmoothButton")
- DataItem.Name = "DataItem"
- DataItem.Size = UDim2.fromScale(1,0) + UDim2.fromOffset(0,30)
- DataItem.ImageColor3 = BuildTable[Key] and Theme.DataTable or Theme.DataTableAccent
- DataItem.ImageTransparency = 1
- DataItem.Parent = DataContainer
- local DataTracker = Objects.new("Round")
- DataTracker.Name = "Tracker"
- DataTracker.Size = UDim2.fromOffset(24,24)
- DataTracker.Position = UDim2.fromScale(0,0.5) + UDim2.fromOffset(3,-12)
- DataTracker.ImageColor3 = Theme.DataTable
- DataTracker.ImageTransparency = 1
- DataTracker.Parent = DataItem
- local Tick = Objects.new("Round")
- Tick.Name = "Tick"
- Tick.ScaleType = Enum.ScaleType.Stretch
- Tick.Image = "http://www.roblox.com/asset/?id=5554953789"
- Tick.ImageColor3 = Theme.DataTableAccent
- Tick.ImageTransparency = 1
- Tick.Size = UDim2.fromScale(1,1) - UDim2.fromOffset(4,4)
- Tick.SizeConstraint = Enum.SizeConstraint.RelativeYY
- Tick.Position = UDim2.fromOffset(2,2)
- Tick.Parent = DataTracker
- local DataLabel = Objects.new("Label")
- DataLabel.Name = "Value"
- DataLabel.Size = (UDim2.fromScale(1,1) - UDim2.fromOffset(30))
- DataLabel.Position = UDim2.fromOffset(30) or UDim2.fromOffset(5)
- DataLabel.Text = Key
- DataLabel.Font = Enum.Font.Gotham
- DataLabel.TextSize = 14
- DataLabel.TextColor3 = Theme.DataTable
- DataLabel.TextTransparency = 1
- DataLabel.Parent = DataItem
- TweenService:Create(DataItem, TweenInfo.new(0.5), {ImageTransparency = BuildTable[Key] and 0.8 or 0}):Play()
- TweenService:Create(DataTracker, TweenInfo.new(0.5), {ImageTransparency = BuildTable[Key] and 0 or 0.8}):Play()
- TweenService:Create(Tick, TweenInfo.new(0.5), {ImageTransparency = BuildTable[Key] and 0 or 0.7}):Play()
- TweenService:Create(DataLabel, TweenInfo.new(0.5), {TextTransparency = 0}):Play()
- local DataMenu
- if typeof(Value) == "table" then
- local Menu = Value.Menu or {}
- local MenuAdded, MenuButton = TryAddMenu(DataItem, Menu, {})
- MenuButton.ImageColor3 = Theme.DataTable
- DataMenu = MenuButton
- end
- DataItem.MouseButton1Down:Connect(function()
- BuildTable[Key] = not BuildTable[Key]
- local Enabled = BuildTable[Key]
- TweenService:Create(DataItem, TweenInfo.new(0.15), {ImageTransparency = Enabled and 0.8 or 0, ImageColor3 = Enabled and Theme.DataTable or Theme.DataTableAccent}):Play()
- TweenService:Create(Tick, TweenInfo.new(0.15), {ImageTransparency = Enabled and 0 or 0.7}):Play()
- TweenService:Create(DataTracker, TweenInfo.new(0.15), {ImageTransparency = Enabled and 0 or 0.8}):Play()
- DataTableCallback(BuildTable)
- end)
- end)
- local DataTableLibrary = {}
- function DataTableLibrary:SetOptions(NewMenu)
- if DataContainer then
- DataContainer:Destroy()
- end
- DataTableOptions = NewMenu or {}
- TotalOptions = 0
- table.foreach(DataTableOptions, function()
- TotalOptions = TotalOptions + 1
- end)
- Size = UDim2.fromScale(1,0) + UDim2.fromOffset(0,(TotalOptions*30)+((TotalOptions+1)*5))
- DataTable.Size = Size
- DataContainer = Objects.new("Frame")
- DataContainer.Name = "Container"
- DataContainer.Parent = DataTable
- local DataList = Objects.new("UIListLayout")
- DataList.SortOrder = Enum.SortOrder.LayoutOrder
- DataList.Padding = UDim.new(0,5)
- DataList.Parent = DataContainer
- local DataPadding = Objects.new("UIPadding")
- DataPadding.PaddingBottom = UDim.new(0,5)
- DataPadding.PaddingTop = UDim.new(0,5)
- DataPadding.PaddingRight= UDim.new(0,5)
- DataPadding.PaddingLeft = UDim.new(0,5)
- DataPadding.Parent = DataContainer
- local BuildTable = {}
- table.foreach(DataTableOptions, function(Key, Value)
- if typeof(Value) == "table" then
- BuildTable[Key] = Value.Enabled
- else
- BuildTable[Key] = Value
- end
- end)
- DataTableCallback(BuildTable)
- TweenService:Create(DataTable, TweenInfo.new(0.5), {ImageTransparency = 0.9}):Play()
- TweenService:Create(DataShadow, TweenInfo.new(0.5), {ImageTransparency = 0.8}):Play()
- table.foreach(DataTableOptions, function(Key, Value)
- local DataItem = Objects.new("SmoothButton")
- DataItem.Name = "DataItem"
- DataItem.Size = UDim2.fromScale(1,0) + UDim2.fromOffset(0,30)
- DataItem.ImageColor3 = BuildTable[Key] and Theme.DataTable or Theme.DataTableAccent
- DataItem.ImageTransparency = 1
- DataItem.Parent = DataContainer
- local DataTracker = Objects.new("Round")
- DataTracker.Name = "Tracker"
- DataTracker.Size = UDim2.fromOffset(24,24)
- DataTracker.Position = UDim2.fromScale(0,0.5) + UDim2.fromOffset(3,-12)
- DataTracker.ImageColor3 = Theme.DataTable
- DataTracker.ImageTransparency = 1
- DataTracker.Parent = DataItem
- local Tick = Objects.new("Round")
- Tick.Name = "Tick"
- Tick.ScaleType = Enum.ScaleType.Stretch
- Tick.Image = "http://www.roblox.com/asset/?id=5554953789"
- Tick.ImageColor3 = Theme.DataTableAccent
- Tick.ImageTransparency = 1
- Tick.Size = UDim2.fromScale(1,1) - UDim2.fromOffset(4,4)
- Tick.SizeConstraint = Enum.SizeConstraint.RelativeYY
- Tick.Position = UDim2.fromOffset(2,2)
- Tick.Parent = DataTracker
- local DataLabel = Objects.new("Label")
- DataLabel.Name = "Value"
- DataLabel.Size = (UDim2.fromScale(1,1) - UDim2.fromOffset(30))
- DataLabel.Position = UDim2.fromOffset(30) or UDim2.fromOffset(5)
- DataLabel.Text = Key
- DataLabel.Font = Enum.Font.Gotham
- DataLabel.TextSize = 14
- DataLabel.TextColor3 = Theme.DataTable
- DataLabel.TextTransparency = 1
- DataLabel.Parent = DataItem
- TweenService:Create(DataItem, TweenInfo.new(0.5), {ImageTransparency = BuildTable[Key] and 0.8 or 0}):Play()
- TweenService:Create(DataTracker, TweenInfo.new(0.5), {ImageTransparency = BuildTable[Key] and 0 or 0.8}):Play()
- TweenService:Create(Tick, TweenInfo.new(0.5), {ImageTransparency = BuildTable[Key] and 0 or 0.7}):Play()
- TweenService:Create(DataLabel, TweenInfo.new(0.5), {TextTransparency = 0}):Play()
- local DataMenu
- if typeof(Value) == "table" then
- local Menu = Value.Menu or {}
- local MenuAdded, MenuButton = TryAddMenu(DataItem, Menu, {})
- MenuButton.ImageColor3 = Theme.DataTable
- DataMenu = MenuButton
- end
- DataItem.MouseButton1Down:Connect(function()
- BuildTable[Key] = not BuildTable[Key]
- local Enabled = BuildTable[Key]
- TweenService:Create(DataItem, TweenInfo.new(0.15), {ImageTransparency = Enabled and 0.8 or 0, ImageColor3 = Enabled and Theme.DataTable or Theme.DataTableAccent}):Play()
- TweenService:Create(Tick, TweenInfo.new(0.15), {ImageTransparency = Enabled and 0 or 0.7}):Play()
- TweenService:Create(DataTracker, TweenInfo.new(0.15), {ImageTransparency = Enabled and 0 or 0.8}):Play()
- DataTableCallback(BuildTable)
- end)
- end)
- end
- function DataTableLibrary:GetOptions()
- return DataTableOptions
- end
- return DataTableLibrary
- end
- end
- function OptionLibrary.ColorPicker(ColorPickerConfig)
- local ColorPickerText = ColorPickerConfig.Text or "nil color picker"
- local ColorPickerCallback = ColorPickerConfig.Callback or function() print("nil color picker") end
- local ColorPickerDefault = ColorPickerConfig.Default or Color3.fromRGB(255,255,255)
- local ColorPickerMenu = ColorPickerConfig.Menu or {}
- local ColorPickerToggle = false
- local H, S, V = Objects.new("NumberValue"), Objects.new("NumberValue"), Objects.new("NumberValue")
- H.Value, S.Value, V.Value = Color3.toHSV(ColorPickerDefault)
- local ColorPicker = Objects.new("SmoothButton")
- ColorPicker.Name = "ColorPicker"
- ColorPicker.Size = UDim2.fromScale(1,0) + UDim2.fromOffset(0,40)
- ColorPicker.ImageColor3 = Theme.ColorPicker
- ColorPicker.ImageTransparency = 1
- ColorPicker.ClipsDescendants = true
- ColorPicker.Parent = PageContentFrame
- ColorPicker.MouseButton1Down:Connect(function()
- ColorPickerToggle = not ColorPickerToggle
- TweenService:Create(ColorPicker, TweenInfo.new(0.15), {Size = UDim2.fromScale(1,0) + (ColorPickerToggle and UDim2.fromOffset(0,115) or UDim2.fromOffset(0,40))}):Play()
- end)
- local ColorBar = Objects.new("Round")
- ColorBar.Name = "TitleBar"
- ColorBar.Size = UDim2.fromScale(1,0) + UDim2.fromOffset(-10,30)
- ColorBar.Position = UDim2.fromOffset(5,5)
- ColorBar.ImageColor3 = Theme.ColorPickerAccent
- ColorBar.ImageTransparency = 1
- ColorBar.Parent = ColorPicker
- local ColorShadow = Objects.new("Shadow")
- ColorShadow.ImageColor3 = Theme.ColorPickerAccent
- ColorShadow.ImageTransparency = 1
- ColorShadow.Parent = ColorBar
- local ColorLabel = Objects.new("Label")
- ColorLabel.Name = "Title"
- ColorLabel.Font = Enum.Font.GothamSemibold
- ColorLabel.TextColor3 = Theme.ColorPickerAccent
- ColorLabel.TextSize = 14
- ColorLabel.Text = ColorPickerText
- ColorLabel.TextTransparency = 1
- ColorLabel.Parent = ColorBar
- local ColorTracker = Objects.new("Round")
- ColorTracker.Name = "Tracker"
- ColorTracker.Size = UDim2.fromOffset(50,20)
- ColorTracker.Position = UDim2.fromScale(1,0) + UDim2.fromOffset(-55,5)
- ColorTracker.ImageColor3 = ColorPickerDefault
- ColorTracker.ImageTransparency = 1
- ColorTracker.Parent = ColorBar
- local TrackerShadow = Objects.new("Shadow")
- TrackerShadow.ImageColor3 = ColorTracker.ImageColor3
- TrackerShadow.ImageTransparency = 1
- TrackerShadow.Parent = ColorTracker
- ColorTracker:GetPropertyChangedSignal("ImageColor3"):Connect(function()
- TrackerShadow.ImageColor3 = ColorTracker.ImageColor3
- end)
- local Hue = Objects.new("Round")
- Hue.Name = "Container"
- Hue.Position = UDim2.fromOffset(5,40)
- Hue.Size = UDim2.fromOffset(25,20)
- Hue.ImageColor3 = Theme.ColorPickerAccent
- Hue.ImageTransparency = 0.8
- Hue.Parent = ColorPicker
- local Saturation = Hue:Clone()
- Saturation.Position = Saturation.Position + UDim2.fromOffset(0,25)
- Saturation.Parent = ColorPicker
- local Value = Saturation:Clone()
- Value.Position = Value.Position + UDim2.fromOffset(0,25)
- Value.Parent = ColorPicker
- local HueLabel = Objects.new("Label")
- HueLabel.Name = "Label"
- HueLabel.TextXAlignment = Enum.TextXAlignment.Center
- HueLabel.Position = UDim2.fromScale(0,0)
- HueLabel.Size = UDim2.fromScale(1,1)
- HueLabel.Text = "H"
- HueLabel.TextColor3 = Theme.ColorPickerAccent
- HueLabel.TextSize = 12
- HueLabel.Font = Enum.Font.GothamBold
- HueLabel.TextTransparency = 1
- HueLabel.Parent = Hue
- local SaturationLabel = HueLabel:Clone()
- SaturationLabel.Text = "S"
- SaturationLabel.Parent = Saturation
- local ValueLabel = HueLabel:Clone()
- ValueLabel.Text = "V"
- ValueLabel.Parent = Value
- local function CSK(T,C)
- return ColorSequenceKeypoint.new(T,C)
- end
- local RainbowGradient = Objects.new("UIGradient")
- RainbowGradient.Color = ColorSequence.new({
- CSK(0, Color3.fromRGB(255,0,0)),
- CSK(0.157, Color3.fromRGB(255,0,255)),
- CSK(0.323, Color3.fromRGB(0,0,255)),
- CSK(0.488, Color3.fromRGB(0,255,255)),
- CSK(0.66, Color3.fromRGB(0,255,0)),
- CSK(0.817, Color3.fromRGB(255,255,0)),
- CSK(1, Color3.fromRGB(255,0,0))
- })
- local BlackWhiteGradient = Objects.new("UIGradient")
- BlackWhiteGradient.Color = ColorSequence.new(
- Color3.new(1,1,1),
- Color3.new(0,0,0)
- )
- local SaturationGradient = Objects.new("UIGradient")
- SaturationGradient.Color = ColorSequence.new(
- Color3.fromHSV(H.Value,1,V.Value),
- Color3.new(0,0,0):Lerp(Color3.fromRGB(255,255,255), V.Value)
- )
- local HueTracker = Objects.new("SmoothButton")
- HueTracker.Name = "Tracker"
- HueTracker.ImageColor3 = Color3.fromRGB(255,255,255)
- HueTracker.ImageTransparency = 1
- HueTracker.Size = UDim2.fromScale(1,0) + UDim2.fromOffset(-40,20)
- HueTracker.Position = UDim2.fromOffset(35,40)
- HueTracker.Parent = ColorPicker
- local SaturationTracker = HueTracker:Clone()
- SaturationTracker.Position = SaturationTracker.Position + UDim2.fromOffset(0,25)
- SaturationTracker.Parent = ColorPicker
- local ValueTracker = SaturationTracker:Clone()
- ValueTracker.Position = ValueTracker.Position + UDim2.fromOffset(0,25)
- ValueTracker.Parent = ColorPicker
- local HueShadow = Objects.new("Shadow")
- HueShadow.ImageColor3 = Color3.fromRGB(255,255,255)
- HueShadow.ImageTransparency = 1
- HueShadow.Parent = HueTracker
- local SaturationShadow = HueShadow:Clone()
- SaturationShadow.Parent = SaturationTracker
- local ValueShadow = HueShadow:Clone()
- ValueShadow.Parent = ValueTracker
- local HueGrad = RainbowGradient:Clone()
- HueGrad.Parent = HueTracker
- local HueShadowGrad = RainbowGradient:Clone()
- HueShadowGrad.Parent = HueShadow
- local ValueGrad = BlackWhiteGradient:Clone()
- ValueGrad.Parent = ValueTracker
- local ValueShadowGrad = BlackWhiteGradient:Clone()
- ValueShadowGrad.Parent = ValueShadow
- local SaturationGrad = SaturationGradient:Clone()
- SaturationGrad.Parent = SaturationTracker
- local SaturationShadowGrad = SaturationGradient:Clone()
- SaturationShadowGrad.Parent = SaturationShadow
- TweenService:Create(ColorPicker, TweenInfo.new(0.5), {ImageTransparency = 0.5}):Play()
- TweenService:Create(ColorBar, TweenInfo.new(0.5), {ImageTransparency = 0.8}):Play()
- TweenService:Create(ColorShadow, TweenInfo.new(0.5), {ImageTransparency = 0.5}):Play()
- TweenService:Create(ColorLabel, TweenInfo.new(0.5), {TextTransparency = 0}):Play()
- TweenService:Create(HueLabel, TweenInfo.new(0.5), {TextTransparency = 0}):Play()
- TweenService:Create(SaturationLabel, TweenInfo.new(0.5), {TextTransparency = 0}):Play()
- TweenService:Create(ValueLabel, TweenInfo.new(0.5), {TextTransparency = 0}):Play()
- TweenService:Create(ColorTracker, TweenInfo.new(0.5), {ImageTransparency = 0}):Play()
- TweenService:Create(TrackerShadow, TweenInfo.new(0.5), {ImageTransparency = 0.2}):Play()
- TweenService:Create(HueTracker, TweenInfo.new(0.5), {ImageTransparency = 0}):Play()
- TweenService:Create(ValueTracker, TweenInfo.new(0.5), {ImageTransparency = 0}):Play()
- TweenService:Create(SaturationTracker, TweenInfo.new(0.5), {ImageTransparency = 0}):Play()
- TweenService:Create(HueShadow, TweenInfo.new(0.5), {ImageTransparency = 0}):Play()
- TweenService:Create(SaturationShadow, TweenInfo.new(0.5), {ImageTransparency = 0}):Play()
- TweenService:Create(ValueShadow, TweenInfo.new(0.5), {ImageTransparency = 0}):Play()
- H:GetPropertyChangedSignal("Value"):Connect(function()
- ColorTracker.ImageColor3 = Color3.fromHSV(H.Value,S.Value,V.Value)
- SaturationGrad.Color = ColorSequence.new(
- Color3.fromHSV(H.Value,1,V.Value),
- Color3.fromRGB(0,0,0):Lerp(Color3.fromRGB(255,255,255),V.Value)
- )
- SaturationShadowGrad.Color = ColorSequence.new(
- Color3.fromHSV(H.Value,1,V.Value),
- Color3.fromRGB(0,0,0):Lerp(Color3.fromRGB(255,255,255),V.Value)
- )
- ColorPickerCallback(Color3.fromHSV(H.Value,S.Value,V.Value))
- end)
- S:GetPropertyChangedSignal("Value"):Connect(function()
- ColorTracker.ImageColor3 = Color3.fromHSV(H.Value,S.Value,V.Value)
- SaturationGrad.Color = ColorSequence.new(
- Color3.fromHSV(H.Value,1,V.Value),
- Color3.fromRGB(0,0,0):Lerp(Color3.fromRGB(255,255,255),V.Value)
- )
- SaturationShadowGrad.Color = ColorSequence.new(
- Color3.fromHSV(H.Value,1,V.Value),
- Color3.fromRGB(0,0,0):Lerp(Color3.fromRGB(255,255,255),V.Value)
- )
- ColorPickerCallback(Color3.fromHSV(H.Value,S.Value,V.Value))
- end)
- V:GetPropertyChangedSignal("Value"):Connect(function()
- ColorTracker.ImageColor3 = Color3.fromHSV(H.Value,S.Value,V.Value)
- SaturationGrad.Color = ColorSequence.new(
- Color3.fromHSV(H.Value,1,V.Value),
- Color3.fromRGB(0,0,0):Lerp(Color3.fromRGB(255,255,255),V.Value)
- )
- SaturationShadowGrad.Color = ColorSequence.new(
- Color3.fromHSV(H.Value,1,V.Value),
- Color3.fromRGB(0,0,0):Lerp(Color3.fromRGB(255,255,255),V.Value)
- )
- ColorPickerCallback(Color3.fromHSV(H.Value,S.Value,V.Value))
- end)
- HueTracker.MouseButton1Down:Connect(function()
- H.Value = 1 - GetXY(HueTracker)
- local MouseMove, MouseKill
- MouseMove = Mouse.Move:Connect(function()
- H.Value = 1 - GetXY(HueTracker)
- end)
- MouseKill = InputService.InputEnded:Connect(function(UserInput)
- if UserInput.UserInputType == Enum.UserInputType.MouseButton1 then
- MouseMove:Disconnect()
- MouseKill:Disconnect()
- end
- end)
- end)
- ValueTracker.MouseButton1Down:Connect(function()
- V.Value = 1 - GetXY(HueTracker)
- local MouseMove, MouseKill
- MouseMove = Mouse.Move:Connect(function()
- V.Value = 1 - GetXY(HueTracker)
- end)
- MouseKill = InputService.InputEnded:Connect(function(UserInput)
- if UserInput.UserInputType == Enum.UserInputType.MouseButton1 then
- MouseMove:Disconnect()
- MouseKill:Disconnect()
- end
- end)
- end)
- SaturationTracker.MouseButton1Down:Connect(function()
- S.Value = 1 - GetXY(HueTracker)
- local MouseMove, MouseKill
- MouseMove = Mouse.Move:Connect(function()
- S.Value = 1 - GetXY(HueTracker)
- end)
- MouseKill = InputService.InputEnded:Connect(function(UserInput)
- if UserInput.UserInputType == Enum.UserInputType.MouseButton1 then
- MouseMove:Disconnect()
- MouseKill:Disconnect()
- end
- end)
- end)
- local MenuAdded, MenuButton = TryAddMenu(ColorLabel, ColorPickerMenu, {})
- if MenuAdded then
- ColorTracker.Position = ColorTracker.Position - UDim2.fromOffset(25,0)
- MenuButton.ImageColor3 = Theme.ColorPickerAccent
- end
- local ColorPickerLibrary = {}
- function ColorPickerLibrary:SetText(Value)
- ColorLabel.Text = Value
- end
- function ColorPickerLibrary:GetText()
- return ColorLabel.Text
- end
- function ColorPickerLibrary:SetColor(Value)
- H.Value, S.Value, V.Value = Color3.toHSV(Value)
- end
- function ColorPickerLibrary:GetColor()
- return ColorTracker.ImageColor3
- end
- return ColorPickerLibrary
- end
- function OptionLibrary.Toggle(ToggleConfig)
- local ToggleText = ToggleConfig.Text or "nil toggle"
- local ToggleCallback = ToggleConfig.Callback or function() print("nil toggle") end
- local ToggleDefault = ToggleConfig.Enabled or false
- local Menu = ToggleConfig.Menu or {}
- local Toggle = Objects.new("SmoothButton")
- Toggle.Name = "Toggle"
- Toggle.Size = UDim2.fromScale(1,0) + UDim2.fromOffset(0,30)
- Toggle.ImageColor3 = Theme.Toggle
- Toggle.ImageTransparency = 1
- Toggle.Parent = PageContentFrame
- local ToggleTracker = Objects.new("Round")
- ToggleTracker.Name = "Tracker"
- ToggleTracker.Image = "rbxassetid://3570695787"
- ToggleTracker.SliceCenter = Rect.new(100,100,100,100)
- ToggleTracker.SliceScale = 1
- ToggleTracker.Size = UDim2.fromOffset(26,12)
- ToggleTracker.Position = UDim2.fromScale(1,0.5) - UDim2.fromOffset(41,6)
- ToggleTracker.ImageColor3 = Theme.Toggle
- ToggleTracker.ImageTransparency = 1
- ToggleTracker.Parent = Toggle
- local Dot = Objects.new("Circle")
- Dot.Name = "Dot"
- Dot.Size = UDim2.fromOffset(16,16)
- Dot.Position = UDim2.fromScale(0,0.5) - UDim2.fromOffset(8,8)
- Dot.ImageColor3 = Theme.ToggleAccent
- Dot.ImageTransparency = 1
- Dot.Parent = ToggleTracker
- local DotShadow = Objects.new("Round")
- DotShadow.Name = "Shadow"
- DotShadow.Image = "http://www.roblox.com/asset/?id=5554831957"
- DotShadow.ScaleType = Enum.ScaleType.Stretch
- DotShadow.Size = UDim2.fromOffset(31,31)
- DotShadow.Position = UDim2.fromOffset(-8,-8)
- DotShadow.ImageColor3 = Theme.Toggle
- DotShadow.ImageTransparency = 1
- DotShadow.Parent = Dot
- local ToggleLabel = Objects.new("Label")
- ToggleLabel.Font = Enum.Font.GothamSemibold
- ToggleLabel.TextSize = 14
- ToggleLabel.Text = ToggleText
- ToggleLabel.TextColor3 = Theme.Toggle
- ToggleLabel.TextTransparency = 1
- ToggleLabel.ClipsDescendants = true
- ToggleLabel.Parent = Toggle
- TweenService:Create(Toggle, TweenInfo.new(0.5), {ImageTransparency = 0.8}):Play()
- TweenService:Create(ToggleTracker, TweenInfo.new(0.5), {ImageTransparency = 0.5}):Play()
- TweenService:Create(Dot, TweenInfo.new(0.5), {ImageTransparency = 0}):Play()
- TweenService:Create(DotShadow, TweenInfo.new(0.5), {ImageTransparency = 0.5}):Play()
- TweenService:Create(ToggleLabel, TweenInfo.new(0.5), {TextTransparency = 0}):Play()
- TweenService:Create(Dot, TweenInfo.new(0.15), {Position = (ToggleDefault and UDim2.fromScale(1,0.5) or UDim2.fromScale(0,0.5)) - UDim2.fromOffset(8,8), ImageColor3 = ToggleDefault and Theme.Toggle or Theme.ToggleAccent}):Play()
- ToggleCallback(ToggleDefault)
- Toggle.MouseButton1Down:Connect(function()
- ToggleDefault = not ToggleDefault
- TweenService:Create(Dot, TweenInfo.new(0.15), {Position = (ToggleDefault and UDim2.fromScale(1,0.5) or UDim2.fromScale(0,0.5)) - UDim2.fromOffset(8,8), ImageColor3 = ToggleDefault and Theme.Toggle or Theme.ToggleAccent}):Play()
- ToggleCallback(ToggleDefault)
- CircleAnim(ToggleLabel, Theme.ToggleAccent, Theme.Toggle)
- end)
- local MenuAdded, MenuButton = TryAddMenu(Toggle, Menu, {})
- if MenuAdded then
- ToggleTracker.Position = ToggleTracker.Position - UDim2.fromOffset(15,0)
- MenuButton.ImageColor3 = Theme.Toggle
- end
- local ToggleLibrary = {}
- function ToggleLibrary:SetText(Value)
- ToggleLabel.Text = Value
- end
- function ToggleLibrary:GetText()
- return ToggleLabel.Text
- end
- function ToggleLibrary:SetState(Value)
- ToggleDefault = Value
- TweenService:Create(Dot, TweenInfo.new(0.15), {Position = (ToggleDefault and UDim2.fromScale(1,0.5) or UDim2.fromScale(0,0.5)) - UDim2.fromOffset(8,8), ImageColor3 = ToggleDefault and Theme.Toggle or Theme.ToggleAccent}):Play()
- ToggleCallback(ToggleDefault)
- end
- function ToggleLibrary:GetState()
- return ToggleDefault
- end
- return ToggleLibrary
- end
- function OptionLibrary.TextField(TextFieldConfig)
- local TextFieldText = TextFieldConfig.Text or "nil text field"
- local TextFieldInputType = TextFieldConfig.Type or TextFieldConfig.type or "Default"
- local TextFieldCallback = TextFieldConfig.Callback or function() print("nil text field") end
- local Menu = TextFieldConfig.Menu or {}
- local TextField = Objects.new("Round")
- TextField.Name = "TextField"
- TextField.Size = UDim2.fromScale(1,0) + UDim2.fromOffset(0,30)
- TextField.ImageColor3 = Theme.TextField
- TextField.ImageTransparency = 1
- TextField.Parent = PageContentFrame
- local TextEffect = Objects.new("Frame")
- TextEffect.Name = "Effect"
- TextEffect.BackgroundTransparency = 1
- TextEffect.BackgroundColor3 = Theme.TextField
- TextEffect.Size = UDim2.fromScale(1,0) + UDim2.fromOffset(0,2)
- TextEffect.Position = UDim2.fromScale(0,1) - UDim2.fromOffset(0,2)
- TextEffect.Parent = TextField
- local TextShadow = Objects.new("Shadow")
- TextShadow.ImageColor3 = Theme.TextField
- TextShadow.ImageTransparency = 1
- TextShadow.Parent = TextField
- local TextInput = Objects.new("Box")
- TextInput.Name = "Value"
- TextInput.PlaceholderText = TextFieldText
- TextInput.PlaceholderColor3 = Theme.TextFieldAccent
- TextInput.TextInputType = Enum.TextInputType[TextFieldInputType]
- TextInput.TextColor3 = Theme.TextFieldAccent
- TextInput.Text = ""
- TextInput.Font = Enum.Font.GothamSemibold
- TextInput.TextSize = 14
- TextInput.TextTransparency = 1
- TextInput.Parent = TextField
- TweenService:Create(TextField, TweenInfo.new(0.5), {ImageTransparency = 0.8}):Play()
- TweenService:Create(TextEffect, TweenInfo.new(0.5), {BackgroundTransparency = 0.2}):Play()
- TweenService:Create(TextShadow, TweenInfo.new(0.5), {ImageTransparency = 0.7}):Play()
- TweenService:Create(TextInput, TweenInfo.new(0.5), {TextTransparency = 0.5}):Play()
- TextInput.Focused:Connect(function()
- TweenService:Create(TextField, TweenInfo.new(0.5), {ImageTransparency = 0.7}):Play()
- TweenService:Create(TextInput, TweenInfo.new(0.5), {TextTransparency = 0}):Play()
- end)
- TextInput.FocusLost:Connect(function()
- TweenService:Create(TextField, TweenInfo.new(0.5), {ImageTransparency = 0.8}):Play()
- TweenService:Create(TextInput, TweenInfo.new(0.5), {TextTransparency = 0.5}):Play()
- TextFieldCallback(TextInput.Text)
- end)
- local MenuAdded, MenuBar = TryAddMenu(TextField, Menu, {
- SetText = function(Value)
- TextInput.Text = Value
- TextFieldCallback(TextInput.Text)
- end
- })
- if MenuAdded then
- MenuBar.ImageColor3 = Theme.TextFieldAccent
- end
- local TextFieldLibrary = {}
- function TextFieldLibrary:SetText(Value)
- TextInput.Text = Value
- end
- function TextFieldLibrary:GetText()
- return TextInput.Text
- end
- return TextFieldLibrary
- end
- function OptionLibrary.Label(LabelConfig)
- local LabelText = LabelConfig.Text or "nil label"
- local LabelContainer = Objects.new("Round")
- LabelContainer.Name = "Label"
- LabelContainer.Size = UDim2.fromScale(1,0) + UDim2.fromOffset(0,20)
- LabelContainer.ImageColor3 = Theme.MainFrame
- LabelContainer.Parent = PageContentFrame
- local LabelContent = Objects.new("Label")
- LabelContent.TextColor3 = Theme.ChipSet
- LabelContent.Text = LabelText:upper()
- LabelContent.TextSize = 12
- LabelContent.Font = Enum.Font.GothamSemibold
- LabelContent.Size = UDim2.fromScale(1,1) + UDim2.fromOffset(-5,0)
- LabelContent.Position = UDim2.fromOffset(5,0)
- LabelContent.Parent = LabelContainer
- local LabelOptions = {}
- function LabelOptions.SetText(Text)
- LabelContent.Text = Text
- end
- return LabelOptions
- end
- function OptionLibrary.Slider(SliderConfig)
- local SliderText = SliderConfig.Text or "nil slider"
- local SliderCallback = SliderConfig.Callback or function() print("nil slider") end
- local SliderMin = SliderConfig.Min or 0
- local SliderMax = SliderConfig.Max or 100
- local SliderPrecision = SliderConfig.Precision or 0
- local Menu = SliderConfig.Menu or {}
- if SliderMin > SliderMax then
- local ValueBefore = SliderMin
- SliderMin, SliderMax = SliderMax, ValueBefore
- end
- local SliderDef = math.clamp(SliderConfig.Def, SliderMin, SliderMax) or math.clamp(50, SliderMin, SliderMax)
- local DefaultScale = (SliderDef - SliderMin) / (SliderMax - SliderMin)
- local Slider = Objects.new("Round")
- Slider.Name = "Slider"
- Slider.Size = UDim2.fromScale(1,0) + UDim2.fromOffset(0,35)
- Slider.ImageColor3 = Theme.Slider
- Slider.ImageTransparency = 1
- Slider.Parent = PageContentFrame
- local SliderShadow = Objects.new("Shadow")
- SliderShadow.ImageColor3 = Theme.Slider
- SliderShadow.ImageTransparency = 1
- SliderShadow.Parent = Slider
- local SliderTitle = Objects.new("Label")
- SliderTitle.TextColor3 = Theme.SliderAccent
- SliderTitle.Text = SliderText
- SliderTitle.TextSize = 14
- SliderTitle.Font = Enum.Font.GothamSemibold
- SliderTitle.Size = UDim2.fromScale(1,0) + UDim2.fromOffset(-5,25)
- SliderTitle.TextTransparency = 1
- SliderTitle.Parent = Slider
- local SliderValue = Objects.new("Label")
- SliderValue.Text = tostring(SliderDef)
- SliderValue.TextColor3 = Theme.SliderAccent
- SliderValue.TextTransparency = 1
- SliderValue.TextSize = 14
- SliderValue.Size = UDim2.fromScale(1,0) + UDim2.fromOffset(-5,25)
- SliderValue.Position = UDim2.fromScale(0,0)
- SliderValue.TextXAlignment = Enum.TextXAlignment.Right
- SliderValue.Font = Enum.Font.GothamSemibold
- SliderValue.Parent = Slider
- local SliderTracker = Objects.new("Frame")
- SliderTracker.BackgroundColor3 = Theme.SliderAccent
- SliderTracker.BackgroundTransparency = 1
- SliderTracker.Size = UDim2.fromScale(1,0) + UDim2.fromOffset(-20,3)
- SliderTracker.Position = UDim2.fromScale(0,1) + UDim2.fromOffset(10,-10)
- SliderTracker.Parent = Slider
- local SliderFill = SliderTracker:Clone()
- SliderFill.BackgroundTransparency = 1
- SliderFill.Position = UDim2.fromScale(0,0)
- SliderFill.Size = UDim2.fromScale(DefaultScale,1)
- SliderFill.Parent = SliderTracker
- local MinSize = 10
- local MaxSize = 36
- local SizeFromScale = (MinSize + (MaxSize - MinSize)) * DefaultScale
- SizeFromScale = SizeFromScale - (SizeFromScale % 2)
- local SliderDot = Objects.new("CircleButton")
- SliderDot.Size = UDim2.fromOffset(10,10)
- SliderDot.Position = UDim2.fromScale(DefaultScale,0.5) - UDim2.fromOffset(5,5)
- SliderDot.ImageColor3 = Theme.SliderAccent
- SliderDot.ImageTransparency = 1
- SliderDot.ZIndex = 50
- SliderDot.Parent = SliderTracker
- local SliderFadedDot = Objects.new("Circle")
- SliderFadedDot.Size = UDim2.fromOffset(SizeFromScale,SizeFromScale)
- SliderFadedDot.Position = UDim2.fromScale(0.5,0.5) - UDim2.fromOffset(SizeFromScale/2,SizeFromScale/2)
- SliderFadedDot.ImageColor3 = Theme.SliderAccent
- SliderFadedDot.ImageTransparency = 1
- SliderFadedDot.ZIndex = 50
- SliderFadedDot.Parent = SliderDot
- TweenService:Create(Slider, TweenInfo.new(0.5), {ImageTransparency = 0}):Play()
- TweenService:Create(SliderShadow, TweenInfo.new(0.5), {ImageTransparency = 0}):Play()
- TweenService:Create(SliderTitle, TweenInfo.new(0.5), {TextTransparency = 0}):Play()
- TweenService:Create(SliderValue, TweenInfo.new(0.5), {TextTransparency = 0}):Play()
- TweenService:Create(SliderTracker, TweenInfo.new(0.5), {BackgroundTransparency = 0.5}):Play()
- TweenService:Create(SliderFill, TweenInfo.new(0.5), {BackgroundTransparency = 0}):Play()
- TweenService:Create(SliderDot, TweenInfo.new(0.5), {ImageTransparency = 0}):Play()
- SliderDot.MouseButton1Down:Connect(function()
- TweenService:Create(SliderFadedDot, TweenInfo.new(0.15), {ImageTransparency = 0.8}):Play()
- local MouseMove, MouseKill
- MouseMove = Mouse.Move:Connect(function()
- local Px = GetXY(SliderTracker)
- local SizeFromScale = (MinSize + (MaxSize - MinSize)) * Px
- local Power = 10 ^ SliderPrecision
- local Value = math.floor((SliderMin + ((SliderMax - SliderMin) * Px)) * Power) / Power
- SizeFromScale = SizeFromScale - (SizeFromScale % 2)
- TweenService:Create(SliderDot, TweenInfo.new(0.15), {Position = UDim2.fromScale(Px,0.5) - UDim2.fromOffset(5,5)}):Play()
- TweenService:Create(SliderFill, TweenInfo.new(0.15), {Size = UDim2.fromScale(Px, 1)}):Play()
- SliderFadedDot.Size = UDim2.fromOffset(SizeFromScale,SizeFromScale)
- SliderFadedDot.Position = UDim2.fromScale(0.5,0.5) - UDim2.fromOffset(SizeFromScale/2,SizeFromScale/2)
- SliderValue.Text = tostring(Value)
- SliderCallback(Value)
- end)
- MouseKill = InputService.InputEnded:Connect(function(UserInput)
- if UserInput.UserInputType == Enum.UserInputType.MouseButton1 then
- TweenService:Create(SliderFadedDot, TweenInfo.new(0.15), {ImageTransparency = 1}):Play()
- MouseMove:Disconnect()
- MouseKill:Disconnect()
- end
- end)
- end)
- local MenuAdded, MenuButton = TryAddMenu(Slider, Menu, {})
- if MenuAdded then
- SliderValue.Position = SliderValue.Position - UDim2.fromOffset(25,0)
- SliderTracker.Size = SliderTracker.Size - UDim2.fromOffset(20,0)
- MenuButton.ImageColor3 = Theme.SliderAccent
- end
- local SliderLibrary = {}
- function SliderLibrary:SetText(Value)
- SliderTitle.Text = Value
- end
- function SliderLibrary:GetText()
- return SliderTitle.Text
- end
- function SliderLibrary:GetValue()
- return tonumber(SliderValue.Text)
- end
- function SliderLibrary:SetMin(Value)
- SliderMin = Value
- local SliderDef = math.clamp(SliderConfig.Def, SliderMin, SliderMax) or math.clamp(50, SliderMin, SliderMax)
- local DefaultScale = (SliderDef - SliderMin) / (SliderMax - SliderMin)
- local SizeFromScale = (MinSize + (MaxSize - MinSize)) * DefaultScale
- SizeFromScale = SizeFromScale - (SizeFromScale % 2)
- SliderDot.Position = UDim2.fromScale(DefaultScale,0.5) - UDim2.fromOffset(SizeFromScale/2,SizeFromScale/2)
- end
- function SliderLibrary:SetMax(Value)
- SliderMax = Value
- local SliderDef = math.clamp(SliderConfig.Def, SliderMin, SliderMax) or math.clamp(50, SliderMin, SliderMax)
- local DefaultScale = (SliderDef - SliderMin) / (SliderMax - SliderMin)
- local SizeFromScale = (MinSize + (MaxSize - MinSize)) * DefaultScale
- SizeFromScale = SizeFromScale - (SizeFromScale % 2)
- SliderDot.Position = UDim2.fromScale(DefaultScale,0.5) - UDim2.fromOffset(SizeFromScale/2,SizeFromScale/2)
- end
- function SliderLibrary:GetMin()
- return SliderMin
- end
- function SliderLibrary:GetMax()
- return SliderMax
- end
- return SliderLibrary
- end
- return OptionLibrary
- end
- return TabLibrary
- end
- return Material
Add Comment
Please, Sign In to add comment