您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Automatically rotate through bonk icon colours/teams
// ==UserScript== // @name Bonk.io Auto Colour Switching // @author Figurative Lag // @description Automatically rotate through bonk icon colours/teams // @match https://bonk.io/* // @version 1.9.8 // @run-at document-idle // @grant none // @license Apache 2.0 // @namespace https://gf.qytechs.cn/en/scripts/455254-bonk-io-auto-colour-switching // ==/UserScript== // Index 0 is actually supposed to be Spectate, which we're not going to use // So, we have to add 1 to our index when submitting data to the web socket const coloursList = [ "FFA", "Red", "Blue", "Green", "Yellow" ] const enabled = [ true, true, true, true, true ] let currentColour = 0 const RNG = (min, max) => Math.round(Math.random() * (max - min)) + min const getFrame = () => document.getElementById("maingameframe").contentWindow const getDoc = () => getFrame().document const getId = id => getDoc().getElementById(id) let websocket = null const originalSend = getFrame().WebSocket.prototype.send getFrame().WebSocket.prototype.send = function(args) { const invalidSocket = websocket == null || websocket.readState != websocket.OPEN const validURL = this.url.includes(".bonk.io/socket.io/?EIO=3&transport=websocket&sid=") if (validURL && invalidSocket) websocket = this originalSend.call(this, args) } const setColour = colour => { currentColour = colour const inCustomGame = getDoc().getElementsByClassName("newbonklobby_playerentry").length > 0 // We have to add +1 because we removed "spectate" from index 0 if (websocket && inCustomGame) websocket.send('42[6,{"targetTeam":' + (colour+1) + '}]') } let menu = document.getElementById("descriptioninner") menu.style.cssText = "background-color: black !important;" // Clear old screen Array.from(menu.children).forEach(el => el.remove()) const createCheckbox = (colour, i) => { let id = `${colour}Checkbox` let label = document.createElement("label") label.innerHTML = colour label.htmlFor = id menu.appendChild(label) let checkbox = document.createElement("input") checkbox.type = "checkbox" checkbox.id = id checkbox.checked = true checkbox.onchange = function() { enabled[i] = this.checked } menu.appendChild(checkbox) menu.appendChild(document.createElement("br")) } const setCheckbox = (colour, value) => { let checkbox = document.getElementById(`${colour}Checkbox`) checkbox.checked = !value checkbox.click() } let h3 = document.createElement("h3") h3.innerHTML = "Automatic Colour (Team) Switching" h3.style.margin = 0 menu.appendChild(h3) let p = document.createElement("p") p.innerHTML = "Made by Figurative Lag" p.style.margin = 0 menu.appendChild(p) menu.appendChild(document.createElement("hr")) coloursList.forEach((colour, i) => { createCheckbox(colour, i) }) let disable = document.createElement("input") disable.type = "button" disable.value = "Quick Disable" disable.style.marginTop = "0.5em" disable.onclick = () => { coloursList.forEach(colour => { setCheckbox(colour, false) }) setCheckbox("FFA", true) } menu.appendChild(disable) let enable = document.createElement("input") enable.type = "button" enable.value = "Quick Enable" enable.onclick = () => { coloursList.forEach(colour => { setCheckbox(colour, true) }) } menu.appendChild(enable) menu.appendChild(document.createElement("hr")) p = document.createElement("p") p.innerHTML = "<strong>Switch Interval Modification</strong><br>Warning: bonk.io will quickly rate limit you, making it switch even slower than before you reduced the delay. So, I recommend leaving it at 1000 ms for consistency." menu.appendChild(p) let intervalInput = document.createElement("input") intervalInput.type = "number" intervalInput.value = 1000 intervalInput.placeholder = "Interval (ms)" menu.appendChild(intervalInput) let intervalSubmit = document.createElement("input") intervalSubmit.type = "button" intervalSubmit.value = "Submit" intervalSubmit.onclick = () => { clearInterval(interval) interval = setInterval(timeout, parseInt(intervalInput.value)) } menu.appendChild(intervalSubmit) function timeout() { const listChecked = [] for (let i = 0; i < enabled.length; i++) { if (enabled[i]) listChecked.push(i) } if (listChecked.length == 0) return if (listChecked.length == 1 && currentColour == listChecked[0]) return // Don't set the colour that is already set let colour = currentColour while (colour == currentColour) { colour = listChecked[RNG(0, listChecked.length-1)] } setColour(colour) } let interval = setInterval(timeout, 1000)
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址