Description
💜 PURPLE HUB | AUTO QUEUE Purple Hub is a purple-themed Roblox Studio UI featuring an Auto Queue system designed for your own Roblox game. ⚡ Features 🔄 Auto Queue Toggle — Turn Auto Queue ON or OFF. 🎮 Next Round Queue — Automatically adds enabled players to the queue when a match ends. 💜 Purple Neon UI — Clean, dark interface with glowing purple styling. 📊 Queue Status — Displays whether Auto Queue is disabled, waiting, or queued. 🛡️ Server-Side Queue Management — The server tracks enabled players and manages queue entries. ⚙️ Custom Integration — Connect it to your game’s round controller to start the next match. Note: This is a Roblox Studio project for your own game. The current version manages the queue but needs your round system to launch the next match.
Script source Luau
-- [[ BloxScripts Risk Notice ]]
-- This script has not been verified by BloxScripts.fun. Deal with caution.
--
-- Stay safe:
-- • Never log in on unofficial Roblox sites or lookalike domains.
-- • Real Roblox links use roblox.com (check the .com ending).
-- • Treat fake Roblox login / "claim reward" pages as phishing.
-- [[ End BloxScripts Risk Notice ]]
local target = script.Parent
local speed = 8
local startPosition = target.Position
while true do
for i = 0, 100 do
local x = math.sin(i / 10) * speed
target.Position = startPosition + Vector3.new(x, 0, 0)
task.wait(0.03)
end
end
-- PURPLE HUB 💜
-- Mobile-friendly weapon skin UI demo
-- Standalone interface; does not modify RIVALS.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local gui = Instance.new("ScreenGui")
gui.Name = "PurpleHub"
gui.ResetOnSpawn = false
gui.Parent = player:WaitForChild("PlayerGui")
local purple = Color3.fromRGB(135, 40, 255)
local dark = Color3.fromRGB(18, 8, 38)
local white = Color3.fromRGB(255, 255, 255)
local main = Instance.new("Frame")
main.Size = UDim2.new(0.9, 0, 0.7, 0)
main.Position = UDim2.new(0.05, 0, 0.15, 0)
main.BackgroundColor3 = dark
main.Parent = gui
Instance.new("UICorner", main).CornerRadius =
UDim.new(0, 14)
local outline = Instance.new("UIStroke")
outline.Color = purple
outline.Thickness = 2
outline.Parent = main
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, -50, 0, 45)
title.Position = UDim2.fromOffset(12, 5)
title.BackgroundTransparency = 1
title.Text = "👑 PURPLE HUB"
title.TextColor3 = purple
title.TextSize = 24
title.Font = Enum.Font.GothamBold
title.Parent = main
local close = Instance.new("TextButton")
close.Size = UDim2.fromOffset(35, 32)
close.Position = UDim2.new(1, -42, 0, 10)
close.Text = "X"
close.TextColor3 = white
close.BackgroundColor3 = purple
close.Parent = main
close.Activated:Connect(function()
gui:Destroy()
end)
local heading = Instance.new("TextLabel")
heading.Size = UDim2.new(1, -20, 0, 30)
heading.Position = UDim2.fromOffset(12, 52)
heading.BackgroundTransparency = 1
heading.Text = "WEAPON SKINS"
heading.TextColor3 = white
heading.TextSize = 17
heading.Font = Enum.Font.GothamBold
heading.Parent = main
local skins = {
{"Void", "Legendary"},
{"Inferno", "Mythic"},
{"Frostbite", "Epic"},
{"Gold Rush", "Rare"},
{"Shadow", "Legendary"},
{"Default", "Common"}
}
local selected = "Void"
local inventory = Instance.new("ScrollingFrame")
inventory.Position = UDim2.fromOffset(10, 88)
inventory.Size = UDim2.new(1, -20, 0.55, 0)
inventory.BackgroundTransparency = 1
inventory.BorderSizePixel = 0
inventory.ScrollBarThickness = 4
inventory.AutomaticCanvasSize = Enum.AutomaticSize.Y
inventory.Parent = main
local grid = Instance.new("UIGridLayout")
grid.CellSize = UDim2.new(0.31, 0, 0, 65)
grid.CellPadding = UDim2.fromOffset(6, 6)
grid.Parent = inventory
for _, skin in ipairs(skins) do
local button = Instance.new("TextButton")
button.Text = skin[1] .. "\n" .. skin[2]
button.TextColor3 = white
button.TextSize = 13
button.Font = Enum.Font.GothamBold
button.BackgroundColor3 = Color3.fromRGB(42, 19, 75)
button.Parent = inventory
Instance.new("UICorner", button).CornerRadius =
UDim.new(0, 8)
button.Activated:Connect(function()
selected = skin[1]
heading.Text = "SELECTED: " .. selected
end)
end
local equip = Instance.new("TextButton")
equip.Size = UDim2.new(1, -20, 0, 42)
equip.Position = UDim2.new(0, 10, 1, -52)
equip.Text = "✦ PREVIEW SELECTED SKIN"
equip.TextColor3 = white
equip.TextSize = 14
equip.Font = Enum.Font.GothamBold
equip.BackgroundColor3 = purple
equip.Parent = main
Instance.new("UICorner", equip).CornerRadius =
UDim.new(0, 10)
equip.Activated:Connect(function()
heading.Text = "PREVIEW: " .. selected
end)
-- 💜 PURPLE HUB | SPEED SCALE 1-100
-- Standalone UI demo; does not modify live RIVALS.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local gui = player:WaitForChild("PlayerGui"):FindFirstChild("PurpleHub")
if not gui then
gui = Instance.new("ScreenGui")
gui.Name = "PurpleHub"
gui.Parent = player.PlayerGui
end
local purple = Color3.fromRGB(145, 50, 255)
local dark = Color3.fromRGB(22, 10, 42)
local white = Color3.fromRGB(255, 255, 255)
local panel = Instance.new("Frame")
panel.Name = "SpeedPanel"
panel.Size = UDim2.fromOffset(280, 125)
panel.Position = UDim2.new(0.5, -140, 0.75, -62)
panel.BackgroundColor3 = dark
panel.Parent = gui
Instance.new("UICorner", panel).CornerRadius =
UDim.new(0, 12)
local outline = Instance.new("UIStroke")
outline.Color = purple
outline.Thickness = 2
outline.Parent = panel
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, -20, 0, 28)
title.Position = UDim2.fromOffset(10, 5)
title.BackgroundTransparency = 1
title.Text = "⚡ PURPLE HUB | SPEED"
title.TextColor3 = purple
title.Font = Enum.Font.GothamBold
title.TextSize = 17
title.Parent = panel
local valueLabel = Instance.new("TextLabel")
valueLabel.Size = UDim2.new(1, -20, 0, 25)
valueLabel.Position = UDim2.fromOffset(10, 34)
valueLabel.BackgroundTransparency = 1
valueLabel.Text = "Speed: 1 / 100"
valueLabel.TextColor3 = white
valueLabel.Font = Enum.Font.GothamBold
valueLabel.TextSize = 15
valueLabel.Parent = panel
local slider = Instance.new("TextButton")
slider.Size = UDim2.new(1, -30, 0, 12)
slider.Position = UDim2.fromOffset(15, 75)
slider.BackgroundColor3 = Color3.fromRGB(55, 35, 75)
slider.Text = ""
slider.AutoButtonColor = false
slider.Parent = panel
Instance.new("UICorner", slider).CornerRadius =
UDim.new(1, 0)
local fill = Instance.new("Frame")
fill.Size = UDim2.new(0, 0, 1, 0)
fill.BackgroundColor3 = purple
fill.Parent = slider
Instance.new("UICorner", fill).CornerRadius =
UDim.new(1, 0)
local knob = Instance.new("Frame")
knob.Size = UDim2.fromOffset(18, 18)
knob.AnchorPoint = Vector2.new(0.5, 0.5)
knob.Position = UDim2.new(0, 0, 0.5, 0)
knob.BackgroundColor3 = white
knob.Parent = slider
Instance.new("UICorner", knob).CornerRadius =
UDim.new(1, 0)
local UserInputService =
game:GetService("UserInputService")
local dragging = false
local speedValue = 1
local function setSpeedFromX(x)
local width = slider.AbsoluteSize.X
if width <= 0 then return end
local fraction = math.clamp(
(x - slider.AbsolutePosition.X) / width,
0, 1
)
speedValue = math.clamp(
math.floor(1 + fraction * 99 + 0.5),
1, 100
)
local displayFraction = (speedValue - 1) / 99
fill.Size = UDim2.new(displayFraction, 0, 1, 0)
knob.Position = UDim2.new(displayFraction, 0, 0.5, 0)
valueLabel.Text = "Speed: " .. speedValue .. " / 100"
end
slider.Activated:Connect(function()
-- Tapping the bar selects the corresponding value.
local mouse = UserInputService:GetMouseLocation()
setSpeedFromX(mouse.X)
end)
UserInputService.InputChanged:Connect(function(input)
if dragging and (
input.UserInputType == Enum.UserInputType.MouseMovement
or input.UserInputType == Enum.UserInputType.Touch
) then
setSpeedFromX(input.Position.X)
end
end)
slider.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
setSpeedFromX(input.Position.X)
end
end)
UserInputService.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
or input.UserInputType == Enum.UserInputType.Touch then
dragging = false
end
end)
setSpeedFromX(slider.AbsolutePosition.X)
-- 💜 Purple Hub | Infinite Jump
-- Place in a LocalScript for your own Roblox game
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local player = Players.LocalPlayer
local infiniteJumpEnabled = true
UserInputService.JumpRequest:Connect(function()
if not infiniteJumpEnabled then
return
end
local character = player.Character
local humanoid = character
and character:FindFirstChildOfClass("Humanoid")
if humanoid and humanoid.Health > 0 then
humanoid:ChangeState(
Enum.HumanoidStateType.Jumping
)
end
end)
-- Set this to false to disable infinite jump
-- infiniteJumpEnabled = false
-- 💜 PURPLE HUB | ALL-IN-ONE STUDIO DEMO
-- Put this LocalScript inside StarterGui or a ScreenGui
-- For your own Roblox experience only.
local Players = game:GetService("Players")
local UIS = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local PURPLE = Color3.fromRGB(157, 70, 255)
local DARK = Color3.fromRGB(19, 13, 31)
local PANEL = Color3.fromRGB(31, 22, 48)
local WHITE = Color3.fromRGB(245, 240, 255)
local settings = {
InfiniteJump = false,
Hitmarker = true,
KillEffects = true,
PracticeTargets = false,
Speed = 16,
CrosshairSize = 12,
CrosshairColor = Color3.fromRGB(255, 255, 255),
EquippedSkin = "Default"
}
local old = playerGui:FindFirstChild("PurpleHub")
if old then old:Destroy() end
local gui = Instance.new("ScreenGui")
gui.Name = "PurpleHub"
gui.ResetOnSpawn = false
gui.Parent = playerGui
local main = Instance.new("Frame")
main.Size = UDim2.fromOffset(340, 465)
main.Position = UDim2.new(0, 25, 0.5, -232)
main.BackgroundColor3 = DARK
main.BorderSizePixel = 0
main.Parent = gui
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 12)
corner.Parent = main
local stroke = Instance.new("UIStroke")
stroke.Color = PURPLE
stroke.Thickness = 2
stroke.Parent = main
local header = Instance.new("TextLabel")
header.Size = UDim2.new(1, -20, 0, 42)
header.Position = UDim2.fromOffset(12, 4)
header.BackgroundTransparency = 1
header.Text = "💜 PURPLE HUB"
header.TextColor3 = WHITE
header.Font = Enum.Font.GothamBold
header.TextSize = 22
header.TextXAlignment = Enum.TextXAlignment.Left
header.Parent = main
local subtitle = Instance.new("TextLabel")
subtitle.Size = UDim2.new(1, -24, 0, 20)
subtitle.Position = UDim2.fromOffset(12, 42)
subtitle.BackgroundTransparency = 1
subtitle.Text = "RIVALS-INSPIRED • STUDIO DEMO"
subtitle.TextColor3 = PURPLE
subtitle.Font = Enum.Font.Gotham
subtitle.TextSize = 10
subtitle.TextXAlignment = Enum.TextXAlignment.Left
subtitle.Parent = main
local tabs = Instance.new("Frame")
tabs.Size = UDim2.new(1, -20, 0, 34)
tabs.Position = UDim2.fromOffset(10, 68)
tabs.BackgroundTransparency = 1
tabs.Parent = main
local tabLayout = Instance.new("UIListLayout")
tabLayout.FillDirection = Enum.FillDirection.Horizontal
tabLayout.Padding = UDim.new(0, 5)
tabLayout.Parent = tabs
local content = Instance.new("ScrollingFrame")
content.Size = UDim2.new(1, -20, 1, -115)
content.Position = UDim2.fromOffset(10, 108)
content.BackgroundColor3 = PANEL
content.BorderSizePixel = 0
content.ScrollBarThickness = 4
content.ScrollBarImageColor3 = PURPLE
content.CanvasSize = UDim2.new()
content.AutomaticCanvasSize = Enum.AutomaticSize.Y
content.Parent = main
local contentCorner = Instance.new("UICorner")
contentCorner.CornerRadius = UDim.new(0, 8)
contentCorner.Parent = content
local layout = Instance.new("UIListLayout")
layout.Padding = UDim.new(0, 7)
layout.SortOrder = Enum.SortOrder.LayoutOrder
layout.Parent = content
local padding = Instance.new("UIPadding")
padding.PaddingTop = UDim.new(0, 9)
padding.PaddingBottom = UDim.new(0, 9)
padding.PaddingLeft = UDim.new(0, 9)
padding.PaddingRight = UDim.new(0, 9)
padding.Parent = content
local function clearContent()
for _, child in ipairs(content:GetChildren()) do
if child ~= layout and child ~= padding then
child:Destroy()
end
end
end
local function makeButton(text, callback)
local button = Instance.new("TextButton")
button.Size = UDim2.new(1, -2, 0, 36)
button.BackgroundColor3 = DARK
button.TextColor3 = WHITE
button.Text = text
button.Font = Enum.Font.GothamSemibold
button.TextSize = 13
button.AutoButtonColor = true
button.BorderSizePixel = 0
button.Parent = content
local c = Instance.new("UICorner")
c.CornerRadius = UDim.new(0, 7)
c.Parent = button
local s = Instance.new("UIStroke")
s.Color = PURPLE
s.Thickness = 1
s.Transparency = 0.35
s.Parent = button
button.Activated:Connect(callback)
return button
end
local function makeLabel(text)
local label = Instance.new("TextLabel")
label.Size = UDim2.new(1, -2, 0, 28)
label.BackgroundTransparency = 1
label.TextColor3 = WHITE
label.Text = text
label.Font = Enum.Font.GothamBold
label.TextSize = 13
label.TextXAlignment = Enum.TextXAlignment.Left
label.Parent = content
return label
end
-- Crosshair is only a local visual.
local crosshair = Instance.new("TextLabel")
crosshair.Name = "DemoCrosshair"
crosshair.Size = UDim2.fromOffset(30, 30)
crosshair.AnchorPoint = Vector2.new(0.5, 0.5)
crosshair.Position = UDim2.new(0.5, 0, 0.5, 0)
crosshair.BackgroundTransparency = 1
crosshair.Text = "+"
crosshair.TextColor3 = settings.CrosshairColor
crosshair.TextSize = settings.CrosshairSize
crosshair.Font = Enum.Font.GothamBold
crosshair.Parent = gui
local hitmarker = Instance.new("TextLabel")
hitmarker.Size = UDim2.fromOffset(80, 50)
hitmarker.AnchorPoint = Vector2.new(0.5, 0.5)
hitmarker.Position = UDim2.new(0.5, 0, 0.5, -35)
hitmarker.BackgroundTransparency = 1
hitmarker.Text = "✕"
hitmarker.TextColor3 = Color3.new(1, 1, 1)
hitmarker.TextSize = 32
hitmarker.Font = Enum.Font.GothamBold
hitmarker.Visible = false
hitmarker.Parent = gui
local function applySpeed()
local character = player.Character
local humanoid = character and character:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.WalkSpeed = settings.Speed
end
end
player.CharacterAdded:Connect(function(character)
local humanoid = character:WaitForChild("Humanoid")
humanoid.WalkSpeed = settings.Speed
end)
-- Infinite jump works in this own-game demo.
UIS.JumpRequest:Connect(function()
if not settings.InfiniteJump then return end
local character = player.Character
local humanoid = character and character:FindFirstChildOfClass("Humanoid")
if humanoid and humanoid.Health > 0 then
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
end
end)
local function showTab(tabName)
clearContent()
if tabName == "Movement" then
makeLabel("MOVEMENT SETTINGS")
makeButton("Infinite Jump: " .. (settings.InfiniteJump and "ON" or "OFF"), function()
settings.InfiniteJump = not settings.InfiniteJump
showTab("Movement")
end)
makeLabel("WalkSpeed: " .. settings.Speed)
makeButton("Speed +5", function()
settings.Speed = math.clamp(settings.Speed + 5, 1, 100)
applySpeed()
showTab("Movement")
end)
makeButton("Speed -5", function()
settings.Speed = math.clamp(settings.Speed - 5, 1, 100)
applySpeed()
showTab("Movement")
end)
makeButton("Reset Speed (16)", function()
settings.Speed = 16
applySpeed()
showTab("Movement")
end)
elseif tabName == "Crosshair" then
makeLabel("CROSSHAIR CUSTOMIZER")
makeButton("Size +4", function()
settings.CrosshairSize = math.clamp(settings.CrosshairSize + 4, 8, 48)
crosshair.TextSize = settings.CrosshairSize
end)
makeButton("Size -4", function()
settings.CrosshairSize = math.clamp(settings.CrosshairSize - 4, 8, 48)
crosshair.TextSize = settings.CrosshairSize
end)
makeButton("Color: White", function()
settings.CrosshairColor = Color3.new(1, 1, 1)
crosshair.TextColor3 = settings.CrosshairColor
end)
makeButton("Color: Purple", function()
settings.CrosshairColor = PURPLE
crosshair.TextColor3 = PURPLE
end)
makeButton("Color: Cyan", function()
settings.CrosshairColor = Color3.fromRGB(0, 255, 255)
crosshair.TextColor3 = settings.CrosshairColor
end)
elseif tabName == "Skins" then
makeLabel("WEAPON SKIN PREVIEW")
makeLabel("Selected: " .. settings.EquippedSkin)
local skins = {
{"Default", Color3.fromRGB(100, 100, 110)},
{"Neon Purple", PURPLE},
{"Cyber Cyan", Color3.fromRGB(0, 220, 255)},
{"Crimson", Color3.fromRGB(255, 65, 90)}
}
for _, skin in ipairs(skins) do
local name, color = skin[1], skin[2]
local button = makeButton("Preview / Equip: " .. name, function()
settings.EquippedSkin = name
showTab("Skins")
end)
button.BackgroundColor3 = color
button.TextColor3 = Color3.new(1, 1, 1)
end
makeLabel("Demo only: connect these choices to")
makeLabel("weapon models in your own game.")
elseif tabName == "Effects" then
makeLabel("VISUAL EFFECTS")
makeButton("Hitmarker Demo: " .. (settings.Hitmarker and "ON" or "OFF"), function()
settings.Hitmarker = not settings.Hitmarker
showTab("Effects")
end)
makeButton("Test Hitmarker", function()
if settings.Hitmarker then
hitmarker.Visible = true
task.delay(0.35, function()
if hitmarker.Parent then
hitmarker.Visible = false
end
end)
end
end)
makeButton("Kill Effect Demo: " .. (settings.KillEffects and "ON" or "OFF"), function()
settings.KillEffects = not settings.KillEffects
showTab("Effects")
end)
makeButton("Play Effect Demo", function()
if settings.KillEffects then
local flash = Instance.new("Frame")
flash.Size = UDim2.fromScale(1, 1)
flash.BackgroundColor3 = PURPLE
flash.BackgroundTransparency = 0.45
flash.BorderSizePixel = 0
flash.Parent = gui
task.delay(0.15, function()
if flash.Parent then flash:Destroy() end
end)
end
end)
elseif tabName == "Practice" then
makeLabel("PRIVATE PRACTICE ARENA")
makeButton("Practice Target Label: " .. (settings.PracticeTargets and "ON" or "OFF"), function()
settings.PracticeTargets = not settings.PracticeTargets
showTab("Practice")
end)
makeLabel("Target display is a local demo label.")
makeButton("Show Demo Target", function()
local label = Instance.new("TextLabel")
label.Size = UDim2.fromOffset(190, 32)
label.AnchorPoint = Vector2.new(0.5, 0)
label.Position = UDim2.new(0.5, 0, 0.15, 0)
label.BackgroundColor3 = DARK
label.BackgroundTransparency = 0.1
label.TextColor3 = PURPLE
label.Text = "PRACTICE TARGET"
label.Font = Enum.Font.GothamBold
label.TextSize = 14
label.Parent = gui
task.delay(3, function()
if label.Parent then label:Destroy() end
end)
end)
end
end
local tabNames = {"Movement", "Crosshair", "Skins", "Effects", "Practice"}
for _, name in ipairs(tabNames) do
local button = Instance.new("TextButton")
button.Size = UDim2.new(0, 61, 1, 0)
button.BackgroundColor3 = PANEL
button.TextColor3 = WHITE
button.Text = name
button.TextSize = 9
button.Font = Enum.Font.GothamBold
button.BorderSizePixel = 0
button.Parent = tabs
local c = Instance.new("UICorner")
c.CornerRadius = UDim.new(0, 5)
c.Parent = button
button.Activated:Connect(function()
showTab(name)
end)
end
-- Drag the window using its header.
local dragging = false
local dragStart
local startPosition
header.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPosition = main.Position
end
end)
UIS.InputChanged:Connect(function(input)
if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement
or input.UserInputType == Enum.UserInputType.Touch) then
local delta = input.Position - dragStart
main.Position = UDim2.new(
startPosition.X.Scale,
startPosition.X.Offset + delta.X,
startPosition.Y.Scale,
startPosition.Y.Offset + delta.Y
)
end
end)
UIS.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
or input.UserInputType == Enum.UserInputType.Touch then
dragging = false
end
end)
showTab("Movement")
-- 💜 PURPLE HUB | AUTO QUEUE UI
-- UI-only demo for your own Roblox Studio game
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local PURPLE = Color3.fromRGB(160, 70, 255)
local DARK = Color3.fromRGB(18, 12, 30)
local PANEL = Color3.fromRGB(32, 22, 48)
local WHITE = Color3.fromRGB(245, 240, 255)
local GREEN = Color3.fromRGB(90, 255, 160)
local RED = Color3.fromRGB(255, 90, 110)
local oldGui = playerGui:FindFirstChild("PurpleAutoQueue")
if oldGui then
oldGui:Destroy()
end
local gui = Instance.new("ScreenGui")
gui.Name = "PurpleAutoQueue"
gui.ResetOnSpawn = false
gui.Parent = playerGui
local frame = Instance.new("Frame")
frame.Name = "QueuePanel"
frame.Size = UDim2.fromOffset(300, 230)
frame.Position = UDim2.new(0.5, -150, 0.5, -115)
frame.BackgroundColor3 = DARK
frame.BorderSizePixel = 0
frame.Parent = gui
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 12)
corner.Parent = frame
local outline = Instance.new("UIStroke")
outline.Color = PURPLE
outline.Thickness = 2
outline.Parent = frame
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, -20, 0, 38)
title.Position = UDim2.fromOffset(10, 8)
title.BackgroundTransparency = 1
title.Text = "💜 PURPLE HUB"
title.TextColor3 = WHITE
title.Font = Enum.Font.GothamBold
title.TextSize = 21
title.TextXAlignment = Enum.TextXAlignment.Left
title.Parent = frame
local subtitle = Instance.new("TextLabel")
subtitle.Size = UDim2.new(1, -20, 0, 22)
subtitle.Position = UDim2.fromOffset(10, 43)
subtitle.BackgroundTransparency = 1
subtitle.Text = "AUTO QUEUE"
subtitle.TextColor3 = PURPLE
subtitle.Font = Enum.Font.GothamBold
subtitle.TextSize = 12
subtitle.TextXAlignment = Enum.TextXAlignment.Left
subtitle.Parent = frame
local status = Instance.new("TextLabel")
status.Size = UDim2.new(1, -24, 0, 35)
status.Position = UDim2.fromOffset(12, 75)
status.BackgroundColor3 = PANEL
status.Text = "STATUS: DISABLED"
status.TextColor3 = RED
status.Font = Enum.Font.GothamBold
status.TextSize = 13
status.BorderSizePixel = 0
status.Parent = frame
local statusCorner = Instance.new("UICorner")
statusCorner.CornerRadius = UDim.new(0, 7)
statusCorner.Parent = status
local toggle = Instance.new("TextButton")
toggle.Size = UDim2.new(1, -24, 0, 40)
toggle.Position = UDim2.fromOffset(12, 120)
toggle.BackgroundColor3 = PURPLE
toggle.Text = "AUTO QUEUE: OFF"
toggle.TextColor3 = WHITE
toggle.Font = Enum.Font.GothamBold
toggle.TextSize = 14
toggle.BorderSizePixel = 0
toggle.Parent = frame
local toggleCorner = Instance.new("UICorner")
toggleCorner.CornerRadius = UDim.new(0, 7)
toggleCorner.Parent = toggle
local reset = Instance.new("TextButton")
reset.Size = UDim2.new(1, -24, 0, 30)
reset.Position = UDim2.fromOffset(12, 169)
reset.BackgroundColor3 = PANEL
reset.Text = "RESET STATUS"
reset.TextColor3 = WHITE
reset.Font = Enum.Font.GothamSemibold
reset.TextSize = 12
reset.BorderSizePixel = 0
reset.Parent = frame
local resetCorner = Instance.new("UICorner")
resetCorner.CornerRadius = UDim.new(0, 7)
resetCorner.Parent = reset
local enabled = false
local function updateUI()
if enabled then
toggle.Text = "AUTO QUEUE: ON"
toggle.BackgroundColor3 = GREEN
toggle.TextColor3 = DARK
status.Text = "STATUS: ENABLED (UI DEMO)"
status.TextColor3 = GREEN
else
toggle.Text = "AUTO QUEUE: OFF"
toggle.BackgroundColor3 = PURPLE
toggle.TextColor3 = WHITE
status.Text = "STATUS: DISABLED"
status.TextColor3 = RED
end
end
toggle.Activated:Connect(function()
enabled = not enabled
updateUI()
end)
reset.Activated:Connect(function()
enabled = false
status.Text = "STATUS: IDLE"
status.TextColor3 = WHITE
toggle.Text = "AUTO QUEUE: OFF"
toggle.BackgroundColor3 = PURPLE
toggle.TextColor3 = WHITE
end)
updateUI()
print("💜 Purple Hub Auto Queue UI loaded!")
-- 💜 Purple Hub | Auto Queue Server
-- Place in ServerScriptService
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local event = ReplicatedStorage:WaitForChild("AutoQueueEvent")
local queued = {}
local autoQueueEnabled = {}
local matchRunning = false
local function removeFromQueue(player)
queued[player] = nil
end
local function addToQueue(player)
if not player.Parent then return end
if queued[player] then return end
queued[player] = true
print(player.Name .. " joined the next-round queue")
event:FireClient(player, "Queued")
end
event.OnServerEvent:Connect(function(player, action, enabled)
if action == "Toggle" and typeof(enabled) == "boolean" then
autoQueueEnabled[player] = enabled
if enabled and not matchRunning then
addToQueue(player)
elseif not enabled then
removeFromQueue(player)
event:FireClient(player, "Disabled")
end
end
end)
-- Call this when your match ends.
local function onMatchEnded()
matchRunning = false
for _, player in ipairs(Players:GetPlayers()) do
if autoQueueEnabled[player] then
addToQueue(player)
end
end
end
-- Example match-end trigger for testing:
-- Uncomment this line to test after 60 seconds.
-- task.delay(60, onMatchEnded)
Players.PlayerRemoving:Connect(function(player)
queued[player] = nil
autoQueueEnabled[player] = nil
end)
-- Other server scripts can call this through a BindableEvent.
local matchEnded = Instance.new("BindableEvent")
matchEnded.Name = "PurpleHubMatchEnded"
matchEnded.Parent = script
matchEnded.Event:Connect(onMatchEnded)
print("💜 Purple Hub Auto Queue server ready")
Review the source before using it. Executions count successful copies, capped at 10 per user and network per script in 24 hours.


Your community, in one place