
Credits: Carterjam28YT
Nexus Library (Nexus UI)🚀 What is Nexus LibraryNexus Library is a lightweight UI library designed for Roblox — a simple, flexible “UI‑building toolkit” that makes it easy to create windows, tabs, sections, buttons and more with a consistent theme out of the box. It provides a ready‑to‑use color palette, built‑in animations (hover, click, fade‑in, slide‑in), and optional key‑system support (for premium / access‑controlled UIs).It’s ideal if you want to quickly build sleek, modern UI interfaces in Roblox without writing everything from scratch.✨ Why use Nexus Libraryready‑made themes & colors — you don’t have to pick and define every color or style manually; the library gives you a consistent palette (primary, dark, secondary, success, warning, error, etc.).built‑in animation presets — common UI animations like hover, click effects, fade‑ins and sliding are baked in.rapid UI creation — utility functions like CreateElement let you spawn GUI objects with custom properties without boilerplate.optional key‑system support — if you want to gate parts of your UI behind a “premium key” (e.g. for VIP access), Nexus Library offers a basic key‑validation system and a default key‑entry screen.modular structure — windows, tabs, sections and components are organized so you can build complex UIs in a structured way.
--[[
WARNING: Heads up! This script has not been verified by ScriptBlox. Use at your own risk!
]]
local LibraryUrl = "https://raw.githubusercontent.com/Carterjam28YT/Nexus-UI/refs/heads/main/Nexus%20Library%20open%20src"
local Success, Library = pcall(function()
return loadstring(game:HttpGet(LibraryUrl))()
end)
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Workspace = game:GetService("Workspace")
-- 1. Initialize the Window
Library:Watermark("My Script Name | v1.0")
local Window = Library:Window("My Script Hub")
local Icons = {
Combat = "7733771472", -- eye
-- you can add yours icons
}
-- 2. Create a Tab
-- Note: This library requires Tabs to contain SubTabs.
Window:Section("Main Functions")
local MainTab = Window:Tab("Main", "7733917120") -- also can without icon: local TestTab = Window:Tab("Your Page")
Window:Section("Set Functions")
local SettingsTab = Window:Tab("Settings", "7733771472" )
-- 3. Create a SubTab (Required hierarchy: Window -> Tab -> SubTab)
local GeneralPage = MainTab:SubTab("General")
local CombatPage = MainTab:SubTab("Combat")
-- 4. Create Groupboxes (Containers for items)
-- You can choose "Left" or "Right" side
local FarmGroup = GeneralPage:Groupbox("Farming", "Left", "7733774602")
local ExtraGroup = GeneralPage:Groupbox("Extras", "Right", Icons.Combat)
local CombatGroup = CombatPage:Groupbox("pvp Settings", "Left")
local NewUiGroup = GeneralPage:Groupbox("New UI Features", "Right")
local VisualsGroup = CombatPage:Groupbox("Visuals", "Right")
-------------------------------------------------------------------------
-- EXAMPLES OF FUNCTIONS
-------------------------------------------------------------------------
-- LABEL & PARAGRAPH
FarmGroup:AddLabel("Farming Status: Idle")
FarmGroup:AddParagraph({
Title = "About",
Content = "Select a weapon and enable Auto Farm. This text will automatically wrap if it gets too long for the line.",
TextWrapped = true
})
-- 3. Пример с очень длинным текстом для проверки
FarmGroup:AddParagraph({
Title = "Warning",
Content = "This is a very long text to test if the paragraph system is working correctly. It should wrap to multiple lines automatically based on the width of the box."
})
-- TOGGLES (The examples you asked for)
FarmGroup:AddToggle({
Title = "Auto Farm",
Default = false,
Flag = "AutoFarmFlag", -- Unique identifier for configs
Callback = function(Value)
print("Auto Farm is now:", Value)
-- Your Auto Farm Loop here
end
})
FarmGroup:AddToggle({
Title = "Accept Quest",
Default = true,
Callback = function(Value)
print("Auto Quest:", Value)
end
})
CombatGroup:AddToggle({
Title = "Auto Parry",
Default = false,
Callback = function(Value)
print("Parry enabled:", Value)
end
})
ExtraGroup:AddCheckbox({
Title = "Safe Mode",
Default = true,
Description = "Это новый квадратный чекбокс. Отличается от Toggle видом.",
Callback = function(Value)
print("Safe Mode State:", Value)
end
})
ExtraGroup:AddCheckbox({
Title = "Debug Info",
Default = false,
Risky = true, -- Красный текст
Callback = function(Value)
print("Debug:", Value)
end
})
CombatGroup:AddDropdown({
Title = "ESP Mode",
Values = {"Box", "Tracer", "Highlight"},
Default = "Box",
Description = "Выберите тип подсветки игроков.",
Callback = function(Value)
print("ESP Type:", Value)
end
})
CombatGroup:AddTextbox({
Title = "Spam Chat",
Placeholder = "Enter message...",
ClearOnFocus = true, -- Очищает текст при нажатии, чтобы удобно вводить новый
Description = "Сообщение, которое будет отправляться в чат.",
Callback = function(Value)
print("Will spam:", Value)
end
})
CombatGroup:AddToggle({
Title = "Auto Attack",
Default = false,
Risky = true, -- Сделает текст красным, чтобы предупредить пользователя
Description = "Автоматически атакует игроков в радиусе 15 стадов.", -- Всплывающее описание
Callback = function(Value)
print("Auto Attack:", Value)
end
})
CombatGroup:AddSlider({
Title = "WalkSpeed",
Min = 16,
Max = 250,
Default = 16,
Rounding = 0,
Suffix = " studs", -- will be show "16 studs", "50 studs" и т.д.
Description = "Изменяет скорость передвижения персонажа.",
Callback = function(Value)
if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("Humanoid") then
LocalPlayer.Character.Humanoid.WalkSpeed = Value
end
end
})
-- SLIDER
CombatGroup:AddSlider({
Title = "Attack Distance",
Min = 1,
Max = 50,
Default = 15,
Rounding = 1, -- Decimals (0 = integer)
Callback = function(Value)
print("Distance set to:", Value)
end
})
-- DROPDOWN (Single)
ExtraGroup:AddDropdown({
Title = "Weapon Select",
Values = {"Sword", "Bow", "Magic", "Loll", "Lool", "Loool", "Looool", "Lol"},
Default = "Sword",
Multi = false,
Callback = function(Value)
print("Selected Weapon:", Value)
end
})
-- DROPDOWN (Multi)
ExtraGroup:AddDropdown({
Title = "Target Priority",
Values = {"Players", "NPCs", "Bosses", "Lol", "Lol", "Lol", "Loll"},
Default = {"NPCs"}, -- Note: Must be a table for Multi
Multi = true,
Callback = function(Value)
-- Value returns a table like {Players = true, NPCs = false}
for k, v in pairs(Value) do
if v then print(k, "is selected") end
end
end
})
-- COLOR PICKER
ExtraGroup:AddColorPicker({
Title = "ESP Color",
Default = Color3.fromRGB(255, 0, 0),
Callback = function(Value)
print("New Color:", Value)
end
})
-- KEYBIND
CombatGroup:AddKeybind({
Title = "Kill Aura Bind",
Default = Enum.KeyCode.R,
Callback = function(Key)
print("Key pressed:", Key)
end
})
-- TEXTBOX
ExtraGroup:AddTextbox({
Title = "Custom Message",
Placeholder = "Enter text...",
Callback = function(Text)
print("User typed:", Text)
end
})
-- BUTTON
ExtraGroup:AddButton({
Title = "Server Hop",
Callback = function()
print("Hopping server...")
end
})
-- CONFIG SYSTEM (Built into the library)
local SettingsPage = SettingsTab:SubTab("Menu Settings")
-- >> ЛЕВАЯ СТОРОНА: CONFIG MANAGER <<
local ConfigGroup = SettingsPage:Groupbox("Configuration", "Left")
local Configs = Library:GetConfigs()
ConfigGroup:AddDropdown({
Title = "Select Config",
Values = Configs,
Default = "default",
Multi = false,
Flag = "SelectedConfig",
Callback = function(Value) end
})
ConfigGroup:AddTextbox({
Title = "New Config Name",
Placeholder = "Type name...",
Flag = "NewConfigName",
Callback = function(Value) end
})
ConfigGroup:AddButton({
Title = "Load Selected",
Callback = function()
local name = Library.Flags["SelectedConfig"]
if name then
Library:LoadConfig(name)
else
Library:Notify("Error", "No config selected!", 3)
end
end
})
ConfigGroup:AddButton({
Title = "Save Config",
Callback = function()
local name = Library.Flags["NewConfigName"]
if name == "" or name == nil then name = Library.Flags["SelectedConfig"] end
if name and name ~= "" then
Library:SaveConfig(name)
local NewList = Library:GetConfigs()
if Library.Items["SelectedConfig"] then Library.Items["SelectedConfig"].Refresh(NewList) end
else
Library:Notify("Error", "Enter a name or select a config!", 3)
end
end
})
ConfigGroup:AddButton({
Title = "Delete Config",
Callback = function()
local name = Library.Flags["SelectedConfig"]
if name and name ~= "" then
-- 1. Удаляем файл
Library:DeleteConfig(name)
-- 2. Обновляем список в Dropdown
local NewList = Library:GetConfigs()
if Library.Items["SelectedConfig"] then
Library.Items["SelectedConfig"].Refresh(NewList)
end
-- 3. Сбрасываем выбранный конфиг, чтобы избежать ошибок
Library.Flags["SelectedConfig"] = nil
else
Library:Notify("Error", "Select a config first!", 3)
end
end
})
ConfigGroup:AddButton({
Title = "Refresh List",
Callback = function()
local NewList = Library:GetConfigs()
if Library.Items["SelectedConfig"] then Library.Items["SelectedConfig"].Refresh(NewList) end
Library:Notify("Configs", "List refreshed", 2)
end
})
-- >> ПРАВАЯ СТОРОНА: THEME MANAGER <<
local ThemeGroup = SettingsPage:Groupbox("Theme Manager", "Right")
-- [[ ДОБАВЛЕНО: Выбор темы ]]
local ThemeList = {}
if Library.ThemePresets then
for ThemeName, _ in pairs(Library.ThemePresets) do
table.insert(ThemeList, ThemeName)
end
table.sort(ThemeList)
ThemeGroup:AddDropdown({
Title = "Preset Theme",
Values = ThemeList,
Default = "Default",
Multi = false,
Callback = function(Value)
if Library.SetTheme then
Library:SetTheme(Value)
else
warn("Library is outdated, SetTheme missing!")
end
end
})
ThemeGroup:AddSeparator()
end
ThemeGroup:AddLabel("Custom Colors")
ThemeGroup:AddColorPicker({
Title = "Accent Color", Default = Library.Theme.Accent, Flag = "ThemeAccent",
Callback = function(Value) Library:UpdateTheme("Accent", Value) end
})
ThemeGroup:AddColorPicker({
Title = "Background", Default = Library.Theme.Background, Flag = "ThemeBackground",
Callback = function(Value) Library:UpdateTheme("Background", Value) end
})
ThemeGroup:AddColorPicker({
Title = "Sidebar", Default = Library.Theme.Sidebar, Flag = "ThemeSidebar",
Callback = function(Value) Library:UpdateTheme("Sidebar", Value) end
})
ThemeGroup:AddColorPicker({
Title = "Groupbox", Default = Library.Theme.Groupbox, Flag = "ThemeGroupbox",
Callback = function(Value) Library:UpdateTheme("Groupbox", Value) end
})
ThemeGroup:AddLabel("Text & Outlines")
ThemeGroup:AddColorPicker({
Title = "Main Text", Default = Library.Theme.Text, Flag = "ThemeText",
Callback = function(Value) Library:UpdateTheme("Text", Value) end
})
ThemeGroup:AddColorPicker({
Title = "Secondary Text", Default = Library.Theme.TextDark, Flag = "ThemeTextDark",
Callback = function(Value) Library:UpdateTheme("TextDark", Value) end
})
ThemeGroup:AddColorPicker({
Title = "Outline/Stroke", Default = Library.Theme.Outline, Flag = "ThemeOutline",
Callback = function(Value) Library:UpdateTheme("Outline", Value) end
})
ThemeGroup:AddButton({
Title = "Reset Theme to Default",
Callback = function()
Library:SetTheme("Default") -- Используем функцию сброса на дефолтную тему
Library:Notify("Theme", "Colors reset to default", 2)
end
})
-- >> ПРАВАЯ СТОРОНА (Ниже Theme Manager) : UI SETTINGS <<
local UISettings = SettingsPage:Groupbox("UI Settings", "Right")
UISettings:AddToggle({
Title = "Show Watermark",
Default = true,
Flag = "WatermarkToggle",
Callback = function(Value)
Library.WatermarkSettings.Enabled = Value
end
})
UISettings:AddTextbox({
Title = "Watermark Text",
Default = "RedOnyx V17", -- или ваше название
Placeholder = "Enter text...",
ClearOnFocus = false,
Callback = function(Value)
Library.WatermarkSettings.Text = Value
end
})
UISettings:AddToggle({
Title = "Groupbox Animations",
Default = true,
Callback = function(Value)
if Library.GlobalSettings then
Library.GlobalSettings.GroupboxAnimations = Value
end
print("Groupbox animations set to:", Value)
end
})
-- Кнопка для быстрой выгрузки интерфейса (полезно)
UISettings:AddButton({
Title = "Unload / Destroy UI",
Callback = function()
local gui = game:GetService("CoreGui"):FindFirstChild("RedOnyx")
local water = game:GetService("CoreGui"):FindFirstChild("Watermark")
if gui then gui:Destroy() end
if water then water:Destroy() end
end
})
NewUiGroup:AddTextUnformatted("local code = 'Unformatted Style'") -- Моноширинный шрифт
NewUiGroup:AddTextWrapped("This is a text without a header that is long enough to wrap to the next line automatically using AddTextWrapped.")
-- 3. SEPARATOR & SPACING (Разделители и отступы)
NewUiGroup:AddSpacing(5) -- Отступ 5 пикселей
NewUiGroup:AddSeparator() -- Линия
NewUiGroup:AddSpacing(5)
-- 4. LABEL TEXT (Ключ: Значение)
NewUiGroup:AddLabelText("User:", LocalPlayer.Name)
NewUiGroup:AddLabelText("Rank:", "VIP Member")
NewUiGroup:AddLabelText("Status:", "Active")
NewUiGroup:AddSeparator()
-- 5. BULLET TEXT & ALIGNMENT (Списки и отступы)
NewUiGroup:AddBulletText("Safe Mode Enabled")
NewUiGroup:AddBulletText("Anti-Cheat Bypassed")
NewUiGroup:AddNewLine() -- Пустая строка (аналог Spacing)
NewUiGroup:AlignTextToFramePadding("Text aligned with padding") -- Текст с небольшим отступом слева
if NewUiGroup:TreeNode("Folder: Player Scripts") then
NewUiGroup:AddLabel("Inside the folder!")
NewUiGroup:AddToggle({
Title = "Anti-Aim",
Default = false
})
NewUiGroup:AddButton({
Title = "Reset Character",
Callback = function() end
})
NewUiGroup:TreePop() -- Выход из папки
end
-- 2. Вложенные TreeNode (Папка в папке)
if NewUiGroup:TreeNode("Folder: Nested Example") then
NewUiGroup:AddLabel("Level 1")
if NewUiGroup:TreeNode("Sub-Folder (Level 2)") then
NewUiGroup:AddLabel("We are deeper now")
NewUiGroup:AddSlider({
Title = "Deep Value",
Default = 50,
Max = 100
})
NewUiGroup:TreePop() -- Закрываем Sub-Folder
end
NewUiGroup:TreePop() -- Закрываем Nested Example
end
-- 3. / Header (Стилизованный TreeNode с фоном)
-- SetNextItemOpen(true) заставит его быть открытым при запуске скрипта
NewUiGroup:SetNextItemOpen(true)
if NewUiGroup:CollapsingHeader("Visuals (Header)") then
NewUiGroup:AddCheckbox({Title = "Box ESP", Default = true})
NewUiGroup:AddCheckbox({Title = "Tracers", Default = false})
NewUiGroup:AddColorPicker({Title = "Chams Color", Default = Color3.new(1,1,1)})
NewUiGroup:TreePop()
end
NewUiGroup:AddProgressBar({
Title = "Health Bar",
Default = 0.75, -- From 0 to 1 (0% - 100%)
Flag = "MyProgressBar",
Description = "Shows health status (example)"
})
-- 2. RADIO BUTTON (Single selection from list, alternative to Dropdown)
NewUiGroup:AddRadioButton({
Title = "Target Mode",
Options = {"Nearest", "Lowest HP", "Mouse Position"}, -- Options
Default = "Nearest",
Flag = "TargetRadio",
Callback = function(Value)
print("Radio Selection changed to:", Value)
end
})
-- 3. GRAPH (Chart)
-- Useful for displaying FPS, Ping or currency amounts
NewUiGroup:AddGraph({
Title = "FPS Monitor",
Values = {0.1, 0.4, 0.3, 0.8, 0.5, 0.9, 0.2}, -- Initial data (from 0 to 1, or scalable)
Height = 50, -- Graph window height
Flag = "FPSGraph",
Description = "Real-time data visualization"
})
-- 4. IMAGE (Picture)
-- Can be used for logos or item previews
VisualsGroup:AddImage({
Image = "rbxassetid://18216647696", -- Replace with your ID
Size = UDim2.new(0, 100, 0, 100), -- Size
Description = "Script logo"
})
-- 5. IMAGE BUTTON (Image button)
VisualsGroup:AddImageButton({
Image = "rbxassetid://7733771472", -- Eye icon (example)
Size = UDim2.new(0, 40, 0, 40),
Description = "Click me!",
Callback = function()
print("Image Button Pressed!")
Library:Notify("Action", "Image Button Clicked", 2)
end
})
-- Vertical slider (for example, for adjusting jump height or FOV)
NewUiGroup:AddVerticalSlider({
Title = "Height",
Min = 0,
Max = 100,
Default = 50,
Height = 120, -- Height of the element itself in pixels
Flag = "VSlider1",
Callback = function(v)
print("Vertical Value:", v)
end
})
-- Selectable element - like a button but maintains pressed state
NewUiGroup:AddSelectable({
Title = "Silent Aim (Selectable)",
Default = false,
Flag = "Selectable1",
Callback = function(val)
print("Selected:", val)
end
})
-------------------------------------------------------------------------
-- LIVE UPDATE EXAMPLE (FOR GRAPH AND BAR)
-------------------------------------------------------------------------
task.spawn(function()
while true do
wait(0.5)
-- Update Progress Bar (HP change simulation)
if Library.Items["MyProgressBar"] then
local newHealth = math.random(30, 100) / 100
Library.Items["MyProgressBar"].Set(newHealth)
end
-- Update Graph (FPS simulation)
if Library.Items["FPSGraph"] then
local graphData = {}
for i = 1, 20 do -- Generate 20 points
table.insert(graphData, math.random(1, 100))
end
Library.Items["FPSGraph"].Set(graphData)
end
end
end)Comments section coming soon...
To use this script, you need a Roblox Executor. Simply copy the script from this page, paste it into your executor, and run it while you are in the Universal game.
Yes, this script is completely free to use.
No, this script does not require a key.
Yes, this script is designed to be compatible with mobile executors.





