您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Join a new game on your region with the highest player count for a random game mode that is not full when you press a certain key
// ==UserScript== // @name Join Random Game Mode // @namespace violentmonkey // @version 3.1.3.3.7 // @description Join a new game on your region with the highest player count for a random game mode that is not full when you press a certain key // @author hitthemoney, moongazer07 // @match *://krunker.io/* // @exclude *://krunker.io/social.html* // @exclude *://krunker.io/editor.html* // @grant GM_xmlhttpRequest // @license MIT // ==/UserScript== const joinKey = "F4"; // Join game shortcut key, case sensitive const gameModes = [0, 1, 2, 3, 10, 13, 14, 19, 21, 25, 27, 28, 29, 33, 34]; // Game mode IDs const getRandomGameMode = async () => { return new Promise((resolve, reject) => { GM_xmlhttpRequest({ method: "GET", url: "https://www.random.org/integers/?num=1&min=0&max=14&col=1&base=10&format=plain&rnd=new", onload: function(response) { if (response.status === 200) { resolve(gameModes[parseInt(response.responseText.trim())]); } else { reject(new Error("Failed to fetch random number from Random.org")); } }, onerror: function(error) { reject(new Error("Failed to fetch random number from Random.org")); } }); }); }; const getTopGame = async () => { const region = window.localStorage.pingRegion7 || (await fetch(`https://matchmaker.krunker.io/game-info?game=${encodeURIComponent(window.getGameActivity().id)}`).then(res => res.json())); const gameData = (await fetch(`https://matchmaker.krunker.io/game-list?hostname=${window.location.hostname}`).then(res => res.json())).games; const targetGameMode = await getRandomGameMode(); const filData = gameData.filter(game => game[1] === region && game[4].g === targetGameMode && game[4].c === 0 && game[2] < game[3] ).sort((x, y) => y[2] - x[2]); return filData[0]; } const joinTopGame = async () => { const targetGame = await getTopGame(); window.location.href = `/?game=${targetGame[0]}`; } window.addEventListener("keydown", async (event) => { switch (event.key) { case joinKey: { await joinTopGame(); break; } } });