-- [[ Rscripts Risk Notice ]]
-- This script is not verified by rscripts.net. 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 Rscripts Risk Notice ]]
--[[rscripts:analytics:start]]
-- Script analytics (enabled by the creator on rscripts.net).
-- Runs in its own thread and cannot affect the script below.
task.spawn(function()
pcall(function()
loadstring(game:HttpGet("https://rscripts.net/api/telemetry/v2/client.lua?s=6ae4c2b4c3bfab0dc8e60516"))()
end)
end)
--[[rscripts:analytics:end]]
-- Byster HUB by oalala | Discord invite menu
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local LocalPlayer = Players.LocalPlayer
local INVITE = "https://discord.gg/rnntsTFt"
local BRAND = "Byster HUB by oalala"
local Env = (getgenv and getgenv()) or _G
if type(Env.BysterDiscord) == "table" and type(Env.BysterDiscord.Destroy) == "function" then
pcall(Env.BysterDiscord.Destroy)
end
local WHITE = Color3.new(1, 1, 1)
local PINK = Color3.fromRGB(255, 79, 216)
local PURPLE = Color3.fromRGB(124, 80, 232)
local BLURPLE = Color3.fromRGB(88, 101, 242)
local CYAN = Color3.fromRGB(0, 229, 255)
local YELLOW = Color3.fromRGB(255, 214, 10)
local GREEN = Color3.fromRGB(46, 230, 140)
local BG_TOP = Color3.fromRGB(26, 28, 40)
local BG_BOTTOM = Color3.fromRGB(10, 11, 17)
local Connections = {}
local function bind(Signal, Callback)
local Connection = Signal:Connect(Callback)
Connections[#Connections + 1] = Connection
return Connection
end
local function new(Class, Props, Children)
local Obj = Instance.new(Class)
for Key, Value in pairs(Props) do
if Key ~= "Parent" then
Obj[Key] = Value
end
end
for _, Child in ipairs(Children or {}) do
Child.Parent = Obj
end
if Props.Parent then
Obj.Parent = Props.Parent
end
return Obj
end
local function corner(Radius)
return new("UICorner", {CornerRadius = UDim.new(0, Radius)})
end
local function round()
return new("UICorner", {CornerRadius = UDim.new(1, 0)})
end
local function stroke(Color, Thickness, Transparency)
return new("UIStroke", {
Color = Color,
Thickness = Thickness,
Transparency = Transparency or 0,
ApplyStrokeMode = Enum.ApplyStrokeMode.Border
})
end
local function seq(Colors)
local Keys = {}
for Index, Color in ipairs(Colors) do
Keys[Index] = ColorSequenceKeypoint.new((Index - 1) / (#Colors - 1), Color)
end
return ColorSequence.new(Keys)
end
local function tween(Obj, Time, Goal, Style, Direction)
local T = TweenService:Create(
Obj,
TweenInfo.new(Time, Style or Enum.EasingStyle.Quad, Direction or Enum.EasingDirection.Out),
Goal
)
T:Play()
return T
end
local function copyText(Text)
local Fn = setclipboard or toclipboard or (syn and syn.write_clipboard) or (Clipboard and Clipboard.set)
if not Fn then
return false
end
return (pcall(Fn, Text))
end
local Gui = new("ScreenGui", {
Name = "BysterDiscord",
ResetOnSpawn = false,
IgnoreGuiInset = true,
DisplayOrder = 100000,
ZIndexBehavior = Enum.ZIndexBehavior.Sibling
})
local function mount()
if gethui then
local Ok = pcall(function()
Gui.Parent = gethui()
end)
if Ok and Gui.Parent then
return
end
end
local Ok = pcall(function()
Gui.Parent = game:GetService("CoreGui")
end)
if Ok and Gui.Parent then
return
end
Gui.Parent = LocalPlayer:WaitForChild("PlayerGui")
end
mount()
local Holder = new("Frame", {
Name = "Holder",
AnchorPoint = Vector2.new(0.5, 0.5),
Position = UDim2.fromScale(0.5, 0.5),
Size = UDim2.fromOffset(500, 364),
BackgroundTransparency = 1,
Parent = Gui
})
local Fit = new("UIScale", {Parent = Holder})
local function refit()
local Camera = workspace.CurrentCamera
if not Camera then
return
end
local View = Camera.ViewportSize
Fit.Scale = math.clamp(math.min((View.X - 24) / 500, (View.Y - 24) / 364), 0.5, 1)
end
refit()
if workspace.CurrentCamera then
bind(workspace.CurrentCamera:GetPropertyChangedSignal("ViewportSize"), refit)
end
local Root = new("Frame", {
Name = "Root",
AnchorPoint = Vector2.new(0.5, 0.5),
Position = UDim2.fromScale(0.5, 0.5),
Size = UDim2.fromScale(1, 1),
BackgroundTransparency = 1,
Parent = Holder
})
local Pop = new("UIScale", {Scale = 0.85, Parent = Root})
for _, Layer in ipairs({{18, 0.92}, {11, 0.86}, {5, 0.78}}) do
new("Frame", {
AnchorPoint = Vector2.new(0.5, 0.5),
Position = UDim2.new(0.5, 0, 0.5, 8),
Size = UDim2.new(1, Layer[1] * 2, 1, Layer[1] * 2),
BackgroundColor3 = Color3.new(0, 0, 0),
BackgroundTransparency = Layer[2],
BorderSizePixel = 0,
ZIndex = 0,
Parent = Root
}, {corner(22 + Layer[1])})
end
local Main = new("CanvasGroup", {
Name = "Main",
Size = UDim2.fromScale(1, 1),
BackgroundColor3 = BG_BOTTOM,
BorderSizePixel = 0,
GroupTransparency = 1,
ZIndex = 1,
Parent = Root
}, {
corner(22),
new("Frame", {
Name = "Bg",
Size = UDim2.fromScale(1, 1),
BackgroundColor3 = WHITE,
BorderSizePixel = 0,
ZIndex = 1
}, {
new("UIGradient", {Color = ColorSequence.new(BG_TOP, BG_BOTTOM), Rotation = 65})
})
})
local MainStroke = stroke(WHITE, 2, 0)
MainStroke.Parent = Main
local StrokeGrad = new("UIGradient", {Color = seq({PINK, YELLOW, CYAN, PINK}), Parent = MainStroke})
local Blobs = {}
local Header = new("Frame", {
Name = "Header",
Size = UDim2.new(1, 0, 0, 78),
BackgroundTransparency = 1,
ZIndex = 2,
Parent = Main
})
local Logo = new("Frame", {
Position = UDim2.fromOffset(22, 16),
Size = UDim2.fromOffset(50, 50),
BackgroundColor3 = WHITE,
BorderSizePixel = 0,
ZIndex = 3,
Parent = Header
}, {corner(15), stroke(WHITE, 1.5, 0.55)})
local LogoGrad = new("UIGradient", {Color = seq({PINK, YELLOW, CYAN}), Rotation = 45, Parent = Logo})
new("TextLabel", {
Size = UDim2.fromScale(1, 1),
BackgroundTransparency = 1,
Text = "B",
Font = Enum.Font.GothamBlack,
TextSize = 30,
TextColor3 = WHITE,
ZIndex = 4,
Parent = Logo
})
local Title = new("TextLabel", {
Position = UDim2.fromOffset(84, 14),
Size = UDim2.fromOffset(280, 30),
BackgroundTransparency = 1,
Text = "BYSTER HUB",
Font = Enum.Font.GothamBlack,
TextSize = 26,
TextColor3 = WHITE,
TextXAlignment = Enum.TextXAlignment.Left,
ZIndex = 3,
Parent = Header
})
local TitleGrad = new("UIGradient", {Color = seq({PINK, CYAN}), Parent = Title})
new("TextLabel", {
Position = UDim2.fromOffset(86, 45),
Size = UDim2.fromOffset(300, 18),
BackgroundTransparency = 1,
Text = "Official Discord • Free Forever",
Font = Enum.Font.GothamMedium,
TextSize = 13,
TextColor3 = Color3.fromRGB(232, 228, 255),
TextStrokeColor3 = Color3.new(0, 0, 0),
TextStrokeTransparency = 0.65,
TextXAlignment = Enum.TextXAlignment.Left,
ZIndex = 3,
Parent = Header
})
local Close = new("TextButton", {
Position = UDim2.fromOffset(446, 18),
Size = UDim2.fromOffset(32, 32),
BackgroundColor3 = WHITE,
BackgroundTransparency = 0.88,
BorderSizePixel = 0,
AutoButtonColor = false,
Text = "X",
Font = Enum.Font.GothamBold,
TextSize = 14,
TextColor3 = WHITE,
ZIndex = 4,
Parent = Header
}, {round()})
local Badge = new("Frame", {
AnchorPoint = Vector2.new(0.5, 0.5),
Position = UDim2.fromOffset(122, 101),
Size = UDim2.fromOffset(200, 26),
BackgroundColor3 = WHITE,
BorderSizePixel = 0,
ZIndex = 3,
Parent = Main
}, {round()})
new("UIGradient", {Color = seq({YELLOW, PINK}), Parent = Badge})
local BadgeScale = new("UIScale", {Parent = Badge})
new("TextLabel", {
Size = UDim2.fromScale(1, 1),
BackgroundTransparency = 1,
Text = "100% FREE • BEST SCRIPT",
Font = Enum.Font.GothamBlack,
TextSize = 12,
TextColor3 = Color3.fromRGB(38, 12, 64),
ZIndex = 4,
Parent = Badge
})
local Headline = new("TextLabel", {
Position = UDim2.fromOffset(22, 124),
Size = UDim2.fromOffset(456, 34),
BackgroundTransparency = 1,
Text = "THE BEST SCRIPT. 100% FREE.",
Font = Enum.Font.GothamBlack,
TextSize = 24,
TextColor3 = WHITE,
TextXAlignment = Enum.TextXAlignment.Left,
ZIndex = 3,
Parent = Main
})
new("UIGradient", {Color = seq({WHITE, CYAN}), Parent = Headline})
new("Frame", {
Position = UDim2.fromOffset(22, 162),
Size = UDim2.fromOffset(456, 70),
BackgroundColor3 = Color3.fromRGB(0, 0, 0),
BackgroundTransparency = 0.3,
BorderSizePixel = 0,
ZIndex = 2,
Parent = Main
}, {corner(14), stroke(WHITE, 1, 0.88)})
new("TextLabel", {
Position = UDim2.fromOffset(38, 171),
Size = UDim2.fromOffset(424, 56),
BackgroundTransparency = 1,
RichText = true,
TextWrapped = true,
Text = 'The script is located ONLY in our Discord channel. '
.. 'It is completely free and '
.. 'the best — just join the Discord server.',
Font = Enum.Font.GothamMedium,
TextSize = 16,
LineHeight = 1.1,
TextColor3 = Color3.fromRGB(255, 255, 255),
TextStrokeColor3 = Color3.new(0, 0, 0),
TextStrokeTransparency = 0.35,
TextXAlignment = Enum.TextXAlignment.Left,
TextYAlignment = Enum.TextYAlignment.Top,
ZIndex = 3,
Parent = Main
})
local Card = new("Frame", {
Position = UDim2.fromOffset(22, 244),
Size = UDim2.fromOffset(456, 56),
BackgroundColor3 = Color3.fromRGB(8, 9, 14),
BackgroundTransparency = 0.1,
BorderSizePixel = 0,
ZIndex = 3,
Parent = Main
}, {corner(16)})
local CardStroke = stroke(WHITE, 2, 0)
CardStroke.Parent = Card
local CardGrad = new("UIGradient", {Color = seq({CYAN, PINK, YELLOW, CYAN}), Parent = CardStroke})
new("TextLabel", {
Position = UDim2.fromOffset(16, 6),
Size = UDim2.fromOffset(200, 14),
BackgroundTransparency = 1,
Text = "DISCORD INVITE LINK",
Font = Enum.Font.GothamBold,
TextSize = 11,
TextColor3 = Color3.fromRGB(205, 200, 248),
TextXAlignment = Enum.TextXAlignment.Left,
ZIndex = 4,
Parent = Card
})
local LinkBox = new("TextBox", {
Position = UDim2.fromOffset(16, 22),
Size = UDim2.fromOffset(300, 28),
BackgroundTransparency = 1,
ClearTextOnFocus = false,
Text = INVITE,
Font = Enum.Font.GothamBold,
TextSize = 17,
TextColor3 = CYAN,
TextXAlignment = Enum.TextXAlignment.Left,
ClipsDescendants = true,
ZIndex = 4,
Parent = Card
})
local CopyBtn = new("TextButton", {
Position = UDim2.fromOffset(330, 8),
Size = UDim2.fromOffset(118, 40),
BackgroundColor3 = WHITE,
BorderSizePixel = 0,
AutoButtonColor = false,
Text = "",
ZIndex = 4,
Parent = Card
}, {corner(12), stroke(WHITE, 1.5, 0.6)})
local CopyGrad = new("UIGradient", {Color = seq({PINK, BLURPLE}), Rotation = 20, Parent = CopyBtn})
local CopyScale = new("UIScale", {Parent = CopyBtn})
local CopyLabel = new("TextLabel", {
Size = UDim2.fromScale(1, 1),
BackgroundTransparency = 1,
Text = "COPY",
Font = Enum.Font.GothamBlack,
TextSize = 15,
TextColor3 = WHITE,
TextStrokeColor3 = Color3.new(0, 0, 0),
TextStrokeTransparency = 0.7,
ZIndex = 5,
Parent = CopyBtn
})
new("TextLabel", {
Position = UDim2.fromOffset(22, 308),
Size = UDim2.fromOffset(456, 16),
BackgroundTransparency = 1,
Text = "Tap the link to select it, or press COPY.",
Font = Enum.Font.GothamMedium,
TextSize = 12,
TextColor3 = Color3.fromRGB(220, 215, 252),
TextStrokeColor3 = Color3.new(0, 0, 0),
TextStrokeTransparency = 0.65,
ZIndex = 3,
Parent = Main
})
new("Frame", {
Position = UDim2.fromOffset(22, 330),
Size = UDim2.fromOffset(456, 1),
BackgroundColor3 = WHITE,
BackgroundTransparency = 0.88,
BorderSizePixel = 0,
ZIndex = 3,
Parent = Main
})
new("TextLabel", {
Position = UDim2.fromOffset(22, 336),
Size = UDim2.fromOffset(456, 20),
BackgroundTransparency = 1,
Text = BRAND,
Font = Enum.Font.GothamBold,
TextSize = 13,
TextColor3 = Color3.fromRGB(248, 245, 255),
ZIndex = 3,
Parent = Main
})
bind(LinkBox:GetPropertyChangedSignal("Text"), function()
if LinkBox.Text ~= INVITE then
LinkBox.Text = INVITE
end
end)
bind(LinkBox.Focused, function()
task.defer(function()
pcall(function()
LinkBox.CursorPosition = #LinkBox.Text + 1
LinkBox.SelectionStart = 1
end)
end)
end)
local CopyToken = 0
bind(CopyBtn.MouseButton1Click, function()
local Ok = copyText(INVITE)
CopyToken += 1
local Token = CopyToken
if Ok then
CopyLabel.Text = "COPIED!"
CopyGrad.Color = seq({GREEN, CYAN})
else
CopyLabel.Text = "CTRL + C"
CopyGrad.Color = seq({YELLOW, PINK})
LinkBox:CaptureFocus()
end
task.delay(1.8, function()
if CopyToken == Token and CopyBtn.Parent then
CopyLabel.Text = "COPY"
CopyGrad.Color = seq({PINK, BLURPLE})
end
end)
end)
bind(CopyBtn.MouseEnter, function()
tween(CopyScale, 0.15, {Scale = 1.06})
end)
bind(CopyBtn.MouseLeave, function()
tween(CopyScale, 0.15, {Scale = 1})
end)
bind(CopyBtn.MouseButton1Down, function()
tween(CopyScale, 0.08, {Scale = 0.95})
end)
bind(CopyBtn.MouseButton1Up, function()
tween(CopyScale, 0.12, {Scale = 1.06})
end)
local function destroy()
for _, Connection in ipairs(Connections) do
pcall(Connection.Disconnect, Connection)
end
table.clear(Connections)
if Gui then
Gui:Destroy()
end
if Env.BysterDiscord and Env.BysterDiscord.Destroy == destroy then
Env.BysterDiscord = nil
end
end
local Closing = false
local function close()
if Closing then
return
end
Closing = true
tween(Pop, 0.25, {Scale = 0.8}, Enum.EasingStyle.Back, Enum.EasingDirection.In)
tween(Main, 0.25, {GroupTransparency = 1})
task.delay(0.3, destroy)
end
bind(Close.MouseButton1Click, close)
bind(Close.MouseEnter, function()
tween(Close, 0.15, {BackgroundColor3 = Color3.fromRGB(255, 80, 110), BackgroundTransparency = 0.15})
end)
bind(Close.MouseLeave, function()
tween(Close, 0.15, {BackgroundColor3 = WHITE, BackgroundTransparency = 0.88})
end)
Env.BysterDiscord = {Destroy = destroy}
local Dragging, DragStart, StartPos = false, nil, nil
bind(Header.InputBegan, function(Input)
if Input.UserInputType == Enum.UserInputType.MouseButton1 or Input.UserInputType == Enum.UserInputType.Touch then
Dragging = true
DragStart = Input.Position
StartPos = Holder.Position
Input.Changed:Connect(function()
if Input.UserInputState == Enum.UserInputState.End then
Dragging = false
end
end)
end
end)
bind(UserInputService.InputChanged, function(Input)
if Dragging and (Input.UserInputType == Enum.UserInputType.MouseMovement or Input.UserInputType == Enum.UserInputType.Touch) then
local Delta = Input.Position - DragStart
Holder.Position = UDim2.new(
StartPos.X.Scale, StartPos.X.Offset + Delta.X,
StartPos.Y.Scale, StartPos.Y.Offset + Delta.Y
)
end
end)
tween(Pop, 0.5, {Scale = 1}, Enum.EasingStyle.Back, Enum.EasingDirection.Out)
tween(Main, 0.4, {GroupTransparency = 0})
local Start = os.clock()
bind(RunService.RenderStepped, function()
local T = os.clock() - Start
StrokeGrad.Rotation = (T * 50) % 360
CardGrad.Rotation = (T * -70) % 360
LogoGrad.Rotation = (T * 90) % 360
TitleGrad.Offset = Vector2.new(math.sin(T * 1.2) * 0.25, 0)
BadgeScale.Scale = 1 + math.sin(T * 3) * 0.03
for _, B in ipairs(Blobs) do
B.Obj.Position = UDim2.new(
B.AX, math.sin(T * B.Speed + B.Phase) * B.Amp,
B.AY, math.cos(T * B.Speed + B.Phase) * B.Amp
)
end
end)