您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds rainbow styles, custom skins, and auto-join functionality to Bonk.io. Activated via commands.
- // ==UserScript==
- // @name Bonk.io Ultimate Enhanced Script
- // @namespace http://tampermonkey.net/
- // @version 18.7
- // @description Adds rainbow styles, custom skins, and auto-join functionality to Bonk.io. Activated via commands.
- // @author YourActualName
- // @match https://bonk.io/*
- // @grant none
- // ==/UserScript==
- (function () {
- 'use strict';
- // States for various features
- let isRainbowActive = false;
- let isAutoJoinActive = false;
- let customSkinColor = null;
- let hue = 0; // For rainbow style
- /**
- * Command listener
- * Listens for commands typed in the chat and executes the associated functionality.
- */
- function setupCommandListener() {
- const chatInput = document.querySelector('#chatinput');
- if (!chatInput) return;
- chatInput.addEventListener('keydown', (e) => {
- if (e.key === 'Enter') {
- const command = chatInput.value.trim().toLowerCase();
- chatInput.value = ''; // Clear input after processing
- switch (command) {
- case '/rainbowstyle':
- isRainbowActive = !isRainbowActive;
- console.log(`Rainbow Style: ${isRainbowActive ? 'Enabled' : 'Disabled'}`);
- break;
- case '/autojoin':
- isAutoJoinActive = !isAutoJoinActive;
- console.log(`Auto-Join: ${isAutoJoinActive ? 'Enabled' : 'Disabled'}`);
- break;
- case '/setskin':
- setCustomSkin();
- break;
- default:
- console.log(`Unknown command: ${command}`);
- }
- }
- });
- }
- /**
- * Rainbow effect for rectangle
- * Continuously updates the rectangle color and applies opposite colors to level and name.
- */
- function applyRainbowEffect() {
- function updateRainbow() {
- if (!isRainbowActive) return;
- hue = (hue + 5) % 360; // Increment hue for a smooth rainbow effect
- const rectangleColor = `hsl(${hue}, 100%, 50%)`;
- const oppositeColor = `hsl(${(hue + 180) % 360}, 100%, 50%)`;
- try {
- // Update rectangle colors
- if (window.bonkHost && window.bonkHost.p) {
- window.bonkHost.p.color = rectangleColor;
- window.bonkHost.p.outline = rectangleColor;
- }
- // Update name and level colors
- const playerName = document.querySelector('.playerName');
- const levelText = document.querySelector('.levelText');
- if (playerName) playerName.style.color = oppositeColor;
- if (levelText) levelText.style.color = oppositeColor;
- } catch (e) {
- console.error('Error applying rainbow effect:', e);
- }
- requestAnimationFrame(updateRainbow);
- }
- updateRainbow();
- }
- /**
- * Auto-join games
- * Automatically joins available games when the feature is enabled.
- */
- function autoJoinGames() {
- function checkJoinButton() {
- if (!isAutoJoinActive) return;
- try {
- const joinButton = document.querySelector('.joinGameButton');
- if (joinButton && joinButton.disabled === false) {
- joinButton.click();
- console.log('Auto-Joined a game!');
- }
- } catch (e) {
- console.error('Error with Auto-Join:', e);
- }
- setTimeout(checkJoinButton, 1000);
- }
- checkJoinButton();
- }
- /**
- * Set custom skin color
- * Prompts the user to enter a hex code for their rectangle color.
- */
- function setCustomSkin() {
- const inputColor = prompt('Enter a hex color for your skin (e.g., #ff0000):');
- if (inputColor && /^#([0-9A-F]{3}|[0-9A-F]{6})$/i.test(inputColor)) {
- customSkinColor = inputColor;
- applyCustomSkin();
- } else {
- alert('Invalid hex color! Please try again.');
- }
- }
- /**
- * Apply custom skin color
- * Applies the custom skin color to the game elements.
- */
- function applyCustomSkin() {
- if (window.bonkHost && window.bonkHost.p) {
- window.bonkHost.p.color = customSkinColor;
- window.bonkHost.p.outline = customSkinColor;
- console.log(`Custom skin set to: ${customSkinColor}`);
- } else {
- // If game elements are not yet available, wait and try again
- setTimeout(applyCustomSkin, 100);
- }
- }
- /**
- * Initialize the script
- * Waits for Bonk.io to load before activating features.
- */
- const waitForGame = setInterval(() => {
- if (typeof window.bonkHost !== 'undefined' && window.bonkHost.p !== undefined) {
- clearInterval(waitForGame); // Stop checking once the game is ready
- setupCommandListener(); // Set up commands
- applyRainbowEffect(); // Apply rainbow effects if toggled
- autoJoinGames(); // Auto-join games if toggled
- }
- }, 100);
- })();