Run it
Copy the script and paste it into your executor.
Players = :()
TeleportService = :()
TweenService = :()
UserInputService = :()
RunService = :()
plr = Players.LocalPlayer
(t, m, d)
(()
:():(,
{Title = .. t, Text = m, Duration = d })
)
C = {
BG = .(, , ),
PANEL = .(, , ),
DARK = .(, , ),
ACC = .(, , ),
ACC2 = .(, , ),
ON = .(, , ),
OFF = .(, , ),
TXT = .(, , ),
TXTM = .(, , ),
WHT = .(, , ),
RED = .(, , ),
GRN = .(, , ),
BLUE = .(, , ),
GOLD = .(, , ),
TEAL = .(, , ),
PINK = .(, , ),
ORANGE= .(, , ),
}
(username)
username username ==
lname = username:()
_, p2 (Players:())
p2.Name:() == lname p2.DisplayName:() == lname
p2.UserId
ok, result = (()
Players:(username)
)
ok result result
variations = {
username,
username:(,):() .. username:():(),
username:(),
username:(),
}
_, v (variations)
ok2, result2 = (()
Players:(v)
)
ok2 result2 result2
(userId)
userId
_, p2 (Players:())
p2.UserId == userId p2.Name
ok, result = (()
Players:(userId)
)
ok result result
(userId)
userId
_, p2 (Players:())
p2.UserId == userId p2.DisplayName
(userId)
(placeId)
ok, info = (()
:():(placeId, .InfoType.Asset)
)
ok info info.Name info.Name
.. (placeId)
(url)
ok, res = (() :(url) )
ok (res) == #res > res
(placeId, limit)
limit = limit
url = .. (placeId) ..
..
(limit)
data = (url)
data {}
servers = {}
block data:()
id = block:()
playing = (block:())
maxP = (block:())
id id ~=
.(servers, {id = id, playing = playing, maxPlayers = maxP})
servers
(userId)
_, p2 (Players:())
p2.UserId == userId
{ placeId = .PlaceId, jobId = .JobId, inThisServer = }
(placeId)
(, .. (placeId) .. , )
ok, err = (() TeleportService:(placeId, plr) )
ok (, (err):(, ), )
(placeId, jobId)
(, , )
ok, err = (()
TeleportService:(placeId, jobId, plr)
)
ok (, (err):(, ), )
(placeId)
placeId = placeId .PlaceId
servers = (placeId, )
eligible = {}
_, sv (servers)
sv.id ~= .JobId sv.playing < sv.maxPlayers
.(eligible, sv)
#eligible >
sv = eligible[.(, #eligible)]
(placeId, sv.id)
(placeId)
sg = .()
sg.Name = ; sg.ResetOnSpawn = ; sg.ZIndexBehavior = .ZIndexBehavior.Sibling
_ok2, _hh = (() () )
(() sg.Parent = (_ok2 _hh) plr:(, ) )
sg.Parent sg.Parent = plr.PlayerGui
win = .(, sg)
win.Size = .(, , , ); win.Position = .(, -, , -)
win.BackgroundColor3 = C.BG; win.BorderSizePixel =
win.Active = ; win.Draggable =
.(, win).CornerRadius = .(, )
winStr = .(, win); winStr.Color = C.ACC; winStr.Thickness =
stripe = .(, win)
stripe.Size = .(, , , ); stripe.BackgroundColor3 = C.ACC; stripe.BorderSizePixel =
strG = .(, stripe)
strG.Color = ColorSequence.({
ColorSequenceKeypoint.(, .(, , )),
ColorSequenceKeypoint.(, .(, , )),
ColorSequenceKeypoint.(, .(, , )),
})
tBar = .(, win)
tBar.Size = .(, , , ); tBar.Position = .(, , , )
tBar.BackgroundColor3 = C.PANEL; tBar.BorderSizePixel =
tTitle = .(, tBar)
tTitle.Size = .(, -, , ); tTitle.Position = .(, , , )
tTitle.BackgroundTransparency = ; tTitle.Font = .Font.GothamBold
tTitle.TextSize = ; tTitle.TextColor3 = C.TXT
tTitle.TextXAlignment = .TextXAlignment.Left; tTitle.Text =
tSub = .(, tBar)
tSub.Size = .(, -, , ); tSub.Position = .(, , , )
tSub.BackgroundTransparency = ; tSub.Font = .Font.Gotham
tSub.TextSize = ; tSub.TextColor3 = C.TXTM
tSub.TextXAlignment = .TextXAlignment.Left; tSub.Text =
minBtn = .(, tBar)
minBtn.Size = .(, , , ); minBtn.Position = .(, -, , -)
minBtn.BackgroundColor3 = .(, , ); minBtn.BorderSizePixel =
minBtn.Font = .Font.GothamBold; minBtn.TextSize = ; minBtn.TextColor3 = C.TXT
minBtn.Text = ; minBtn.AutoButtonColor =
.(, minBtn).CornerRadius = .(, )
minBtn.MouseEnter:(()
TweenService:(minBtn, TweenInfo.(), {BackgroundColor3 = C.ACC}):()
)
minBtn.MouseLeave:(()
TweenService:(minBtn, TweenInfo.(), {BackgroundColor3 = .(, , )}):()
)
scroll = .(, win)
scroll.Size = .(, -, , -); scroll.Position = .(, , , )
scroll.BackgroundTransparency = ; scroll.BorderSizePixel =
scroll.ScrollBarThickness = ; scroll.ScrollBarImageColor3 = C.ACC
scroll.AutomaticCanvasSize = .AutomaticSize.Y; scroll.CanvasSize = .(, , , )
layout = .(, scroll)
layout.Padding = .(, ); layout.SortOrder = .SortOrder.LayoutOrder
sPad = .(, scroll)
sPad.PaddingLeft = .(, ); sPad.PaddingRight = .(, )
sPad.PaddingTop = .(, ); sPad.PaddingBottom = .(, )
minimised =
minBtn.MouseButton1Click:(()
minimised = minimised
TweenService:(win, TweenInfo.(, .EasingStyle.Quart), {
Size = minimised .(, , , ) .(, , , )
}):()
scroll.Visible = minimised
minBtn.Text = minimised
)
ord =
() ord = ord + ; ord
(txt)
f = .(, scroll)
f.Size = .(, , , ); f.BackgroundTransparency = ; f.LayoutOrder = ()
l = .(, f)
l.Size = .(, , , ); l.BackgroundTransparency =
l.Text = .. txt:(); l.Font = .Font.GothamBold
l.TextSize = ; l.TextColor3 = C.ACC2; l.TextXAlignment = .TextXAlignment.Left
ln = .(, f)
ln.Size = .(, -, , ); ln.Position = .(, , , -)
ln.BackgroundColor3 = C.ACC; ln.BorderSizePixel = ; ln.BackgroundTransparency =
(label, col, fn)
b = .(, scroll)
b.Size = .(, , , ); b.BackgroundColor3 = col C.ACC
b.BorderSizePixel = ; b.Font = .Font.GothamSemibold; b.TextSize =
b.TextColor3 = C.WHT; b.Text = label; b.LayoutOrder = (); b.AutoButtonColor =
.(, b).CornerRadius = .(, )
bc = col C.ACC
b.MouseEnter:(()
TweenService:(b, TweenInfo.(), {BackgroundColor3 = .(
.(bc.R+,), .(bc.G+,), .(bc.B+,))}):()
)
b.MouseLeave:(()
TweenService:(b, TweenInfo.(), {BackgroundColor3 = bc}):()
)
b.MouseButton1Click:(fn); b
(txt)
f = .(, scroll)
f.Size = .(, , , ); f.BackgroundTransparency = ; f.LayoutOrder = ()
l = .(, f)
l.Size = .(, , , ); l.BackgroundTransparency =
l.Text = .. txt; l.Font = .Font.Gotham; l.TextSize =
l.TextColor3 = C.TXTM; l.TextXAlignment = .TextXAlignment.Left
(lbl, ph, btnTxt, btnCol, fn)
row = .(, scroll)
row.Size = .(, , , ); row.BackgroundColor3 = C.PANEL
row.BorderSizePixel = ; row.LayoutOrder = ()
.(, row).CornerRadius = .(, )
lLabel = .(, row)
lLabel.Size = .(, , , ); lLabel.Position = .(, , , )
lLabel.BackgroundTransparency = ; lLabel.Font = .Font.Gotham; lLabel.TextSize =
lLabel.TextColor3 = C.TXTM; lLabel.TextXAlignment = .TextXAlignment.Left
lLabel.Text = lbl
btnW = btnTxt
box = .(, row)
box.Size = .(, - - (btnTxt (btnW + ) ), , )
box.Position = .(, , , -)
box.BackgroundColor3 = C.DARK; box.BorderSizePixel =
box.Font = .Font.GothamSemibold; box.TextSize = ; box.TextColor3 = C.TXT
box.PlaceholderText = ph; box.PlaceholderColor3 = C.TXTM
box.Text = ; box.ClearTextOnFocus =
.(, box).CornerRadius = .(, )
btnTxt fn
btn = .(, row)
btn.Size = .(, btnW, , ); btn.Position = .(, -(btnW+), , -)
btn.BackgroundColor3 = btnCol C.ACC; btn.BorderSizePixel =
btn.Font = .Font.GothamBold; btn.TextSize = ; btn.TextColor3 = C.WHT
btn.Text = btnTxt; btn.AutoButtonColor =
.(, btn).CornerRadius = .(, )
bc = btnCol C.ACC
btn.MouseEnter:(()
TweenService:(btn, TweenInfo.(), {BackgroundColor3 = .(
.(bc.R+,), .(bc.G+,), .(bc.B+,))}):()
)
btn.MouseLeave:(()
TweenService:(btn, TweenInfo.(), {BackgroundColor3 = bc}):()
)
btn.MouseButton1Click:(() (box.Text) )
box.FocusLost:((enter) enter (box.Text) )
box
(h, defaultTxt)
f = .(, scroll)
f.Size = .(, , , h ); f.BackgroundColor3 = C.DARK
f.BorderSizePixel = ; f.LayoutOrder = ()
.(, f).CornerRadius = .(, )
fStr = .(, f)
fStr.Color = C.ACC; fStr.Thickness = ; fStr.Transparency =
lbl = .(, f)
lbl.Size = .(, -, , -); lbl.Position = .(, , , )
lbl.BackgroundTransparency = ; lbl.Font = .Font.Gotham; lbl.TextSize =
lbl.TextColor3 = C.TXTM; lbl.TextWrapped = ; lbl.TextYAlignment = .TextYAlignment.Top
lbl.TextXAlignment = .TextXAlignment.Left
lbl.Text = defaultTxt
f, lbl
()
()
placeBox = (, , , C.ACC, (txt)
id = (txt:())
id (, , );
.(()
name = (id)
(, .. name, )
.()
(id)
)
)
()
()
specPlaceBox = (, , , , )
specJobBox = (, , , C.TEAL, (txt)
jid = txt:()
jid == (, , );
pid = ((specPlaceBox.Text ):()) .PlaceId
.(() (pid, jid) )
)
(, .(, , ), ()
(() (.JobId) )
(, , )
)
(, .(, , ), ()
(() ((.PlaceId)) )
(, .. (.PlaceId), )
)
()
()
lobbyContainer = .(, scroll)
lobbyContainer.Size = .(, , , ); lobbyContainer.BackgroundColor3 = C.DARK
lobbyContainer.BorderSizePixel = ; lobbyContainer.LayoutOrder = ()
.(, lobbyContainer).CornerRadius = .(, )
lcStr = .(, lobbyContainer)
lcStr.Color = C.ACC; lcStr.Thickness = ; lcStr.Transparency =
lobbyScroll = .(, lobbyContainer)
lobbyScroll.Size = .(, -, , -); lobbyScroll.Position = .(, , , )
lobbyScroll.BackgroundTransparency = ; lobbyScroll.BorderSizePixel =
lobbyScroll.ScrollBarThickness = ; lobbyScroll.ScrollBarImageColor3 = C.ACC
lobbyScroll.AutomaticCanvasSize = .AutomaticSize.Y; lobbyScroll.CanvasSize = .(,,,)
.(, lobbyScroll).CornerRadius = .(, )
llLayout = .(, lobbyScroll)
llLayout.Padding = .(, ); llLayout.SortOrder = .SortOrder.LayoutOrder
llPad = .(, lobbyScroll)
llPad.PaddingLeft = .(, ); llPad.PaddingRight = .(, )
llPad.PaddingTop = .(, ); llPad.PaddingBottom = .(, )
()
_, ch (lobbyScroll:())
ch:() ch:()
idx, p2 (Players:())
isMe = p2 == plr
row = .(, lobbyScroll)
row.Size = .(, , , )
row.BackgroundColor3 = isMe .(, , ) C.PANEL
row.BorderSizePixel = ; row.LayoutOrder = idx
.(, row).CornerRadius = .(, )
isMe .(, row).Color = C.ON
nameLbl = .(, row)
nameLbl.Size = .(, -, , ); nameLbl.Position = .(, , , )
nameLbl.BackgroundTransparency = ; nameLbl.Font = .Font.GothamBold; nameLbl.TextSize =
nameLbl.TextColor3 = isMe C.ON C.TXT; nameLbl.TextXAlignment = .TextXAlignment.Left
nameLbl.Text = (isMe ) .. .. p2.Name .. .. p2.DisplayName ..
idLbl = .(, row)
idLbl.Size = .(, -, , ); idLbl.Position = .(, , , )
idLbl.BackgroundTransparency = ; idLbl.Font = .Font.Gotham; idLbl.TextSize =
idLbl.TextColor3 = C.TXTM; idLbl.TextXAlignment = .TextXAlignment.Left
idLbl.Text = .. p2.UserId .. .. .JobId:(,) ..
capP = p2
capJid = .JobId
capPid = .PlaceId
b1 = .(, row)
b1.Size = .(, , , ); b1.Position = .(, , , -)
b1.BackgroundColor3 = .(, , ); b1.BorderSizePixel =
b1.Font = .Font.GothamBold; b1.TextSize = ; b1.TextColor3 = C.TXTM
b1.Text = ; b1.AutoButtonColor =
.(, b1).CornerRadius = .(, )
b1.MouseButton1Click:(()
(() ((capP.UserId)) )
o = b1.Text; b1.Text =
TweenService:(b1, TweenInfo.(), {BackgroundColor3 = C.ACC}):()
(, .. (capP.UserId), )
.(, ()
b1 b1.Parent b1.Text = o
TweenService:(b1, TweenInfo.(), {BackgroundColor3 = .(,,)}):()
)
)
b2 = .(, row)
b2.Size = .(, , , ); b2.Position = .(, , , -)
b2.BackgroundColor3 = .(, , ); b2.BorderSizePixel =
b2.Font = .Font.GothamBold; b2.TextSize = ; b2.TextColor3 = C.TXTM
b2.Text = ; b2.AutoButtonColor =
.(, b2).CornerRadius = .(, )
b2.MouseButton1Click:(()
(() (capP.Name) )
o = b2.Text; b2.Text =
TweenService:(b2, TweenInfo.(), {BackgroundColor3 = C.ACC}):()
.(, ()
b2 b2.Parent b2.Text = o
TweenService:(b2, TweenInfo.(), {BackgroundColor3 = .(,,)}):()
)
)
b3 = .(, row)
b3.Size = .(, , , ); b3.Position = .(, , , -)
b3.BackgroundColor3 = .(, , ); b3.BorderSizePixel =
b3.Font = .Font.GothamBold; b3.TextSize = ; b3.TextColor3 = C.TEAL
b3.Text = ; b3.AutoButtonColor =
.(, b3).CornerRadius = .(, )
b3.MouseButton1Click:(()
(() (capJid) )
specJobBox.Text = capJid
o = b3.Text; b3.Text =
TweenService:(b3, TweenInfo.(), {BackgroundColor3 = C.TEAL}):()
(, , )
.(, ()
b3 b3.Parent b3.Text = o
TweenService:(b3, TweenInfo.(), {BackgroundColor3 = .(,,)}):()
)
)
isMe
b4 = .(, row)
b4.Size = .(, , , ); b4.Position = .(, -, , -)
b4.BackgroundColor3 = .(, , ); b4.BorderSizePixel =
b4.Font = .Font.GothamBold; b4.TextSize = ; b4.TextColor3 = C.ON
b4.Text = ; b4.AutoButtonColor =
.(, b4).CornerRadius = .(, )
b4.MouseButton1Click:(()
b4.Text =
.(() (capPid, capJid) )
)
()
Players.PlayerAdded:(() .(, buildLobbyList) )
Players.PlayerRemoving:(() .(, buildLobbyList) )
()
()
lastFoundPlaceId =
lastFoundJobId =
lastFoundName =
playerResult, playerResultLbl = (, )
jobBar = .(, scroll)
jobBar.Size = .(, , , )
jobBar.BackgroundColor3 = .(, , )
jobBar.BorderSizePixel = ; jobBar.LayoutOrder = (); jobBar.Visible =
.(, jobBar).CornerRadius = .(, )
jbStr = .(, jobBar)
jbStr.Color = C.ON; jbStr.Thickness = ; jbStr.Transparency =
jbLabel = .(, jobBar)
jbLabel.Size = .(, , , ); jbLabel.Position = .(, , , )
jbLabel.BackgroundTransparency = ; jbLabel.Font = .Font.GothamBold; jbLabel.TextSize =
jbLabel.TextColor3 = C.ON; jbLabel.TextXAlignment = .TextXAlignment.Left
jbLabel.Text =
jbCopyBtn = .(, jobBar)
jbCopyBtn.Size = .(, , , ); jbCopyBtn.Position = .(, , , -)
jbCopyBtn.BackgroundColor3 = .(, , ); jbCopyBtn.BorderSizePixel =
jbCopyBtn.Font = .Font.GothamBold; jbCopyBtn.TextSize = ; jbCopyBtn.TextColor3 = C.TEAL
jbCopyBtn.Text = ; jbCopyBtn.AutoButtonColor =
.(, jbCopyBtn).CornerRadius = .(, )
jbCopyBtn.MouseEnter:(()
TweenService:(jbCopyBtn, TweenInfo.(), {BackgroundColor3 = .(, , )}):()
)
jbCopyBtn.MouseLeave:(()
TweenService:(jbCopyBtn, TweenInfo.(), {BackgroundColor3 = .(, , )}):()
)
jbCopyBtn.MouseButton1Click:(()
lastFoundJobId
(() (lastFoundJobId) )
specJobBox.Text = lastFoundJobId
o = jbCopyBtn.Text; jbCopyBtn.Text =
TweenService:(jbCopyBtn, TweenInfo.(), {BackgroundColor3 = C.TEAL}):()
(, .. (lastFoundName ) .. , )
.(, ()
jbCopyBtn jbCopyBtn.Parent jbCopyBtn.Text = o
TweenService:(jbCopyBtn, TweenInfo.(), {BackgroundColor3 = .(,,)}):()
)
)
jbJoinBtn = .(, jobBar)
jbJoinBtn.Size = .(, , , ); jbJoinBtn.Position = .(, -, , -)
jbJoinBtn.BackgroundColor3 = .(, , ); jbJoinBtn.BorderSizePixel =
jbJoinBtn.Font = .Font.GothamBold; jbJoinBtn.TextSize = ; jbJoinBtn.TextColor3 = C.ON
jbJoinBtn.Text = ; jbJoinBtn.AutoButtonColor =
.(, jbJoinBtn).CornerRadius = .(, )
jbJoinBtn.MouseEnter:(()
TweenService:(jbJoinBtn, TweenInfo.(), {BackgroundColor3 = .(, , )}):()
)
jbJoinBtn.MouseLeave:(()
TweenService:(jbJoinBtn, TweenInfo.(), {BackgroundColor3 = .(, , )}):()
)
jbJoinBtn.MouseButton1Click:(()
lastFoundJobId lastFoundPlaceId
(, , );
jbJoinBtn.Text =
.(() (lastFoundPlaceId, lastFoundJobId) )
.(, ()
jbJoinBtn jbJoinBtn.Parent jbJoinBtn.Text =
)
)
playerBox = (, , , C.GOLD, (txt)
name = txt:()
name == (, , );
playerResultLbl.Text = .. name ..
playerResultLbl.TextColor3 = C.TXTM
jobBar.Visible =
.(()
userId = (name)
userId
lobbyNames = {}
_, p2 (Players:()) .(lobbyNames, .. p2.Name)
playerResultLbl.Text =
.. name .. ..
..
.. (#lobbyNames > .(lobbyNames, ) )
playerResultLbl.TextColor3 = C.OFF
(, , )
confirmedName = (userId) name
displayName = (userId) confirmedName
presInfo = (userId)
lastFoundName = confirmedName
presInfo presInfo.inThisServer
lastFoundPlaceId = .PlaceId
lastFoundJobId = .JobId
specJobBox.Text = .JobId
playerResultLbl.Text =
.. confirmedName .. .. displayName .. ..
.. (userId) .. ..
..
.. .JobId
playerResultLbl.TextColor3 = C.ON
jobBar.Visible =
jbLabel.Text = .. confirmedName ..
jbCopyBtn.Text =
jbJoinBtn.Text =
(() (.JobId) )
(, .. confirmedName .. , )
lastFoundPlaceId =
lastFoundJobId =
playerResultLbl.Text =
.. confirmedName .. .. displayName .. ..
.. (userId) .. ..
..
playerResultLbl.TextColor3 = C.TXT
jobBar.Visible =
(() ((userId)) )
(, .. confirmedName .. .. (userId), )
)
)
()
()
utoiResult, utoiResultLbl = (, )
utoiBox = (, , , C.GOLD, (txt)
name = txt:()
name ==
utoiResultLbl.Text = .. name .. ; utoiResultLbl.TextColor3 = C.TXTM
.(()
id = (name)
id
confirmed = (id) name
utoiResultLbl.Text = .. confirmed .. .. (id)
utoiResultLbl.TextColor3 = C.TXT
(() ((id)) )
(, .. confirmed .. .. (id) .. , )
utoiResultLbl.Text = .. name ..
utoiResultLbl.TextColor3 = C.OFF
(, , )
)
)
itonResult, itonResultLbl = (, )
itonBox = (, , , C.GOLD, (txt)
id = (txt:())
id (, , );
itonResultLbl.Text = .. id .. ; itonResultLbl.TextColor3 = C.TXTM
.(()
name = (id)
name
itonResultLbl.Text = .. id .. .. name
itonResultLbl.TextColor3 = C.TXT
(() (name) )
(, .. name .. , )
itonResultLbl.Text = .. (id)
itonResultLbl.TextColor3 = C.OFF
)
)
()
()
browserPlaceBox = (, , , , )
browserContainer = .(, scroll)
browserContainer.Size = .(, , , ); browserContainer.BackgroundColor3 = C.DARK
browserContainer.BorderSizePixel = ; browserContainer.LayoutOrder = ()
.(, browserContainer).CornerRadius = .(, )
bcStr = .(, browserContainer)
bcStr.Color = C.ACC; bcStr.Thickness = ; bcStr.Transparency =
bcHeader = .(, browserContainer)
bcHeader.Size = .(, , , ); bcHeader.BackgroundColor3 = C.PANEL; bcHeader.BorderSizePixel =
.(, bcHeader).CornerRadius = .(, )
bcStatusLbl = .(, bcHeader)
bcStatusLbl.Size = .(, -, , ); bcStatusLbl.Position = .(, , , )
bcStatusLbl.BackgroundTransparency = ; bcStatusLbl.Font = .Font.GothamSemibold
bcStatusLbl.TextSize = ; bcStatusLbl.TextColor3 = C.TXTM
bcStatusLbl.TextXAlignment = .TextXAlignment.Left; bcStatusLbl.Text =
bcLoadBtn = .(, bcHeader)
bcLoadBtn.Size = .(, , , ); bcLoadBtn.Position = .(, -, , -)
bcLoadBtn.BackgroundColor3 = C.ACC; bcLoadBtn.BorderSizePixel =
bcLoadBtn.Font = .Font.GothamBold; bcLoadBtn.TextSize = ; bcLoadBtn.TextColor3 = C.WHT
bcLoadBtn.Text = ; bcLoadBtn.AutoButtonColor =
.(, bcLoadBtn).CornerRadius = .(, )
bcLoadBtn.MouseEnter:(()
TweenService:(bcLoadBtn, TweenInfo.(), {BackgroundColor3 = C.ACC2}):()
)
bcLoadBtn.MouseLeave:(()
TweenService:(bcLoadBtn, TweenInfo.(), {BackgroundColor3 = C.ACC}):()
)
serverListScroll = .(, browserContainer)
serverListScroll.Size = .(, -, , -); serverListScroll.Position = .(, , , )
serverListScroll.BackgroundColor3 = .(, , ); serverListScroll.BorderSizePixel =
serverListScroll.ScrollBarThickness = ; serverListScroll.ScrollBarImageColor3 = C.ACC
serverListScroll.AutomaticCanvasSize = .AutomaticSize.Y; serverListScroll.CanvasSize = .(,,,)
.(, serverListScroll).CornerRadius = .(, )
slLayout = .(, serverListScroll)
slLayout.Padding = .(, ); slLayout.SortOrder = .SortOrder.LayoutOrder
slPad = .(, serverListScroll)
slPad.PaddingLeft = .(, ); slPad.PaddingRight = .(, )
slPad.PaddingTop = .(, ); slPad.PaddingBottom = .(, )
(placeId, servers)
_, ch (serverListScroll:())
ch:() ch:()
#servers ==
noLbl = .(, serverListScroll)
noLbl.Size = .(, , , ); noLbl.BackgroundTransparency =
noLbl.Font = .Font.Gotham; noLbl.TextSize = ; noLbl.LayoutOrder =
noLbl.TextColor3 = C.TXTM; noLbl.TextXAlignment = .TextXAlignment.Center
noLbl.Text =
.(servers, (a, b) (a.playing ) < (b.playing ) )
idx, sv (servers)
fillPct = (sv.maxPlayers sv.maxPlayers > )
.((sv.playing / sv.maxPlayers) * )
isCurrent = sv.id == .JobId
row = .(, serverListScroll)
row.Size = .(, , , ); row.LayoutOrder = idx
row.BackgroundColor3 = isCurrent .(, , ) C.PANEL
row.BorderSizePixel =
.(, row).CornerRadius = .(, )
isCurrent
rs = .(, row)
rs.Color = C.ON; rs.Thickness = ; rs.Transparency =
topLbl = .(, row)
topLbl.Size = .(, -, , ); topLbl.Position = .(, , , )
topLbl.BackgroundTransparency = ; topLbl.Font = .Font.GothamSemibold; topLbl.TextSize =
topLbl.TextColor3 = isCurrent C.ON C.TXT; topLbl.TextXAlignment = .TextXAlignment.Left
topLbl.Text = (isCurrent ) .. sv.playing .. .. (sv.maxPlayers ) .. .. fillPct ..
idLbl = .(, row)
idLbl.Size = .(, -, , ); idLbl.Position = .(, , , )
idLbl.BackgroundTransparency = ; idLbl.Font = .Font.Gotham; idLbl.TextSize =
idLbl.TextColor3 = C.TXTM; idLbl.TextXAlignment = .TextXAlignment.Left
idLbl.Text = .. sv.id:(, ) ..
idLbl.TextTruncate = .TextTruncate.AtEnd
barTrack = .(, row)
barTrack.Size = .(, , , ); barTrack.Position = .(, -, , )
barTrack.BackgroundColor3 = .(, , ); barTrack.BorderSizePixel =
.(, barTrack).CornerRadius = .(, )
barFill = .(, barTrack)
barFill.Size = .(, , fillPct / , )
barFill.Position = .(, , - fillPct / , )
barFill.BackgroundColor3 = fillPct >= C.OFF (fillPct >= C.GOLD C.ON)
barFill.BorderSizePixel =
.(, barFill).CornerRadius = .(, )
capSv = sv; capPid = placeId
cjBtn = .(, row)
cjBtn.Size = .(, , , ); cjBtn.Position = .(, -, , -)
cjBtn.BackgroundColor3 = .(, , ); cjBtn.BorderSizePixel =
cjBtn.Font = .Font.GothamBold; cjBtn.TextSize = ; cjBtn.TextColor3 = C.TEAL
cjBtn.Text = ; cjBtn.AutoButtonColor =
.(, cjBtn).CornerRadius = .(, )
cjBtn.MouseEnter:(()
TweenService:(cjBtn, TweenInfo.(), {BackgroundColor3 = .(, , )}):()
)
cjBtn.MouseLeave:(()
TweenService:(cjBtn, TweenInfo.(), {BackgroundColor3 = .(, , )}):()
)
cjBtn.MouseButton1Click:(()
(() (capSv.id) )
specJobBox.Text = capSv.id
lastFoundPlaceId = capPid
o = cjBtn.Text; cjBtn.Text =
TweenService:(cjBtn, TweenInfo.(), {BackgroundColor3 = C.TEAL}):()
(, , )
.(, ()
cjBtn cjBtn.Parent cjBtn.Text = o
TweenService:(cjBtn, TweenInfo.(), {BackgroundColor3 = .(,,)}):()
)
)
joinBtn = .(, row)
joinBtn.Size = .(, , , ); joinBtn.Position = .(, -, , -)
joinBtn.BackgroundColor3 = isCurrent C.GRN C.ACC
joinBtn.BorderSizePixel = ; joinBtn.Font = .Font.GothamBold
joinBtn.TextSize = ; joinBtn.TextColor3 = C.WHT
joinBtn.Text = isCurrent ; joinBtn.AutoButtonColor =
.(, joinBtn).CornerRadius = .(, )
joinBtn.MouseButton1Click:(()
capSv.id == .JobId (, , );
joinBtn.Text =
.(() (capPid, capSv.id) )
)
bcLoadBtn.MouseButton1Click:(()
pid = ((browserPlaceBox.Text ):()) .PlaceId
bcStatusLbl.Text = .. pid ..
bcLoadBtn.Text =
bcLoadBtn.BackgroundColor3 = .(, , )
.(()
servers = (pid, )
bcStatusLbl.Text = #servers .. .. pid
bcLoadBtn.Text =
bcLoadBtn.BackgroundColor3 = C.ACC
(pid, servers)
#servers >
(, .. #servers .. , )
(, .. pid, )
)
)
(userId)
url =
body = .. (userId) ..
ok, res = (()
:(url, body, )
)
ok res
presType = (res:())
lastLoc = res:()
placeId = res:()
gameId = res:()
presType == presType ==
, (placeId), gameId, lastLoc
presType ==
, , ,
, , ,
WATCH_FILE =
watchList = {}
()
(()
writefile
parts = {}
_, w (watchList)
.(parts, (w.userId) .. .. w.username)
(WATCH_FILE, .(parts, ))
)
()
(()
isfile readfile
(WATCH_FILE)
data = (WATCH_FILE)
line data:()
uid, uname = line:()
uid = (uid)
uid uname uname ~=
.(watchList, {userId = uid, username = uname, displayName = uname})
)
()
.(()
_, w (watchList)
dn = (w.userId)
dn w.displayName = dn
)
()
()
addWatchRow = .(, scroll)
addWatchRow.Size = .(, , , ); addWatchRow.BackgroundColor3 = C.PANEL
addWatchRow.BorderSizePixel = ; addWatchRow.LayoutOrder = ()
.(, addWatchRow).CornerRadius = .(, )
awLbl = .(, addWatchRow)
awLbl.Size = .(, , , ); awLbl.Position = .(, , , )
awLbl.BackgroundTransparency = ; awLbl.Font = .Font.Gotham; awLbl.TextSize =
awLbl.TextColor3 = C.TXTM; awLbl.TextXAlignment = .TextXAlignment.Left
awLbl.Text =
awBox = .(, addWatchRow)
awBox.Size = .(, -, , ); awBox.Position = .(, , , -)
awBox.BackgroundColor3 = C.DARK; awBox.BorderSizePixel =
awBox.Font = .Font.GothamSemibold; awBox.TextSize = ; awBox.TextColor3 = C.TXT
awBox.PlaceholderText = ; awBox.PlaceholderColor3 = C.TXTM
awBox.Text = ; awBox.ClearTextOnFocus =
.(, awBox).CornerRadius = .(, )
awAddBtn = .(, addWatchRow)
awAddBtn.Size = .(, , , ); awAddBtn.Position = .(, -, , -)
awAddBtn.BackgroundColor3 = C.ON; awAddBtn.BorderSizePixel =
awAddBtn.Font = .Font.GothamBold; awAddBtn.TextSize = ; awAddBtn.TextColor3 = .(,,)
awAddBtn.Text = ; awAddBtn.AutoButtonColor =
.(, awAddBtn).CornerRadius = .(, )
awAddBtn.MouseEnter:(()
TweenService:(awAddBtn, TweenInfo.(), {BackgroundColor3 = .(, , )}):()
)
awAddBtn.MouseLeave:(()
TweenService:(awAddBtn, TweenInfo.(), {BackgroundColor3 = C.ON}):()
)
watchContainer = .(, scroll)
watchContainer.Size = .(, , , )
watchContainer.BackgroundColor3 = C.DARK
watchContainer.BorderSizePixel = ; watchContainer.LayoutOrder = ()
.(, watchContainer).CornerRadius = .(, )
.(, watchContainer).Color = C.ACC
watchInner = .(, watchContainer)
watchInner.Size = .(, -, , -); watchInner.Position = .(, , , )
watchInner.BackgroundTransparency = ; watchInner.BorderSizePixel =
watchInner.ScrollBarThickness = ; watchInner.ScrollBarImageColor3 = C.ACC
watchInner.AutomaticCanvasSize = .AutomaticSize.Y; watchInner.CanvasSize = .(,,,)
.(, watchInner).CornerRadius = .(, )
wiLayout = .(, watchInner)
wiLayout.Padding = .(, ); wiLayout.SortOrder = .SortOrder.LayoutOrder
wiPad = .(, watchInner)
wiPad.PaddingLeft = .(, ); wiPad.PaddingRight = .(, )
wiPad.PaddingTop = .(, ); wiPad.PaddingBottom = .(, )
emptyLbl = .(, watchInner)
emptyLbl.Size = .(, , , ); emptyLbl.BackgroundTransparency = ; emptyLbl.LayoutOrder =
emptyLbl.Font = .Font.Gotham; emptyLbl.TextSize = ; emptyLbl.TextColor3 = C.TXTM
emptyLbl.TextXAlignment = .TextXAlignment.Center
emptyLbl.Text =
STATUS_COLORS = {
in_game = .(, , ),
online = .(, , ),
offline = .(, , ),
unknown = .(, , ),
}
STATUS_LABELS = {
in_game = ,
online = ,
offline = ,
unknown = ,
}
STATUS_ICONS = {
in_game = ,
online = ,
offline = ,
unknown = ,
}
watchRows = {}
()
count = #watchList
count ==
watchContainer.Size = .(, , , )
watchContainer.Size = .(, , , .(count * + , ))
emptyLbl.Visible = count ==
(w)
watchRows[w.userId]
(() watchRows[w.userId].row:() )
watchRows[w.userId] =
row = .(, watchInner)
row.Size = .(, , , ); row.BackgroundColor3 = C.PANEL
row.BorderSizePixel = ; row.LayoutOrder = w.userId
.(, row).CornerRadius = .(, )
dot = .(, row)
dot.Size = .(, , , ); dot.Position = .(, , , -)
dot.BackgroundColor3 = STATUS_COLORS.unknown; dot.BorderSizePixel =
.(, dot).CornerRadius = .(, )
nameLbl = .(, row)
nameLbl.Size = .(, -, , ); nameLbl.Position = .(, , , )
nameLbl.BackgroundTransparency = ; nameLbl.Font = .Font.GothamBold; nameLbl.TextSize =
nameLbl.TextColor3 = C.TXT; nameLbl.TextXAlignment = .TextXAlignment.Left
nameLbl.Text = .. w.username
w.displayName w.displayName ~= w.username
nameLbl.Text = .. w.username .. .. w.displayName ..
statusLbl = .(, row)
statusLbl.Size = .(, -, , ); statusLbl.Position = .(, , , )
statusLbl.BackgroundTransparency = ; statusLbl.Font = .Font.GothamBold; statusLbl.TextSize =
statusLbl.TextColor3 = STATUS_COLORS.unknown; statusLbl.TextXAlignment = .TextXAlignment.Left
statusLbl.Text =
locationLbl = .(, row)
locationLbl.Size = .(, -, , ); locationLbl.Position = .(, , , )
locationLbl.BackgroundTransparency = ; locationLbl.Font = .Font.Gotham; locationLbl.TextSize =
locationLbl.TextColor3 = C.TXTM; locationLbl.TextXAlignment = .TextXAlignment.Left
locationLbl.Text =
cIdBtn = .(, row)
cIdBtn.Size = .(, , , ); cIdBtn.Position = .(, -, , )
cIdBtn.BackgroundColor3 = .(, , ); cIdBtn.BorderSizePixel =
cIdBtn.Font = .Font.GothamBold; cIdBtn.TextSize = ; cIdBtn.TextColor3 = C.TXTM
cIdBtn.Text = ; cIdBtn.AutoButtonColor =
.(, cIdBtn).CornerRadius = .(, )
cIdBtn.MouseButton1Click:(()
(() ((w.userId)) )
o = cIdBtn.Text; cIdBtn.Text =
TweenService:(cIdBtn, TweenInfo.(), {BackgroundColor3 = C.ACC}):()
(, .. w.username .. .. w.userId, )
.(, ()
cIdBtn cIdBtn.Parent cIdBtn.Text = o
TweenService:(cIdBtn, TweenInfo.(), {BackgroundColor3 = .(,,)}):()
)
)
refBtn = .(, row)
refBtn.Size = .(, , , ); refBtn.Position = .(, -, , )
refBtn.BackgroundColor3 = .(, , ); refBtn.BorderSizePixel =
refBtn.Font = .Font.GothamBold; refBtn.TextSize = ; refBtn.TextColor3 = C.TXTM
refBtn.Text = ; refBtn.AutoButtonColor =
.(, refBtn).CornerRadius = .(, )
remBtn = .(, row)
remBtn.Size = .(, , , ); remBtn.Position = .(, -, , )
remBtn.BackgroundColor3 = .(, , ); remBtn.BorderSizePixel =
remBtn.Font = .Font.GothamBold; remBtn.TextSize = ; remBtn.TextColor3 = .(,,)
remBtn.Text = ; remBtn.AutoButtonColor =
.(, remBtn).CornerRadius = .(, )
remBtn.MouseButton1Click:(()
i, ww (watchList)
ww.userId == w.userId .(watchList, i);
()
watchRows[w.userId]
(() watchRows[w.userId].row:() )
watchRows[w.userId] =
()
(, .. w.username, )
)
cJobBtn = .(, row)
cJobBtn.Size = .(, -, , ); cJobBtn.Position = .(, , , -)
cJobBtn.BackgroundColor3 = .(, , ); cJobBtn.BorderSizePixel =
cJobBtn.Font = .Font.GothamBold; cJobBtn.TextSize = ; cJobBtn.TextColor3 = C.TEAL
cJobBtn.Text = ; cJobBtn.AutoButtonColor =
.(, cJobBtn).CornerRadius = .(, )
joinBtn = .(, row)
joinBtn.Size = .(, -, , ); joinBtn.Position = .(, , , -)
joinBtn.BackgroundColor3 = .(, , ); joinBtn.BorderSizePixel =
joinBtn.Font = .Font.GothamBold; joinBtn.TextSize = ; joinBtn.TextColor3 = C.TXTM
joinBtn.Text = ; joinBtn.AutoButtonColor =
.(, joinBtn).CornerRadius = .(, )
entry = {
row = row,
dot = dot,
statusLbl = statusLbl,
locationLbl = locationLbl,
joinBtn = joinBtn,
cJobBtn = cJobBtn,
lastStatus = ,
lastPlaceId = ,
lastGameId = ,
lastJobId = ,
}
watchRows[w.userId] = entry
cJobBtn.MouseButton1Click:(()
entry.lastStatus ==
(, .. w.username, );
entry.lastStatus ~=
(, .. w.username .. .. (STATUS_LABELS[entry.lastStatus] ) .. , )
isHere =
_, p2 (Players:())
p2.UserId == w.userId isHere = ;
isHere
jid = .JobId
entry.lastJobId = jid
(() (jid) )
specJobBox.Text = jid
o = cJobBtn.Text; cJobBtn.Text =
TweenService:(cJobBtn, TweenInfo.(), {BackgroundColor3 = C.TEAL}):()
(, .. w.username .. , )
.(, ()
cJobBtn cJobBtn.Parent
cJobBtn.Text = o
TweenService:(cJobBtn, TweenInfo.(), {BackgroundColor3 = .(,,)}):()
)
entry.lastPlaceId
(, .. w.username .. , );
o = cJobBtn.Text
cJobBtn.Text =
cJobBtn.TextColor3 = C.TXTM
.(()
servers = (entry.lastPlaceId, )
cJobBtn cJobBtn.Parent
#servers >
.(servers, (a,b) (a.playing ) < (b.playing ) )
jid = servers[].id
entry.lastJobId = jid
(() (jid) )
specJobBox.Text = jid
cJobBtn.Text =
cJobBtn.TextColor3 = C.TEAL
TweenService:(cJobBtn, TweenInfo.(), {BackgroundColor3 = C.TEAL}):()
(, .. w.username .. , )
.(, ()
cJobBtn cJobBtn.Parent
cJobBtn.Text = o; cJobBtn.TextColor3 = C.TEAL
TweenService:(cJobBtn, TweenInfo.(), {BackgroundColor3 = .(,,)}):()
)
cJobBtn.Text =
cJobBtn.TextColor3 = C.OFF
(, .. w.username .. , )
.(, ()
cJobBtn cJobBtn.Parent
cJobBtn.Text = o; cJobBtn.TextColor3 = C.TEAL
TweenService:(cJobBtn, TweenInfo.(), {BackgroundColor3 = .(,,)}):()
)
)
)
()
refBtn.Text =
.(()
status, placeId, gameId, loc = (w.userId)
entry.lastStatus = status
entry.lastPlaceId = placeId
entry.lastGameId = gameId
status ~= entry.lastJobId =
col = STATUS_COLORS[status] STATUS_COLORS.unknown
icon = STATUS_ICONS[status]
lbl = STATUS_LABELS[status]
dot.BackgroundColor3 = col
statusLbl.TextColor3 = col
statusLbl.Text = icon .. .. lbl
status ==
gameName = placeId (placeId) (loc ~= loc )
locationLbl.Text = .. gameName:(, )
joinBtn.BackgroundColor3 = .(, , )
joinBtn.TextColor3 = C.ON
joinBtn.Text =
cJobBtn.TextColor3 = C.TEAL
cJobBtn.Text =
status ==
locationLbl.Text =
joinBtn.BackgroundColor3 = .(, , )
joinBtn.TextColor3 = C.TXTM
joinBtn.Text =
cJobBtn.Text =
cJobBtn.TextColor3 = .(, , )
locationLbl.Text = status ==
joinBtn.BackgroundColor3 = .(, , )
joinBtn.TextColor3 = C.TXTM
joinBtn.Text =
cJobBtn.Text =
cJobBtn.TextColor3 = .(, , )
TweenService:(row, TweenInfo.(), {BackgroundColor3 = .(,,)}):()
.(, ()
row row.Parent
TweenService:(row, TweenInfo.(), {BackgroundColor3 = C.PANEL}):()
)
refBtn.Text =
)
refBtn.MouseButton1Click:(refreshRow)
joinBtn.MouseButton1Click:(()
entry.lastStatus ~= entry.lastPlaceId
(, .. w.username .. , );
joinBtn.Text =
(, .. w.username .. , )
.(()
servers = (entry.lastPlaceId, )
#servers >
.(servers, (a,b) (a.playing ) < (b.playing ) )
(entry.lastPlaceId, servers[].id)
(entry.lastPlaceId)
)
)
()
entry
()
uid, entry (watchRows)
(() entry.row:() )
watchRows = {}
_, w (watchList)
(w)
()
(rawName)
name = rawName:()
name == (, , );
nameLower = name:()
_, w (watchList)
w.username:r() == nameLower then
notify("Already Added", "@" .. w.username .. " is already in your watch list", 3)
return
end
end
awAddBtn.Text = "..."
awBox.Text = ""
task.spawn(function()
local userId = getUserId(name)
if not userId then
awAddBtn.Text = "+ Add"
notify("Not Found", "Couldn't find player '" .. name .. "'", 4)
return
end
local confirmedName = getUsername(userId) or name
local displayName = getDisplayName(userId) or confirmedName
for _, w in ipairs(watchList) do
if w.userId == userId then
awAddBtn.Text = "+ Add"
notify("Already Added", "@" .. confirmedName .. " is already in your watch list", 3)
return
end
end
local entry = {userId = userId, username = confirmedName, displayName = displayName}
table.insert(watchList, entry)
saveWatchList()
buildWatchRow(entry)
updateWatchContainerHeight()
awAddBtn.Text = "+ Add"
notify("Added!", "@" .. confirmedName .. " added to watch list", 4)
end)
end
awAddBtn.MouseButton1Click:Connect(function() addToWatchList(awBox.Text) end)
awBox.FocusLost:Connect(function(enter) if enter then addToWatchList(awBox.Text) end end)
rebuildAllWatchRows()
task.spawn(function()
while true do
task.wait(12)
for _, w in ipairs(watchList) do
if watchRows[w.userId] then
local entry = watchRows[w.userId]
task.spawn(function()
local status, placeId, gameId, loc = fetchPresence(w.userId)
if not entry.row or not entry.row.Parent then return end
local prev = entry.lastStatus
entry.lastStatus = status
entry.lastPlaceId = placeId
entry.lastGameId = gameId
local col = STATUS_COLORS[status] or STATUS_COLORS.unknown
local icon = STATUS_ICONS[status] or "⋯"
local lbl = STATUS_LABELS[status] or "Unknown"
entry.dot.BackgroundColor3 = col
entry.statusLbl.TextColor3 = col
entry.statusLbl.Text = icon .. " " .. lbl
if status == "in_game" then
local gameName = placeId and getGameName(placeId) or (loc ~= "" and loc or "Unknown Game")
entry.locationLbl.Text = "Playing: " .. gameName:sub(1, 40)
entry.joinBtn.BackgroundColor3 = Color3.fromRGB(16, 50, 16)
entry.joinBtn.TextColor3 = C.ON
entry.joinBtn.Text = "⚡ Join"
if entry.cJobBtn and entry.cJobBtn.Parent then
entry.cJobBtn.TextColor3 = C.TEAL
entry.cJobBtn.Text = "📋 Copy Job ID"
end
elseif status == "online" then
entry.locationLbl.Text = "On Roblox website"
entry.joinBtn.BackgroundColor3 = Color3.fromRGB(22, 42, 18)
entry.joinBtn.TextColor3 = C.TXTM
entry.joinBtn.Text = "⚡ Join"
if entry.cJobBtn and entry.cJobBtn.Parent then
entry.cJobBtn.TextColor3 = Color3.fromRGB(50, 80, 80)
entry.cJobBtn.Text = "📋 Copy Job ID"
end
else
entry.locationLbl.Text = status == "offline" and "Last seen: unknown" or ""
entry.joinBtn.BackgroundColor3 = Color3.fromRGB(22, 42, 18)
entry.joinBtn.TextColor3 = C.TXTM
entry.joinBtn.Text = "⚡ Join"
if entry.cJobBtn and entry.cJobBtn.Parent then
entry.cJobBtn.TextColor3 = Color3.fromRGB(50, 80, 80)
entry.cJobBtn.Text = "📋 Copy Job ID"
end
end
if prev ~= "unknown" and prev ~= status then
local changeMsg = ""
if status == "in_game" then
changeMsg = "@" .. w.username .. " just started playing!"
elseif status == "online" and prev == "offline" then
changeMsg = "@" .. w.username .. " just came online!"
elseif status == "offline" and prev ~= "offline" then
changeMsg = "@" .. w.username .. " went offline."
end
if changeMsg ~= "" then notify("Watch List", changeMsg, 5) end
end
end)
end
end
end
end)
-- ================================================================
-- SECTION 8 - QUICK ACTIONS
-- ================================================================
Sec("Quick Actions")
Act("Rejoin (random new server)", C.BLUE, function()
task.spawn(function() joinNewServer(game.PlaceId) end)
end)
Act("Rejoin Same Server", Color3.fromRGB(30, 20, 65), function()
task.spawn(function() joinByJobId(game.PlaceId, game.JobId) end)
end)
local _, serverInfoLbl = ResultCard(60, "Press button below to see server info")
Act("Show This Server's Info", Color3.fromRGB(30, 40, 80), function()
local pid = tostring(game.PlaceId)
local jid = game.JobId
local playerList = {}
for _, p2 in ipairs(Players:GetPlayers()) do table.insert(playerList, p2.DisplayName) end
serverInfoLbl.Text =
"Place ID: " .. pid ..
"\nJob ID: " .. jid ..
"\nPlayers: " .. table.concat(playerList, ", ")
serverInfoLbl.TextColor3 = C.TXT
pcall(function() setclipboard(jid) end)
notify("Server Info", "Place: " .. pid .. " | Job ID copied!", 4)
end)
-- ================================================================
-- STARTUP
-- ================================================================
notify("Loaded!", "Lilly's Snipes ready", 5)Loads code from the internet. It downloads more code when it runs (loadstring + HttpGet), which can change after it was posted. From: games.roblox.com, presence.roblox.com.

Universal