What's new
Heapleak - Scripthub

Get the most out of HeapLeak by creating a free account! Once signed in, you’ll gain full access to restricted content, be able to share your own scripts, and participate in our member-only discussions.

Velvos Library

Version / Update: v1.0.0
Download / Script Link
local AquaUI = loadstring(game:HttpGet("https://gist.githubusercontent.com/marcossilvasilva3456789-commits/552f270231b8665eef07724acc1dea8f/raw/b0ae6f00e6c3559c27425b6a26b51c7087fdcbc1/pasbevos%2520library"))()

--

-- Criar o menu
local menu = AquaUI:CreateWindow("Meu Menu", UDim2.new(0, 650, 0, 550))

-- -- -- ============================================
-- =========== CRIAR ABA ADM ==================
-- ============================================

local AdmTab = menu:CreateTab("ADM")

-- Criar seções
local secSelecionar = menu:CreateSection(AdmTab, "Selecionar Alvo")
local secFling = menu:CreateSection(AdmTab, "Fling Types")
local secMovimento = menu:CreateSection(AdmTab, "Movimento")
local secEspeciais = menu:CreateSection(AdmTab, "Especiais")
local secCredits = menu:CreateSection(AdmTab, "Créditos")

-- ===== VARIÁVEIS =====
local lp = game.Players.LocalPlayer
local RunService = game:GetService("RunService")
local SelectedTarget = nil
local meuDropdown = nil

-- ===== INPUT PARA SELECIONAR ALVO =====
local alvoInput = ""
local alvoSelecionado = nil

-- Função para atualizar lista de jogadores
local function atualizarListaJogadores()
local jogadores = {}
for _, player in pairs(game.Players:GetPlayers()) do
table.insert(jogadores, player.Name)
end
if #jogadores == 0 then
table.insert(jogadores, "Nenhum jogador")
end
return jogadores
end

-- Criar dropdown e GUARDAR na variável
meuDropdown = menu:CreateDropdown(secSelecionar, {
Text = "Selecionar Alvo",
Description = "Escolha o jogador alvo",
Options = atualizarListaJogadores(),
Callback = function(option)
if option and option ~= "Nenhum jogador" then
for _, player in pairs(game.Players:GetPlayers()) do
if player.Name == option then
SelectedTarget = player
AquaUI:Notify({
Title = "Alvo Selecionado",
Description = player.Name,
Duration = 2
})
break
end
end
end
end
})

