Finds an empty server for you to join.
// ==UserScript==
// @name Roblox Server Finder
// @version 1.5
// @description Finds an empty server for you to join.
// @match https://www.roblox.com/games/*
// @author Roblox_Scripter_Tools
// @grant none
// @namespace https://greasyfork.org/users/902751
// ==/UserScript==
(function () {
// Gets the game ID
const gid = Number(window.location.pathname.split("/")[2]);
if (!gid) return;
// Gets the game URL
const url = `https://www.roblox.com/games/${gid}`;
const searchForGame = function (gid, min, max) {
// Get the game page
let page = Math.round((max + min) / 2);
// Fetch roblox's servers
fetch(`https://www.roblox.com/games/getgameinstancesjson?placeId=${gid}&startindex=${page}`)
// Turn the response into JSON
.then((resp) => resp.json())
.then(function (data) {
if (data.Collection.length < 10 && data.Collection.length > 0) {
let server = data.Collection[data.Collection.length - 1];
if(server.CurrentPlayers.length == 0) {
min = page;
console.log("No people, trying new server:", page);
searchForGame(gid, min, max);
return false;
}
console.log(
"Found empty server:",
server,
"\nCurrent Total Players:",
server.CurrentPlayers.length
);
if (
confirm(
"Found server with " +
server.CurrentPlayers.length +
" players.\nWould you like to join this server?"
)
) {
try {
eval(server.JoinScript);
} catch (e) {
console.log("Error:", e);
}
} else {
min = page;
console.log("User canceled, trying new server:", page);
searchForGame(gid, min, max);
return false;
}
return true;
} else if (data.Collection.length == 0) {
max = page;
console.log("Page empty, trying new page:", page);
searchForGame(gid, min, max);
} else {
min = page;
console.log("Not empty, trying new server:", page);
searchForGame(gid, min, max);
}
});
};
let h3ader = document.createElement("h3");
h3ader.innerHTML = "Empty Server Tool";
let btn = document.createElement("span");
btn.id = "-ServerTool-findServer";
btn.onclick = function () {
searchForGame(gid, 0, 10000);
};
btn.innerHTML = "Join Empty Server";
btn.className = "btn-secondary-md";
document.getElementById("game-instances").prepend(btn);
document.getElementById("game-instances").prepend(h3ader);
})();