├── 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 | 
18 |
19 | # [Rayfield](https://raw.githubusercontent.com/x2Swiftz/UI-Library/main/Libraries/Rayfield%20-%20Library.lua)
20 |
21 | มี UI Key System ด้วย โคตรเท่่ แนะนำเลย มือถือก็ใช้ได้ชิลๆนะ
22 |
23 | 
24 |
25 | # [Pepsi UI](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Pepsi%20-%20Example.lua)
26 |
27 | 
28 |
29 | # [Sea Hub](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Sea%20Hub%20-%20Example.lua)
30 |
31 | Old UI
32 |
33 | 
34 |
35 | # [Solaris](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Solaris%20-%20Example.lua)
36 |
37 | 
38 |
39 | # [Kavo](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Kavo%20-%20Example.lua)
40 |
41 | 
42 |
43 | # [Discord UI](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Discord%20-%20Example.lua)
44 |
45 | 
46 |
47 | # [Flux](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Flux%20-%20Example.lua)
48 |
49 | ตำนาน UI Xenon อันแรก 555
50 |
51 | 
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 | 
58 |
59 | # [Mercury](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Mercury%20-%20Example.lua)
60 |
61 | 
62 |
63 | 
64 |
65 |
66 | # [Venyx](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Venyx%20-%20Example.lua)
67 |
68 | 
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 | 
76 |
77 |
78 | # [Xenon](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Xenon%20-%20Example.lua)
79 |
80 | 
81 |
82 | # [Orion](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Orion%20-%20Example.lua)
83 |
84 | 
85 |
86 | # [Linoria Rewrite](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Linoria%20-%20Example.lua)
87 |
88 | 
89 |
90 | # [uwuware 2.x](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/uwuware%20(2.x)%20-%20Library.lua)
91 |
92 | 
93 |
94 | # [uwuware (wally)](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/uwuware%20(wally)%20-%20Library.lua)
95 |
96 | 
97 |
98 | # [Polar UI](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Polar%20-%20Example.lua)
99 |
100 | 
101 |
102 | # [Wally V3](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Wally%20V3%20-%20Example.lua)
103 |
104 | 
105 |
106 | # [Xanax UI](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Xanax%20-%20Example.lua)
107 |
108 | 
109 |
110 | # [PlayStations](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/PlayStations%20-%20Example.lua)
111 |
112 | 
113 |
114 | # [Lime UI](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Lime%20-%20Example.lua)
115 |
116 | 
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 | 
127 |
128 | 
129 |
130 | 
131 |
132 | 
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 | 
139 |
140 | # [Leny](https://github.com/x2Swiftz/UI-Library/blob/main/Libraries/Leny%20-%20Example.lua)
141 |
142 | 
143 |
144 | # [Darius](https://raw.githubusercontent.com/x2Swiftz/UI-Library/refs/heads/main/Libraries/Darius%20-%20Example%20.lua)
145 |
146 | 
147 |
148 | # [Obsidian](https://raw.githubusercontent.com/x2Swiftz/UI-Library/refs/heads/main/Libraries/Obsidan%20-%20Example.lua)
149 |
150 | 
151 |
152 | # [PRIV9](https://raw.githubusercontent.com/x2Swiftz/UI-Library/refs/heads/main/Libraries/PRIV9%20-%20Example.lua)
153 |
154 | 
155 |
156 |
157 |
--------------------------------------------------------------------------------