-- Botão para atualizar lista
menu:CreateButton(secSelecionar, {
Text = "Atualizar Lista",
Description = "Atualiza a lista de jogadores",
Callback = function()
if meuDropdown and meuDropdown.Update then
meuDropdown:Update(atualizarListaJogadores())
print("Lista atualizada - Jogadores:", #game.Players:GetPlayers())
else
print("Erro: dropdown não tem função Update")
end
end
})

-- ===== FUNÇÃO PARA CRIAR TOGGLES DE FLING =====
local function CreateFlingToggle(nome, offsetVector, killTarget)
local isActive = false
local connection = nil
local originalCFrame = nil

menu:CreateToggle(secFling, {
Text = nome,
Description = offsetVector.Magnitude > 0 and "Offset: " .. tostring(offsetVector) or "Grudado no alvo",
Callback = function(Value)
isActive = Value

if not SelectedTarget then
if Value then
AquaUI:Notify({
Title = "Erro",
Description = "Selecione um alvo primeiro!",
Duration = 2
})
end
return
end

local localChar = lp.Character or lp.CharacterAdded:Wait()
local localRoot = localChar:WaitForChild("HumanoidRootPart")
local targetRoot = SelectedTarget.Character:WaitForChild("HumanoidRootPart")

if not isActive then
if connection then
connection:Disconnect()
end
if originalCFrame then
localRoot.CFrame = originalCFrame
localRoot.Velocity = Vector3.zero
localRoot.RotVelocity = Vector3.zero
end
return
end

originalCFrame = localRoot.CFrame

connection = RunService.Heartbeat:Connect(function()
if not isActive then return end
if not SelectedTarget or not SelectedTarget.Character then return end

targetRoot = SelectedTarget.Character:FindFirstChild("HumanoidRootPart")
if not targetRoot then return end

localRoot.CFrame = CFrame.new(targetRoot.Position + offsetVector) * CFrame.Angles(-math.pi / 2, 0, 0)
localRoot.Velocity = offsetVector.Magnitude > 0 and Vector3.new(500, 500, 500) or Vector3.zero
localRoot.RotVelocity = offsetVector.Magnitude > 0 and Vector3.new(500, 500, 500) or Vector3.zero

pcall(function()
sethiddenproperty(localRoot, "PhysicsRepRootPart", targetRoot)
end)

if killTarget then
task.wait(0.5)
localChar:FindFirstChildOfClass("Humanoid").Health = 0
end
end)
end
})
end

-- ===== FLING TYPES =====
CreateFlingToggle("Fling Player", Vector3.new(0, 0, 0), false)
CreateFlingToggle("Fling 2.0", Vector3.new(0, -2.5, 0), false)
CreateFlingToggle("Platform Fly", Vector3.new(0, -4, 0), false)
CreateFlingToggle("Magic Carpet", Vector3.new(0, -3.6, 0), false)
CreateFlingToggle("Elevator", Vector3.new(0, -3, 0), false)

-- ===== ANTI JUMP =====
local antiJumpActive = false
local antiJumpConnection = nil
local antiJumpOriginalCFrame = nil

menu:CreateToggle(secFling, {
Text = "Anti Jump",
Description = "Impede o alvo de pular",
Callback = function(Value)
antiJumpActive = Value

if not SelectedTarget then
if Value then
AquaUI:Notify({
Title = "Erro",
Description = "Selecione um alvo primeiro!",
Duration = 2
})
end
return
end

local localChar = lp.Character or lp.CharacterAdded:Wait()
local localRoot = localChar:WaitForChild("HumanoidRootPart")
local targetRoot = SelectedTarget.Character:WaitForChild("HumanoidRootPart")

if not antiJumpActive then
if antiJumpConnection then
antiJumpConnection:Disconnect()
end
if antiJumpOriginalCFrame then
localRoot.CFrame = antiJumpOriginalCFrame
localRoot.Velocity = Vector3.zero
localRoot.RotVelocity = Vector3.zero
end
return
end

antiJumpOriginalCFrame = localRoot.CFrame

antiJumpConnection = RunService.Heartbeat:Connect(function()
if not antiJumpActive then return end
if not SelectedTarget or not SelectedTarget.Character then return end

targetRoot = SelectedTarget.Character:FindFirstChild("HumanoidRootPart")
if not targetRoot then return end

localRoot.Velocity = Vector3.zero
localRoot.RotVelocity = Vector3.zero
localRoot.CFrame = CFrame.new(targetRoot.Position + Vector3.new(0, 3.5, 0)) * CFrame.Angles(-math.pi / 2, 0, 0)

pcall(function()
sethiddenproperty(localRoot, "PhysicsRepRootPart", targetRoot)
end)
end)
end
})

-- ===== UTILITÁRIOS =====
local Utils = {}

Utils.glue = function(target, shouldGlue)
local localRoot = lp.Character and lp.Character:FindFirstChild("HumanoidRootPart")

if not localRoot or not target.Character or not target.Character:FindFirstChild("HumanoidRootPart") then
return
end

if shouldGlue then
pcall(function()
sethiddenproperty(localRoot, "PhysicsRepRootPart", target.Character.HumanoidRootPart)
end)
else
pcall(function()
sethiddenproperty(localRoot, "PhysicsRepRootPart", localRoot)
end)
end
end

Utils.tp = function(target, offsetCFrame)
offsetCFrame = offsetCFrame or CFrame.new()
local localRoot = lp.Character and lp.Character:FindFirstChild("HumanoidRootPart")

if localRoot and target.Character and target.Character:FindFirstChild("HumanoidRootPart") then
localRoot.CFrame = target.Character.HumanoidRootPart.CFrame * offsetCFrame
localRoot.Velocity = Vector3.zero
end
end

-- ===== MOVEMENT TOGGLES =====
local function CreateMovementToggle(toggleName, offsetVector)
local isActive = false
local connection = nil

menu:CreateToggle(secMovimento, {
Text = toggleName,
Description = "Offset: " .. tostring(offsetVector),
Callback = function(Value)
isActive = Value

if connection then
connection:Disconnect()
end

if not SelectedTarget then
if Value then
AquaUI:Notify({
Title = "Erro",
Description = "Selecione um alvo primeiro!",
Duration = 2
})
end
return
end

if not isActive then
Utils.glue(SelectedTarget, false)
return
end

connection = RunService.Heartbeat:Connect(function()
if not isActive then return end
if not SelectedTarget or not SelectedTarget.Character then return end
Utils.tp(SelectedTarget, CFrame.new(offsetVector))
Utils.glue(SelectedTarget, true)
end)
end
})
end

-- ===== MOVEMENT TYPES =====
CreateMovementToggle("Infinite Jump", Vector3.new(0, -5.75, 0))
CreateMovementToggle("Speed Boost (slow)", Vector3.new(0, 0.7, 1))
CreateMovementToggle("Speed Boost (medium)", Vector3.new(0, 0.7, 0.5))
CreateMovementToggle("Speed Boost (fast)", Vector3.new(0, 0.7, 0.35))

-- ===== SPEED REDUCE =====
local speedReduceActive = false
local speedReduceConnection = nil
local speedReduceOriginalCFrame = nil

local POSITION_OFFSET = Vector3.new(0, 2.2, -0.8)
local ROTATION_Y = math.rad(180)

menu:CreateToggle(secMovimento, {
Text = "Speed Reduce",
Description = "REDUZ velocidade e IMPEDE pulo do alvo | Gruda na cabeça",
Callback = function(Value)
speedReduceActive = Value

if speedReduceConnection then
speedReduceConnection:Disconnect()
speedReduceConnection = nil
end

if not SelectedTarget then
if Value then
AquaUI:Notify({
Title = "Erro",
Description = "Selecione um alvo primeiro!",
Duration = 2
})
end
return
end

if not SelectedTarget.Character then
if Value then
AquaUI:Notify({
Title = "Erro",
Description = "Alvo não está no jogo!",
Duration = 2
})
end
return
end

if not lp.Character then
if Value then
AquaUI:Notify({
Title = "Erro",
Description = "Aguarde seu personagem carregar!",
Duration = 2
})
end
return
end

local localChar = lp.Character
local localRoot = localChar:FindFirstChild("HumanoidRootPart")
local localHumanoid = localChar:FindFirstChild("Humanoid")
local targetRoot = SelectedTarget.Character:FindFirstChild("HumanoidRootPart")
local targetHumanoid = SelectedTarget.Character:FindFirstChild("Humanoid")

if not localRoot or not targetRoot then
if Value then
AquaUI:Notify({
Title = "Erro",
Description = "Partes do corpo não encontradas!",
Duration = 2
})
end
return
end

if not speedReduceActive then
pcall(function()
if speedReduceOriginalCFrame and localRoot then
localRoot.CFrame = speedReduceOriginalCFrame
speedReduceOriginalCFrame = nil
end
if localHumanoid then
localHumanoid.PlatformStand = false
localHumanoid.AutoRotate = true
localHumanoid:ChangeState(Enum.HumanoidStateType.Running)
end
if targetHumanoid then
targetHumanoid.PlatformStand = false
targetHumanoid.AutoRotate = true
targetHumanoid.WalkSpeed = 16
targetHumanoid.JumpPower = 50
end
if targetRoot then
targetRoot.CustomPhysicalProperties = PhysicalProperties.new(0.7, 0.3, 0.5)
end
if localRoot then
localRoot.CustomPhysicalProperties = PhysicalProperties.new(0.7, 0.3, 0.5)
end
pcall(sethiddenproperty, localRoot, "PhysicsRepRootPart", nil)
end)
return
end

speedReduceOriginalCFrame = localRoot.CFrame

pcall(function()
if localHumanoid then
localHumanoid.PlatformStand = true
localHumanoid.AutoRotate = false
localHumanoid:ChangeState(Enum.HumanoidStateType.Physics)
end
if localRoot then
localRoot.CustomPhysicalProperties = PhysicalProperties.new(999999, 0, 0)
end
end)

pcall(function()
if targetHumanoid then
targetHumanoid.PlatformStand = true
targetHumanoid.AutoRotate = false
targetHumanoid.WalkSpeed = 0
targetHumanoid.JumpPower = 0
targetHumanoid:ChangeState(Enum.HumanoidStateType.Physics)
end
if targetRoot then
targetRoot.CustomPhysicalProperties = PhysicalProperties.new(999999, 0, 0)
end
end)

speedReduceConnection = RunService.Heartbeat:Connect(function()
if not speedReduceActive then return end

if not SelectedTarget or not SelectedTarget.Character then
speedReduceActive = false
if speedReduceConnection then
speedReduceConnection:Disconnect()
speedReduceConnection = nil
end
return
end

if not lp.Character then return end

local currentLocalRoot = lp.Character:FindFirstChild("HumanoidRootPart")
local currentTargetRoot = SelectedTarget.Character:FindFirstChild("HumanoidRootPart")

if not currentLocalRoot or not currentTargetRoot then return end

pcall(function()
currentLocalRoot.CFrame = currentTargetRoot.CFrame * CFrame.new(POSITION_OFFSET) * CFrame.Angles(0, ROTATION_Y, 0)
end)

pcall(function()
currentLocalRoot.Velocity = Vector3.zero
currentLocalRoot.RotVelocity = Vector3.zero
currentLocalRoot.AssemblyLinearVelocity = Vector3.zero
currentLocalRoot.AssemblyAngularVelocity = Vector3.zero

currentTargetRoot.Velocity = Vector3.zero
currentTargetRoot.RotVelocity = Vector3.zero
currentTargetRoot.AssemblyLinearVelocity = Vector3.zero
currentTargetRoot.AssemblyAngularVelocity = Vector3.zero
end)

pcall(function()
sethiddenproperty(currentLocalRoot, "PhysicsRepRootPart", currentTargetRoot)
end)
end)
end
})

CreateMovementToggle("Movement Breaker", Vector3.new(0, 0.7, -0.8))

-- ===== ROCKET TARGET =====
local rocketActive = false
local rocketConnection = nil
local rocketOriginalCFrame = nil

menu:CreateToggle(secEspeciais, {
Text = "Rocket Target",
Description = "Lança você para cima no alvo",
Callback = function(Value)
rocketActive = Value

if not SelectedTarget then
if Value then
AquaUI:Notify({
Title = "Erro",
Description = "Selecione um alvo primeiro!",
Duration = 2
})
end
return
end

local localChar = lp.Character or lp.CharacterAdded:Wait()
local localRoot = localChar:WaitForChild("HumanoidRootPart")
local targetRoot = SelectedTarget.Character:WaitForChild("HumanoidRootPart")

if not rocketActive then
if rocketConnection then
rocketConnection:Disconnect()
end
if rocketOriginalCFrame then
localRoot.CFrame = rocketOriginalCFrame
localRoot.Velocity = Vector3.zero
localRoot.RotVelocity = Vector3.zero
end
return
end

rocketOriginalCFrame = localRoot.CFrame

rocketConnection = RunService.Heartbeat:Connect(function()
if not rocketActive then return end
if not SelectedTarget or not SelectedTarget.Character then return end

targetRoot = SelectedTarget.Character:FindFirstChild("HumanoidRootPart")
if not targetRoot then return end

local targetPos = targetRoot.Position + Vector3.new(0, -3, 0)
localRoot.CFrame = CFrame.new(targetPos, targetPos + Vector3.new(0, 1, 0))
localRoot.Velocity = Vector3.new(0, 50, 0)
localRoot.RotVelocity = Vector3.zero

pcall(function()
sethiddenproperty(localRoot, "PhysicsRepRootPart", targetRoot)
end)
end)
end
})

-- ===== GODSPEED ROCKET =====
local godspeedActive = false
local godspeedConnection = nil
local godspeedOriginalCFrame = nil

menu:CreateToggle(secEspeciais, {
Text = "GODSPEED Rocket",
Description = "Velocidade EXTREMA para cima",
Callback = function(Value)
godspeedActive = Value

if not SelectedTarget then
if Value then
AquaUI:Notify({
Title = "Erro",
Description = "Selecione um alvo primeiro!",
Duration = 2
})
end
return
end

local localChar = lp.Character or lp.CharacterAdded:Wait()
local localRoot = localChar:WaitForChild("HumanoidRootPart")
local targetRoot = SelectedTarget.Character:WaitForChild("HumanoidRootPart")

if not godspeedActive then
if godspeedConnection then
godspeedConnection:Disconnect()
end
if godspeedOriginalCFrame then
localRoot.CFrame = godspeedOriginalCFrame
localRoot.Velocity = Vector3.zero
localRoot.RotVelocity = Vector3.zero
end
return
end

godspeedOriginalCFrame = localRoot.CFrame

godspeedConnection = RunService.Heartbeat:Connect(function()
if not godspeedActive then return end
if not SelectedTarget or not SelectedTarget.Character then return end

targetRoot = SelectedTarget.Character:FindFirstChild("HumanoidRootPart")
if not targetRoot then return end

local targetPos = targetRoot.Position + Vector3.new(0, -3, 0)
localRoot.CFrame = CFrame.new(targetPos, targetPos + Vector3.new(0, 1, 0))
localRoot.Velocity = Vector3.new(0, 5000, 0)
localRoot.RotVelocity = Vector3.zero

pcall(function()
sethiddenproperty(localRoot, "PhysicsRepRootPart", targetRoot)
end)
end)
end
})

-- ===== NAN FLING =====
local nanFlingActive = false
local nanFlingConnection = nil
local nanFlingCounter = 0

menu:CreateButton(secEspeciais, {
Text = "NaN Fling",
Description = "Aplica força NaN no alvo",
Callback = function()
if not SelectedTarget then
AquaUI:Notify({
Title = "Erro",
Description = "Selecione um alvo primeiro!",
Duration = 2
})
return
end

nanFlingCounter = nanFlingCounter + 1
local currentId = nanFlingCounter

if nanFlingConnection then
nanFlingConnection:Disconnect()
end

local targetRoot = SelectedTarget.Character and SelectedTarget.Character:FindFirstChild("HumanoidRootPart")
if not targetRoot then
AquaUI:Notify({
Title = "Erro",
Description = "Alvo sem personagem!",
Duration = 2
})
return
end

local localChar = lp.Character or lp.CharacterAdded:Wait()
local localHumanoid = localChar:WaitForChild("Humanoid")
local localRoot = localChar:WaitForChild("HumanoidRootPart")

local originalCFrame = localRoot.CFrame
local originalPlatformStand = localHumanoid.PlatformStand
local NaNVector = Vector3.new(0/0, 0/0, 0/0)

localHumanoid.PlatformStand = true
local startTime = tick()

nanFlingConnection = RunService.Heartbeat:Connect(function()
if nanFlingCounter ~= currentId then
return
end

if tick() - startTime >= 1.5 then
nanFlingConnection:Disconnect()
task.defer(function()
if nanFlingCounter ~= currentId then return end
localHumanoid.PlatformStand = originalPlatformStand
localRoot.AssemblyLinearVelocity = Vector3.zero
localRoot.AssemblyAngularVelocity = Vector3.zero
localRoot.CFrame = originalCFrame
localRoot.Velocity = Vector3.zero
pcall(sethiddenproperty, localRoot, "PhysicsRepRootPart", nil)
end)
return
end

localRoot.CFrame = targetRoot.CFrame
localRoot.AssemblyLinearVelocity = NaNVector
localRoot.AssemblyAngularVelocity = NaNVector

pcall(function()
localHumanoid:Move(NaNVector)
end)

pcall(sethiddenproperty, localRoot, "PhysicsRepRootPart", targetRoot)
end)

AquaUI:Notify({
Title = "NaN Fling",
Description = "Ativado em " .. SelectedTarget.Name,
Duration = 2
})
end
})

-- ===== NAN FLING ALL =====
local nanFlingAllActive = false
local nanFlingAllConnection = nil
local currentTargetIndex = 1
SWITCH_INTERVAL = math.huge -- Valor infinito
local SWITCH_INTERVAL = 0

menu:CreateToggle(secEspeciais, {
Text = "NaN Fling All (LOOP)",
Description = "Aplica NaN Fling em TODOS os jogadores em loop",
Callback = function(Value)
nanFlingAllActive = Value

if Value then
pcall(function()
settings().Physics.AllowSleep = false
settings().Physics.ThrottleAdjustTime = 0
lp.ReplicationFocus = lp.Character and lp.Character:FindFirstChild("HumanoidRootPart")

if lp.Character then
for _, part in pairs(lp.Character:GetDescendants()) do
if part:IsA("BasePart") then
part:SetNetworkOwner(lp)
end
end
end
end)

AquaUI:Notify({
Title = "NaN Fling All",
Description = "ATIVADO - Flingando TODOS os jogadores",
Duration = 2
})

local NaNVector = Vector3.new(0/0, 0/0, 0/0)
currentTargetIndex = 1
lastSwitchTime = tick()

nanFlingAllConnection = RunService.Heartbeat:Connect(function()
if not nanFlingAllActive then return end

local localChar = lp.Character
if not localChar then return end

local localHumanoid = localChar:FindFirstChild("Humanoid")
local localRoot = localChar:FindFirstChild("HumanoidRootPart")

if not localHumanoid or not localRoot then return end

localHumanoid.PlatformStand = true

local players = {}
for _, player in pairs(game.Players:GetPlayers()) do
if player ~= lp and player.Character then
local rootPart = player.Character:FindFirstChild("HumanoidRootPart")
if rootPart and rootPart.Parent then
table.insert(players, {
player = player,
root = rootPart
})
end
end
end

if #players == 0 then return end

local now = tick()
if now - lastSwitchTime >= SWITCH_INTERVAL then
currentTargetIndex = (currentTargetIndex % #players) + 1
lastSwitchTime = now
end

local currentTarget = players[currentTargetIndex]
if currentTarget and currentTarget.root then
localRoot.CFrame = currentTarget.root.CFrame
localRoot.AssemblyLinearVelocity = NaNVector
localRoot.AssemblyAngularVelocity = NaNVector

pcall(function()
localHumanoid:Move(NaNVector)
end)

pcall(sethiddenproperty, localRoot, "PhysicsRepRootPart", currentTarget.root)
end
end)
else
if nanFlingAllConnection then
nanFlingAllConnection:Disconnect()
nanFlingAllConnection = nil
end

local localChar = lp.Character
if localChar then
local localHumanoid = localChar:FindFirstChild("Humanoid")
local localRoot = localChar:FindFirstChild("HumanoidRootPart")

if localHumanoid then
localHumanoid.PlatformStand = false
end

if localRoot then
pcall(sethiddenproperty, localRoot, "PhysicsRepRootPart", nil)
localRoot.AssemblyLinearVelocity = Vector3.zero
localRoot.AssemblyAngularVelocity = Vector3.zero
end
end

AquaUI:Notify({
Title = "NaN Fling All",
Description = "DESATIVADO",
Duration = 1
})
end
end
})

-- ===== CRÉDITOS =====
local function copyToClipboard(text)
setclipboard(tostring(text))
AquaUI:Notify({
Title = "Copiado!",
Description = "Texto copiado para área de transferência",
Duration = 2
})
end

menu:CreateButton(secCredits, {
Text = "YouTube: SWAT07_script",
Description = "Clique para copiar o link do canal",
Callback = function()
copyToClipboard("https://m.youtube.com/@SWAT07_script/shorts")
end
})

menu:CreateButton(secCredits, {
Text = "Nome: swat07_script",
Description = "Clique para copiar o nome do canal",
Callback = function()
copyToClipboard("swat07_script")
end
})

menu:CreateButton(secCredits, {
Text = "Copiar Tudo",
Description = "Copia link e nome juntos",
Callback = function()
copyToClipboard("Canal: swat07_script\nLink: https://m.youtube.com/@SWAT07_script/shorts")
end
})

print("ABA ADM carregada com sucesso!")
print("Pressione Insert para abrir/fechar o menu")
[ View More ]
a414a976-ea5f-4bbd-9652-a6e9e6c76699.webp


I didn't create this function; it was copied by... Welding Abuse Hub🔥 New UI Library (Roblox Lua) 🔥This library is a complete UI system designed to make it easier to create menus in Roblox using loadstring.📦 How it works:The script loads the library directly from a link (GitHub/Gist), executes it in-game, and provides multiple built-in functions so you can create UI without building everything from scratch.🧩 What you can do with it:Create a main window (menu)Add tabsCreate organized sectionsInteractive buttonsToggle (on/off)Dropdown (selection list)Slider (value control)Color picker 🎨⚙️ Function system:Each component uses a callback function that runs when the player interacts with it.Example:Click a button → runs a functionChange a toggle → returns true/falseSelect an option → returns the selected value🎨 Visual & customization:The library handles:Menu layoutAnimationsColors and themesAutomatic organization💡 This allows you to build clean and functional menus much faster.⚠️ Notes:Uses HttpGet, must be enabledDepends on the link (if it goes down, it stops working)Not an official Roblox library🚀 Summary:A practical UI library for creating professional-style menus quickly and easily.If you use it, test it out and see how it fits your script 👍
 
Works on mobile
  1. Yes
Back
Top