Run it
Copy the script and paste it into your executor.
Rayfield = (:())()
HttpService = :()
TeleportService = :()
Players = :()
LocalPlayer = Players.LocalPlayer
PlaceId = .PlaceId
scannedServers, joinedHistory = {}, {}
lastServer, AutoScanRunning = ,
delayPerScan, serverLimit = ,
lastError =
totalScanned, totalScanTime, bestPingEver, serversJoined = , , .huge,
Window = Rayfield:({
Name = ,
LoadingTitle = ,
ConfigurationSaving = {
Enabled = ,
FolderName = ,
FileName =
}
})
MainTab = Window:(, )
SettingsTab = Window:(, )
analyticsSection = MainTab:({
Title = ,
Content =
})
statusParagraph = MainTab:({
Title = ,
Content =
})
(scanCount, scanTime, bestPing)
totalScanned += scanCount
totalScanTime += scanTime
bestPing < bestPingEver bestPingEver = bestPing
analyticsSection:({
Title = ,
Content = .(
,
totalScanned,
totalScanTime / .(, serversJoined + ),
bestPingEver == .huge bestPingEver,
serversJoined
)
})
(cursor)
url = ():(PlaceId)
cursor url ..= .. cursor
success, response = (()
:(url)
)
success response
lastError = .. (response)
{data={}, nextPageCursor=}
successDecode, data = (()
HttpService:(response)
)
successDecode
lastError =
(successDecode data) {data={}, nextPageCursor=}
()
cursor, bestServer, bestPing, scanned = , , .huge,
start = .()
statusParagraph:({Title = , Content = })
success, err = (()
page = (cursor)
_, server (page.data {})
(server) == server.id server.playing server.maxPlayers
server.playing < server.maxPlayers scannedServers[server.id] .(joinedHistory, server.id)
scannedServers[server.id] =
scanned +=
ping = .(server.ping )
ping < bestPing
bestServer = server
bestPing = ping
.(delayPerScan)
cursor = page.nextPageCursor
cursor scanned >= serverLimit
)
success
lastError = .. (err)
duration = .() - start
statusParagraph:({Title = , Content = })
(scanned, duration, bestPing)
bestServer
(server)
server server.id server.id == lastServer
lastServer = server.id
.(joinedHistory, server.id)
serversJoined +=
(, , .(server.ping ))
statusParagraph:({Title = , Content = .. (server.id)})
TeleportService:(PlaceId, server.id, LocalPlayer)
MainTab:({
Name = ,
CurrentValue = ,
Callback = (Value)
AutoScanRunning = Value
Value
.(()
AutoScanRunning
best = ()
best
(best)
.()
)
,
})
MainTab:({
Name = ,
Callback = ()
best = ()
best
(best)
Rayfield:({ Title = , Content = })
})
MainTab:({
Title = ,
Content =
})
MainTab:({
Name = ,
Callback = ()
(lastError)
Rayfield:({
Title = ,
Content =
})
})
SettingsTab:({
Name = ,
Range = {, },
Increment = ,
CurrentValue = serverLimit,
Callback = (Value)
serverLimit = Value
})
SettingsTab:({
Name = ,
Range = {, },
Increment = ,
CurrentValue = delayPerScan,
Callback = (Value)
delayPerScan = Value
})
SettingsTab:({
Title = ,
Content =
})Loads code from the internet. It downloads more code when it runs (loadstring + HttpGet), which can change after it was posted. From: sirius.menu, games.roblox.com.
-- Made w ChatGPT -- [•] Smart Server Scanning — Finds servers with the best ping and open slots [•] Auto & Manual Join — Instantly join optimal servers with a click or automatically [•] Live Analytics — Tracks total scans, average scan time, best ping, and joins [•] Intelligent Auto-Detection — Skips duplicates and already joined servers [•] Customizable Performance — Adjustable scan delay and server scan limits [•] Sleek Rayfield UI — Clean, responsive, and mobile-friendly interface [•] Error Logging System — View and copy warnings or errors with ease [•] Coming Soon: Graph-Based Analytics & Enhanced Auto-Detection System