├── Libraries ├── Darius - Example .lua ├── Discord - Example.lua ├── FluentUI-Example.lua ├── FluentUI-Library.lua ├── Flux - Example.lua ├── Kavo - Example.lua ├── Leny - Example.lua ├── Lime - Example.lua ├── Linoria - Example.lua ├── Linoria - Library.lua ├── Linui - Example.lua ├── Material - Example.lua ├── Mercury - Example.lua ├── Obsidan - Example.lua ├── Ocerium - Example.lua ├── Orion - Example.lua ├── Orion - Library.lua ├── PRIV9 - Example.lua ├── Pepsi - Example.lua ├── PlayStations - Example.lua ├── Polar - Example.lua ├── Rayfield - Library.lua ├── ReGUI - Example.lua ├── Sea Hub - Example.lua ├── Solaris - Example.lua ├── Venyx - Example.lua ├── Wally V3 - Example.lua ├── Xanax - Example.lua ├── Xenon - Example.lua ├── Xenon - Library.lua ├── uwuware (2.x) - Library.lua ├── uwuware (wally) - Library.lua └── vape - Example.lua └── README.md /Libraries/Darius - Example .lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | 3 | Made by griffin 4 | Discord: @griffindoescooking 5 | Github: https://github.com/idonthaveoneatm 6 | 7 | ]]-- 8 | 9 | local start = tick() 10 | 11 | local characters = string.split("qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890","") 12 | local function randomString(length) 13 | if length > 0 then 14 | return randomString(length - 1) .. characters[math.random(1, #characters)] 15 | else 16 | return "" 17 | end 18 | end 19 | 20 | local lucide = loadstring(game:HttpGetAsync("https://raw.githubusercontent.com/idonthaveoneatm/darius/refs/heads/main/example/lucide.luau"))() 21 | local randomIcons = {} 22 | for _,v in lucide do 23 | table.insert(randomIcons, v) 24 | end 25 | local function randomIcon():string 26 | return randomIcons[math.floor(math.random(1,#randomIcons))] 27 | end 28 | 29 | local format = "bundled" 30 | local darius = loadstring(game:HttpGetAsync(`https://raw.githubusercontent.com/idonthaveoneatm/darius/refs/heads/main/{format}.luau`))() 31 | 32 | local window = darius:Window({ 33 | Title = "Darius", 34 | Description = "What the sigma this isn't Quantum UI", 35 | HideBind = Enum.KeyCode.T, 36 | UseConfig = true, 37 | Config = "dariusTestScript", 38 | IsMobile = false 39 | }) 40 | 41 | local tab = window:Tab({ 42 | Name = randomString(6), 43 | Image = randomIcon() 44 | }) 45 | local tab2 = window:Tab({ 46 | Name = randomString(6), 47 | Image = randomIcon() 48 | }) 49 | for i=1,10 do 50 | window:Tab({ 51 | Name = randomString(6), 52 | Image = randomIcon() 53 | }) 54 | end 55 | 56 | tab:Button({ 57 | Name = "Button", 58 | Callback = function() 59 | print("Hello World!") 60 | end 61 | }) 62 | 63 | local ExtractItem = function(itemToClean:string):string 64 | cleanedItem = itemToClean:match('(.-)') 65 | if cleanedItem then 66 | cleanedItem = cleanedItem:match("^%s*(.-)%s*$") 67 | end 68 | return cleanedItem or itemToClean 69 | end 70 | 71 | tab:Dropdown({ 72 | Name = "Multiselect Dropdown", 73 | Items = { 74 | { 75 | Value = 'apple', 76 | Image = randomIcon() 77 | }, 78 | 'banana', 79 | 'carrot', 80 | 'dingleberry', 81 | 'egg plant', 82 | 'frank', 83 | 'grape', 84 | 'helicopter' 85 | }, 86 | Multiselect = true, 87 | Regex = ExtractItem, 88 | FLAG = "dropdown_m", 89 | Callback = function(value) 90 | print(value) 91 | end 92 | }) 93 | tab:Dropdown({ 94 | Name = "Dropdown", 95 | Items = { 96 | { 97 | Value = 'apple', 98 | Image = randomIcon() 99 | }, 100 | 'banana', 101 | 'carrot', 102 | 'dingleberry', 103 | 'egg plant', 104 | 'frank', 105 | 'grape', 106 | 'helicopter' 107 | }, 108 | Multiselect = false, 109 | FLAG = "dropdown", 110 | Regex = ExtractItem, 111 | Callback = function(value) 112 | print(value) 113 | end 114 | }) 115 | 116 | local a = tab:Toggle({ 117 | Name = "Toggle", 118 | Default = false, 119 | LinkKeybind = true, 120 | Bind = Enum.KeyCode.E, 121 | FLAG = "toggle_lk", 122 | Callback = function(value) 123 | print(`Toggle: {value}`) 124 | end 125 | }) 126 | local b 127 | b = tab:Toggle({ 128 | Name = "Disable first toggle", 129 | Default = false, 130 | FLAG = "toggle", 131 | Callback = function(v) 132 | if v then 133 | a:Disable() 134 | b:SetName("Enable first toggle") 135 | else 136 | a:Enable() 137 | b:SetName("Disable first toggle") 138 | end 139 | end 140 | }) 141 | 142 | tab:Keybind({ 143 | Name = "Keybind", 144 | FLAG = "keybind", 145 | Callback = function() 146 | print("Keybind ran") 147 | end 148 | }) 149 | 150 | tab:Slider({ 151 | Name = "Slider", 152 | Min = 0, 153 | Max = 100, 154 | FLAG = "slider", 155 | Callback = function(value) 156 | print(`Slider: {value}`) 157 | end 158 | }) 159 | 160 | tab:TextBox({ 161 | Name = "TextBox Numbers", 162 | Placeholder = "Only Numbers", 163 | ClearTextOnFocus = false, 164 | OnlyNumbers = true, 165 | OnLeave = true, 166 | Default = "", 167 | FLAG = "textbox_n", 168 | Callback = function(value) 169 | print(`TextBox Numbers: {value}`) 170 | end 171 | }) 172 | tab:TextBox({ 173 | Name = "TextBox", 174 | Placeholder = "ANYTHING", 175 | OnLeave = false, 176 | OnlyNumbers = false, 177 | ClearTextOnFocus = true, 178 | Default = "", 179 | FLAG = "textbox", 180 | Callback = function(value) 181 | print(`TextBox: {value}`) 182 | end 183 | }) 184 | 185 | tab:Label("Label") 186 | tab:Paragraph({ 187 | Title = "Paragraph", 188 | Body = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." 189 | }) 190 | tab:ColorPicker({ 191 | Name = "Color Picker", 192 | Color = Color3.fromHex('#a49ae6'), 193 | Transparency = 0.5, 194 | FLAG = "colorpicker", 195 | Callback = function(color,transparency) 196 | print(`Color Picker: {color}, {transparency}`) 197 | end 198 | }) 199 | 200 | tab:Divider() 201 | tab:KeybindList() 202 | 203 | local duration = 0 204 | local title = "" 205 | local body = "" 206 | 207 | tab2:TextBox({ 208 | Name = "Title", 209 | Placeholder = "Placeholder Text!", 210 | OnLeave = true, 211 | Default = "Title", 212 | Callback = function(value) 213 | title = value 214 | end 215 | }) 216 | tab2:TextBox({ 217 | Name = "Body", 218 | Placeholder = "Placeholder Text!", 219 | OnLeave = true, 220 | Default = "Body BODY body", 221 | Callback = function(value) 222 | body = value 223 | end 224 | }) 225 | tab2:Slider({ 226 | Name = "Duration", 227 | Min = 0, 228 | Max = 100, 229 | Default = 10, 230 | Callback = function(value) 231 | duration = value 232 | end 233 | }) 234 | tab2:Button({ 235 | Name = "Send notification", 236 | Callback = function() 237 | darius:Notify({ 238 | Title = title, 239 | Body = body, 240 | Image = randomIcon(), 241 | Duration = duration, 242 | Buttons = { 243 | { 244 | Name = "Button", 245 | Callback = function() 246 | print("Button 1") 247 | end 248 | }, 249 | { 250 | Name = "Button", 251 | Callback = function() 252 | print("Button 2") 253 | end 254 | }, 255 | { 256 | Name = "Button", 257 | Callback = function() 258 | print("Button 3") 259 | end 260 | } 261 | } 262 | }) 263 | end 264 | }) 265 | darius:LoadConfig() 266 | 267 | darius.OnDestruction:Connect(function() 268 | print("Goodbye Darius!") 269 | end) 270 | 271 | print(`loaded in: {tick() - start}`) -------------------------------------------------------------------------------- /Libraries/Discord - Example.lua: -------------------------------------------------------------------------------- 1 | local DiscordLib = 2 | loadstring(game:HttpGet "https://raw.githubusercontent.com/bloodball/-back-ups-for-libs/main/discord")() 3 | 4 | local win = DiscordLib:Window("discord library") 5 | 6 | local serv = win:Server("Preview", "") 7 | 8 | local btns = serv:Channel("Buttons") 9 | 10 | btns:Button( 11 | "Kill all", 12 | function() 13 | DiscordLib:Notification("Notification", "Killed everyone!", "Okay!") 14 | end 15 | ) 16 | 17 | btns:Seperator() 18 | 19 | btns:Button( 20 | "Get max level", 21 | function() 22 | DiscordLib:Notification("Notification", "Max level!", "Okay!") 23 | end 24 | ) 25 | 26 | local tgls = serv:Channel("Toggles") 27 | 28 | tgls:Toggle( 29 | "Auto-Farm", 30 | false, 31 | function(bool) 32 | print(bool) 33 | end 34 | ) 35 | 36 | local sldrs = serv:Channel("Sliders") 37 | 38 | local sldr = 39 | sldrs:Slider( 40 | "Slide me!", 41 | 0, 42 | 1000, 43 | 400, 44 | function(t) 45 | print(t) 46 | end 47 | ) 48 | 49 | sldrs:Button( 50 | "Change to 50", 51 | function() 52 | sldr:Change(50) 53 | end 54 | ) 55 | 56 | local drops = serv:Channel("Dropdowns") 57 | 58 | local drop = 59 | drops:Dropdown( 60 | "Pick me!", 61 | {"Option 1", "Option 2", "Option 3", "Option 4", "Option 5"}, 62 | function(bool) 63 | print(bool) 64 | end 65 | ) 66 | 67 | drops:Button( 68 | "Clear", 69 | function() 70 | drop:Clear() 71 | end 72 | ) 73 | 74 | drops:Button( 75 | "Add option", 76 | function() 77 | drop:Add("Option") 78 | end 79 | ) 80 | 81 | local clrs = serv:Channel("Colorpickers") 82 | 83 | clrs:Colorpicker( 84 | "ESP Color", 85 | Color3.fromRGB(255, 1, 1), 86 | function(t) 87 | print(t) 88 | end 89 | ) 90 | 91 | local textbs = serv:Channel("Textboxes") 92 | 93 | textbs:Textbox( 94 | "Gun power", 95 | "Type here!", 96 | true, 97 | function(t) 98 | print(t) 99 | end 100 | ) 101 | 102 | local lbls = serv:Channel("Labels") 103 | 104 | lbls:Label("This is just a label.") 105 | 106 | local bnds = serv:Channel("Binds") 107 | 108 | bnds:Bind( 109 | "Kill bind", 110 | Enum.KeyCode.RightShift, 111 | function() 112 | print("Killed everyone!") 113 | end 114 | ) 115 | 116 | serv:Channel("by dawid#7205") 117 | 118 | win:Server("Main", "http://www.roblox.com/asset/?id=6031075938") -------------------------------------------------------------------------------- /Libraries/FluentUI-Example.lua: -------------------------------------------------------------------------------- 1 | local Fluent = loadstring(game:HttpGet("https://github.com/dawid-scripts/Fluent/releases/latest/download/main.lua"))() 2 | local SaveManager = loadstring(game:HttpGet("https://raw.githubusercontent.com/dawid-scripts/Fluent/master/Addons/SaveManager.lua"))() 3 | local InterfaceManager = loadstring(game:HttpGet("https://raw.githubusercontent.com/dawid-scripts/Fluent/master/Addons/InterfaceManager.lua"))() 4 | 5 | local Window = Fluent:CreateWindow({ 6 | Title = "Fluent " .. Fluent.Version, 7 | SubTitle = "by dawid", 8 | TabWidth = 160, 9 | Size = UDim2.fromOffset(580, 460), 10 | Acrylic = true, -- The blur may be detectable, setting this to false disables blur entirely 11 | Theme = "Dark", 12 | MinimizeKey = Enum.KeyCode.LeftControl -- Used when theres no MinimizeKeybind 13 | }) 14 | 15 | --Fluent provides Lucide Icons https://lucide.dev/icons/ for the tabs, icons are optional 16 | local Tabs = { 17 | Main = Window:AddTab({ Title = "Main", Icon = "" }), 18 | Settings = Window:AddTab({ Title = "Settings", Icon = "settings" }) 19 | } 20 | 21 | local Options = Fluent.Options 22 | 23 | do 24 | Fluent:Notify({ 25 | Title = "Notification", 26 | Content = "This is a notification", 27 | SubContent = "SubContent", -- Optional 28 | Duration = 5 -- Set to nil to make the notification not disappear 29 | }) 30 | 31 | 32 | 33 | Tabs.Main:AddParagraph({ 34 | Title = "Paragraph", 35 | Content = "This is a paragraph.\nSecond line!" 36 | }) 37 | 38 | 39 | 40 | Tabs.Main:AddButton({ 41 | Title = "Button", 42 | Description = "Very important button", 43 | Callback = function() 44 | Window:Dialog({ 45 | Title = "Title", 46 | Content = "This is a dialog", 47 | Buttons = { 48 | { 49 | Title = "Confirm", 50 | Callback = function() 51 | print("Confirmed the dialog.") 52 | end 53 | }, 54 | { 55 | Title = "Cancel", 56 | Callback = function() 57 | print("Cancelled the dialog.") 58 | end 59 | } 60 | } 61 | }) 62 | end 63 | }) 64 | 65 | 66 | 67 | local Toggle = Tabs.Main:AddToggle("MyToggle", {Title = "Toggle", Default = false }) 68 | 69 | Toggle:OnChanged(function() 70 | print("Toggle changed:", Options.MyToggle.Value) 71 | end) 72 | 73 | Options.MyToggle:SetValue(false) 74 | 75 | 76 | 77 | local Slider = Tabs.Main:AddSlider("Slider", { 78 | Title = "Slider", 79 | Description = "This is a slider", 80 | Default = 2, 81 | Min = 0, 82 | Max = 5, 83 | Rounding = 1, 84 | Callback = function(Value) 85 | print("Slider was changed:", Value) 86 | end 87 | }) 88 | 89 | Slider:OnChanged(function(Value) 90 | print("Slider changed:", Value) 91 | end) 92 | 93 | Slider:SetValue(3) 94 | 95 | 96 | 97 | local Dropdown = Tabs.Main:AddDropdown("Dropdown", { 98 | Title = "Dropdown", 99 | Values = {"one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen"}, 100 | Multi = false, 101 | Default = 1, 102 | }) 103 | 104 | Dropdown:SetValue("four") 105 | 106 | Dropdown:OnChanged(function(Value) 107 | print("Dropdown changed:", Value) 108 | end) 109 | 110 | 111 | 112 | local MultiDropdown = Tabs.Main:AddDropdown("MultiDropdown", { 113 | Title = "Dropdown", 114 | Description = "You can select multiple values.", 115 | Values = {"one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen"}, 116 | Multi = true, 117 | Default = {"seven", "twelve"}, 118 | }) 119 | 120 | MultiDropdown:SetValue({ 121 | three = true, 122 | five = true, 123 | seven = false 124 | }) 125 | 126 | MultiDropdown:OnChanged(function(Value) 127 | local Values = {} 128 | for Value, State in next, Value do 129 | table.insert(Values, Value) 130 | end 131 | print("Mutlidropdown changed:", table.concat(Values, ", ")) 132 | end) 133 | 134 | 135 | 136 | local Colorpicker = Tabs.Main:AddColorpicker("Colorpicker", { 137 | Title = "Colorpicker", 138 | Default = Color3.fromRGB(96, 205, 255) 139 | }) 140 | 141 | Colorpicker:OnChanged(function() 142 | print("Colorpicker changed:", Colorpicker.Value) 143 | end) 144 | 145 | Colorpicker:SetValueRGB(Color3.fromRGB(0, 255, 140)) 146 | 147 | 148 | 149 | local TColorpicker = Tabs.Main:AddColorpicker("TransparencyColorpicker", { 150 | Title = "Colorpicker", 151 | Description = "but you can change the transparency.", 152 | Transparency = 0, 153 | Default = Color3.fromRGB(96, 205, 255) 154 | }) 155 | 156 | TColorpicker:OnChanged(function() 157 | print( 158 | "TColorpicker changed:", TColorpicker.Value, 159 | "Transparency:", TColorpicker.Transparency 160 | ) 161 | end) 162 | 163 | 164 | 165 | local Keybind = Tabs.Main:AddKeybind("Keybind", { 166 | Title = "KeyBind", 167 | Mode = "Toggle", -- Always, Toggle, Hold 168 | Default = "LeftControl", -- String as the name of the keybind (MB1, MB2 for mouse buttons) 169 | 170 | -- Occurs when the keybind is clicked, Value is `true`/`false` 171 | Callback = function(Value) 172 | print("Keybind clicked!", Value) 173 | end, 174 | 175 | -- Occurs when the keybind itself is changed, `New` is a KeyCode Enum OR a UserInputType Enum 176 | ChangedCallback = function(New) 177 | print("Keybind changed!", New) 178 | end 179 | }) 180 | 181 | -- OnClick is only fired when you press the keybind and the mode is Toggle 182 | -- Otherwise, you will have to use Keybind:GetState() 183 | Keybind:OnClick(function() 184 | print("Keybind clicked:", Keybind:GetState()) 185 | end) 186 | 187 | Keybind:OnChanged(function() 188 | print("Keybind changed:", Keybind.Value) 189 | end) 190 | 191 | task.spawn(function() 192 | while true do 193 | wait(1) 194 | 195 | -- example for checking if a keybind is being pressed 196 | local state = Keybind:GetState() 197 | if state then 198 | print("Keybind is being held down") 199 | end 200 | 201 | if Fluent.Unloaded then break end 202 | end 203 | end) 204 | 205 | Keybind:SetValue("MB2", "Toggle") -- Sets keybind to MB2, mode to Hold 206 | 207 | 208 | local Input = Tabs.Main:AddInput("Input", { 209 | Title = "Input", 210 | Default = "Default", 211 | Placeholder = "Placeholder", 212 | Numeric = false, -- Only allows numbers 213 | Finished = false, -- Only calls callback when you press enter 214 | Callback = function(Value) 215 | print("Input changed:", Value) 216 | end 217 | }) 218 | 219 | Input:OnChanged(function() 220 | print("Input updated:", Input.Value) 221 | end) 222 | end 223 | 224 | 225 | -- Addons: 226 | -- SaveManager (Allows you to have a configuration system) 227 | -- InterfaceManager (Allows you to have a interface managment system) 228 | 229 | -- Hand the library over to our managers 230 | SaveManager:SetLibrary(Fluent) 231 | InterfaceManager:SetLibrary(Fluent) 232 | 233 | -- Ignore keys that are used by ThemeManager. 234 | -- (we dont want configs to save themes, do we?) 235 | SaveManager:IgnoreThemeSettings() 236 | 237 | -- You can add indexes of elements the save manager should ignore 238 | SaveManager:SetIgnoreIndexes({}) 239 | 240 | -- use case for doing it this way: 241 | -- a script hub could have themes in a global folder 242 | -- and game configs in a separate folder per game 243 | InterfaceManager:SetFolder("FluentScriptHub") 244 | SaveManager:SetFolder("FluentScriptHub/specific-game") 245 | 246 | InterfaceManager:BuildInterfaceSection(Tabs.Settings) 247 | SaveManager:BuildConfigSection(Tabs.Settings) 248 | 249 | 250 | Window:SelectTab(1) 251 | 252 | Fluent:Notify({ 253 | Title = "Fluent", 254 | Content = "The script has been loaded.", 255 | Duration = 8 256 | }) 257 | 258 | -- You can use the SaveManager:LoadAutoloadConfig() to load a config 259 | -- which has been marked to be one that auto loads! 260 | SaveManager:LoadAutoloadConfig() 261 | -------------------------------------------------------------------------------- /Libraries/FluentUI-Library.lua: -------------------------------------------------------------------------------- 1 | local Fluent = loadstring(game:HttpGet("https://github.com/dawid-scripts/Fluent/releases/latest/download/main.lua"))() 2 | -------------------------------------------------------------------------------- /Libraries/Flux - Example.lua: -------------------------------------------------------------------------------- 1 | local Flux = loadstring(game:HttpGet"https://raw.githubusercontent.com/dawid-scripts/UI-Libs/main/fluxlib.txt")() 2 | 3 | local win = Flux:Window("PREVIEW", "Baseplate", Color3.fromRGB(255, 110, 48), Enum.KeyCode.LeftControl) 4 | local tab = win:Tab("Tab 1", "http://www.roblox.com/asset/?id=6023426915") 5 | tab:Button("Kill all", "This function may not work sometimes and you can get banned.", function() 6 | Flux:Notification("Killed all players successfully!", "Alright") 7 | end) 8 | tab:Label("This is just a label.") 9 | tab:Line() 10 | tab:Toggle("Auto-Farm Coins", "Automatically collects coins for you!", function(t) 11 | print(t) 12 | end) 13 | tab:Slider("Walkspeed", "Makes your faster.", 0, 100,16,function(t) 14 | print(t) 15 | end) 16 | tab:Dropdown("Part to aim at", {"Torso","Head","Penis"}, function(t) 17 | print(t) 18 | end) 19 | tab:Colorpicker("ESP Color", Color3.fromRGB(255,1,1), function(t) 20 | print(t) 21 | end) 22 | tab:Textbox("Gun Power", "This textbox changes your gun power, so you can kill everyone faster and easier.", true, function(t) 23 | print(t) 24 | end) 25 | tab:Bind("Kill Bind", Enum.KeyCode.Q, function() 26 | print("Killed a random person!") 27 | end) 28 | win:Tab("Tab 2", "http://www.roblox.com/asset/?id=6022668888") -------------------------------------------------------------------------------- /Libraries/Kavo - Example.lua: -------------------------------------------------------------------------------- 1 | --// Kavo UI Library by xHelptc 2 | "https://xheptcofficial.gitbook.io/kavo-library/" -------------------------------------------------------------------------------- /Libraries/Leny - Example.lua: -------------------------------------------------------------------------------- 1 | local Library = loadstring(game:HttpGetAsync("https://raw.githubusercontent.com/L3nyFromV3rm/Leny-UI/refs/heads/main/Library.lua", true))() 2 | 3 | Library.new({ 4 | sizeX = 770, 5 | sizeY = 600, 6 | title = "yo", 7 | tabWidth = 200, -- (72 for icons only) 8 | PrimaryBackgroundColor = Library.Theme.PrimaryBackgroundColor, 9 | SecondaryBackgroundColor = Library.Theme.SecondaryBackgroundColor, 10 | TertiaryBackgroundColor = Library.Theme.TertiaryBackgroundColor, 11 | TabBackgroundColor = Library.Theme.TabBackgroundColor, 12 | PrimaryTextColor = Library.Theme.PrimaryTextColor, 13 | SecondaryTextColor = Library.Theme.SecondaryTextColor, 14 | PrimaryColor = Library.Theme.PrimaryColor, 15 | ScrollingBarImageColor = Library.Theme.ScrollingBarImageColor, 16 | Line = Library.Theme.Line, 17 | }) 18 | 19 | Library:notify({ 20 | title = "Notification", 21 | text = "Hello world", 22 | maxSizeX = 300, 23 | scaleX = 0.165, 24 | sizeY = 200, 25 | }) 26 | 27 | local Main = Library:createLabel({text = "Main"}) 28 | 29 | local Tab = Library:createTab({ 30 | text = "Exploits", 31 | icon = "124718082122263", -- 20x20 icon you want here 32 | }) 33 | 34 | local Page1 = Tab:createSubTab({ 35 | text = "Page 1", 36 | sectionStyle = "Double", -- Make the page a single section style or double, "Single", "Double" 37 | }) 38 | 39 | local Section = Page1:createSection({ 40 | text = "Section", 41 | position = "Left", 42 | }) 43 | 44 | Section:createToggle({ 45 | text = "Toggle 1", 46 | state = false, 47 | callback = function(state) 48 | print(state) 49 | end 50 | }) -- :getState(), :updateState({state = true}) 51 | 52 | Section:createKeybind({ 53 | onHeld = false, 54 | text = "Keybind 1", 55 | default = "RightBracket", 56 | callback = function(keyName) 57 | print(keyName) 58 | end 59 | }) -- :getKeybind(), :updateKeybind({bind = "LeftShift"}) 60 | 61 | Section:createSlider({ 62 | text = "Slider 1", 63 | min = 0, 64 | max = 100, 65 | step = 1, 66 | callback = function(value) 67 | print(value) 68 | end 69 | }) -- :getValue(), :updateValue({value = 100}) 70 | 71 | Section:createPicker({ 72 | text = "ColorPicker 1", 73 | default = Color3.fromRGB(255, 255, 255), 74 | callback = function(color) 75 | print(color) 76 | end 77 | }) -- :getColor(), :updateColor({color = Color3.fromRGB(255, 255, 0)}) 78 | 79 | Section:createDropdown({ 80 | text = "Dropdown 1", 81 | list = {"Hello", "World!"}, 82 | default = {"Hello"}, 83 | multiple = false, -- choose multiple from list, makes callback value return a table now 84 | callback = function(value) 85 | print(value) 86 | end 87 | }) -- :getList() (returns the list you provided, not the value), :getValue(), :updateList({list = {1,2,3}, default = {1, 2}}) 88 | 89 | Section:createDropdown({ 90 | text = "Multiselect Dropdown", 91 | list = {1,2,3,4,5}, 92 | default = {1,2}, 93 | multiple = true, 94 | callback = function(value) 95 | print(unpack(value)) 96 | end 97 | }) 98 | 99 | Section:createButton({ 100 | text = "Button 1", 101 | callback = function() 102 | print("this is a button") 103 | end 104 | }) 105 | 106 | Section:createTextBox({ 107 | text = "TextBox 1", 108 | default = "hi", 109 | callback = function(text) 110 | print(text) 111 | end, 112 | }) -- :getText(), :updateText({text = "bro"}) 113 | 114 | 115 | -- Addon example 116 | local Toggle = Section:createToggle({ 117 | text = "Toggle 2", 118 | state = false, 119 | callback = function(state) 120 | print(state) 121 | end 122 | }) 123 | 124 | -- Takes in same parameters/arguments as above 125 | Toggle:createPicker({}) 126 | Toggle:createSlider({}) 127 | Toggle:createDropdown({}) 128 | Toggle:createToggle({}) 129 | 130 | -- Flags example 131 | print(shared.Flags.Toggle["Toggle 1"]:getState()) -- refers to the {text = "Toggle 1"} you set for the element 132 | 133 | -- Creates the theme changer, config manager, etc 134 | Library:createManager({ 135 | folderName = "brah", 136 | icon = "124718082122263", -- 20x20 icon you want here 137 | }) -------------------------------------------------------------------------------- /Libraries/Lime - Example.lua: -------------------------------------------------------------------------------- 1 | --Made by : https://v3rmillion.net/member.php?action=profile&uid=1642742 2 | 3 | local Library = loadstring(game:HttpGet("https://raw.githubusercontent.com/bloodball/-back-ups-for-libs/main/lime"))() 4 | 5 | local w = Library:Window("Main") 6 | 7 | w:Button("Button", function() 8 | print("Printed") 9 | end) 10 | 11 | w:Toggle("Toggle", function(v) 12 | print(v) 13 | end) -------------------------------------------------------------------------------- /Libraries/Linoria - Example.lua: -------------------------------------------------------------------------------- 1 | -- New example script written by wally 2 | -- You can suggest changes with a pull request or something 3 | 4 | local repo = 'https://raw.githubusercontent.com/wally-rblx/LinoriaLib/main/' 5 | 6 | local Library = loadstring(game:HttpGet(repo .. 'Library.lua'))() 7 | local ThemeManager = loadstring(game:HttpGet(repo .. 'addons/ThemeManager.lua'))() 8 | local SaveManager = loadstring(game:HttpGet(repo .. 'addons/SaveManager.lua'))() 9 | 10 | local Window = Library:CreateWindow({ 11 | -- Set Center to true if you want the menu to appear in the center 12 | -- Set AutoShow to true if you want the menu to appear when it is created 13 | -- Position and Size are also valid options here 14 | -- but you do not need to define them unless you are changing them :) 15 | 16 | Title = 'Example menu', 17 | Center = true, 18 | AutoShow = true, 19 | }) 20 | 21 | -- You do not have to set your tabs & groups up this way, just a prefrence. 22 | local Tabs = { 23 | -- Creates a new tab titled Main 24 | Main = Window:AddTab('Main'), 25 | ['UI Settings'] = Window:AddTab('UI Settings'), 26 | } 27 | 28 | -- Groupbox and Tabbox inherit the same functions 29 | -- except Tabboxes you have to call the functions on a tab (Tabbox:AddTab(name)) 30 | local LeftGroupBox = Tabs.Main:AddLeftGroupbox('Groupbox') 31 | 32 | -- Tabboxes are a tiny bit different, but here's a basic example: 33 | --[[ 34 | 35 | local TabBox = Tabs.Main:AddLeftTabbox() -- Add Tabbox on left side 36 | 37 | local Tab1 = TabBox:AddTab('Tab 1') 38 | local Tab2 = TabBox:AddTab('Tab 2') 39 | 40 | -- You can now call AddToggle, etc on the tabs you added to the Tabbox 41 | ]] 42 | 43 | -- Groupbox:AddToggle 44 | -- Arguments: Index, Options 45 | LeftGroupBox:AddToggle('MyToggle', { 46 | Text = 'This is a toggle', 47 | Default = true, -- Default value (true / false) 48 | Tooltip = 'This is a tooltip', -- Information shown when you hover over the toggle 49 | }) 50 | 51 | 52 | -- Fetching a toggle object for later use: 53 | -- Toggles.MyToggle.Value 54 | 55 | -- Toggles is a table added to getgenv() by the library 56 | -- You index Toggles with the specified index, in this case it is 'MyToggle' 57 | -- To get the state of the toggle you do toggle.Value 58 | 59 | -- Calls the passed function when the toggle is updated 60 | Toggles.MyToggle:OnChanged(function() 61 | -- here we get our toggle object & then get its value 62 | print('MyToggle changed to:', Toggles.MyToggle.Value) 63 | end) 64 | 65 | -- This should print to the console: "My toggle state changed! New value: false" 66 | Toggles.MyToggle:SetValue(false) 67 | 68 | -- Groupbox:AddButton 69 | -- Arguments: Text, Callback 70 | 71 | local MyButton = LeftGroupBox:AddButton('Button', function() 72 | print('You clicked a button!') 73 | end) 74 | 75 | -- Button:AddButton 76 | -- Arguments: Text, Callback 77 | -- Adds a sub button to the side of the main button 78 | 79 | local MyButton2 = MyButton:AddButton('Sub button', function() 80 | print('You clicked a sub button!') 81 | end) 82 | 83 | -- Button:AddTooltip 84 | -- Arguments: ToolTip 85 | 86 | MyButton:AddTooltip('This is a button') 87 | MyButton2:AddTooltip('This is a sub button') 88 | 89 | -- NOTE: You can chain the button methods! 90 | --[[ 91 | EXAMPLE: 92 | 93 | LeftGroupBox:AddButton('Kill all', Functions.KillAll):AddTooltip('This will kill everyone in the game!') 94 | :AddButton('Kick all', Functions.KickAll):AddTooltip('This will kick everyone in the game!') 95 | ]] 96 | 97 | -- Groupbox:AddLabel 98 | -- Arguments: Text, DoesWrap 99 | LeftGroupBox:AddLabel('This is a label') 100 | LeftGroupBox:AddLabel('This is a label\n\nwhich wraps its text!', true) 101 | 102 | -- Groupbox:AddDivider 103 | -- Arguments: None 104 | LeftGroupBox:AddDivider() 105 | 106 | -- Groupbox:AddSlider 107 | -- Arguments: Idx, Options 108 | LeftGroupBox:AddSlider('MySlider', { 109 | Text = 'This is my slider!', 110 | 111 | -- Text, Default, Min, Max, Rounding must be specified. 112 | -- Rounding is the number of decimal places for precision. 113 | 114 | -- Example: 115 | -- Rounding 0 - 5 116 | -- Rounding 1 - 5.1 117 | -- Rounding 2 - 5.15 118 | -- Rounding 3 - 5.155 119 | 120 | Default = 0, 121 | Min = 0, 122 | Max = 5, 123 | Rounding = 1, 124 | 125 | Compact = false, -- If set to true, then it will hide the label 126 | }) 127 | 128 | -- Options is a table added to getgenv() by the library 129 | -- You index Options with the specified index, in this case it is 'MySlider' 130 | -- To get the value of the slider you do slider.Value 131 | 132 | local Number = Options.MySlider.Value 133 | Options.MySlider:OnChanged(function() 134 | print('MySlider was changed! New value:', Options.MySlider.Value) 135 | end) 136 | 137 | -- This should print to the console: "MySlider was changed! New value: 3" 138 | Options.MySlider:SetValue(3) 139 | 140 | -- Groupbox:AddInput 141 | -- Arguments: Idx, Info 142 | LeftGroupBox:AddInput('MyTextbox', { 143 | Default = 'My textbox!', 144 | Numeric = false, -- true / false, only allows numbers 145 | Finished = false, -- true / false, only calls callback when you press enter 146 | 147 | Text = 'This is a textbox', 148 | Tooltip = 'This is a tooltip', -- Information shown when you hover over the textbox 149 | 150 | Placeholder = 'Placeholder text', -- placeholder text when the box is empty 151 | -- MaxLength is also an option which is the max length of the text 152 | }) 153 | 154 | Options.MyTextbox:OnChanged(function() 155 | print('Text updated. New text:', Options.MyTextbox.Value) 156 | end) 157 | 158 | -- Groupbox:AddDropdown 159 | -- Arguments: Idx, Info 160 | 161 | LeftGroupBox:AddDropdown('MyDropdown', { 162 | Values = { 'This', 'is', 'a', 'dropdown' }, 163 | Default = 1, -- number index of the value / string 164 | Multi = false, -- true / false, allows multiple choices to be selected 165 | 166 | Text = 'A dropdown', 167 | Tooltip = 'This is a tooltip', -- Information shown when you hover over the textbox 168 | }) 169 | 170 | Options.MyDropdown:OnChanged(function() 171 | print('Dropdown got changed. New value:', Options.MyDropdown.Value) 172 | end) 173 | 174 | Options.MyDropdown:SetValue('This') 175 | 176 | -- Multi dropdowns 177 | LeftGroupBox:AddDropdown('MyMultiDropdown', { 178 | -- Default is the numeric index (e.g. "This" would be 1 since it if first in the values list) 179 | -- Default also accepts a string as well 180 | 181 | -- Currently you can not set multiple values with a dropdown 182 | 183 | Values = { 'This', 'is', 'a', 'dropdown' }, 184 | Default = 1, 185 | Multi = true, -- true / false, allows multiple choices to be selected 186 | 187 | Text = 'A dropdown', 188 | Tooltip = 'This is a tooltip', -- Information shown when you hover over the textbox 189 | }) 190 | 191 | Options.MyMultiDropdown:OnChanged(function() 192 | -- print('Dropdown got changed. New value:', ) 193 | print('Multi dropdown got changed:') 194 | for key, value in next, Options.MyMultiDropdown.Value do 195 | print(key, value) -- should print something like This, true 196 | end 197 | end) 198 | 199 | Options.MyMultiDropdown:SetValue({ 200 | This = true, 201 | is = true, 202 | }) 203 | 204 | -- Label:AddColorPicker 205 | -- Arguments: Idx, Info 206 | 207 | -- You can also ColorPicker & KeyPicker to a Toggle as well 208 | 209 | LeftGroupBox:AddLabel('Color'):AddColorPicker('ColorPicker', { 210 | Default = Color3.new(0, 1, 0), -- Bright green 211 | Title = 'Some color', -- Optional. Allows you to have a custom color picker title (when you open it) 212 | }) 213 | 214 | Options.ColorPicker:OnChanged(function() 215 | print('Color changed!', Options.ColorPicker.Value) 216 | end) 217 | 218 | Options.ColorPicker:SetValueRGB(Color3.fromRGB(0, 255, 140)) 219 | 220 | LeftGroupBox:AddLabel('Keybind'):AddKeyPicker('KeyPicker', { 221 | -- SyncToggleState only works with toggles. 222 | -- It allows you to make a keybind which has its state synced with its parent toggle 223 | 224 | -- Example: Keybind which you use to toggle flyhack, etc. 225 | -- Changing the toggle disables the keybind state and toggling the keybind switches the toggle state 226 | 227 | Default = 'MB2', -- String as the name of the keybind (MB1, MB2 for mouse buttons) 228 | SyncToggleState = false, 229 | 230 | 231 | -- You can define custom Modes but I have never had a use for it. 232 | Mode = 'Toggle', -- Modes: Always, Toggle, Hold 233 | 234 | Text = 'Auto lockpick safes', -- Text to display in the keybind menu 235 | NoUI = false, -- Set to true if you want to hide from the Keybind menu, 236 | }) 237 | 238 | -- OnClick is only fired when you press the keybind and the mode is Toggle 239 | -- Otherwise, you will have to use Keybind:GetState() 240 | Options.KeyPicker:OnClick(function() 241 | print('Keybind clicked!', Options.KeyPicker.Value) 242 | end) 243 | 244 | task.spawn(function() 245 | while true do 246 | wait(1) 247 | 248 | -- example for checking if a keybind is being pressed 249 | local state = Options.KeyPicker:GetState() 250 | if state then 251 | print('KeyPicker is being held down') 252 | end 253 | 254 | if Library.Unloaded then break end 255 | end 256 | end) 257 | 258 | Options.KeyPicker:SetValue({ 'MB2', 'Toggle' }) -- Sets keybind to MB2, mode to Hold 259 | 260 | -- Library functions 261 | -- Sets the watermark visibility 262 | Library:SetWatermarkVisibility(true) 263 | 264 | -- Sets the watermark text 265 | Library:SetWatermark('This is a really long watermark to text the resizing') 266 | 267 | Library.KeybindFrame.Visible = true; -- todo: add a function for this 268 | 269 | Library:OnUnload(function() 270 | print('Unloaded!') 271 | Library.Unloaded = true 272 | end) 273 | 274 | -- UI Settings 275 | local MenuGroup = Tabs['UI Settings']:AddLeftGroupbox('Menu') 276 | 277 | -- I set NoUI so it does not show up in the keybinds menu 278 | MenuGroup:AddButton('Unload', function() Library:Unload() end) 279 | MenuGroup:AddLabel('Menu bind'):AddKeyPicker('MenuKeybind', { Default = 'End', NoUI = true, Text = 'Menu keybind' }) 280 | 281 | Library.ToggleKeybind = Options.MenuKeybind -- Allows you to have a custom keybind for the menu 282 | 283 | -- Addons: 284 | -- SaveManager (Allows you to have a configuration system) 285 | -- ThemeManager (Allows you to have a menu theme system) 286 | 287 | -- Hand the library over to our managers 288 | ThemeManager:SetLibrary(Library) 289 | SaveManager:SetLibrary(Library) 290 | 291 | -- Ignore keys that are used by ThemeManager. 292 | -- (we dont want configs to save themes, do we?) 293 | SaveManager:IgnoreThemeSettings() 294 | 295 | -- Adds our MenuKeybind to the ignore list 296 | -- (do you want each config to have a different menu key? probably not.) 297 | SaveManager:SetIgnoreIndexes({ 'MenuKeybind' }) 298 | 299 | -- use case for doing it this way: 300 | -- a script hub could have themes in a global folder 301 | -- and game configs in a separate folder per game 302 | ThemeManager:SetFolder('MyScriptHub') 303 | SaveManager:SetFolder('MyScriptHub/specific-game') 304 | 305 | -- Builds our config menu on the right side of our tab 306 | SaveManager:BuildConfigSection(Tabs['UI Settings']) 307 | 308 | -- Builds our theme menu (with plenty of built in themes) on the left side 309 | -- NOTE: you can also call ThemeManager:ApplyToGroupbox to add it to a specific groupbox 310 | ThemeManager:ApplyToTab(Tabs['UI Settings']) 311 | 312 | -- You can use the SaveManager:LoadAutoloadConfig() to load a config 313 | -- which has been marked to be one that auto loads! -------------------------------------------------------------------------------- /Libraries/Linui - Example.lua: -------------------------------------------------------------------------------- 1 | --========================== LinUI Library Example --==========================-- 2 | local Library = loadstring(game:HttpGet("https://reallinen.github.io/Files/Scripts/Linui.lua"))() 3 | local Section = Library:Section("Example") -- Creates a section 4 | 5 | local Label = Section:Label({ 6 | Text = "I am a Label", -- Text/Name of the label 7 | }) 8 | 9 | local Button = Section:Button({ 10 | 11 | Text = "Click me", -- Text/Name of the button 12 | 13 | Callback = function() -- What will be fired when the button is clicked [ optional ] | Default: function() end 14 | print("Button was clicked!") 15 | end 16 | }) 17 | 18 | local MagicButton = Section:Button({ 19 | 20 | Text = "Magic Button", -- Text/Name of the button 21 | 22 | Callback = function() -- What will be fired when the button is clicked [ optional ] | Default: function() end 23 | Button:Text("Click Me V"..math.random(10, 50)) 24 | Label:Text("I am magic label "..math.random(1, 50)) 25 | end 26 | }) 27 | 28 | local Keybind = Section:Keybind({ 29 | 30 | Text = "Keybind", -- Text of the keybind 31 | Value = "K", -- string/Enum values are allowed 32 | 33 | Callback = function( key: string --[[ The key that was triggerd ]] ) -- Callback that will fire when the keybind is pressed [ optional ] | default: function() end 34 | print("Keybind", key) 35 | end, 36 | 37 | OnChange = function( key: string --[[ new key]], old_key: string --[[ the old key ]] ) -- This will fire when the keybind was changed to another key [ optional ] 38 | print("New Keybind Key:", key, "|", "Old Keybind Key:", old_key) 39 | end 40 | }) 41 | 42 | local Slider1 = Section:Slider({ 43 | 44 | Text = "Walkspeed", -- Text/Name of the button 45 | 46 | Min = 1, -- Minimum Value of the slider [ optional ] | Default: math.random 47 | Value = 16, -- Value of the slider [ optional ] | Default: math.random(Min, Max) 48 | Max = 100, -- Maximum value of the slider [ optional ] | Default: math.random 49 | 50 | Callback = function(value --[[ New value of the slider ]], prevalue --[[ Previous value of the slider ]]) -- Callback is what will be fired when the slider value changes ( WaitForMouse ) or when the slider value is being changed ( Without WaitForMouse ) [ optional ] | Default: function() end 51 | if value ~= prevalue then 52 | if Humanoid then 53 | Humanoid.WalkSpeed = value 54 | end 55 | end 56 | end 57 | }) 58 | 59 | local Slider2 = Section:Slider({ 60 | 61 | Text = "Walkspeed 2", -- Text/Name of the button 62 | WaitForMouse = true, -- Wait for the mouse to be done moving the slider [ optional ] | Default: nil/false 63 | 64 | Min = 1, -- Minimum Value of the slider [ optional ] | Default: math.random 65 | Value = 16, -- Value of the slider [ optional ] | Default: math.random(Min, Max) 66 | Max = 100, -- Maximum value of the slider [ optional ] | Default: math.random 67 | 68 | Callback = function(value --[[ New value of the slider ]], prevalue --[[ Previous value of the slider ]]) -- Callback is what will be fired when the slider value changes ( WaitForMouse ) or when the slider value is being changed ( Without WaitForMouse ) [ optional ] | Default: function() end 69 | if value ~= prevalue then 70 | if Humanoid then 71 | Humanoid.WalkSpeed = value 72 | end 73 | end 74 | end 75 | }) 76 | 77 | local Toggle = Section:Toggle({ 78 | 79 | Text = "Toggle", -- Text of the slider 80 | Value = false, -- value of the slider [ optional ] | default: false 81 | 82 | Callback = function(value: boolean --[[ current value of the slider ]]) -- Callback of the Toggle [optional] 83 | print("Toggle #1:", value) 84 | end 85 | }) 86 | 87 | local Toggle2 = Section:Toggle({ 88 | 89 | Text = "Toggle 2", -- Text of the slider 90 | Value = true, -- value of the slider [ optional ] | default: false 91 | 92 | Callback = function(value: boolean --[[ current value of the slider ]]) -- Callback of the Toggle [optional] 93 | print("Toggle #2:", value) 94 | end 95 | }) 96 | 97 | local Dropdown = Section:Dropdown({ 98 | 99 | Text = "Dropdown", 100 | Data = { "This", "Will", "Be", "In", "The", "Dropdown" }, -- The values that will be in the dropdown. Seperated by a "," 101 | 102 | Callback = function(value) -- Callback of the Dropdown, will fire when a new option has been selected in the dropdown [optional] | default: function() end 103 | print("Dropdown Option:", value) 104 | end 105 | }) 106 | 107 | local Dropdown2 = Section:Dropdown({ 108 | 109 | Text = "Dropdown 2", 110 | Data = { "test", "fee", "fi", "foe" }, -- The values that will be in the dropdown. Seperated by a "," 111 | KeepText = true, -- when an element is selected, it will keep the "Dropdown 2" text 112 | 113 | Callback = function(value) -- Callback of the Dropdown, will fire when a new option has been selected in the dropdown [optional] | default: function() end 114 | print("Dropdown Option:", value) 115 | end 116 | }) 117 | 118 | local ColorPicker = Library:Color({ -- Adds on the Right panel since we used Library and not a section 119 | Text = "Color Picker", 120 | Color = Color3.fromRGB(255, 255, 255), -- set a custom color [ optional ] | default: White/Color3.fromRGB(255, 255, 255) 121 | Callback = function(color: Color3) -- color is a RGB color [ Color3.fromHSV ] 122 | print("Color:", color.R, color.G, color.B) -- will print out in HSV 123 | local r, g, b = color.R * 255, color.G * 255, color.B * 255 124 | print(r, g, b) -- will print out in RGB color format instead of HSV 125 | end 126 | }) 127 | 128 | -- Slider 2: 129 | Slider2:Set(80) -- Setting Slider 2 Value to 80 130 | Slider2:Set(80, true) -- Setting Slider 2 Value to 80, except it will not call the 'Callback' function with the new value 131 | 132 | print(Slider2:Get()) -- will print '80' 133 | Slider2:Text("Speed V2") -- Setting Slider 2 Text to "Speed V2" 134 | print("----------------------- Toggle:") 135 | 136 | -- Button: 137 | Button:Change(function() -- When the button is clicked, it will fire this function instead of the Callback. Basically changing the Callback of/in the button to this function 138 | print("New button callback") 139 | end) 140 | 141 | task.delay(5, function() -- use task.delay to not yeild the current script context 142 | Button:Text("Click me V2!") -- Changes the button text to this after 5 seconds 143 | end) 144 | 145 | -- Toggle 2: 146 | print(Toggle2:Get()) -- prints true, this gets the value of Toggle2 147 | Toggle2:Toggle() -- This switches the value of toggle 2 to the opposit of what it currently is 148 | 149 | print(Toggle2:Get()) -- prints false, since we just switched the value of Toggle 2 150 | 151 | Toggle2:Set(true) -- Sets the value of Toggle 2 to true 152 | Toggle2:Set(false, true) -- Sets the value of Toggle 2 to false, but doesn't call the 'Callback' 153 | 154 | print("----------------------- Dropdown:") 155 | 156 | -- Dropdown: 157 | Dropdown:Add("Extra") 158 | print(Dropdown:Get("Extra")) -- Object 159 | 160 | task.wait(2) 161 | 162 | Dropdown:Remove("Extra") -- Removes "Extra" from the dropdown 163 | print(Dropdown:Get("Extra")) -- nil 164 | 165 | Section:Button({ 166 | Text = "Add to dropdown", 167 | Callback = function() 168 | Dropdown:Add("New "..math.random(1, 9)) -- Adding a value to the dropdown 169 | end 170 | }) 171 | 172 | Section:Button({ 173 | Text = "Clear dropdown", 174 | Callback = function() 175 | Dropdown:Remove() -- Since we didn't specify a value to remove from the dropdown, it removes all the elements inside 176 | end 177 | }) -------------------------------------------------------------------------------- /Libraries/Material - Example.lua: -------------------------------------------------------------------------------- 1 | local Material = loadstring(game:HttpGet("https://raw.githubusercontent.com/Kinlei/MaterialLua/master/Module.lua"))() 2 | 3 | local X = Material.Load({ 4 | Title = "Xenon Hub V9999", 5 | Style = 3, 6 | SizeX = 500, 7 | SizeY = 350, 8 | Theme = "Light", 9 | ColorOverrides = { 10 | MainFrame = Color3.fromRGB(235,235,235) 11 | } 12 | }) 13 | 14 | local Y = X.New({ 15 | Title = "1" 16 | }) 17 | 18 | local Z = X.New({ 19 | Title = "2" 20 | }) 21 | 22 | local A = Y.Button({ 23 | Text = "Kill All", 24 | Callback = function() 25 | print("hello") 26 | end, 27 | Menu = { 28 | Information = function(self) 29 | X.Banner({ 30 | Text = "This function can get you banned in up-to-date servers; use at your own risk." 31 | }) 32 | end 33 | } 34 | }) 35 | 36 | local B = Y.Toggle({ 37 | Text = "I'm a switch", 38 | Callback = function(Value) 39 | print(Value) 40 | end, 41 | Enabled = false 42 | }) 43 | 44 | local C = Y.Slider({ 45 | Text = "Slip and... you get the idea", 46 | Callback = function(Value) 47 | print(Value) 48 | end, 49 | Min = 200, 50 | Max = 400, 51 | Def = 300 52 | }) 53 | 54 | local D = Y.Dropdown({ 55 | Text = "Dropping care package", 56 | Callback = function(Value) 57 | print(Value) 58 | end, 59 | Options = { 60 | "Floor 1", 61 | "Floor 2", 62 | "Floor 3", 63 | "Floor 4", 64 | "Floor 5" 65 | }, 66 | Menu = { 67 | Information = function(self) 68 | X.Banner({ 69 | Text = "Test alert!" 70 | }) 71 | end 72 | } 73 | }) 74 | 75 | local E = Y.ChipSet({ 76 | Text = "Chipping away", 77 | Callback = function(ChipSet) 78 | table.foreach(ChipSet, function(Option, Value) 79 | print(Option, Value) 80 | end) 81 | end, 82 | Options = { 83 | ESP = true, 84 | TeamCheck = false, 85 | UselessBool = { 86 | Enabled = true, 87 | Menu = { 88 | Information = function(self) 89 | X.Banner({ 90 | Text = "This bool has absolutely no purpose whatsoever." 91 | }) 92 | end 93 | } 94 | } 95 | } 96 | }) 97 | 98 | local F = Y.DataTable({ 99 | Text = "Chipping away", 100 | Callback = function(ChipSet) 101 | table.foreach(ChipSet, function(Option, Value) 102 | print(Option, Value) 103 | end) 104 | end, 105 | Options = { 106 | ESP2 = true, 107 | TeamCheck2 = false, 108 | UselessBool2 = { 109 | Enabled = true, 110 | Menu = { 111 | Information = function(self) 112 | X.Banner({ 113 | Text = "This bool ALSO has absolutely no purpose. Sorry." 114 | }) 115 | end 116 | } 117 | } 118 | } 119 | }) 120 | 121 | local G = Y.ColorPicker({ 122 | Text = "ESP Colour", 123 | Default = Color3.fromRGB(0,255,110), 124 | Callback = function(Value) 125 | print("RGB:", Value.R * 255, Value.G * 255, Value.B * 255) 126 | end, 127 | Menu = { 128 | Information = function(self) 129 | X.Banner({ 130 | Text = "This changes the color of your ESP." 131 | }) 132 | end 133 | } 134 | }) 135 | 136 | local H = Y.TextField({ 137 | Text = "Country", 138 | Callback = function(Value) 139 | print(Value) 140 | end, 141 | Menu = { 142 | GB = function(self) 143 | self.SetText("GB") 144 | end, 145 | JP = function(self) 146 | self.SetText("JP") 147 | end, 148 | KO = function(self) 149 | self.SetText("KO") 150 | end 151 | } 152 | }) -------------------------------------------------------------------------------- /Libraries/Mercury - Example.lua: -------------------------------------------------------------------------------- 1 | local Library = loadstring(game:HttpGet("https://raw.githubusercontent.com/deeeity/mercury-lib/master/src.lua"))() 2 | 3 | local gui = Library:create{ 4 | Theme = Library.Themes.Serika 5 | } 6 | 7 | local tab = gui:tab{ 8 | Icon = "rbxassetid://6034996695", 9 | Name = "Aimbot" 10 | } 11 | 12 | tab:button({ 13 | Name = "show prompt", 14 | Callback = function() 15 | tab:prompt{ 16 | Title = "baby", 17 | Text = "shark doo doo doo doo im blank lmao", 18 | Buttons = { 19 | Ok = function() 20 | tab:prompt{ 21 | Followup = true, 22 | Title = "really?", 23 | Text = "you sure?=", 24 | Buttons = { 25 | Yes = function() 26 | tab:prompt{ 27 | Followup = true, 28 | Title = "xd", 29 | Text = "sus", 30 | Buttons = { 31 | balls = function() 32 | gui:set_status("github") 33 | end, 34 | anal = function() 35 | gui:set_Status("money") 36 | end 37 | } 38 | } 39 | end, 40 | } 41 | } 42 | end, 43 | } 44 | } 45 | end, 46 | }) 47 | tab:keybind({Callback = function() 48 | gui:prompt() 49 | end,}) 50 | tab:dropdown({ 51 | Name = "Dropdown", 52 | Description = "yeeeeeeeeeeeeeeeeeeeboi", 53 | StartingText = "Bodypart", 54 | Items = { 55 | "Head", 56 | "Torso", 57 | "Random" 58 | } 59 | }) 60 | tab:dropdown({ 61 | Name = "yes", 62 | StartingText = "Number", 63 | Items = { 64 | {"One", 1}, 65 | {"Two", 2}, 66 | {"Three", 3} 67 | }, 68 | Description = "amongu s", 69 | Callback = function(v) 70 | print(v, "clicked") 71 | end, 72 | }) 73 | local cum = tab:slider({Callback = function(v) 74 | gui:set_status(v) 75 | end}) 76 | 77 | tab:textbox({Callback = function(v) 78 | gui:prompt{Text = v} 79 | end,}) 80 | 81 | tab:color_picker({ 82 | Name = "your mom's color", 83 | Style = Library.ColorPickerStyles.Legacy, 84 | Description = "Click to adjust color...", 85 | Callback = function(color) 86 | print(color) 87 | end, 88 | }) -------------------------------------------------------------------------------- /Libraries/Obsidan - Example.lua: -------------------------------------------------------------------------------- 1 | -- example script by https://github.com/mstudio45/LinoriaLib/blob/main/Example.lua and modified by deivid 2 | -- You can suggest changes with a pull request or something 3 | 4 | local repo = "https://raw.githubusercontent.com/deividcomsono/Obsidian/main/" 5 | local Library = loadstring(game:HttpGet(repo .. "Library.lua"))() 6 | local ThemeManager = loadstring(game:HttpGet(repo .. "addons/ThemeManager.lua"))() 7 | local SaveManager = loadstring(game:HttpGet(repo .. "addons/SaveManager.lua"))() 8 | 9 | local Options = Library.Options 10 | local Toggles = Library.Toggles 11 | 12 | Library.ForceCheckbox = false -- Forces AddToggle to AddCheckbox 13 | Library.ShowToggleFrameInKeybinds = true -- Make toggle keybinds work inside the keybinds UI (aka adds a toggle to the UI). Good for mobile users (Default value = true) 14 | 15 | local Window = Library:CreateWindow({ 16 | -- Set Center to true if you want the menu to appear in the center 17 | -- Set AutoShow to true if you want the menu to appear when it is created 18 | -- Set Resizable to true if you want to have in-game resizable Window 19 | -- Set MobileButtonsSide to "Left" or "Right" if you want the ui toggle & lock buttons to be on the left or right side of the window 20 | -- Set ShowCustomCursor to false if you don't want to use the Linoria cursor 21 | -- NotifySide = Changes the side of the notifications (Left, Right) (Default value = Left) 22 | -- Position and Size are also valid options here 23 | -- but you do not need to define them unless you are changing them :) 24 | 25 | Title = "mspaint", 26 | Footer = "version: example", 27 | Icon = 95816097006870, 28 | NotifySide = "Right", 29 | ShowCustomCursor = true, 30 | }) 31 | 32 | -- CALLBACK NOTE: 33 | -- Passing in callback functions via the initial element parameters (i.e. Callback = function(Value)...) works 34 | -- HOWEVER, using Toggles/Options.INDEX:OnChanged(function(Value) ... ) is the RECOMMENDED way to do this. 35 | -- I strongly recommend decoupling UI code from logic code. i.e. Create your UI elements FIRST, and THEN setup :OnChanged functions later. 36 | 37 | -- You do not have to set your tabs & groups up this way, just a prefrence. 38 | -- You can find more icons in https://lucide.dev/ 39 | local Tabs = { 40 | -- Creates a new tab titled Main 41 | Main = Window:AddTab("Main", "user"), 42 | Key = Window:AddKeyTab("Key System"), 43 | ["UI Settings"] = Window:AddTab("UI Settings", "settings"), 44 | } 45 | 46 | 47 | --[[ 48 | Example of how to add a warning box to a tab; the title AND text support rich text formatting. 49 | 50 | local WarningTab = Tabs["UI Settings"]:AddTab("Warning Box", "user") 51 | 52 | WarningTab:UpdateWarningBox({ 53 | Visible = true, 54 | Title = "Warning", 55 | Text = "This is a warning box!", 56 | }) 57 | 58 | ]] 59 | 60 | -- Groupbox and Tabbox inherit the same functions 61 | -- except Tabboxes you have to call the functions on a tab (Tabbox:AddTab(name)) 62 | local LeftGroupBox = Tabs.Main:AddLeftGroupbox("Groupbox") 63 | 64 | -- We can also get our Main tab via the following code: 65 | -- local LeftGroupBox = Window.Tabs.Main:AddLeftGroupbox('Groupbox') 66 | 67 | -- Tabboxes are a tiny bit different, but here's a basic example: 68 | --[[ 69 | 70 | local TabBox = Tabs.Main:AddLeftTabbox() -- Add Tabbox on left side 71 | 72 | local Tab1 = TabBox:AddTab('Tab 1') 73 | local Tab2 = TabBox:AddTab('Tab 2') 74 | 75 | -- You can now call AddToggle, etc on the tabs you added to the Tabbox 76 | ]] 77 | 78 | -- Groupbox:AddToggle 79 | -- Arguments: Index, Options 80 | LeftGroupBox:AddToggle("MyToggle", { 81 | Text = "This is a toggle", 82 | Tooltip = "This is a tooltip", -- Information shown when you hover over the toggle 83 | DisabledTooltip = "I am disabled!", -- Information shown when you hover over the toggle while it's disabled 84 | 85 | Default = true, -- Default value (true / false) 86 | Disabled = false, -- Will disable the toggle (true / false) 87 | Visible = true, -- Will make the toggle invisible (true / false) 88 | Risky = false, -- Makes the text red (the color can be changed using Library.Scheme.Red) (Default value = false) 89 | 90 | Callback = function(Value) 91 | print("[cb] MyToggle changed to:", Value) 92 | end, 93 | }) 94 | :AddColorPicker("ColorPicker1", { 95 | Default = Color3.new(1, 0, 0), 96 | Title = "Some color1", -- Optional. Allows you to have a custom color picker title (when you open it) 97 | Transparency = 0, -- Optional. Enables transparency changing for this color picker (leave as nil to disable) 98 | 99 | Callback = function(Value) 100 | print("[cb] Color changed!", Value) 101 | end, 102 | }) 103 | :AddColorPicker("ColorPicker2", { 104 | Default = Color3.new(0, 1, 0), 105 | Title = "Some color2", 106 | 107 | Callback = function(Value) 108 | print("[cb] Color changed!", Value) 109 | end, 110 | }) 111 | 112 | -- Fetching a toggle object for later use: 113 | -- Toggles.MyToggle.Value 114 | 115 | -- Toggles is a table added to getgenv() by the library 116 | -- You index Toggles with the specified index, in this case it is 'MyToggle' 117 | -- To get the state of the toggle you do toggle.Value 118 | 119 | -- Calls the passed function when the toggle is updated 120 | Toggles.MyToggle:OnChanged(function() 121 | -- here we get our toggle object & then get its value 122 | print("MyToggle changed to:", Toggles.MyToggle.Value) 123 | end) 124 | 125 | -- This should print to the console: "My toggle state changed! New value: false" 126 | Toggles.MyToggle:SetValue(false) 127 | 128 | LeftGroupBox:AddCheckbox("MyCheckbox", { 129 | Text = "This is a checkbox", 130 | Tooltip = "This is a tooltip", -- Information shown when you hover over the toggle 131 | DisabledTooltip = "I am disabled!", -- Information shown when you hover over the toggle while it's disabled 132 | 133 | Default = true, -- Default value (true / false) 134 | Disabled = false, -- Will disable the toggle (true / false) 135 | Visible = true, -- Will make the toggle invisible (true / false) 136 | Risky = false, -- Makes the text red (the color can be changed using Library.Scheme.Red) (Default value = false) 137 | 138 | Callback = function(Value) 139 | print("[cb] MyCheckbox changed to:", Value) 140 | end, 141 | }) 142 | 143 | Toggles.MyCheckbox:OnChanged(function() 144 | print("MyCheckbox changed to:", Toggles.MyCheckbox.Value) 145 | end) 146 | 147 | -- 1/15/23 148 | -- Deprecated old way of creating buttons in favor of using a table 149 | -- Added DoubleClick button functionality 150 | 151 | --[[ 152 | Groupbox:AddButton 153 | Arguments: { 154 | Text = string, 155 | Func = function, 156 | DoubleClick = boolean 157 | Tooltip = string, 158 | } 159 | 160 | You can call :AddButton on a button to add a SubButton! 161 | ]] 162 | 163 | local MyButton = LeftGroupBox:AddButton({ 164 | Text = "Button", 165 | Func = function() 166 | print("You clicked a button!") 167 | end, 168 | DoubleClick = false, 169 | 170 | Tooltip = "This is the main button", 171 | DisabledTooltip = "I am disabled!", 172 | 173 | Disabled = false, -- Will disable the button (true / false) 174 | Visible = true, -- Will make the button invisible (true / false) 175 | Risky = false, -- Makes the text red (the color can be changed using Library.Scheme.Red) (Default value = false) 176 | }) 177 | 178 | local MyButton2 = MyButton:AddButton({ 179 | Text = "Sub button", 180 | Func = function() 181 | print("You clicked a sub button!") 182 | end, 183 | DoubleClick = true, -- You will have to click this button twice to trigger the callback 184 | Tooltip = "This is the sub button", 185 | DisabledTooltip = "I am disabled!", 186 | }) 187 | 188 | local MyDisabledButton = LeftGroupBox:AddButton({ 189 | Text = "Disabled Button", 190 | Func = function() 191 | print("You somehow clicked a disabled button!") 192 | end, 193 | DoubleClick = false, 194 | Tooltip = "This is a disabled button", 195 | DisabledTooltip = "I am disabled!", -- Information shown when you hover over the button while it's disabled 196 | Disabled = true, 197 | }) 198 | 199 | --[[ 200 | NOTE: You can chain the button methods! 201 | EXAMPLE: 202 | 203 | LeftGroupBox:AddButton({ Text = 'Kill all', Func = Functions.KillAll, Tooltip = 'This will kill everyone in the game!' }) 204 | :AddButton({ Text = 'Kick all', Func = Functions.KickAll, Tooltip = 'This will kick everyone in the game!' }) 205 | ]] 206 | 207 | -- Groupbox:AddLabel 208 | -- Arguments: Text, DoesWrap, Idx 209 | -- Arguments: Idx, Options 210 | LeftGroupBox:AddLabel("This is a label") 211 | LeftGroupBox:AddLabel("This is a label\n\nwhich wraps its text!", true) 212 | LeftGroupBox:AddLabel("This is a label exposed to Labels", true, "TestLabel") 213 | LeftGroupBox:AddLabel("SecondTestLabel", { 214 | Text = "This is a label made with table options and an index", 215 | DoesWrap = true, -- Defaults to false 216 | }) 217 | 218 | LeftGroupBox:AddLabel("SecondTestLabel", { 219 | Text = "This is a label that doesn't wrap it's own text", 220 | DoesWrap = false, -- Defaults to false 221 | }) 222 | 223 | -- Options is a table added to getgenv() by the library 224 | -- You index Options with the specified index, in this case it is 'SecondTestLabel' & 'TestLabel' 225 | -- To set the text of the label you do label:SetText 226 | 227 | -- Options.TestLabel:SetText("first changed!") 228 | -- Options.SecondTestLabel:SetText("second changed!") 229 | 230 | -- Groupbox:AddDivider 231 | -- Arguments: None 232 | LeftGroupBox:AddDivider() 233 | 234 | --[[ 235 | Groupbox:AddSlider 236 | Arguments: Idx, SliderOptions 237 | 238 | SliderOptions: { 239 | Text = string, 240 | Default = number, 241 | Min = number, 242 | Max = number, 243 | Suffix = string, 244 | Rounding = number, 245 | Compact = boolean, 246 | HideMax = boolean, 247 | } 248 | 249 | Text, Default, Min, Max, Rounding must be specified. 250 | Suffix is optional. 251 | Rounding is the number of decimal places for precision. 252 | 253 | Compact will hide the title label of the Slider 254 | 255 | HideMax will only display the value instead of the value & max value of the slider 256 | Compact will do the same thing 257 | ]] 258 | LeftGroupBox:AddSlider("MySlider", { 259 | Text = "This is my slider!", 260 | Default = 0, 261 | Min = 0, 262 | Max = 5, 263 | Rounding = 1, 264 | Compact = false, 265 | 266 | Callback = function(Value) 267 | print("[cb] MySlider was changed! New value:", Value) 268 | end, 269 | 270 | Tooltip = "I am a slider!", -- Information shown when you hover over the slider 271 | DisabledTooltip = "I am disabled!", -- Information shown when you hover over the slider while it's disabled 272 | 273 | Disabled = false, -- Will disable the slider (true / false) 274 | Visible = true, -- Will make the slider invisible (true / false) 275 | }) 276 | 277 | -- Options is a table added to getgenv() by the library 278 | -- You index Options with the specified index, in this case it is 'MySlider' 279 | -- To get the value of the slider you do slider.Value 280 | 281 | local Number = Options.MySlider.Value 282 | Options.MySlider:OnChanged(function() 283 | print("MySlider was changed! New value:", Options.MySlider.Value) 284 | end) 285 | 286 | -- This should print to the console: "MySlider was changed! New value: 3" 287 | Options.MySlider:SetValue(3) 288 | 289 | -- Groupbox:AddInput 290 | -- Arguments: Idx, Info 291 | LeftGroupBox:AddInput("MyTextbox", { 292 | Default = "My textbox!", 293 | Numeric = false, -- true / false, only allows numbers 294 | Finished = false, -- true / false, only calls callback when you press enter 295 | ClearTextOnFocus = true, -- true / false, if false the text will not clear when textbox focused 296 | 297 | Text = "This is a textbox", 298 | Tooltip = "This is a tooltip", -- Information shown when you hover over the textbox 299 | 300 | Placeholder = "Placeholder text", -- placeholder text when the box is empty 301 | -- MaxLength is also an option which is the max length of the text 302 | 303 | Callback = function(Value) 304 | print("[cb] Text updated. New text:", Value) 305 | end, 306 | }) 307 | 308 | Options.MyTextbox:OnChanged(function() 309 | print("Text updated. New text:", Options.MyTextbox.Value) 310 | end) 311 | 312 | -- Groupbox:AddDropdown 313 | -- Arguments: Idx, Info 314 | 315 | local DropdownGroupBox = Tabs.Main:AddRightGroupbox("Dropdowns") 316 | 317 | DropdownGroupBox:AddDropdown("MyDropdown", { 318 | Values = { "This", "is", "a", "dropdown" }, 319 | Default = 1, -- number index of the value / string 320 | Multi = false, -- true / false, allows multiple choices to be selected 321 | 322 | Text = "A dropdown", 323 | Tooltip = "This is a tooltip", -- Information shown when you hover over the dropdown 324 | DisabledTooltip = "I am disabled!", -- Information shown when you hover over the dropdown while it's disabled 325 | 326 | Searchable = false, -- true / false, makes the dropdown searchable (great for a long list of values) 327 | 328 | Callback = function(Value) 329 | print("[cb] Dropdown got changed. New value:", Value) 330 | end, 331 | 332 | Disabled = false, -- Will disable the dropdown (true / false) 333 | Visible = true, -- Will make the dropdown invisible (true / false) 334 | }) 335 | 336 | Options.MyDropdown:OnChanged(function() 337 | print("Dropdown got changed. New value:", Options.MyDropdown.Value) 338 | end) 339 | 340 | Options.MyDropdown:SetValue("This") 341 | 342 | DropdownGroupBox:AddDropdown("MySearchableDropdown", { 343 | Values = { "This", "is", "a", "searchable", "dropdown" }, 344 | Default = 1, -- number index of the value / string 345 | Multi = false, -- true / false, allows multiple choices to be selected 346 | 347 | Text = "A searchable dropdown", 348 | Tooltip = "This is a tooltip", -- Information shown when you hover over the dropdown 349 | DisabledTooltip = "I am disabled!", -- Information shown when you hover over the dropdown while it's disabled 350 | 351 | Searchable = true, -- true / false, makes the dropdown searchable (great for a long list of values) 352 | 353 | Callback = function(Value) 354 | print("[cb] Dropdown got changed. New value:", Value) 355 | end, 356 | 357 | Disabled = false, -- Will disable the dropdown (true / false) 358 | Visible = true, -- Will make the dropdown invisible (true / false) 359 | }) 360 | 361 | DropdownGroupBox:AddDropdown("MyDisplayFormattedDropdown", { 362 | Values = { "This", "is", "a", "formatted", "dropdown" }, 363 | Default = 1, -- number index of the value / string 364 | Multi = false, -- true / false, allows multiple choices to be selected 365 | 366 | Text = "A display formatted dropdown", 367 | Tooltip = "This is a tooltip", -- Information shown when you hover over the dropdown 368 | DisabledTooltip = "I am disabled!", -- Information shown when you hover over the dropdown while it's disabled 369 | 370 | FormatDisplayValue = function(Value) -- You can change the display value for any values. The value will be still same, only the UI changes. 371 | if Value == "formatted" then 372 | return "display formatted" -- formatted -> display formatted but in Options.MyDisplayFormattedDropdown.Value it will still return formatted if its selected. 373 | end 374 | 375 | return Value 376 | end, 377 | 378 | Searchable = false, -- true / false, makes the dropdown searchable (great for a long list of values) 379 | 380 | Callback = function(Value) 381 | print("[cb] Display formatted dropdown got changed. New value:", Value) 382 | end, 383 | 384 | Disabled = false, -- Will disable the dropdown (true / false) 385 | Visible = true, -- Will make the dropdown invisible (true / false) 386 | }) 387 | 388 | -- Multi dropdowns 389 | DropdownGroupBox:AddDropdown("MyMultiDropdown", { 390 | -- Default is the numeric index (e.g. "This" would be 1 since it if first in the values list) 391 | -- Default also accepts a string as well 392 | 393 | -- Currently you can not set multiple values with a dropdown 394 | 395 | Values = { "This", "is", "a", "dropdown" }, 396 | Default = 1, 397 | Multi = true, -- true / false, allows multiple choices to be selected 398 | 399 | Text = "A multi dropdown", 400 | Tooltip = "This is a tooltip", -- Information shown when you hover over the dropdown 401 | 402 | Callback = function(Value) 403 | print("[cb] Multi dropdown got changed:") 404 | for key, value in next, Options.MyMultiDropdown.Value do 405 | print(key, value) -- should print something like This, true 406 | end 407 | end, 408 | }) 409 | 410 | Options.MyMultiDropdown:SetValue({ 411 | This = true, 412 | is = true, 413 | }) 414 | 415 | DropdownGroupBox:AddDropdown("MyDisabledDropdown", { 416 | Values = { "This", "is", "a", "dropdown" }, 417 | Default = 1, -- number index of the value / string 418 | Multi = false, -- true / false, allows multiple choices to be selected 419 | 420 | Text = "A disabled dropdown", 421 | Tooltip = "This is a tooltip", -- Information shown when you hover over the dropdown 422 | DisabledTooltip = "I am disabled!", -- Information shown when you hover over the dropdown while it's disabled 423 | 424 | Callback = function(Value) 425 | print("[cb] Disabled dropdown got changed. New value:", Value) 426 | end, 427 | 428 | Disabled = true, -- Will disable the dropdown (true / false) 429 | Visible = true, -- Will make the dropdown invisible (true / false) 430 | }) 431 | 432 | DropdownGroupBox:AddDropdown("MyDisabledValueDropdown", { 433 | Values = { "This", "is", "a", "dropdown", "with", "disabled", "value" }, 434 | DisabledValues = { "disabled" }, -- Disabled Values that are unclickable 435 | Default = 1, -- number index of the value / string 436 | Multi = false, -- true / false, allows multiple choices to be selected 437 | 438 | Text = "A dropdown with disabled value", 439 | Tooltip = "This is a tooltip", -- Information shown when you hover over the dropdown 440 | DisabledTooltip = "I am disabled!", -- Information shown when you hover over the dropdown while it's disabled 441 | 442 | Callback = function(Value) 443 | print("[cb] Dropdown with disabled value got changed. New value:", Value) 444 | end, 445 | 446 | Disabled = false, -- Will disable the dropdown (true / false) 447 | Visible = true, -- Will make the dropdown invisible (true / false) 448 | }) 449 | 450 | DropdownGroupBox:AddDropdown("MyVeryLongDropdown", { 451 | Values = { 452 | "This", 453 | "is", 454 | "a", 455 | "very", 456 | "long", 457 | "dropdown", 458 | "with", 459 | "a", 460 | "lot", 461 | "of", 462 | "values", 463 | "but", 464 | "you", 465 | "can", 466 | "see", 467 | "more", 468 | "than", 469 | "8", 470 | "values", 471 | }, 472 | Default = 1, -- number index of the value / string 473 | Multi = false, -- true / false, allows multiple choices to be selected 474 | 475 | MaxVisibleDropdownItems = 12, -- Default: 8, allows you to change the size of the dropdown list 476 | 477 | Text = "A very long dropdown", 478 | Tooltip = "This is a tooltip", -- Information shown when you hover over the dropdown 479 | DisabledTooltip = "I am disabled!", -- Information shown when you hover over the dropdown while it's disabled 480 | 481 | Searchable = false, -- true / false, makes the dropdown searchable (great for a long list of values) 482 | 483 | Callback = function(Value) 484 | print("[cb] Very long dropdown got changed. New value:", Value) 485 | end, 486 | 487 | Disabled = false, -- Will disable the dropdown (true / false) 488 | Visible = true, -- Will make the dropdown invisible (true / false) 489 | }) 490 | 491 | DropdownGroupBox:AddDropdown("MyPlayerDropdown", { 492 | SpecialType = "Player", 493 | ExcludeLocalPlayer = true, -- true / false, excludes the localplayer from the Player type 494 | Text = "A player dropdown", 495 | Tooltip = "This is a tooltip", -- Information shown when you hover over the dropdown 496 | 497 | Callback = function(Value) 498 | print("[cb] Player dropdown got changed:", Value) 499 | end, 500 | }) 501 | 502 | DropdownGroupBox:AddDropdown("MyTeamDropdown", { 503 | SpecialType = "Team", 504 | Text = "A team dropdown", 505 | Tooltip = "This is a tooltip", -- Information shown when you hover over the dropdown 506 | 507 | Callback = function(Value) 508 | print("[cb] Team dropdown got changed:", Value) 509 | end, 510 | }) 511 | 512 | -- Label:AddColorPicker 513 | -- Arguments: Idx, Info 514 | 515 | -- You can also ColorPicker & KeyPicker to a Toggle as well 516 | 517 | LeftGroupBox:AddLabel("Color"):AddColorPicker("ColorPicker", { 518 | Default = Color3.new(0, 1, 0), -- Bright green 519 | Title = "Some color", -- Optional. Allows you to have a custom color picker title (when you open it) 520 | Transparency = 0, -- Optional. Enables transparency changing for this color picker (leave as nil to disable) 521 | 522 | Callback = function(Value) 523 | print("[cb] Color changed!", Value) 524 | end, 525 | }) 526 | 527 | Options.ColorPicker:OnChanged(function() 528 | print("Color changed!", Options.ColorPicker.Value) 529 | print("Transparency changed!", Options.ColorPicker.Transparency) 530 | end) 531 | 532 | Options.ColorPicker:SetValueRGB(Color3.fromRGB(0, 255, 140)) 533 | 534 | -- Label:AddKeyPicker 535 | -- Arguments: Idx, Info 536 | 537 | LeftGroupBox:AddLabel("Keybind"):AddKeyPicker("KeyPicker", { 538 | -- SyncToggleState only works with toggles. 539 | -- It allows you to make a keybind which has its state synced with its parent toggle 540 | 541 | -- Example: Keybind which you use to toggle flyhack, etc. 542 | -- Changing the toggle disables the keybind state and toggling the keybind switches the toggle state 543 | 544 | Default = "MB2", -- String as the name of the keybind (MB1, MB2 for mouse buttons) 545 | SyncToggleState = false, 546 | 547 | -- You can define custom Modes but I have never had a use for it. 548 | Mode = "Toggle", -- Modes: Always, Toggle, Hold 549 | 550 | Text = "Auto lockpick safes", -- Text to display in the keybind menu 551 | NoUI = false, -- Set to true if you want to hide from the Keybind menu, 552 | 553 | -- Occurs when the keybind is clicked, Value is `true`/`false` 554 | Callback = function(Value) 555 | print("[cb] Keybind clicked!", Value) 556 | end, 557 | 558 | -- Occurs when the keybind itself is changed, `New` is a KeyCode Enum OR a UserInputType Enum 559 | ChangedCallback = function(New) 560 | print("[cb] Keybind changed!", New) 561 | end, 562 | }) 563 | 564 | -- OnClick is only fired when you press the keybind and the mode is Toggle 565 | -- Otherwise, you will have to use Keybind:GetState() 566 | Options.KeyPicker:OnClick(function() 567 | print("Keybind clicked!", Options.KeyPicker:GetState()) 568 | end) 569 | 570 | Options.KeyPicker:OnChanged(function() 571 | print("Keybind changed!", Options.KeyPicker.Value) 572 | end) 573 | 574 | task.spawn(function() 575 | while true do 576 | wait(1) 577 | 578 | -- example for checking if a keybind is being pressed 579 | local state = Options.KeyPicker:GetState() 580 | if state then 581 | print("KeyPicker is being held down") 582 | end 583 | 584 | if Library.Unloaded then 585 | break 586 | end 587 | end 588 | end) 589 | 590 | Options.KeyPicker:SetValue({ "MB2", "Hold" }) -- Sets keybind to MB2, mode to Hold 591 | 592 | -- Long text label to demonstrate UI scrolling behaviour. 593 | local LeftGroupBox2 = Tabs.Main:AddLeftGroupbox("Groupbox #2") 594 | LeftGroupBox2:AddLabel( 595 | "This label spans multiple lines! We're gonna run out of UI space...\nJust kidding! Scroll down!\n\n\nHello from below!", 596 | true 597 | ) 598 | 599 | local TabBox = Tabs.Main:AddRightTabbox() -- Add Tabbox on right side 600 | 601 | -- Anything we can do in a Groupbox, we can do in a Tabbox tab (AddToggle, AddSlider, AddLabel, etc etc...) 602 | local Tab1 = TabBox:AddTab("Tab 1") 603 | Tab1:AddToggle("Tab1Toggle", { Text = "Tab1 Toggle" }) 604 | 605 | local Tab2 = TabBox:AddTab("Tab 2") 606 | Tab2:AddToggle("Tab2Toggle", { Text = "Tab2 Toggle" }) 607 | 608 | Library:OnUnload(function() 609 | print("Unloaded!") 610 | end) 611 | 612 | -- Anything we can do in a Groupbox, we can do in a Key tab (AddToggle, AddSlider, AddLabel, etc etc...) 613 | Tabs.Key:AddLabel({ 614 | Text = "Key: Banana", 615 | DoesWrap = true, 616 | Size = 16, 617 | }) 618 | 619 | Tabs.Key:AddKeyBox("Banana", function(Success, ReceivedKey) 620 | print("Expected Key: Banana - Received Key:", ReceivedKey, "| Success:", Success) 621 | Library:Notify({ 622 | Title = "Expected Key: Banana", 623 | Description = "Received Key: " .. ReceivedKey .. "\nSuccess: " .. tostring(Success), 624 | Time = 4, 625 | }) 626 | end) 627 | 628 | Tabs.Key:AddLabel({ 629 | Text = "No Key", 630 | DoesWrap = true, 631 | Size = 16, 632 | }) 633 | 634 | Tabs.Key:AddKeyBox(function(Success, ReceivedKey) 635 | print("Expected Key: None | Success:", Success) -- true 636 | Library:Notify("Success: " .. tostring(Success), 4) 637 | end) 638 | 639 | -- UI Settings 640 | local MenuGroup = Tabs["UI Settings"]:AddLeftGroupbox("Menu") 641 | 642 | MenuGroup:AddToggle("KeybindMenuOpen", { 643 | Default = Library.KeybindFrame.Visible, 644 | Text = "Open Keybind Menu", 645 | Callback = function(value) 646 | Library.KeybindFrame.Visible = value 647 | end, 648 | }) 649 | MenuGroup:AddToggle("ShowCustomCursor", { 650 | Text = "Custom Cursor", 651 | Default = true, 652 | Callback = function(Value) 653 | Library.ShowCustomCursor = Value 654 | end, 655 | }) 656 | MenuGroup:AddDropdown("NotificationSide", { 657 | Values = { "Left", "Right" }, 658 | Default = "Right", 659 | 660 | Text = "Notification Side", 661 | 662 | Callback = function(Value) 663 | Library:SetNotifySide(Value) 664 | end, 665 | }) 666 | MenuGroup:AddDropdown("DPIDropdown", { 667 | Values = { "50%", "75%", "100%", "125%", "150%", "175%", "200%" }, 668 | Default = "100%", 669 | 670 | Text = "DPI Scale", 671 | 672 | Callback = function(Value) 673 | Value = Value:gsub("%%", "") 674 | local DPI = tonumber(Value) 675 | 676 | Library:SetDPIScale(DPI) 677 | end, 678 | }) 679 | MenuGroup:AddDivider() 680 | MenuGroup:AddLabel("Menu bind") 681 | :AddKeyPicker("MenuKeybind", { Default = "RightShift", NoUI = true, Text = "Menu keybind" }) 682 | 683 | MenuGroup:AddButton("Unload", function() 684 | Library:Unload() 685 | end) 686 | 687 | Library.ToggleKeybind = Options.MenuKeybind -- Allows you to have a custom keybind for the menu 688 | 689 | -- Addons: 690 | -- SaveManager (Allows you to have a configuration system) 691 | -- ThemeManager (Allows you to have a menu theme system) 692 | 693 | -- Hand the library over to our managers 694 | ThemeManager:SetLibrary(Library) 695 | SaveManager:SetLibrary(Library) 696 | 697 | -- Ignore keys that are used by ThemeManager. 698 | -- (we dont want configs to save themes, do we?) 699 | SaveManager:IgnoreThemeSettings() 700 | 701 | -- Adds our MenuKeybind to the ignore list 702 | -- (do you want each config to have a different menu key? probably not.) 703 | SaveManager:SetIgnoreIndexes({ "MenuKeybind" }) 704 | 705 | -- use case for doing it this way: 706 | -- a script hub could have themes in a global folder 707 | -- and game configs in a separate folder per game 708 | ThemeManager:SetFolder("MyScriptHub") 709 | SaveManager:SetFolder("MyScriptHub/specific-game") 710 | SaveManager:SetSubFolder("specific-place") -- if the game has multiple places inside of it (for example: DOORS) 711 | -- you can use this to save configs for those places separately 712 | -- The path in this script would be: MyScriptHub/specific-game/settings/specific-place 713 | -- [ This is optional ] 714 | 715 | -- Builds our config menu on the right side of our tab 716 | SaveManager:BuildConfigSection(Tabs["UI Settings"]) 717 | 718 | -- Builds our theme menu (with plenty of built in themes) on the left side 719 | -- NOTE: you can also call ThemeManager:ApplyToGroupbox to add it to a specific groupbox 720 | ThemeManager:ApplyToTab(Tabs["UI Settings"]) 721 | 722 | -- You can use the SaveManager:LoadAutoloadConfig() to load a config 723 | -- which has been marked to be one that auto loads! 724 | SaveManager:LoadAutoloadConfig() -------------------------------------------------------------------------------- /Libraries/Ocerium - Example.lua: -------------------------------------------------------------------------------- 1 | -- Library Core Loadstring 2 | local Library = loadstring(game:HttpGet("https://raw.githubusercontent.com/slf0Dev/Goat-poop/main/Windows%2010%20UI%20Library"))() 3 | 4 | -- Creating Gui 5 | local MainWindow = Library.Main("GuiName","KeyBind") 6 | 7 | -- Creating Categories 8 | local Category = MainWindow.Category("Your Text","ImageId","ImageScaleType",Image Transparency) 9 | 10 | 11 | --[[ 12 | ImageScaleTypes : "Crop" , "Fit" , "Slice" , "Stretch" 13 | ]] 14 | 15 | -- Creating Folders 16 | local Folder = Category.Folder("TemplateFolder") 17 | 18 | -- Creating Components 19 | 20 | -- Creating Labels 21 | local Label = Folder.Label("Your Text") 22 | 23 | -- Creating Buttons 24 | local Button = Folder.Button("Your Text",function() 25 | print("Pressed") 26 | end) 27 | 28 | -- Creating Toggles 29 | local Toggle = Folder.Toggle("Your Text",function(bool) 30 | print(bool) 31 | end,DefaultBoolValue) 32 | 33 | -- Creating Sliders 34 | local Slider = Folder.Slider("Your Text",min,max,function(value) 35 | print(value) 36 | end,DefaultValue,isFloat) --isFloat is boolean -------------------------------------------------------------------------------- /Libraries/Orion - Example.lua: -------------------------------------------------------------------------------- 1 | -- Sawasdee kub 2 | --// Orion Library Documentation 3 | "https://github.com/shlexware/Orion/blob/main/Documentation.md" -------------------------------------------------------------------------------- /Libraries/Orion - Library.lua: -------------------------------------------------------------------------------- 1 | local OrionLib = loadstring(game:HttpGet(('https://raw.githubusercontent.com/shlexware/Orion/main/source')))() -------------------------------------------------------------------------------- /Libraries/Pepsi - Example.lua: -------------------------------------------------------------------------------- 1 | local library = loadstring(game:GetObjects("rbxassetid://7657867786")[1].Source)() 2 | local Wait = library.subs.Wait -- Only returns if the GUI has not been terminated. For 'while Wait() do' loops 3 | 4 | local PepsisWorld = library:CreateWindow({ 5 | Name = "Pepsi's World", 6 | Themeable = { 7 | Info = "Discord Server: VzYTJ7Y" 8 | } 9 | }) 10 | 11 | local GeneralTab = PepsisWorld:CreateTab({ 12 | Name = "General" 13 | }) 14 | local FarmingSection = GeneralTab:CreateSection({ 15 | Name = "Farming" 16 | }) 17 | FarmingSection:AddToggle({ 18 | Name = "EXP Grinder", 19 | Flag = "FarmingSection_EXPGrinder" 20 | }) 21 | FarmingSection:AddToggle({ 22 | Name = "Trick Spammer", 23 | Flag = "FarmingSection_TrickSpammer", 24 | Keybind = 1, 25 | Callback = print 26 | }) 27 | FarmingSection:AddSlider({ 28 | Name = "Trick Rate", 29 | Flag = "FarmingSection_TrickRate", 30 | Value = 0.15, 31 | Precise = 2, 32 | Min = 0, 33 | Max = 1 34 | }) 35 | FarmingSection:AddToggle({ 36 | Name = "TP To Coins", 37 | Flag = "FarmingSection_TPCoins" 38 | }) 39 | FarmingSection:AddToggle({ 40 | Name = "Collect Coins", 41 | Flag = "FarmingSection_CollectCoins", 42 | Callback = print 43 | }) 44 | FarmingSection:AddSlider({ 45 | Name = "Coin Distance", 46 | Flag = "FarmingSection_CoinDistance", 47 | Value = 175, 48 | Min = 0, 49 | Max = 200, 50 | Format = function(Value) 51 | if Value == 0 then 52 | return "Collection Distance: Infinite" 53 | else 54 | return "Collection Distance: " .. tostring(Value) 55 | end 56 | end 57 | }) 58 | 59 | local BoardControlSection = GeneralTab:CreateSection({ 60 | Name = "Board Control" 61 | }) 62 | BoardControlSection:AddToggle({ 63 | Name = "Anti Trip/Ragdoll", 64 | Flag = "BoardControlSection_AntiTripRagdoll", 65 | Callback = print 66 | }) 67 | BoardControlSection:AddToggle({ 68 | Name = "No Wear & Tear", 69 | Flag = "BoardControlSection_NoWearTear" 70 | }) 71 | BoardControlSection:AddToggle({ 72 | Name = "No Trick Cooldown", 73 | Flag = "BoardControlSection_NoTrickCooldown", 74 | Callback = print 75 | }) 76 | BoardControlSection:AddToggle({ 77 | Name = "Extend Combo Timout", 78 | Flag = "BoardControlSection_ExtendComboTimeout" 79 | }) 80 | BoardControlSection:AddSlider({ 81 | Name = "Timeout Extension", 82 | Flag = "BoardControlSection_CoinDistance", 83 | Value = 3, 84 | Min = 0, 85 | Max = 20, 86 | Format = function(Value) 87 | if Value == 0 then 88 | return "Combo Timeout: Never" 89 | else 90 | return "Combo Timeout: " .. tostring(Value) .. "s" 91 | end 92 | end 93 | }) 94 | 95 | local MiscSection = GeneralTab:CreateSection({ 96 | Name = "Misc", 97 | Side = "Right" 98 | }) 99 | MiscSection:AddToggle({ 100 | Name = "Unlock Gamepasses", 101 | Flag = "MiscSection_UnlockGamepasses", 102 | Callback = print 103 | }) 104 | MiscSection:AddToggle({ 105 | Name = "Auto Compete", 106 | Flag = "MiscSection_AutoCompete", 107 | Callback = print 108 | }) 109 | MiscSection:AddButton({ 110 | Name = "Repair Board", 111 | Callback = function() 112 | print("Fixed") 113 | end 114 | }) 115 | MiscSection:AddKeybind({ 116 | Name = "Test Key", 117 | Callback = print 118 | }) 119 | MiscSection:AddToggle({ 120 | Name = "Test Toggle/Key", 121 | Keybind = { 122 | Mode = "Dynamic" -- Dynamic means to use the 'hold' method, if the user keeps the button pressed for longer than 0.65 seconds; else use toggle method 123 | }, 124 | Callback = print 125 | }) 126 | 127 | local FunSection = GeneralTab:CreateSection({ 128 | Name = "Fun Cosmetics" 129 | }) 130 | FunSection:AddToggle({ 131 | Name = "Ragdoll Assumes Flight", 132 | Flag = "FunSection_AssumesFlight" 133 | }) 134 | FunSection:AddToggle({ 135 | Name = "Ragdoll On Player Collision", 136 | Flag = "FunSection_RagdollOnPlayerCollision" 137 | }) 138 | FunSection:AddToggle({ 139 | Name = "Un-Ragdoll When Motionless", 140 | Flag = "FunSection_UnRagdollWhenMotionless" 141 | }) 142 | FunSection:AddToggle({ 143 | Name = "Extend Ragdoll Duration", 144 | Flag = "FunSection_ExtendRagdollDuration" 145 | }) 146 | FunSection:AddSlider({ 147 | Name = "Coin Distance", 148 | Flag = "FarmingSection_Coin Distance", 149 | Value = 4, 150 | Min = 0, 151 | Max = 60, 152 | Textbox = true, 153 | Format = function(Value) 154 | if Value == 0 then 155 | return "Ragdoll Extension: Indefinite" 156 | else 157 | return "Ragdoll Extension: " .. tostring(Value) .. "s" 158 | end 159 | end 160 | }) -------------------------------------------------------------------------------- /Libraries/PlayStations - Example.lua: -------------------------------------------------------------------------------- 1 | local GUI = loadstring(game:HttpGet("https://raw.githubusercontent.com/bloodball/-back-ups-for-libs/main/aaaa"))() 2 | 3 | local UI = GUI:CreateWindow("the um","lop") 4 | 5 | local Home = UI:addPage("Home",1,true,6) 6 | 7 | Home:addLabel("This is a Label","Lol this funny") 8 | 9 | Home:addButton("This is a button",function() 10 | game.StarterGui:SetCore("SendNotification",{ 11 | Title = "Clicked"; 12 | Text = "Lo"; 13 | }) 14 | end) 15 | 16 | Home:addToggle("This is a Toggle",function(value) 17 | print(value) 18 | if value == false then 19 | game.StarterGui:SetCore("SendNotification",{ 20 | Title = "Toggle"; 21 | Text = "false"; 22 | }) 23 | else 24 | game.StarterGui:SetCore("SendNotification",{ 25 | Title = "Toggle"; 26 | Text = "true"; 27 | }) 28 | end 29 | end) 30 | 31 | Home:addSlider("This is a Slider",16,100,function(value) 32 | print(value) 33 | end) 34 | 35 | Home:addTextBox("This is a TextBox","Um",function(value) 36 | game.StarterGui:SetCore("SendNotification",{ 37 | Title = "Wrote"; 38 | Text = value; 39 | }) 40 | end) 41 | 42 | Home:addDropdown("This is a Dropdown",{"Um","Yep","Lop","GG"},1,function(value) 43 | game.StarterGui:SetCore("SendNotification",{ 44 | Title = "Selected :"; 45 | Text = value; 46 | }) 47 | end) 48 | 49 | -- Just an example of how you would actually use it i guess 50 | 51 | local LP = UI:addPage("Local",2,false,6) 52 | 53 | -- Label 54 | 55 | LP:addLabel("Local","Don't use in games with anti cheats") 56 | 57 | --- Button 58 | 59 | LP:addButton("DIE",function() 60 | game.Players.LocalPlayer.Character.Humanoid.Health = 0 61 | end) 62 | 63 | -- Toggle 64 | 65 | LP:addToggle("Sprint",function(value) 66 | if value == false then 67 | game.Players.LocalPlayer.Character.Humanoid.WalkSpeed = 16 68 | else 69 | game.Players.LocalPlayer.Character.Humanoid.WalkSpeed = 24 70 | end 71 | end) 72 | 73 | -- Slider 74 | 75 | LP:addSlider("WalkSpeed",16,150,function(value) 76 | game.Players.LocalPlayer.Character.Humanoid.WalkSpeed = value 77 | end) 78 | 79 | -- Textbox 80 | 81 | LP:addTextBox("Jump Power / 50 is default","Number here",function(value) 82 | game.Players.LocalPlayer.Character.Humanoid.JumpPower = value 83 | end) 84 | 85 | -- Dropdown 86 | 87 | local PLIST = {} 88 | 89 | for i,v in pairs(game:GetService("Players"):GetPlayers()) do 90 | table.insert(PLIST,v.DisplayName) 91 | end 92 | 93 | LP:addDropdown("Teleport to Player",PLIST,4,function(value) 94 | game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = game.Players[value].Character.HumanoidRootPart.CFrame * CFrame.new(0,2,1) 95 | end) 96 | 97 | 98 | -- Spam 99 | 100 | LP:addLabel("Spam","This is just to show how it looks with more ui elements") 101 | 102 | LP:addDropdown("Teleport to Player",PLIST,4,function(value) 103 | game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = game.Players[value].Character.HumanoidRootPart.CFrame * CFrame.new(0,2,1) 104 | end) 105 | 106 | 107 | LP:addDropdown("Teleport to Player",PLIST,4,function(value) 108 | game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = game.Players[value].Character.HumanoidRootPart.CFrame * CFrame.new(0,2,1) 109 | end) 110 | 111 | 112 | LP:addDropdown("Teleport to Player",PLIST,4,function(value) 113 | game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = game.Players[value].Character.HumanoidRootPart.CFrame * CFrame.new(0,2,1) 114 | end) 115 | 116 | 117 | LP:addDropdown("Teleport to Player",PLIST,4,function(value) 118 | game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = game.Players[value].Character.HumanoidRootPart.CFrame * CFrame.new(0,2,1) 119 | end) -------------------------------------------------------------------------------- /Libraries/Polar - Example.lua: -------------------------------------------------------------------------------- 1 | --Made by : UNKNOWN 2 | 3 | local library = loadstring(game:HttpGet("https://raw.githubusercontent.com/bloodball/-back-ups-for-libs/main/polar"))() 4 | local ok = library:CreateWindow("hello!") 5 | ok:Section("Main") 6 | ok:Toggle("sup",function(a) 7 | print(a) 8 | end) 9 | ok:Button("a",function() 10 | print('a') 11 | end) 12 | ok:Box("WalkSpeed", function(object, focus) 13 | if focus then 14 | game:GetService("Players").LocalPlayer.Character.Humanoid.WalkSpeed = tonumber(object.Text) or 16 15 | end 16 | end) -------------------------------------------------------------------------------- /Libraries/ReGUI - Example.lua: -------------------------------------------------------------------------------- 1 | local ReGui = require(game.ReplicatedStorage.ReGui) 2 | ReGui:Init() 3 | 4 | --// Watermark demo 5 | local Watermark = ReGui.Elements:Canvas({ 6 | Parent = ReGui.Container.Windows, 7 | Position = UDim2.fromOffset(10,10), 8 | Size = UDim2.fromOffset(250, 50), 9 | 10 | CornerRadius = UDim.new(0, 2), 11 | Border = true, 12 | BorderThickness = 1, 13 | BorderColor = Color3.fromRGB(91, 91, 91), 14 | BackgroundTransparency = 0.4, 15 | BackgroundColor3 = Color3.fromRGB(39, 39, 39), 16 | }) 17 | 18 | local StatsRow = Watermark:Row({ 19 | Spacing = 10 20 | }) 21 | 22 | local FPSLabel = StatsRow:Label() 23 | local TimeLabel = Watermark:Label() 24 | 25 | game:GetService("RunService").RenderStepped:Connect(function(Delta) 26 | local FPS = math.round(1/Delta) 27 | local TimeString = DateTime.now():FormatLocalTime("dddd h:mm:ss A", "en-us") 28 | 29 | FPSLabel.Text = `FPS: {FPS}` 30 | TimeLabel.Text = `The time is {TimeString}` 31 | end) 32 | 33 | --// Demo 34 | local Window = ReGui:TabsWindow({ 35 | Title = "ReGui Demo", 36 | Size = UDim2.new(0, 350, 0, 370), 37 | }):Center() 38 | 39 | local Demos = Window:CreateTab({ 40 | Name = "Demos" 41 | }) 42 | 43 | Demos:Label({ 44 | Text = `ReGui says hello! ({ReGui:GetVersion()})` 45 | }) 46 | 47 | local Help = Demos:CollapsingHeader({ 48 | Title = "Help" 49 | }) 50 | 51 | Help:Separator({ 52 | Text = "ABOUT THIS DEMO:" 53 | }) 54 | Help:BulletText({ 55 | Rows = { 56 | "Sections below are demonstrating many aspects of the library.", 57 | } 58 | }) 59 | 60 | Help:Separator({ 61 | Text = "PROGRAMMER GUIDE:" 62 | }) 63 | Help:BulletText({ 64 | Rows = { 65 | "See example FAQ, examples, and documentation at https://depso.gitbook.io/regui", 66 | } 67 | }) 68 | Help:Indent():BulletText({ 69 | Rows = { 70 | "See example applications in the /examples folder.", 71 | } 72 | }) 73 | 74 | local ConfigurationHeader = Demos:CollapsingHeader({ 75 | Title = "Configuration" 76 | }) 77 | 78 | local Style = ConfigurationHeader:TreeNode({ 79 | Title = "Style" 80 | }) 81 | Style:Combo({ 82 | Selected = "DarkTheme", 83 | Label = "Theme", 84 | Items = ReGui.ThemeConfigs, 85 | Callback = function(self, Name) 86 | Window:SetTheme(Name) 87 | end, 88 | }) 89 | --Style:Combo({ 90 | -- Selected = ReGui.Theme.Font, 91 | -- Label = "Fonts", 92 | -- Items = { 93 | -- "Dark", 94 | -- "Light", 95 | -- "Classic", 96 | -- }, 97 | -- Callback = print 98 | --}) 99 | 100 | Style:Separator({ 101 | Text = "Color controls:" 102 | }) 103 | 104 | local Row = Style:Row() 105 | Row:Button({ 106 | Text = "Refresh colors", 107 | Callback = function() 108 | Window:SetTheme() 109 | print("Elements:", Window.ElementsList) 110 | end, 111 | }) 112 | 113 | local WindowOptions = Demos:CollapsingHeader({ 114 | Title = "Window options" 115 | }):List() 116 | 117 | local Options = { 118 | NoResize = false, 119 | NoTitleBar = false, 120 | NoClose = false, 121 | NoCollapse = false, 122 | NoTabsBar = false, 123 | NoMove = false, 124 | NoSelect = false, 125 | NoScrollBar = false, 126 | NoBackground = false 127 | } 128 | 129 | for Key, Value in pairs(Options) do 130 | WindowOptions:Checkbox({ 131 | Value = Value, 132 | Label = Key, 133 | Callback = function(self, Value) 134 | Window:UpdateConfig({ 135 | [Key] = Value 136 | }) 137 | end, 138 | }) 139 | end 140 | 141 | local Widgets = Demos:CollapsingHeader({ 142 | Title = "Widgets" 143 | }) 144 | 145 | local DemosOrder = { 146 | "Basic", 147 | "Tooltips", 148 | "Tree Nodes", 149 | "Collapsing Headers", 150 | "Bullets", 151 | "Text", 152 | "Images", 153 | "VideoPlayer", 154 | "Combo", 155 | "Tabs", 156 | "Plotting", 157 | "Progress Bars", 158 | "Console", 159 | --"Selectable", 160 | --"Group", 161 | "Indent", 162 | "Viewport", 163 | "Keybinds", 164 | --"Input", 165 | "MultiInput", 166 | "Text Input", 167 | } 168 | 169 | local WidgetDemos = { 170 | ["Basic"] = function(Header) 171 | --// General 172 | Header:Separator({Text="General"}) 173 | 174 | local Row = Header:Row() 175 | local Label = Row:Label({ 176 | Text = "Thanks for clicking me!", 177 | Visible = false, 178 | LayoutOrder = 2 179 | }) 180 | Row:Button({ 181 | Callback = function() 182 | Label.Visible = not Label.Visible 183 | end, 184 | }) 185 | 186 | Header:Checkbox() 187 | 188 | local RadioRow = Header:Row() 189 | RadioRow:Radiobox({Label="radio a"}) 190 | RadioRow:Radiobox({Label="radio b"}) 191 | RadioRow:Radiobox({Label="radio c"}) 192 | 193 | local ButtonsRow = Header:Row() 194 | for i = 1,7 do 195 | local Hue = i / 7.0 196 | ButtonsRow:Button({ 197 | Text = "Click", 198 | ColorTag = "", 199 | BackgroundColor3 = Color3.fromHSV(Hue, 0.6, 0.6) 200 | }) 201 | end 202 | 203 | local Tooltip = Header:Button({ 204 | Text = "Tooltip" 205 | }) 206 | 207 | ReGui:SetItemTooltip(Tooltip, function(Canvas) 208 | Canvas:Label({ 209 | Text = "I am a tooltip" 210 | }) 211 | end) 212 | 213 | --// Inputs 214 | Header:Separator({Text="Inputs"}) 215 | 216 | Header:InputText({ 217 | Value = "Hello world!" 218 | }) 219 | Header:InputText({ 220 | Placeholder = "Enter text here", 221 | Label = "Input text (w/ hint)", 222 | Value = "Hello world!" 223 | }) 224 | Header:InputInt({ 225 | Value = 50, 226 | }) 227 | Header:InputInt({ 228 | Label = "Input Int (w/ limit)", 229 | Value = 5, 230 | Maximum = 10, 231 | Minimum = 1 232 | }) 233 | 234 | --// Drags 235 | Header:Separator({Text="Drags"}) 236 | 237 | Header:DragInt() 238 | 239 | Header:DragInt({ 240 | Maximum = 100, 241 | Minimum = 0, 242 | Label = "Drag Int 0..100", 243 | Format = "%d%%" 244 | }) 245 | 246 | Header:DragFloat({ 247 | Maximum = 1, 248 | Minimum = 0, 249 | Value = 0.5 250 | }) 251 | 252 | --// Sliders 253 | Header:Separator({Text="Sliders"}) 254 | 255 | Header:SliderInt({ 256 | Format = "%.d/%s", 257 | Value = 5, 258 | Minimum = 1, 259 | Maximum = 32, 260 | ReadOnly = false, 261 | }):SetValue(8) 262 | 263 | Header:SliderInt({ 264 | Label = "Slider Int (w/ snap)", 265 | Value = 1, 266 | Minimum = 1, 267 | Maximum = 8, 268 | Type = "Snap" 269 | }) 270 | 271 | Header:SliderFloat({ 272 | Label = "Slider Float", 273 | Minimum = 0.0, 274 | Maximum = 1.0, 275 | Format = "Ratio = %.3f" 276 | }) 277 | 278 | Header:SliderFloat({ 279 | Label = "Slider Angle", 280 | Minimum = -360, 281 | Maximum = 360, 282 | Format = "%.f deg" 283 | }) 284 | 285 | Header:SliderEnum({ 286 | Items = {"Fire", "Earth", "Air", "Water"}, 287 | Value = 2, 288 | }) 289 | 290 | Header:SliderEnum({ 291 | Items = {"Fire", "Earth", "Air", "Water"}, 292 | Value = 2, 293 | Disabled = true, 294 | Label = "Disabled Enum" 295 | }) 296 | 297 | Header:SliderProgress({ 298 | Label = "Progress Slider", 299 | Value = 8, 300 | Minimum = 1, 301 | Maximum = 32, 302 | }) 303 | 304 | --// Selectors/Pickers 305 | Header:Separator({Text="Selectors/Pickers"}) 306 | 307 | Header:InputColor3({ 308 | Value = ReGui.Accent.Light, 309 | Label = "Color 1", 310 | --Callback = print 311 | }) 312 | --Header:InputColor4({ 313 | -- Value = ReGui.Accent.Light, 314 | -- Label = "Color 2" 315 | --}) 316 | 317 | Header:InputCFrame({ 318 | Value = CFrame.new(1,1,1), 319 | Minimum = -200, 320 | Maximum = 200, 321 | --Callback = print 322 | }) 323 | 324 | Header:Combo({ 325 | Selected = 1, 326 | Items = { 327 | "AAAA", 328 | "BBBB", 329 | "CCCC", 330 | "DDDD", 331 | "EEEE", 332 | "FFFF", 333 | "GGGG", 334 | "HHHH", 335 | "IIIIIII", 336 | "JJJJ", 337 | "KKKKKKK" 338 | } 339 | }) 340 | end, 341 | ["Tooltips"] = function(Header) 342 | --// General 343 | Header:Separator({Text="General"}) 344 | 345 | local Basic = Header:Button({ 346 | Text = "Basic", 347 | Size = UDim2.fromScale(1, 0) 348 | }) 349 | ReGui:SetItemTooltip(Basic, function(Canvas) 350 | Canvas:Label({ 351 | Text = "I am a tooltip" 352 | }) 353 | end) 354 | 355 | local Fancy = Header:Button({ 356 | Text = "Fancy", 357 | Size = UDim2.fromScale(1, 0) 358 | }) 359 | ReGui:SetItemTooltip(Fancy, function(Canvas) 360 | Canvas:Label({ 361 | Text = "I am a fancy tooltip" 362 | }) 363 | Canvas:Image({ 364 | Image = 18395893036 365 | }) 366 | 367 | local Time = Canvas:Label() 368 | while wait() do 369 | Time.Text = `Sin(time) = {math.sin(tick())}` 370 | end 371 | end) 372 | end, 373 | ["VideoPlayer"] = function(Header) 374 | local Video = Header:VideoPlayer({ 375 | Video = 5608327482, 376 | Looped = true, 377 | Ratio = 16 / 9, 378 | RatioAspectType = Enum.AspectType.FitWithinMaxSize, 379 | RatioAxis = Enum.DominantAxis.Width, 380 | Size = UDim2.fromScale(1, 1) 381 | }) 382 | Video:Play() 383 | 384 | local Controls = Header:Row({ 385 | Expanded = true 386 | }) 387 | Controls:Button({ 388 | Text = "Pause", 389 | Callback = function() 390 | Video:Pause() 391 | end, 392 | }) 393 | Controls:Button({ 394 | Text = "Play", 395 | Callback = function() 396 | Video:Play() 397 | end, 398 | }) 399 | 400 | --// Wait for the video to load 401 | if not Video.IsLoaded then 402 | Video.Loaded:Wait() 403 | end 404 | 405 | local TimeSlider = Controls:SliderInt({ 406 | Format = "%.f", 407 | Value = 0, 408 | Minimum = 0, 409 | Maximum = Video.TimeLength, 410 | Callback = function(self, Value) 411 | Video.TimePosition = Value 412 | end, 413 | }) 414 | 415 | game:GetService("RunService").RenderStepped:Connect(function(Delta) 416 | TimeSlider:SetValue(Video.TimePosition) 417 | end) 418 | end, 419 | ["Tree Nodes"] = function(Header) 420 | for i = 1,5 do 421 | local Tree = Header:TreeNode({ 422 | Title = `Child {i}`, 423 | Collapsed = i ~= 1 424 | }) 425 | 426 | local Row = Tree:Row() 427 | Row:Label({Text="Blah blah"}) 428 | Row:SmallButton({Text="Button"}) 429 | end 430 | end, 431 | ["Collapsing Headers"] = function(Header) 432 | local Second 433 | 434 | Header:Checkbox({ 435 | Value = true, 436 | Label = "Show 2nd header", 437 | Callback = function(self, Value) 438 | if Second then 439 | Second.Visible = Value 440 | end 441 | end, 442 | }) 443 | 444 | local First = Header:CollapsingHeader({ 445 | Title = "Header", 446 | }) 447 | for i = 1, 5 do 448 | First:Label({Text=`Some content {i}`}) 449 | end 450 | 451 | Second = Header:CollapsingHeader({ 452 | Title = "Second Header", 453 | }) 454 | 455 | for i = 1, 5 do 456 | Second:Label({Text=`More content {i}`}) 457 | end 458 | end, 459 | ["Bullets"] = function(Header) 460 | Header:BulletText({ 461 | Rows = { 462 | "Bullet point 1", 463 | "Bullet point 2\nOn multiple lines", 464 | } 465 | }) 466 | 467 | Header:TreeNode():BulletText({ 468 | Rows = {"Another bullet point"} 469 | }) 470 | 471 | Header:Bullet():Label({ 472 | Text = "Bullet point 3 (two calls)" 473 | }) 474 | 475 | Header:Bullet():SmallButton() 476 | end, 477 | ["Text"] = function(Header) 478 | local Colorful = Header:TreeNode({Title="Colorful Text"}) 479 | Colorful:Label({ 480 | TextColor3 = Color3.fromRGB(255, 0, 255), 481 | Text = "Pink", 482 | NoTheme = true 483 | }) 484 | Colorful:Label({ 485 | TextColor3 = Color3.fromRGB(255, 255, 0), 486 | Text = "Yellow", 487 | NoTheme = true 488 | }) 489 | Colorful:Label({ 490 | TextColor3 = Color3.fromRGB(59, 59, 59), 491 | Text = "Disabled", 492 | NoTheme = true 493 | }) 494 | 495 | local Wrapping = Header:TreeNode({Title="Word Wrapping"}) 496 | Wrapping:Label({ 497 | TextColor3 = Color3.fromRGB(255, 0, 255), 498 | Text = [[This text should automatically wrap on the edge of the window. The current implementation for text wrapping follows simple rules suitable for English and possibly other languages.]], 499 | TextWrapped = true 500 | }) 501 | 502 | local Paragraph 503 | 504 | Wrapping:SliderInt({ 505 | Label = "Wrap width", 506 | Value = 400, 507 | Minimum = 20, 508 | Maximum = 600, 509 | Callback = function(self, Value) 510 | if not Paragraph then return end 511 | Paragraph.Size = UDim2.fromOffset(Value, 0) 512 | end, 513 | }) 514 | 515 | Wrapping:Label({Text="Test paragraph:"}) 516 | Paragraph = Wrapping:Label({ 517 | Text = [[The lazy dog is a good dog. This paragraph should fit. Testing a 1 character word. The quick brown fox jumps over the lazy dog.]], 518 | TextWrapped = true, 519 | Border = true, 520 | BorderColor = Color3.fromRGB(255, 255, 0), 521 | AutomaticSize = Enum.AutomaticSize.Y, 522 | Size = UDim2.fromOffset(400, 0) 523 | }) 524 | end, 525 | ["Images"] = function(Header) 526 | Header:Label({ 527 | TextWrapped = true, 528 | Text=`Below we are displaying the icons (which are the ones builtin to ReGui in this demo).\ 529 | \ 530 | \There is a total of {ReGui:GetDictSize(ReGui.Icons)} icons in this demo!` 531 | }) 532 | 533 | local List = Header:List({ 534 | Border = true 535 | }) 536 | 537 | local TooltipLabel 538 | local TooltipImage 539 | 540 | --// Asign Tooltip to image for displaying the Icon name 541 | ReGui:SetItemTooltip(List, function(Canvas) 542 | TooltipLabel = Canvas:Label() 543 | TooltipImage = Canvas:Image({ 544 | Size = UDim2.fromOffset(50,50) 545 | }) 546 | end) 547 | 548 | for Name, ImageUrl in ReGui.Icons do 549 | --// Create the Image object 550 | local Image = List:Image({ 551 | Image = ImageUrl, 552 | Size = UDim2.fromOffset(30, 30) 553 | }) 554 | 555 | ReGui:ConnectHover(Image, { 556 | MouseEnter = true, 557 | OnInput = function() 558 | TooltipLabel.Text = Name 559 | TooltipImage.Image = ImageUrl 560 | end, 561 | }) 562 | end 563 | end, 564 | ["Tabs"] = function(Header) 565 | --// Basic 566 | local Basic = Header:TreeNode({Title="Basic"}) 567 | local TabsBox = Basic:TabsBox() 568 | 569 | local Names = {"Avocado", "Broccoli", "Cucumber"} 570 | for _, Name in next, Names do 571 | TabsBox:CreateTab({Name=Name}):Label({ 572 | Text = `This is the {Name} tab!\nblah blah blah blah blah` 573 | }) 574 | end 575 | 576 | --// Advanced 577 | local Advanced = Header:TreeNode({Title="Advanced & Close Button"}) 578 | local TabsBox = Advanced:TabsBox() 579 | 580 | local Names = {"Artichoke", "Beetroot", "Celery", "Daikon"} 581 | 582 | for _, Name in next, Names do 583 | local Tab = TabsBox:CreateTab({ 584 | Name=Name, 585 | CanClose = true 586 | }) 587 | 588 | Tab:Label({ 589 | Text = `This is the {Name} tab!\nblah blah blah blah blah` 590 | }) 591 | end 592 | 593 | Advanced:Button({ 594 | Text="Add tab", 595 | Callback = function() 596 | TabsBox:CreateTab({ 597 | CanClose = true 598 | }):Label({ 599 | Text = "I am an odd tab." 600 | }) 601 | end, 602 | }) 603 | end, 604 | ["Plotting"] = function(Header) 605 | local Graph = Header:PlotHistogram({ 606 | Points = {0.6, 0.1, 1.0, 0.5, 0.92, 0.1, 0.2} 607 | }) 608 | 609 | Header:Button({ 610 | Text = "Generate new graph", 611 | Callback = function() 612 | local Points = {} 613 | 614 | for I = 1, math.random(5, 10) do 615 | table.insert(Points, math.random(1, 10)) 616 | end 617 | 618 | Graph:PlotGraph(Points) 619 | end, 620 | }) 621 | end, 622 | ["Progress Bars"] = function(Header) 623 | local ProgressBar = Header:ProgressBar({ 624 | Label = "Loading...", 625 | Value = 80 626 | }) 627 | 628 | spawn(function() 629 | local Percentage = 0 630 | while wait(0.02) do 631 | Percentage += 1 632 | ProgressBar:SetPercentage(Percentage % 100) 633 | end 634 | end) 635 | end, 636 | ["Console"] = function(Header) 637 | --// Basic 638 | local Basic = Header:TreeNode({Title="Basic"}) 639 | local BasicConsole = Basic:Console({ 640 | ReadOnly = true, 641 | AutoScroll = true, 642 | MaxLines = 50 643 | }) 644 | 645 | --// Advanced 646 | local Advanced = Header:TreeNode({Title="Advanced"}) 647 | local AdvancedConsole = Advanced:Console({ 648 | ReadOnly = true, 649 | AutoScroll = true, 650 | RichText = true, 651 | MaxLines = 50 652 | }) 653 | 654 | --// Editor 655 | local Editor = Header:TreeNode({Title="Editor"}) 656 | Editor:Console({ 657 | Value = "print('Hello world!')", 658 | LineNumbers = true 659 | }) 660 | 661 | coroutine.wrap(function() 662 | while wait() do 663 | local Date = DateTime.now():FormatLocalTime("h:mm:ss A", "en-us") 664 | 665 | AdvancedConsole:AppendText( 666 | `[Random]`, 667 | math.random() 668 | ) 669 | BasicConsole:AppendText( 670 | `[{Date}] Hello world!` 671 | ) 672 | end 673 | end)() 674 | end, 675 | ["Combo"] = function(Header) 676 | Header:Combo({ 677 | Label = "Combo 1 (array)", 678 | Selected = 1, 679 | Items = { 680 | "AAAA", 681 | "BBBB", 682 | "CCCC", 683 | "DDDD", 684 | "EEEE", 685 | "FFFF", 686 | "GGGG", 687 | "HHHH", 688 | "IIIIIII", 689 | "JJJJ", 690 | "KKKKKKK" 691 | } 692 | }) 693 | Header:Combo({ 694 | Label = "Combo 1 (dict)", 695 | Selected = "AAA", 696 | Items = { 697 | AAA = "Apple", 698 | BBB = "Banana", 699 | CCC = "Orange", 700 | }, 701 | Callback = print, 702 | }) 703 | Header:Combo({ 704 | Label = "Combo 2 (function)", 705 | Selected = 1, 706 | GetItems = function() 707 | return { 708 | "aaa", 709 | "bbb", 710 | "ccc", 711 | } 712 | end, 713 | }) 714 | end, 715 | ["Indent"] = function(Header) 716 | Header:Label({Text="This is not indented"}) 717 | 718 | local Indent = Header:Indent({Offset=30}) 719 | Indent:Label({Text="This is indented by 30 pixels"}) 720 | 721 | local Indent2 = Indent:Indent({Offset=30}) 722 | Indent2:Label({Text="This is indented by 30 more pixels"}) 723 | end, 724 | ["Viewport"] = function(Header) 725 | local Rig = ReGui:InsertPrefab("R15 Rig") 726 | 727 | local Viewport = Header:Viewport({ 728 | Size = UDim2.new(1, 0, 0, 200), 729 | Clone = true, --// Otherwise will parent 730 | Model = Rig, 731 | }) 732 | 733 | local Model = Viewport.Model 734 | 735 | local RunService = game:GetService("RunService") 736 | RunService.RenderStepped:Connect(function(DeltaTime) 737 | local Rotation = CFrame.Angles(0, math.rad(30*DeltaTime), 0) 738 | local Pivot = Model:GetPivot() * Rotation 739 | 740 | Model:PivotTo(Pivot) 741 | end) 742 | end, 743 | ["Keybinds"] = function(Header) 744 | local TestCheckbox = Header:Checkbox({ 745 | Value = true 746 | }) 747 | 748 | Header:Keybind({ 749 | Label = "Toggle checkbox", 750 | --Value = Enum.KeyCode.Q, 751 | IgnoreGameProcessed = false, 752 | Callback = function(self, KeyCode) 753 | print(KeyCode) 754 | TestCheckbox:Toggle() 755 | end, 756 | }) 757 | 758 | Header:Keybind({ 759 | Label = "Toggle UI visibility", 760 | Value = Enum.KeyCode.E, 761 | Callback = function() 762 | local IsVisible = Window.Visible 763 | Window:SetVisible(not IsVisible) 764 | end, 765 | }) 766 | end, 767 | ["Text Input"] = function(Header) 768 | --// Multiline 769 | local Multiline = Header:TreeNode({Title="Multiline"}) 770 | Multiline:InputTextMultiline({ 771 | Size = UDim2.new(1,0,0,117), 772 | Value = [[/*The Pentium FOOF bug, shorthand for FO OF C7 C8, 773 | the hexadecimal encoding of one offending instruction, 774 | more formally, the invalid operand with locked CMPXCHG8B 775 | instruction bug, is a design flaw in the majority of 776 | Intel Pentium, Pentium MMX, and Pentium OverDrive 777 | processors (all in the P5 microarchitecture).# 778 | */]] 779 | }) 780 | end, 781 | } 782 | 783 | for _, Title in DemosOrder do 784 | local Header = Widgets:TreeNode({Title=Title}) 785 | local Generate = WidgetDemos[Title] 786 | 787 | if Generate then 788 | Generate(Header) 789 | end 790 | end 791 | 792 | local Windows = Demos:CollapsingHeader({ 793 | Title = "Popups & child windows" 794 | }) 795 | local ChildWindows = Windows:TreeNode({Title="Child windows"}) 796 | 797 | local Window = ChildWindows:Window({ 798 | Size = UDim2.fromOffset(300, 200), 799 | NoSelect = true, 800 | NoMove = true, 801 | NoClose = true, 802 | NoCollapse = true, 803 | NoResize = true 804 | }) 805 | 806 | Window:Label({Text="Hello, world!"}) 807 | Window:Button({Text = "Save"}) 808 | Window:InputText({Label="string"}) 809 | Window:SliderInt({Label="float", Format="%.1f/%s", Minimum=0, Maximum=1}) 810 | 811 | local TablesNColumns = Demos:CollapsingHeader({ 812 | Title = "Tables & Columns" 813 | }) 814 | local Basic = TablesNColumns:TreeNode({ 815 | Title = "Basic" 816 | }) 817 | 818 | local BasicTable = Basic:Table() 819 | for RowCount = 1, 3 do 820 | local Row = BasicTable:Row() 821 | for ColumnCount = 1, 3 do 822 | local Column = Row:Column() 823 | for i = 1, 4 do 824 | Column:Label({Text=`Row {i} Column {ColumnCount}`}) 825 | end 826 | end 827 | end 828 | 829 | local Borders = TablesNColumns:TreeNode({ 830 | Title = "Borders, background" 831 | }) 832 | 833 | local BasicTable = Borders:Table({ 834 | RowBackground = true, 835 | Border = true 836 | }) 837 | 838 | for RowCount = 1, 5 do 839 | local Row = BasicTable:Row() 840 | for ColumnCount = 1, 3 do 841 | local Column = Row:Column() 842 | Column:Label({Text=`Hello {ColumnCount},{RowCount}`}) 843 | end 844 | end 845 | 846 | local Headers = TablesNColumns:TreeNode({ 847 | Title = "With headers" 848 | }) 849 | 850 | local BasicTable = Headers:Table({ 851 | Border = true 852 | }) 853 | 854 | local Row = BasicTable:Row() 855 | local Rows = {"One", "Two", "Three"} 856 | 857 | for Count, RowHeader in Rows do 858 | local Column = Row:Column() 859 | 860 | Column:Header({Text=RowHeader}) 861 | 862 | for Line = 1, 6 do 863 | Column:Label({Text=`Hello {Count},{Line}`}) 864 | end 865 | end -------------------------------------------------------------------------------- /Libraries/Sea Hub - Example.lua: -------------------------------------------------------------------------------- 1 | local library = loadstring(game:HttpGet("https://raw.githubusercontent.com/bloodball/-back-ups-for-libs/main/turtle"))() 2 | 3 | local OwO = library:Window("Table Turtle Hub") 4 | 5 | OwO:Button("Button name", function() 6 | print("pressed button") 7 | end) 8 | 9 | OwO:Toggle("Example toggle", true, function(bool) 10 | print(bool) -- bool is true or false depending on the state of the toggle 11 | end) 12 | 13 | OwO:ColorPicker("Color Picker", Color3.fromRGB(255, 255, 255), function(color) 14 | print(color) 15 | end) 16 | 17 | OwO:Slider("Example Slider",0,100,20, function(value) 18 | print(value) 19 | end) 20 | 21 | OwO:Label("Credits to Intrer#0421", Color3.fromRGB(127, 143, 166)) 22 | 23 | OwO:Box("Walkspeed", function(text, focuslost) 24 | if focuslost then 25 | print(text) 26 | end 27 | end) 28 | 29 | local dropdown = OwO:Dropdown("Example dropdown", {"Button 1", "Button 2", "Third button"}, function(name) 30 | print(name) 31 | end) 32 | 33 | dropdown:Button("New button") 34 | 35 | dropdown:Remove("Button") 36 | -------------------------------------------------------------------------------- /Libraries/Solaris - Example.lua: -------------------------------------------------------------------------------- 1 | local SolarisLib = loadstring(game:HttpGet("https://solarishub.dev/SolarisLib.lua"))() 2 | 3 | --[[SolarisLib:New({ 4 | Name - Title of the UI 5 | FolderToSave - Name of the folder where the UI files will be stored 6 | })]] 7 | local win = SolarisLib:New({ 8 | Name = "SolarisLib", 9 | FolderToSave = "SolarisLibStuff" 10 | }) 11 | 12 | --win:Tab(title ) 13 | local tab = win:Tab("Tab 1") 14 | 15 | --tab:Section(title ) 16 | local sec = tab:Section("Elements") 17 | 18 | --sec:Button(title , callback ) 19 | sec:Button("Button", function() 20 | SolarisLib:Notification("Test", "This is a notification test.") 21 | end) 22 | 23 | --sec:Toggle(title ,default , flag , callback ) 24 | local toggle = sec:Toggle("Toggle", false,"Toggle", function(t) 25 | print(t) 26 | end) 27 | 28 | --[[ 29 | toggle:Set(state ) 30 | ]] 31 | 32 | --sec:Slider(title ,default ,max ,minimum ,increment , flag , callback ) 33 | local slider = sec:Slider("Slider", 0,25,0,2.5,"Slider", function(t) 34 | print(t) 35 | end) 36 | 37 | --[[ 38 | slider:Set(state ) 39 | ]] 40 | 41 | --sec:Dropdown(title ,options ,default , flag , callback ) 42 | local dropdown = sec:Dropdown("Dropdown", {"a","b","c","d","e"},"","Dropdown", function(t) 43 | print(t) 44 | end) 45 | 46 | --[[ 47 | Dropdown:Refresh(options
, deletecurrent ) 48 | Dropdown:Set(option ) 49 | ]] 50 | 51 | --sec:MultiDropdown(title ,options
,default
, flag , callback ) 52 | local multidropdown =sec:MultiDropdown("Multi Dropdown", {"a","b","c","d","e"},{"b", "c"},"Dropdown", function(t) 53 | print(table.concat(t, ", ")) 54 | end) 55 | 56 | --[[ 57 | Dropdown:Refresh(options
, deletecurrent ) 58 | Dropdown:Set(option
) 59 | ]] 60 | 61 | --sec:Colorpicker(title , default , flag , callback ) 62 | sec:Colorpicker("Colorpicker", Color3.fromRGB(255,255,255),"Colorpicker", function(t) 63 | print(t) 64 | end) 65 | 66 | --sec:Textbox(title ,disappear , callback ) 67 | sec:Textbox("Textbox", true, function(t) 68 | print(t) 69 | end) 70 | 71 | --sec:Bind(title , default , hold , flag , callback ) 72 | sec:Bind("Hold Bind", Enum.KeyCode.E, true, "BindHold", function(t) 73 | print(t) 74 | end) 75 | 76 | sec:Bind("Normal Bind", Enum.KeyCode.F, false, "BindNormal", function() 77 | print("Bind pressed") 78 | end) 79 | 80 | --[[ 81 | bind:Set(state ) 82 | ]] 83 | 84 | --sec:Label(text ) 85 | local label = sec:Label("Label") 86 | 87 | --[[ 88 | label:Set(text ) 89 | ]] 90 | local tab2 = win:Tab("Tab 2") -------------------------------------------------------------------------------- /Libraries/Venyx - Example.lua: -------------------------------------------------------------------------------- 1 | library.new(title) 2 | title -> title of the ui 3 | 4 | return -> library 5 | 6 | library:toggle() 7 | toggle -> toggles ui 8 | 9 | library:setTheme(theme, color) 10 | theme -> theme to change, choices are listed in source 11 | color -> color to change to 12 | 13 | library:Notify(title, context, callback) 14 | title -> title of notification 15 | context -> description of notification 16 | callback 17 | return (value) 18 | value -> accepted or cancelled 19 | 20 | library:SelectPage(page, toggle) 21 | page
-> page to edit 22 | toggle 23 | 24 | library:addPage(title, icon) 25 | title title of page 26 | icon asset id of icon (optional) 27 | 28 | return -> page 29 | 30 | page:addSection(title) 31 | title -> title of page 32 | 33 | return -> section 34 | 35 | page:Resize(scroll) 36 | -> resizes page based on contents absolutesize, automatic 37 | scroll -> scroll to last canvas position 38 | 39 | section:addButton(title, callback) 40 | title -> title of button 41 | callback 42 | return (update) 43 | update -> section.updateButton(button) 44 | 45 | return -> button 46 | 47 | section:updateButton(button, title) 48 | button -> button to edit 49 | title -> title of button 50 | 51 | section:addToggle(title, default, callback) 52 | title -> title of toggle 53 | default -> default value of toggle 54 | callback 55 | return (value, update) 56 | value -> new toggle value 57 | update -> section.updateToggle(toggle) 58 | 59 | return -> toggle 60 | 61 | section:updateToggle(toggle, title, value) 62 | toggle -> toggle to edit 63 | title -> title of toggle 64 | value -> value of toggle 65 | 66 | section:addTextbox(title, default, callback) 67 | title -> title of textbox 68 | default -> default content of textbox 69 | callback 70 | return (text, focus, update) 71 | text -> textbox content 72 | focus -> focus lost signal 73 | update -> section.updateTextbox(textbox) 74 | 75 | return -> textbox 76 | 77 | section:updateTextbox(textbox, title, text) 78 | textbox -> textbox to edit 79 | title -> title of textbox 80 | text -> content of textbox 81 | 82 | section:addKeybind(title, default, callback, changedCallback) 83 | title -> title of keybind 84 | defualt -> default binded key 85 | callback -> callback for key pressed 86 | return (update) 87 | update -> section.updateKeybind(keybind) 88 | changedCallback -> callback for when bind is changed 89 | return (key, update) 90 | key -> new key binded 91 | update -> section.updateKeybind(keybind) 92 | 93 | return -> keybind 94 | 95 | section:updateKeybind(keybind, title, key) 96 | keybind -> keybind to edit 97 | title -> title of keybind 98 | key -> key to bind 99 | 100 | section:addColorPicker(title, default, callback) 101 | title -> title of colorpicker 102 | default -> default color of colorpicker 103 | callback -> callback for color changed 104 | return (color, update) 105 | color -> new color of colorpicker 106 | update -> section.updateColorPicker(colorpicker) 107 | 108 | return -> colorpicker 109 | 110 | section:updateColorPicker(colorpicker, title, color) 111 | colorpicker -> colorpicker to edit 112 | title -> title of colorpicker 113 | color -> color3 of colorpicker 114 | 115 | section:addSlider(title, default, min, max, callback) 116 | title -> title of slider 117 | default -> default value of slider 118 | min -> minimum value of dragger 119 | max -> maximum value of dragger 120 | callback 121 | return (value, update) 122 | value -> value of slider 123 | update -> section.updateSlider(slider) 124 | 125 | return -> slider 126 | 127 | section:updateSlider(slider, title, value, min, max) 128 | slider -> slider to edit 129 | title -> title of slider 130 | default -> default value of slider 131 | min -> minimum value of dragger 132 | max -> maximum value of dragger 133 | 134 | section:addDropdown(title, list, callback) 135 | title -> title of dropdown 136 | list
-> content of dropdown 137 | callback 138 | return (value) 139 | value -> text of button clicked 140 | 141 | return -> dropdown 142 | 143 | section:updateDropdown(dropdown, title, list, callback) 144 | dropdown -> dropdown to edit 145 | title -> title of dropdown 146 | list
-> content of dropdown 147 | 148 | section:Resize(smooth) 149 | -> resizes section based on contents absolutesize, automatic 150 | smooth -> resize with tween -------------------------------------------------------------------------------- /Libraries/Wally V3 - Example.lua: -------------------------------------------------------------------------------- 1 | --Made by : https://v3rmillion.net/member.php?action=profile&uid=507120 2 | --Go vouch release thread : https://v3rmillion.net/showthread.php?tid=1040650 3 | 4 | local library = loadstring(game:HttpGet(('https://raw.githubusercontent.com/bloodball/-back-ups-for-libs/main/wall%20v3')))() 5 | 6 | local w = library:CreateWindow("KUY") -- Creates the window 7 | 8 | local b = w:CreateFolder("B") -- Creates the folder(U will put here your buttons,etc) 9 | 10 | b:Label("x2Swiftz",{ 11 | TextSize = 25; -- Self Explaining 12 | TextColor = Color3.fromRGB(255,255,255); -- Self Explaining 13 | BgColor = Color3.fromRGB(69,69,69); -- Self Explaining 14 | 15 | }) 16 | 17 | b:Button("Button",function() 18 | print("Elym Winning") 19 | end) 20 | 21 | b:Toggle("Toggle",function(bool) 22 | shared.toggle = bool 23 | print(shared.toggle) 24 | end) 25 | 26 | b:Slider("Slider",{ 27 | min = 10; -- min value of the slider 28 | max = 50; -- max value of the slider 29 | precise = true; -- max 2 decimals 30 | },function(value) 31 | print(value) 32 | end) 33 | 34 | b:Dropdown("Dropdown",{"A","B","C"},true,function(mob) --true/false, replaces the current title "Dropdown" with the option that t 35 | print(mob) 36 | end) 37 | 38 | b:Bind("Bind",Enum.KeyCode.C,function() --Default bind 39 | print("Yes") 40 | end) 41 | 42 | b:ColorPicker("ColorPicker",Color3.fromRGB(255,0,0),function(color) --Default color 43 | print(color) 44 | end) 45 | 46 | b:Box("Box","number",function(value) -- "number" or "string" 47 | print(value) 48 | end) 49 | 50 | b:DestroyGui() 51 | 52 | --[[ 53 | How to refresh a dropdown: 54 | 1)Create the dropdown and save it in a variable 55 | local yourvariable = b:Dropdown("Hi",yourtable,function(a) 56 | print(a) 57 | end) 58 | 2)Refresh it using the function 59 | yourvariable:Refresh(yourtable) 60 | How to refresh a label: 61 | 1)Create your label and save it in a variable 62 | local yourvariable = b:Label("Pretty Useless NGL",{ 63 | TextSize = 25; -- Self Explaining 64 | TextColor = Color3.fromRGB(255,255,255); 65 | BgColor = Color3.fromRGB(69,69,69); 66 | }) 67 | 2)Refresh it using the function 68 | yourvariable:Refresh("Hello") It will only change the text ofc 69 | ]] -------------------------------------------------------------------------------- /Libraries/Xanax - Example.lua: -------------------------------------------------------------------------------- 1 | --Made by : https://v3rmillion.net/member.php?action=profile&uid=516055 2 | 3 | local XanaxUILib = loadstring(game:HttpGet("https://pastebin.com/raw/XZz3Ytbu"))() 4 | local Ui = XanaxUILib:CreateWindow("Example UI") 5 | local Info = Ui:CreateSection("Info") 6 | local ExampleSection = Ui:CreateSection("Example") 7 | 8 | Info:CreateLabel("Made by Dylan Exploits#9999") 9 | Info:CreateLabel("This is a UI Library example") 10 | Info:CreateButton("Destroy UI", function() XanaxUILib.functions:DestroyGUI() end) 11 | 12 | ExampleSection:CreateLabel("This is label") 13 | ExampleSection:CreateButton("This is button", function() print("This is function") end) 14 | ExampleSection:CreateToggle("This is toggle", "This is flag", function(Toggled) print("This is optional argument", Toggled) end) 15 | ExampleSection:CreateSlider("This is walkspeed slider", "WalkSpeed", 16, 100, false, function(ws) 16 | game.Players.LocalPlayer.Character.Humanoid.WalkSpeed = ws 17 | end) 18 | ExampleSection:CreateDropdown("Gender", "Default Text", "GenderFlag", {"Gay", "Lesbian", "Bi", "Nigga", "White"}, function(chosenOption) 19 | if chosenOption == "Gay" then 20 | local m = Instance.new("Message") 21 | m.Parent = game.CoreGui 22 | m.Text = "Allahu Akbar Sweetie" 23 | wait(2) 24 | Instance.new("Explosion", game.Players.LocalPlayer.Character.HumanoidRootPart) 25 | m:Destroy() 26 | return 27 | end 28 | print("ur safe my dude") 29 | end) -------------------------------------------------------------------------------- /Libraries/Xenon - Example.lua: -------------------------------------------------------------------------------- 1 | --// some docs if u actually wanna use it 2 | 3 | create the lib: library.Create(name, nameUnder) 4 | create a tab: lib:Tab(name, iconId) 5 | create a button: tab:Button("name", "description", callback) 6 | create a toggle: tab:Toggle("name", "description", starting_state, callback) --// returns state true or false 7 | create a dropdown: tab:Dropdown("name", list [table], callback) --// returns selected item in dropdown 8 | create a label: tab:Label(text) 9 | create a slider: tab:Slider(name, min, max, starting_value, callback) --// returns current value 10 | create a keybind: tab:Keybind(name, keybind [enum], blacklisted_keys [table] (THESE ARE IN TEXT NO ENUM EG.. {"A", "B"}), callback) --// only returns a value (new key) when there is a new key selected 11 | create a textbox: tab:TextBox(text, callback) --// returns new text typed in 12 | create a notification: tab:Notification(text) 13 | 14 | --// Others 15 | force click a button: button:Click() 16 | update an asset: asset:Update(newvalues) 17 | toggle ui: lib:ToggleUI() -------------------------------------------------------------------------------- /Libraries/Xenon - Library.lua: -------------------------------------------------------------------------------- 1 | local library = {} 2 | 3 | library.__index = library 4 | 5 | function library:Tween(asset, info, thing) 6 | game:GetService("TweenService"):Create(asset, info, thing):Play() 7 | end 8 | 9 | function library:DropInfo(asset, info, tbl) 10 | if not tbl.debounce then 11 | tbl.debounce = true 12 | 13 | local newText = asset:FindFirstChild("Text"):Clone() 14 | newText.Parent = asset 15 | newText.Name = "Info" 16 | newText.TextTransparency = 1 17 | newText.TextSize = 24 18 | newText.Position = UDim2.new(asset:FindFirstChild("Text").Position.X.Scale, asset:FindFirstChild("Text").Position.X.Offset, ((asset:FindFirstChild("Text").Position.Y.Scale / 2) * 3), asset:FindFirstChild("Text").Position.Y.Offset) 19 | newText.Text = info 20 | 21 | local textAsset = asset:FindFirstChild("Text") 22 | 23 | library:Tween(asset, TweenInfo.new(0.5), {Size = UDim2.new(asset.Size.X.Scale, asset.Size.X.Offset, (asset.Size.Y.Scale * 2), asset.Size.Y.Offset)}) 24 | library:Tween(textAsset, TweenInfo.new(0.5), {Position = UDim2.new(textAsset.Position.X.Scale, textAsset.Position.X.Offset, (textAsset.Position.Y.Scale / 2), textAsset.Position.Y.Offset), Size = UDim2.new(textAsset.Size.X.Scale, textAsset.Size.X.Offset, (textAsset.Size.Y.Scale / 2), textAsset.Size.Y.Offset)}) 25 | library:Tween(asset["Down"], TweenInfo.new(0.3), {Rotation = 180, Position = UDim2.new(asset["Down"].Position.X.Scale, asset["Down"].Position.X.Offset, (asset["Down"].Position.Y.Scale / 2), asset["Down"].Position.Y.Offset)}) 26 | wait(0.5) 27 | 28 | library:Tween(newText, TweenInfo.new(0.5), {TextTransparency = 0}) 29 | 30 | wait(0.5) 31 | 32 | tbl.debounce = false 33 | tbl.showingInfo = true 34 | end 35 | end 36 | 37 | function library:RetractInfo(asset, tbl) 38 | if not tbl.debounce then 39 | tbl.debounce = true 40 | library:Tween(asset["Info"], TweenInfo.new(0.25), {TextTransparency = 1}) 41 | library:Tween(asset["Down"], TweenInfo.new(0.3), {Rotation = 0, Position = UDim2.new(asset["Down"].Position.X.Scale, asset["Down"].Position.X.Offset, (asset["Down"].Position.Y.Scale * 2), asset["Down"].Position.Y.Offset)}) 42 | library:Tween(asset, TweenInfo.new(0.5), {Size = UDim2.new(asset.Size.X.Scale, asset.Size.X.Offset, (asset.Size.Y.Scale / 2), asset.Size.Y.Offset)}) 43 | 44 | local textAsset = asset:FindFirstChild("Text") 45 | library:Tween(textAsset, TweenInfo.new(0.5), {Position = UDim2.new(textAsset.Position.X.Scale, textAsset.Position.X.Offset, (textAsset.Position.Y.Scale * 2), textAsset.Position.Y.Offset), Size = UDim2.new(textAsset.Size.X.Scale, textAsset.Size.X.Offset, (textAsset.Size.Y.Scale * 2), textAsset.Size.Y.Offset)}) 46 | 47 | wait(0.5) 48 | asset["Info"]:Destroy() 49 | tbl.debounce = false 50 | tbl.showingInfo = false 51 | end 52 | end 53 | 54 | function library:RoundNumber(num, numDecimalPlaces) 55 | return tonumber(string.format("%." .. (numDecimalPlaces or 0) .. "f", num)) 56 | end 57 | 58 | function library:Ripple(ui, button, x, y, tbl) 59 | if x and y then 60 | spawn(function() 61 | local c = ui.Circle:Clone() 62 | c.Parent = button; 63 | 64 | c.ImageTransparency = 0.6 65 | 66 | local x, y = (x-button.AbsolutePosition.X), (y-button.AbsolutePosition.Y-36) 67 | c.Position = UDim2.new(0, x, 0, y) 68 | local len, size = 0.75, nil 69 | if button.AbsoluteSize.X >= button.AbsoluteSize.Y then 70 | size = (button.AbsoluteSize.X * 1.5) 71 | else 72 | size = (button.AbsoluteSize.Y * 1.5) 73 | end 74 | local tween = {} 75 | tween.Size = UDim2.new(0, size, 0, size) 76 | tween.Position = UDim2.new(0.5, (-size / 2), 0.5, (-size / 2)) 77 | tween.ImageTransparency = 1 78 | 79 | local newTween = game:GetService("TweenService"):Create(c, TweenInfo.new(len, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), tween) 80 | 81 | newTween:Play() 82 | 83 | newTween.Completed:Wait() 84 | 85 | c:Destroy() 86 | end) 87 | end 88 | end 89 | 90 | function library.Create(title, titleUnder) 91 | local lib = {} 92 | 93 | lib.UI = game:GetObjects("rbxassetid://6849423853")[1] 94 | lib.UI.Parent = game.CoreGui 95 | 96 | lib.Tabs = {} 97 | 98 | lib.UI.Main.Left.UIName.Text = title 99 | lib.UI.Main.Left.GameName.Text = titleUnder 100 | 101 | local content,isReady; 102 | 103 | spawn(function() 104 | content, isReady = game.Players:GetUserThumbnailAsync(game.Players.LocalPlayer.UserId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size48x48) 105 | 106 | repeat wait() until content and isReady 107 | 108 | if _G.Settings.HidePicture == false then 109 | lib.UI.Main.Left.BottomLeft.Icon.Image = content 110 | else 111 | lib.UI.Main.Left.BottomLeft.Icon.Image = "" 112 | end 113 | end) 114 | 115 | 116 | if _G.Settings.HideName == false then 117 | lib.UI.Main.Left.BottomLeft.PlayerName.Text = game.Players.LocalPlayer.Name 118 | else 119 | lib.UI.Main.Left.BottomLeft.PlayerName.Text = "******" 120 | end 121 | 122 | lib.Notifications = {} 123 | lib.Notifications.Queue = {} 124 | lib.Notifications.Current = nil 125 | 126 | local MainFrame = lib.UI.Main 127 | 128 | --Dragging 129 | local dragging 130 | local dragInput 131 | local dragStart 132 | local startPos 133 | 134 | local function update(input) 135 | local delta = input.Position - dragStart 136 | game:GetService("TweenService"):Create(MainFrame, TweenInfo.new(0.1), {Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)}):Play() 137 | end 138 | 139 | MainFrame.InputBegan:Connect(function(input) 140 | if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then 141 | dragging = true 142 | dragStart = input.Position 143 | startPos = MainFrame.Position 144 | 145 | input.Changed:Connect(function() 146 | if input.UserInputState == Enum.UserInputState.End then 147 | dragging = false 148 | end 149 | end) 150 | end 151 | end) 152 | 153 | MainFrame.InputChanged:Connect(function(input) 154 | if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then 155 | dragInput = input 156 | end 157 | end) 158 | 159 | game:GetService("UserInputService").InputChanged:Connect(function(input) 160 | if input == dragInput and dragging then 161 | update(input) 162 | end 163 | end) 164 | 165 | return setmetatable(lib, library) 166 | end 167 | 168 | function library:Tab(name, imageId) 169 | local tab = {} 170 | 171 | tab.Assets = {} 172 | 173 | tab.Lib = self 174 | tab.Tab = self.UI.Main.Left.Container.Template:Clone() 175 | tab.Tab.Name = name 176 | tab.Tab.TabName.Text = name 177 | tab.Tab.Parent = self.UI.Main.Left.Container 178 | 179 | if imageId then 180 | tab.Tab.TabIcon.Image = "rbxassetid://" .. imageId 181 | end 182 | 183 | table.insert(self.Tabs, tab) 184 | 185 | tab.Show = function() 186 | tab.Tab.Visible = true 187 | end 188 | 189 | tab.Hide = function() 190 | tab.Tab.Visible = false 191 | end 192 | 193 | tab.Fix = function() 194 | self.UI.Main.Container.AutomaticCanvasSize = Enum.AutomaticSize.None 195 | self.UI.Main.Container.AutomaticCanvasSize = Enum.AutomaticSize.Y 196 | end 197 | 198 | local totalAssets = 0 199 | for i,v in pairs(self.Tabs) do 200 | totalAssets = totalAssets + 1 201 | end 202 | 203 | if totalAssets == 1 then 204 | -- first tab 205 | delay(0.1, function() 206 | for i,v in pairs(tab.Assets) do 207 | if v then 208 | v.Show() 209 | end 210 | end 211 | library:Tween(tab.Tab, TweenInfo.new(0.5), {BackgroundTransparency = 0}) 212 | end) 213 | end 214 | 215 | tab.Fix() 216 | 217 | tab.Tab.MouseButton1Down:Connect(function() 218 | for i,v in pairs(self.Tabs) do 219 | library:Tween(v.Tab, TweenInfo.new(0.5), {BackgroundTransparency = 1}) 220 | for i,v in pairs(v.Assets) do 221 | v.Hide() 222 | end 223 | end 224 | 225 | for i,v in pairs(tab.Assets) do 226 | v.Show() 227 | end 228 | tab.Fix() 229 | library:Tween(tab.Tab, TweenInfo.new(0.5), {BackgroundTransparency = 0}) 230 | end) 231 | 232 | tab.Show() 233 | 234 | return setmetatable(tab, library) 235 | end 236 | 237 | function library:Button(text, info, callback) 238 | local button = {} 239 | 240 | button.callback = callback or function() end 241 | button.debounce = false 242 | button.showingInfo = false 243 | button.button = self.Lib.UI.Main.Container.Button:Clone() 244 | button.button.Parent = self.Lib.UI.Main.Container 245 | button.button:FindFirstChild("Text").Text = (text or "No Text") 246 | button.button.Name = (text or "No Text") 247 | 248 | button.Show = function() 249 | button.button.Visible = true 250 | end 251 | 252 | button.Hide = function() 253 | button.button.Visible = false 254 | end 255 | 256 | button.Click = function(x, y) 257 | if not button.debounce then 258 | if not x or not y then 259 | x = (button.button.AbsolutePosition.X/2) 260 | y = (button.button.AbsolutePosition.Y/2) 261 | end 262 | library:Ripple(self.Lib.UI, button.button, x, y, button) 263 | button.callback() 264 | end 265 | end 266 | 267 | button.button.Down.MouseButton1Down:Connect(function() 268 | if not button.showingInfo then 269 | library:DropInfo(button.button, info, button) 270 | else 271 | library:RetractInfo(button.button, button) 272 | end 273 | end) 274 | 275 | button.button.MouseButton1Down:Connect(function(x,y) 276 | button.Click(x, y) 277 | end) 278 | 279 | table.insert(self.Assets, button) 280 | 281 | return setmetatable(button, library) 282 | end 283 | 284 | function library:Toggle(text, info, state, callback, dont_run_on_start) 285 | local toggle = {} 286 | 287 | toggle.callback = callback or function() end 288 | toggle.debounce = false 289 | toggle.showingInfo = false 290 | toggle.state = state 291 | toggle.toggle = self.Lib.UI.Main.Container.Toggle:Clone() 292 | toggle.toggle.Parent = self.Lib.UI.Main.Container 293 | toggle.toggle:FindFirstChild("Text").Text = (text or "No Text") 294 | toggle.toggle.Name = (text or "No Text") 295 | 296 | toggle.Show = function() 297 | toggle.toggle.Visible = true 298 | end 299 | 300 | toggle.Hide = function() 301 | toggle.toggle.Visible = false 302 | end 303 | 304 | toggle.Refresh = function() 305 | if toggle.state then 306 | toggle.state = false 307 | toggle.debounce = true 308 | spawn(function() 309 | toggle.callback(toggle.state) 310 | end) 311 | local circle = toggle.toggle.Whole.Inner 312 | local newPosition = UDim2.new((circle.Position.X.Scale / 3), circle.Position.X.Offset, circle.Position.Y.Scale, circle.Position.Y.Offset) 313 | 314 | library:Tween(circle, TweenInfo.new(0.2), {Position = newPosition}) 315 | library:Tween(circle.Parent, TweenInfo.new(0.2), {BackgroundColor3 = Color3.fromRGB(213, 213, 213)}) 316 | 317 | wait(0.3) 318 | toggle.debounce = false 319 | else 320 | toggle.state = true 321 | toggle.debounce = true 322 | spawn(function() 323 | toggle.callback(toggle.state) 324 | end) 325 | local circle = toggle.toggle.Whole.Inner 326 | local newPosition = UDim2.new((circle.Position.X.Scale * 3), circle.Position.X.Offset, circle.Position.Y.Scale, circle.Position.Y.Offset) 327 | 328 | library:Tween(circle, TweenInfo.new(0.2), {Position = newPosition}) 329 | library:Tween(circle.Parent, TweenInfo.new(0.2), {BackgroundColor3 = Color3.fromRGB(248, 86, 86)}) 330 | 331 | wait(0.3) 332 | toggle.debounce = false 333 | end 334 | end 335 | 336 | spawn(function() 337 | if toggle.state then 338 | toggle.debounce = true 339 | local circle = toggle.toggle.Whole.Inner 340 | local newPosition = UDim2.new((circle.Position.X.Scale * 3), circle.Position.X.Offset, circle.Position.Y.Scale, circle.Position.Y.Offset) 341 | 342 | library:Tween(circle, TweenInfo.new(0.2), {Position = newPosition}) 343 | library:Tween(circle.Parent, TweenInfo.new(0.2), {BackgroundColor3 = Color3.fromRGB(248, 86, 86)}) 344 | 345 | wait(0.3) 346 | toggle.debounce = false 347 | end 348 | end) 349 | 350 | toggle.toggle.Down.MouseButton1Down:Connect(function() 351 | if not toggle.showingInfo then 352 | library:DropInfo(toggle.toggle, info, toggle) 353 | else 354 | library:RetractInfo(toggle.toggle, toggle) 355 | end 356 | end) 357 | 358 | toggle.toggle.MouseButton1Down:Connect(function(x,y) 359 | if not toggle.debounce then 360 | library:Ripple(self.Lib.UI, toggle.toggle, x, y, toggle) 361 | toggle.Refresh() 362 | end 363 | end) 364 | 365 | if not dont_run_on_start then 366 | local ran, failed = pcall(function() 367 | toggle.callback(toggle.state) 368 | end) 369 | 370 | if ran then 371 | print("Ran sucessfully.") 372 | else 373 | print("Failed to run but no worries!", failed) 374 | end 375 | end 376 | 377 | table.insert(self.Assets, toggle) 378 | return setmetatable(toggle, library) 379 | end 380 | 381 | function library:Seperator() 382 | local seperator = {} 383 | 384 | seperator.asset = self.Lib.UI.Main.Container.Seperator:Clone() 385 | seperator.asset.Parent = self.Lib.UI.Main.Container 386 | 387 | seperator.Show = function() 388 | seperator.asset.Visible = true 389 | end 390 | 391 | seperator.Hide = function() 392 | seperator.asset.Visible = false 393 | end 394 | 395 | table.insert(self.Assets, seperator) 396 | return setmetatable(seperator, library) 397 | end 398 | 399 | function library:Slider(name, min, max, starting, callback) 400 | local slider = {} 401 | 402 | slider.callback = callback or function() end 403 | slider.min = min or 1 404 | slider.max = max or 100 405 | 406 | slider.asset = self.Lib.UI.Main.Container.Slider:Clone() 407 | slider.asset.Name = (name or "None") 408 | slider.asset:FindFirstChild("Slider").Text = (name or "None") 409 | slider.asset.Parent = self.Lib.UI.Main.Container 410 | slider.holdAsset = self.Lib.UI.Main.Container 411 | 412 | slider.dragging = false 413 | 414 | slider.holdAsset = slider.asset.Holder.Holder.Circle 415 | 416 | local mouse = game.Players.LocalPlayer:GetMouse() 417 | local uis = game:GetService("UserInputService") 418 | local Value; 419 | 420 | local bound = slider.holdAsset.Parent.Parent.AbsoluteSize.X 421 | 422 | local IsDecimal = select(2, math.modf(starting)) ~= 0 423 | 424 | local function move(input) 425 | 426 | local pos1 = 427 | UDim2.new( 428 | math.clamp((input.Position.X - slider.holdAsset.Parent.AbsolutePosition.X) / bound, 0, 1), 429 | 0, 430 | 1, 431 | 0 432 | ) 433 | slider.holdAsset.Parent:TweenSize(pos1, "Out", "Sine", 0.1, true) 434 | local value = (IsDecimal and library:RoundNumber((((pos1.X.Scale * slider.max) / slider.max) * (slider.max - slider.min) + slider.min), 1) or math.floor((((pos1.X.Scale * slider.max) / slider.max) * (slider.max - slider.min) + slider.min))) 435 | slider.asset.Percentage.Text = tostring(value) 436 | pcall(slider.callback, value) 437 | end 438 | 439 | slider.holdAsset.InputBegan:Connect( 440 | function(input) 441 | if input.UserInputType == Enum.UserInputType.MouseButton1 then 442 | slider.dragging = true 443 | end 444 | end 445 | ) 446 | slider.holdAsset.InputEnded:Connect( 447 | function(input) 448 | if input.UserInputType == Enum.UserInputType.MouseButton1 then 449 | slider.dragging = false 450 | end 451 | end 452 | ) 453 | 454 | game:GetService("UserInputService").InputChanged:Connect( 455 | function(input) 456 | if slider.dragging and input.UserInputType == Enum.UserInputType.MouseMovement then 457 | move(input) 458 | end 459 | end 460 | ) 461 | 462 | slider.Refresh = function(new, bool) 463 | 464 | slider.holdAsset.Parent:TweenSize(UDim2.new((new or 0) / slider.max, 0, 1, 0), "Out", "Sine", 0.1, true) 465 | slider.asset.Percentage.Text = tostring(new and (IsDecimal and library:RoundNumber(((new / slider.max) * (slider.max - slider.min) + slider.min), 1) or math.floor((new / slider.max) * (slider.max - slider.min) + slider.min) or 0)) 466 | pcall(slider.callback, new) 467 | end 468 | 469 | slider.Refresh(starting) 470 | 471 | slider.Show = function() 472 | slider.asset.Visible = true 473 | end 474 | 475 | slider.Hide = function() 476 | slider.asset.Visible = false 477 | end 478 | 479 | table.insert(self.Assets, slider) 480 | return setmetatable(slider, library) 481 | end 482 | 483 | function library:Dropdown(name, list, callback) 484 | local dropdown = {} 485 | 486 | dropdown.table = list 487 | dropdown.callback = callback or function() end 488 | 489 | dropdown.debounce = false 490 | 491 | dropdown.asset = self.Lib.UI.Main.Container.Dropdown:Clone() 492 | dropdown.asset.Parent = self.Lib.UI.Main.Container 493 | 494 | dropdown.assets = {} 495 | dropdown.connections = {} 496 | 497 | dropdown.asset:FindFirstChild("Text").Text = dropdown.table[1] 498 | 499 | function dropdown.Refresh() 500 | if not table.find(dropdown.table, dropdown.asset:FindFirstChild("Text").Text) then 501 | dropdown.asset:FindFirstChild("Text").Text = dropdown.table[1] 502 | end 503 | end 504 | 505 | dropdown.showing = false 506 | 507 | dropdown.asset.MouseButton1Down:Connect(function(x, y) 508 | if not dropdown.debounce then 509 | library:Ripple(self.Lib.UI, dropdown.asset, x, y, {["showingInfo"] = false}) 510 | if #dropdown.assets < 1 then 511 | dropdown.debounce = true 512 | local passed = false 513 | local num = 0 514 | local assets = {} 515 | for i,v in ipairs(dropdown.asset.Parent:GetChildren()) do 516 | if v.ClassName ~= "Folder" and v.ClassName ~= "UIListLayout" and v.ClassName ~= "UIAspectRatioConstraint" and v.Visible and not passed and v == dropdown.asset then 517 | passed = true 518 | end 519 | 520 | if passed then 521 | if v ~= dropdown.asset then 522 | num = num + 1 523 | v.Parent = v.Parent.Hold 524 | table.insert(assets, v) 525 | end 526 | end 527 | end 528 | 529 | library:Tween(dropdown.asset["Down"], TweenInfo.new(0.3), {Rotation = 180}) 530 | 531 | for i = 1, #dropdown.table do 532 | local newDrop = self.Lib.UI.Main.Container.DropdownDrop:Clone() 533 | newDrop.Parent = self.Lib.UI.Main.Container 534 | 535 | 536 | newDrop:FindFirstChild("Text").Text = dropdown.table[i] 537 | 538 | newDrop.Visible = true 539 | library:Tween(newDrop, TweenInfo.new(0.2), {BackgroundTransparency = 0}) 540 | library:Tween(newDrop:FindFirstChild("Text"), TweenInfo.new(0.3), {TextTransparency = 0}) 541 | 542 | local thing = {} 543 | 544 | thing.Asset = newDrop 545 | 546 | thing.Show = function() 547 | dropdown.assets[i].Visible = true 548 | end 549 | 550 | thing.Hide = function() 551 | dropdown.assets[i].Visible = false 552 | end 553 | 554 | table.insert(dropdown.assets, newDrop) 555 | table.insert(self.Assets, thing) 556 | 557 | local con; 558 | 559 | con = thing.Asset.MouseButton1Down:Connect(function(x, y) 560 | if dropdown.showing then 561 | table.insert(dropdown.connections, con) 562 | dropdown.debounce = true 563 | library:Tween(dropdown.asset["Down"], TweenInfo.new(0.3), {Rotation = 0}) 564 | 565 | if dropdown.asset:FindFirstChild("Text").Text ~= dropdown.table[i] then 566 | dropdown.asset:FindFirstChild("Text").Text = dropdown.table[i] 567 | dropdown.callback(dropdown.table[i]) 568 | end 569 | 570 | for i,v in pairs(dropdown.connections) do 571 | v:Disconnect() 572 | table.remove(dropdown.connections, i) 573 | end 574 | 575 | for i = #dropdown.assets, 1, -1 do 576 | library:Tween(dropdown.assets[i], TweenInfo.new(0.2), {BackgroundTransparency = 1}) 577 | library:Tween(dropdown.assets[i]:FindFirstChild("Text"), TweenInfo.new(0.3), {TextTransparency = 1}) 578 | 579 | game:GetService("RunService").RenderStepped:Wait() 580 | 581 | dropdown.assets[i]:Destroy() 582 | 583 | for a,v in pairs(self.Assets) do 584 | if v.Asset == dropdown.assets[i] then 585 | table.remove(self.Assets, a) 586 | end 587 | end 588 | table.remove(dropdown.assets, i) 589 | end 590 | 591 | dropdown.debounce = false 592 | end 593 | end) 594 | 595 | game:GetService("RunService").RenderStepped:Wait() 596 | end 597 | 598 | for i,v in ipairs(assets) do 599 | v.Parent = v.Parent.Parent 600 | end 601 | 602 | for i,v in pairs(assets) do 603 | table.remove(assets, i) 604 | end 605 | 606 | dropdown.showing = true 607 | dropdown.debounce = false 608 | else 609 | dropdown.debounce = true 610 | library:Tween(dropdown.asset["Down"], TweenInfo.new(0.3), {Rotation = 0}) 611 | for i = #dropdown.assets, 1, -1 do 612 | library:Tween(dropdown.assets[i], TweenInfo.new(0.2), {BackgroundTransparency = 1}) 613 | library:Tween(dropdown.assets[i]:FindFirstChild("Text"), TweenInfo.new(0.3), {TextTransparency = 1}) 614 | 615 | game:GetService("RunService").RenderStepped:Wait() 616 | 617 | dropdown.assets[i]:Destroy() 618 | 619 | for a,v in pairs(self.Assets) do 620 | if v.Asset == dropdown.assets[i] then 621 | table.remove(self.Assets, a) 622 | end 623 | end 624 | table.remove(dropdown.assets, i) 625 | end 626 | dropdown.showing = false 627 | dropdown.debounce = false 628 | end 629 | end 630 | end) 631 | 632 | dropdown.Hide = function() 633 | dropdown.asset.Visible = false 634 | end 635 | 636 | dropdown.Show = function() 637 | dropdown.asset.Visible = true 638 | end 639 | 640 | table.insert(self.Assets, dropdown) 641 | return setmetatable(dropdown, library) 642 | end 643 | 644 | function library:Label(text) 645 | local label = {} 646 | 647 | label.asset = self.Lib.UI.Main.Container.Label:Clone() 648 | label.asset.Parent = self.Lib.UI.Main.Container 649 | 650 | label.class = "label" 651 | 652 | function label.Refresh(newText) 653 | label.asset:FindFirstChild("Text").Text = newText 654 | end 655 | 656 | label.Refresh(text) 657 | 658 | label.Show = function() 659 | label.asset.Visible = true 660 | end 661 | 662 | label.Hide = function() 663 | label.asset.Visible = false 664 | end 665 | 666 | table.insert(self.Assets, label) 667 | return setmetatable(label, library) 668 | end 669 | 670 | function library:TextBox(text, callback) 671 | local textbox = {} 672 | 673 | textbox.Name = text 674 | textbox.callback = callback or function() end 675 | textbox.class = "textbox" 676 | textbox.debounce = false 677 | 678 | textbox.asset = self.Lib.UI.Main.Container.TextBox:Clone() 679 | textbox.asset.Parent = self.Lib.UI.Main.Container 680 | textbox.asset:FindFirstChild("Text").Text = text 681 | 682 | textbox.typing = false 683 | 684 | textbox.connections = {} 685 | 686 | textbox.asset.Outline.Box.Focused:Connect(function() 687 | if not textbox.typing then 688 | textbox.asset.Outline.Box:ReleaseFocus() 689 | end 690 | end) 691 | 692 | textbox.asset.MouseButton1Down:Connect(function(x,y) 693 | if not textbox.debounce then 694 | textbox.debounce = true 695 | textbox.typing = true 696 | library:Ripple(self.Lib.UI, textbox.asset, x, y, textbox) 697 | library:Tween(textbox.asset.Outline, TweenInfo.new(0.35, Enum.EasingStyle.Quart), { 698 | Size = UDim2.new((textbox.asset.Outline.Size.X.Scale + 0.225), textbox.asset.Outline.Size.X.Offset, textbox.asset.Outline.Size.Y.Scale, textbox.asset.Outline.Size.Y.Offset), 699 | Position = UDim2.new((textbox.asset.Outline.Position.X.Scale - 0.1125), textbox.asset.Outline.Position.X.Offset, textbox.asset.Outline.Position.Y.Scale, textbox.asset.Outline.Position.Y.Offset) 700 | }) 701 | wait(0.35) 702 | textbox.asset.Outline.Box:CaptureFocus() 703 | textbox.asset.Outline.Box.FocusLost:Wait() 704 | textbox.typing = false 705 | library:Tween(textbox.asset.Outline, TweenInfo.new(0.35, Enum.EasingStyle.Quart), { 706 | Size = UDim2.new((textbox.asset.Outline.Size.X.Scale - 0.225), textbox.asset.Outline.Size.X.Offset, textbox.asset.Outline.Size.Y.Scale, textbox.asset.Outline.Size.Y.Offset), 707 | Position = UDim2.new((textbox.asset.Outline.Position.X.Scale + 0.1125), textbox.asset.Outline.Position.X.Offset, textbox.asset.Outline.Position.Y.Scale, textbox.asset.Outline.Position.Y.Offset), 708 | }) 709 | 710 | textbox.callback(textbox.asset.Outline.Box.Text) 711 | 712 | wait(0.35) 713 | 714 | textbox.debounce = false 715 | end 716 | end) 717 | 718 | textbox.Show = function() 719 | textbox.asset.Visible = true 720 | end 721 | 722 | textbox.Hide = function() 723 | textbox.asset.Visible = false 724 | end 725 | 726 | table.insert(self.Assets, textbox) 727 | return setmetatable(textbox, library) 728 | end 729 | 730 | function library:Keybind(name, key, blacklist, callback) 731 | local keybind = {} 732 | 733 | if (#blacklist) == 0 then 734 | blacklist = nil 735 | end 736 | 737 | keybind.key_blacklist = blacklist or {"W", "A", "S", "D"} 738 | 739 | keybind.ValidKey = function(key) 740 | return (typeof(key) == "EnumItem") 741 | end 742 | 743 | keybind.GetKeystringFromEnum = function(key) 744 | key = tostring(key) 745 | return ( string.sub( key, 14, #key ) ) 746 | end 747 | 748 | keybind.IsNotMouse = function(key) 749 | return (key.UserInputType == Enum.UserInputType.MouseButton1 or key.UserInputType == Enum.UserInputType.MouseButton2) 750 | end 751 | 752 | keybind.callback = callback or function() end 753 | keybind.asset = self.Lib.UI.Main.Container.Keybind:Clone() 754 | keybind.asset.Parent = self.Lib.UI.Main.Container 755 | 756 | keybind.class = "keybind" 757 | keybind.debounce = false 758 | 759 | keybind.key = (keybind.ValidKey(key) and key) or Enum.KeyCode.E --// default key 760 | 761 | keybind.asset:FindFirstChild("Text").Text = name 762 | keybind.asset:FindFirstChild("RoundHolder").TextLabel.Text = keybind.GetKeystringFromEnum(keybind.key) 763 | 764 | keybind.in_change = false 765 | keybind.change_conn = nil 766 | 767 | keybind.KeyPress = game:GetService("UserInputService").InputBegan:Connect(function(input, gpe) 768 | if gpe then return end 769 | 770 | if input.KeyCode == keybind.key and not keybind.in_change then 771 | pcall(keybind.callback) 772 | end 773 | end) 774 | 775 | keybind.asset.MouseButton1Down:Connect(function(x,y) 776 | if not keybind.debounce then 777 | keybind.debounce = true 778 | keybind.in_change = true 779 | library:Ripple(self.Lib.UI, keybind.asset, x, y, keybind) 780 | 781 | local contin = false 782 | 783 | local cache = {} 784 | cache.OldText = keybind.asset:FindFirstChild("Text").Text 785 | cache.OldKey = keybind.asset:FindFirstChild("RoundHolder").TextLabel.Text 786 | 787 | keybind.asset:FindFirstChild("Text").Text = (cache.OldText .. " [press enter to cancel]") 788 | keybind.asset:FindFirstChild("RoundHolder").TextLabel.Text = "..." 789 | 790 | keybind.change_conn = game:GetService("UserInputService").InputBegan:Connect(function(input, gpe) 791 | if gpe then return end 792 | 793 | if keybind.IsNotMouse(input) then return end 794 | 795 | if input.KeyCode == Enum.KeyCode.Return then 796 | contin = true 797 | keybind.asset:FindFirstChild("RoundHolder").TextLabel.Text = cache.OldKey 798 | keybind.change_conn:Disconnect() 799 | return 800 | end 801 | 802 | if not table.find(keybind.key_blacklist, keybind.GetKeystringFromEnum(input.KeyCode)) then 803 | keybind.key = input.KeyCode 804 | keybind.asset:FindFirstChild("RoundHolder").TextLabel.Text = keybind.GetKeystringFromEnum(keybind.key) 805 | contin = true 806 | 807 | pcall(keybind.callback, keybind.GetKeystringFromEnum(keybind.key)) 808 | 809 | keybind.change_conn:Disconnect() 810 | end 811 | end) 812 | 813 | repeat wait() until contin 814 | 815 | keybind.asset:FindFirstChild("Text").Text = cache.OldText 816 | cache = nil 817 | keybind.in_change = false 818 | 819 | wait(0.5) 820 | keybind.debounce = false 821 | end 822 | end) 823 | 824 | keybind.Show = function() 825 | keybind.asset.Visible = true 826 | end 827 | 828 | keybind.Hide = function() 829 | keybind.asset.Visible = false 830 | end 831 | 832 | table.insert(self.Assets, keybind) 833 | return setmetatable(keybind, library) 834 | end 835 | 836 | function library:Notification(text) 837 | local notification = {} 838 | notification.NotifText = text 839 | notification.Bind = nil 840 | table.insert(self.Lib.Notifications.Queue, notification) 841 | 842 | spawn(function() 843 | 844 | for notif = 1, #self.Lib.Notifications.Queue do 845 | repeat wait() until not self.Lib.Notifications.Current 846 | self.Lib.Notifications.Current = self.Lib.Notifications.Queue[notif] 847 | 848 | local Cover = self.Lib.UI.Main.BackgroundCover 849 | Cover.Visible = true 850 | 851 | Cover.Notification.NotificationLabel.Text = (self.Lib.Notifications.Queue[notif].NotifText or "No text provided") 852 | 853 | local TweenData = { 854 | Transparency = 0.5 855 | } 856 | 857 | local CoverTween = game:GetService("TweenService"):Create(Cover, TweenInfo.new(0.5), TweenData) 858 | CoverTween:Play() 859 | CoverTween.Completed:Wait() 860 | 861 | local TweenData2 = { 862 | Position = UDim2.new(0.5, 0, 0.7, 0) 863 | } 864 | 865 | local NotifTween = game:GetService("TweenService"):Create(Cover.Notification, TweenInfo.new(0.5), TweenData2) 866 | NotifTween:Play() 867 | NotifTween.Completed:Wait() 868 | 869 | self.Lib.Notifications.Queue[notif].Bind = Cover.Notification.Ok.MouseButton1Click:Connect(function() 870 | local TweenData3 = { 871 | Position = UDim2.new(0.5, 0, 1, 0) 872 | } 873 | 874 | local NotifTween2 = game:GetService("TweenService"):Create(Cover.Notification, TweenInfo.new(0.5), TweenData3) 875 | NotifTween2:Play() 876 | NotifTween2.Completed:Wait() 877 | 878 | local TweenData4 = { 879 | Transparency = 1 880 | } 881 | 882 | local CoverTween2 = game:GetService("TweenService"):Create(Cover, TweenInfo.new(0.5), TweenData4) 883 | CoverTween2:Play() 884 | CoverTween2.Completed:Wait() 885 | Cover.Visible = false 886 | 887 | self.Lib.Notifications.Queue[notif].Bind:Disconnect() 888 | table.remove(self.Lib.Notifications.Queue, notif) 889 | 890 | self.Lib.Notifications.Current = nil 891 | end) 892 | end 893 | 894 | end) 895 | end 896 | 897 | function library:Click() 898 | self.Click() 899 | end 900 | 901 | function library:Update(new, new2, new3) 902 | if self.table then 903 | self.table = new 904 | self.Refresh() 905 | elseif self.min and self.max then 906 | self.min = new 907 | self.max = new2 908 | self.Refresh(new3 or self.max/2, true) 909 | elseif self.toggle then 910 | if new ~= self.state then 911 | --self.state = (not new) 912 | self.Refresh() 913 | end 914 | elseif self.class == "label" then 915 | self.Refresh(new) 916 | end 917 | end 918 | 919 | function library:ToggleUI() 920 | self.UI.Enabled = not self.UI.Enabled 921 | end -------------------------------------------------------------------------------- /Libraries/vape - Example.lua: -------------------------------------------------------------------------------- 1 | local lib = loadstring(game:HttpGet"https://raw.githubusercontent.com/dawid-scripts/UI-Libs/main/Vape.txt")() 2 | 3 | local win = lib:Window("PREVIEW",Color3.fromRGB(44, 120, 224), Enum.KeyCode.RightControl) 4 | 5 | local tab = win:Tab("Tab 1") 6 | 7 | tab:Button("Button", function() 8 | lib:Notification("Notification", "Hello!", "Hi!") 9 | end) 10 | 11 | tab:Toggle("Toggle",false, function(t) 12 | print(t) 13 | end) 14 | 15 | tab:Slider("Slider",0,100,30, function(t) 16 | print(t) 17 | end) 18 | 19 | tab:Dropdown("Dropdown",{"Option 1","Option 2","Option 3","Option 4","Option 5"}, function(t) 20 | print(t) 21 | end) 22 | 23 | tab:Colorpicker("Colorpicker",Color3.fromRGB(255,0,0), function(t) 24 | print(t) 25 | end) 26 | 27 | tab:Textbox("Textbox",true, function(t) 28 | print(t) 29 | end) 30 | 31 | tab:Bind("Bind",Enum.KeyCode.RightShift, function() 32 | print("Pressed!") 33 | end) 34 | 35 | tab:Label("Label") 36 | 37 | local changeclr = win:Tab("Change UI Color") 38 | 39 | changeclr:Colorpicker("Change UI Color",Color3.fromRGB(44, 120, 224), function(t) 40 | lib:ChangePresetColor(Color3.fromRGB(t.R * 255, t.G * 255, t.B * 255)) 41 | end) -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # UI-Library แจกฟรีโดย x2Swiftz#9999 - Xenon Hub 2 | 3 | ผมเห็นว่าหลายๆ Hub ใช้แต่ UI เดิมๆไม่ก็ซ้ำๆกันเยอะจึงนำมาแจกให้หลายๆท่านได้ลองใช้ UI พวกนี้กัน 4 | ของฟรีทั้งหมด บางอย่างเจ้าของ UI อยากแจกเอง ไม่ก็ Source Code หลุดแล้วมีคน Save File ไว้ 5 | 6 | - https://discord.gg/xenonhub 7 | - https://discord.gg/x2Swiftz 8 | 9 | 📅 Lastest Updated: 04/06/2025 10 | 11 | // มีไฟล์ตัวอย่าง "Example.lua" ให้ทุก UI สามารถศึกษาได้ด้วยตัวเอง // 12 | 13 | # [Fluent UI](https://raw.githubusercontent.com/x2Swiftz/UI-Library/main/Libraries/FluentUI-Example.lua) 14 | 15 | ไม่ใช่อันเดียวดับ Xenon Hub นะครับ แค่เหมือน แต่เราก็ก็อปเอาไปทำ Custom เองต่อให้ดีกว่าเดิม 🤣 16 | 17 | ![image](https://github.com/x2Swiftz/UI-Library/assets/52291809/bd3568ba-4441-46cc-b57d-9e9a721266b7) 18 | 19 | # [Rayfield](https://raw.githubusercontent.com/x2Swiftz/UI-Library/main/Libraries/Rayfield%20-%20Library.lua) 20 | 21 | มี UI Key System ด้วย โคตรเท่่ แนะนำเลย มือถือก็ใช้ได้ชิลๆนะ 22 | 23 | ![image](https://github.com/x2Swiftz/UI-Library/assets/52291809/bb07945d-d339-4fff-9fc3-2529fa05b0f1) 24 | 25 | # [Pepsi UI](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Pepsi%20-%20Example.lua) 26 | 27 | ![image](https://user-images.githubusercontent.com/52291809/208847767-27008fa0-d140-435b-a575-264d4448d9e8.png) 28 | 29 | # [Sea Hub](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Sea%20Hub%20-%20Example.lua) 30 | 31 | Old UI 32 | 33 | ![image](https://user-images.githubusercontent.com/52291809/208854362-86b669df-ebb0-4031-945b-ad39e9aa4453.png) 34 | 35 | # [Solaris](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Solaris%20-%20Example.lua) 36 | 37 | ![image](https://user-images.githubusercontent.com/52291809/208848208-03665de0-aa41-4d6a-8419-efdd975a7753.png) 38 | 39 | # [Kavo](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Kavo%20-%20Example.lua) 40 | 41 | ![image](https://user-images.githubusercontent.com/52291809/208848287-578cc12a-53d7-47a6-bf87-6208d5a3f568.png) 42 | 43 | # [Discord UI](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Discord%20-%20Example.lua) 44 | 45 | ![image](https://user-images.githubusercontent.com/52291809/208853495-5662e869-7179-44fb-b903-be161e275577.png) 46 | 47 | # [Flux](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Flux%20-%20Example.lua) 48 | 49 | ตำนาน UI Xenon อันแรก 555 50 | 51 | ![image](https://user-images.githubusercontent.com/52291809/208848401-9e828258-7dfc-4999-8c1a-13498e03eef4.png) 52 | 53 | # [Vape](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/vape%20-%20Example.lua) 54 | 55 | Showcase: https://youtu.be/bCRsS42AUYw 56 | 57 | ![image](https://user-images.githubusercontent.com/52291809/208848764-06467b38-ea59-44eb-a179-2c121bafae32.png) 58 | 59 | # [Mercury](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Mercury%20-%20Example.lua) 60 | 61 | ![image](https://user-images.githubusercontent.com/52291809/208849259-26e99d77-0468-478f-a207-ac0a8f9c1377.png) 62 | 63 | ![image](https://user-images.githubusercontent.com/52291809/208850263-ad0e5bbd-d940-4e41-b929-4d051e96394d.png) 64 | 65 | 66 | # [Venyx](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Venyx%20-%20Example.lua) 67 | 68 | ![image](https://user-images.githubusercontent.com/52291809/208849651-c939b7c4-7524-4c29-81ce-7f9818ec8d5e.png) 69 | 70 | 71 | # [Ocerium](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Ocerium%20-%20Example.lua) 72 | 73 | Showcase: https://youtu.be/ZeOFJvqhyMs 74 | 75 | ![image](https://user-images.githubusercontent.com/52291809/208850692-f88240d5-c07d-486e-8566-1314aacffa87.png) 76 | 77 | 78 | # [Xenon](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Xenon%20-%20Example.lua) 79 | 80 | ![image](https://user-images.githubusercontent.com/52291809/208850978-a7b38607-87fe-45af-82da-4549c9baa065.png) 81 | 82 | # [Orion](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Orion%20-%20Example.lua) 83 | 84 | ![image](https://user-images.githubusercontent.com/52291809/208851233-721e7ac1-47b4-4e8d-ba82-1b8d5a96f123.png) 85 | 86 | # [Linoria Rewrite](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Linoria%20-%20Example.lua) 87 | 88 | ![image](https://user-images.githubusercontent.com/52291809/208851470-7803c67a-b76d-40e0-903f-14999593bf62.png) 89 | 90 | # [uwuware 2.x](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/uwuware%20(2.x)%20-%20Library.lua) 91 | 92 | ![image](https://user-images.githubusercontent.com/52291809/208851553-f2687993-7843-4206-b92b-5da626473157.png) 93 | 94 | # [uwuware (wally)](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/uwuware%20(wally)%20-%20Library.lua) 95 | 96 | ![image](https://user-images.githubusercontent.com/52291809/208851635-d953463e-1c06-4292-8994-1280b3a3f5a1.png) 97 | 98 | # [Polar UI](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Polar%20-%20Example.lua) 99 | 100 | ![image](https://user-images.githubusercontent.com/52291809/208852109-5c07216d-655f-4ee2-934d-084afa5b175d.png) 101 | 102 | # [Wally V3](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Wally%20V3%20-%20Example.lua) 103 | 104 | ![image](https://user-images.githubusercontent.com/52291809/208852661-4fdf7377-e265-404c-9087-833288efa02d.png) 105 | 106 | # [Xanax UI](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Xanax%20-%20Example.lua) 107 | 108 | ![image](https://user-images.githubusercontent.com/52291809/208852875-6cb5c4e7-e09f-4bc0-9bbd-848ac894602e.png) 109 | 110 | # [PlayStations](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/PlayStations%20-%20Example.lua) 111 | 112 | ![image](https://user-images.githubusercontent.com/52291809/208853810-42419826-ac4d-4f24-a0c8-6a3f2f40cc3a.png) 113 | 114 | # [Lime UI](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Lime%20-%20Example.lua) 115 | 116 | ![image](https://user-images.githubusercontent.com/52291809/208855109-4c21d78c-100b-43c2-9f42-dcecb781f2cd.png) 117 | 118 | # [ReGUI](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/ReGUI%20-%20Example.lua) 119 | 120 | Demo Place: https://www.roblox.com/games/136436665525145/ReGui-Demo 121 | 122 | Documentation: https://depso.gitbook.io/regui 123 | 124 | Showcase : https://youtu.be/rk2PsxpSwT4 125 | 126 | ![image](https://github.com/user-attachments/assets/eda78d44-b036-4337-b524-2afa8ac7d601) 127 | 128 | ![image](https://github.com/user-attachments/assets/adc363e7-112b-4196-bd7f-10d0a9677607) 129 | 130 | ![image](https://github.com/user-attachments/assets/43a9549d-2b17-4890-a7dc-28ed1dbb08f2) 131 | 132 | ![image](https://github.com/user-attachments/assets/289b3727-5b2f-47f4-aafe-731ddcb99183) 133 | 134 | # [Linui](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Linui%20-%20Example.lua) 135 | 136 | Showcase : https://youtu.be/FcVXVaTPqNY 137 | 138 | ![image](https://github.com/user-attachments/assets/76ffcd08-156b-4a41-8a6c-00920d2239f8) 139 | 140 | # [Leny](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Leny%20-%20Example.lua) 141 | 142 | ![image](https://github.com/user-attachments/assets/2b6a94a9-8a34-4997-be01-a6dee1e2dd2e) 143 | 144 | # [Darius](https://raw.githubusercontent.com/x2Swiftz/UI-Library/refs/heads/main/Libraries/Darius%20-%20Example%20.lua) 145 | 146 | ![image](https://github.com/user-attachments/assets/86587b43-8fbe-47c7-b731-955006d8a309) 147 | 148 | # [Obsidian](https://raw.githubusercontent.com/x2Swiftz/UI-Library/refs/heads/main/Libraries/Obsidan%20-%20Example.lua) 149 | 150 | ![image](https://github.com/user-attachments/assets/ce0cc796-0ba9-40d4-8dfa-344e6d229071) 151 | 152 | # [PRIV9](https://raw.githubusercontent.com/x2Swiftz/UI-Library/refs/heads/main/Libraries/PRIV9%20-%20Example.lua) 153 | 154 | ![1748888283816](https://github.com/user-attachments/assets/12b4202b-128d-4f25-bab9-753868d63651) 155 | 156 | 157 | --------------------------------------------------------------------------------