volumecontrol

controls your volume, avoid official roblox volume settings

publicluauupdated
loadstring(game:HttpGet("https://pasteblox.com/raw/rz95hchaya"))()
pbx pull rz95hchayaraw link never changes · v1 live
volumecontrol.luau
local Players          = game:GetService("Players")
local SoundService     = game:GetService("SoundService")
local UserInputService = game:GetService("UserInputService")
local TweenService     = game:GetService("TweenService")

local plr   = Players.LocalPlayer
local volume = 1
local muted = false
local storedVolume = 1
local alive, animating = true, false

local MASTER = SoundService:FindFirstChild("x4aq_master")
if MASTER and not MASTER:IsA("SoundGroup") then
    MASTER:Destroy()
    MASTER = nil
end
if not MASTER then
    MASTER = Instance.new("SoundGroup")
    MASTER.Name = "x4aq_master"
    MASTER.Parent = SoundService
end

local PREFIX      = "x4aq_"
local hooked      = setmetatable({}, {__mode = "k"})
local childFor    = setmetatable({}, {__mode = "k"})
local original    = setmetatable({}, {__mode = "k"})
local connections = {}

local function track(c)
    table.insert(connections, c)
    return c
end

local function makeChild(g)
    if g == MASTER then return MASTER end
    if g.Name:sub(1, #PREFIX) == PREFIX then
        childFor[g] = g
        return g
    end
    local c = g:FindFirstChild(PREFIX .. g.Name)
    if not c then
        c = Instance.new("SoundGroup")
        c.Name = PREFIX .. g.Name
        c.Parent = g
    end
    childFor[g] = c
    return c
end

local function attach(s)
    if not s:IsA("Sound") then return end
    if original[s] == nil then original[s] = s.SoundGroup end
    local t = s.SoundGroup == nil and MASTER or makeChild(s.SoundGroup)
    if s.SoundGroup ~= t then s.SoundGroup = t end
end

local function watch(s)
    if hooked[s] then return end
    hooked[s] = true
    attach(s)
    track(s:GetPropertyChangedSignal("SoundGroup"):Connect(function()
        if not alive then return end
        local t = s.SoundGroup == nil and MASTER or makeChild(s.SoundGroup)
        if s.SoundGroup ~= t then s.SoundGroup = t end
    end))
    track(s.AncestryChanged:Connect(function()
        task.defer(function()
            if alive and s.Parent then attach(s) end
        end)
    end))
end

local roots = {SoundService, workspace}
if plr then table.insert(roots, plr) end

local function sweep(c)
    for _, d in ipairs(c:GetDescendants()) do
        if d:IsA("Sound") then watch(d) end
    end
end

for _, c in ipairs(roots) do
    sweep(c)
    track(c.DescendantAdded:Connect(function(d)
        if d:IsA("Sound") then watch(d) end
    end))
end

local function effective()
    return muted and 0 or volume
end

local function apply()
    local v = effective()
    MASTER.Volume = v
    for g, c in pairs(childFor) do
        if c and c.Parent == g then c.Volume = v end
    end
    for _, d in ipairs(SoundService:GetDescendants()) do
        if d:IsA("SoundGroup") and d.Name:sub(1, #PREFIX) == PREFIX then
            d.Volume = v
        end
    end
end

task.spawn(function()
    while alive do
        task.wait(0.5)
        if not alive then break end
        local v = effective()
        MASTER.Volume = v
        for g, c in pairs(childFor) do
            if c and c.Parent == g then c.Volume = v end
        end
        for _, c in ipairs(roots) do
            if c.Parent then sweep(c) end
        end
    end
end)

local BG     = Color3.fromRGB(14, 14, 16)
local LINE   = Color3.fromRGB(34, 34, 38)
local TEXT   = Color3.fromRGB(232, 232, 234)
local DIM    = Color3.fromRGB(108, 108, 116)
local ACCENT = Color3.fromRGB(222, 176, 96)
local DANGER = Color3.fromRGB(212, 100, 100)
local MUTE_BG   = Color3.fromRGB(28, 21, 13)
local MUTE_LINE = Color3.fromRGB(96, 74, 40)

local GLYPHS = {
    "░","▒","▓","█","◤","◥","◣","◢",
    "╱","╲","╳","●","◐","◑","◒","◓",
    "▪","▫","◆","◇","★","☆","▲","△"
}

local gui = Instance.new("ScreenGui")
gui.Name = "x4aq"
gui.ResetOnSpawn = false
gui.IgnoreGuiInset = true
gui.Parent = plr:WaitForChild("PlayerGui")

local panel = Instance.new("Frame")
panel.Size = UDim2.fromOffset(360, 176)
panel.Position = UDim2.new(0.5, -180, 0.5, -88)
panel.BackgroundColor3 = BG
panel.BorderSizePixel = 0
panel.Active = true
panel.Draggable = true
panel.ClipsDescendants = true
panel.Parent = gui
Instance.new("UICorner", panel).CornerRadius = UDim.new(0, 6)
local ps = Instance.new("UIStroke", panel)
ps.Color = LINE
ps.Thickness = 1

local uiScale = Instance.new("UIScale")
uiScale.Scale = 1
uiScale.Parent = panel

local pad = Instance.new("UIPadding", panel)
pad.PaddingTop = UDim.new(0, 16)
pad.PaddingLeft = UDim.new(0, 18)
pad.PaddingRight = UDim.new(0, 18)

local titleRow = Instance.new("Frame")
titleRow.Size = UDim2.new(1, 0, 0, 16)
titleRow.BackgroundTransparency = 1
titleRow.Parent = panel

local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, -68, 1, 0)
title.BackgroundTransparency = 1
title.Font = Enum.Font.GothamMedium
title.TextSize = 12
title.TextColor3 = TEXT
title.TextXAlignment = Enum.TextXAlignment.Left
title.Text = "x4axq made"
title.Parent = titleRow

local btnMin = Instance.new("TextButton")
btnMin.Size = UDim2.fromOffset(22, 16)
btnMin.Position = UDim2.new(1, -46, 0, 0)
btnMin.BackgroundTransparency = 1
btnMin.Font = Enum.Font.GothamMedium
btnMin.TextSize = 14
btnMin.TextColor3 = DIM
btnMin.Text = "-"
btnMin.AutoButtonColor = false
btnMin.Parent = titleRow

local btnClose = Instance.new("TextButton")
btnClose.Size = UDim2.fromOffset(22, 16)
btnClose.Position = UDim2.new(1, -22, 0, 0)
btnClose.BackgroundTransparency = 1
btnClose.Font = Enum.Font.GothamMedium
btnClose.TextSize = 12
btnClose.TextColor3 = DIM
btnClose.Text = "x"
btnClose.AutoButtonColor = false
btnClose.Parent = titleRow

btnMin.MouseEnter:Connect(function() btnMin.TextColor3 = TEXT end)
btnMin.MouseLeave:Connect(function() btnMin.TextColor3 = DIM end)
btnClose.MouseEnter:Connect(function() btnClose.TextColor3 = DANGER end)
btnClose.MouseLeave:Connect(function() btnClose.TextColor3 = DIM end)

local readout = Instance.new("TextLabel")
readout.Size = UDim2.new(1, 0, 0, 46)
readout.Position = UDim2.new(0, 0, 0, 28)
readout.BackgroundTransparency = 1
readout.Font = Enum.Font.GothamBold
readout.TextSize = 38
readout.TextColor3 = TEXT
readout.TextXAlignment = Enum.TextXAlignment.Left
readout.RichText = true
readout.Text = '100.0<font size="18">%</font>'
readout.Parent = panel

local barTrack = Instance.new("Frame")
barTrack.Size = UDim2.new(1, 0, 0, 3)
barTrack.Position = UDim2.new(0, 0, 0, 88)
barTrack.BackgroundColor3 = LINE
barTrack.BorderSizePixel = 0
barTrack.Parent = panel
Instance.new("UICorner", barTrack).CornerRadius = UDim.new(1, 0)

local barFill = Instance.new("Frame")
barFill.Size = UDim2.new(1, 0, 1, 0)
barFill.BackgroundColor3 = ACCENT
barFill.BorderSizePixel = 0
barFill.Parent = barTrack
Instance.new("UICorner", barFill).CornerRadius = UDim.new(1, 0)

local barHit = Instance.new("TextButton")
barHit.Size = UDim2.new(1, 0, 0, 24)
barHit.Position = UDim2.new(0, 0, 0, 77)
barHit.BackgroundTransparency = 1
barHit.Text = ""
barHit.AutoButtonColor = false
barHit.Parent = panel

local scrambleToken = 0

local function stopScramble()
    scrambleToken = scrambleToken + 1
end

local function scrambleNum(finalNumStr)
    scrambleToken = scrambleToken + 1
    local token = scrambleToken
    local frames = 12

    task.spawn(function()
        for f = 1, frames do
            if token ~= scrambleToken or not alive then return end
            local progress = f / frames
            local corruptChance = 1 - progress * progress
            local out = {}
            for i = 1, #finalNumStr do
                local ch = finalNumStr:sub(i, i)
                if ch:match("[%w]") and math.random() < corruptChance then
                    out[i] = GLYPHS[math.random(#GLYPHS)]
                else
                    out[i] = ch
                end
            end
            readout.Text = table.concat(out) .. '<font size="18">%</font>'
            task.wait(0.02)
        end
        if token ~= scrambleToken or not alive then return end
        readout.Text = finalNumStr .. '<font size="18">%</font>'
    end)
end

local function scrambleText(finalText)
    scrambleToken = scrambleToken + 1
    local token = scrambleToken
    local frames = 12

    task.spawn(function()
        for f = 1, frames do
            if token ~= scrambleToken or not alive then return end
            local progress = f / frames
            local corruptChance = 1 - progress * progress
            local out = {}
            for i = 1, #finalText do
                local ch = finalText:sub(i, i)
                if ch:match("[%w]") and math.random() < corruptChance then
                    out[i] = GLYPHS[math.random(#GLYPHS)]
                else
                    out[i] = ch
                end
            end
            readout.Text = table.concat(out)
            task.wait(0.02)
        end
        if token ~= scrambleToken or not alive then return end
        readout.Text = finalText
    end)
end
lines 1–300 of 600open raw find-in-page only searches the lines loaded so far. "show all" loads the rest.

changelog

1 version
  1. first version

    live

    @x4axq·