您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
XP Free
- // ==UserScript==
- // @name XP Involker
- // @namespace https://greasyfork.org/en/scripts/507701-xp-involker
- // @version 1.75
- // @description XP Free
- // @author MrBonkeiro
- // @match https://bonk.io/
- // @icon https://www.google.com/s2/favicons?sz=64&domain=bonk.io
- // @run-at document-idle
- // @grant none
- // ==/UserScript==
- function getBonk() {
- const iframe = document.getElementById('maingameframe');
- if (!iframe) {
- console.error('[MrMenu] Iframe not found');
- return null;
- }
- const iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
- if (!iframeDoc) {
- console.error('[MrMenu] Iframe document not found');
- return null;
- }
- return iframeDoc;
- }
- function addHTML(htmlString, selector, beforeSelector = null)
- {
- const bonkDoc = getBonk();
- const targetElement = bonkDoc.querySelector(selector);
- if (!targetElement) { return; }
- const parser = new DOMParser();
- const doc = parser.parseFromString(htmlString, 'text/html');
- const newElements = Array.from(doc.body.childNodes);
- if (beforeSelector) {
- const beforeElement = bonkDoc.querySelector(beforeSelector);
- if (!beforeElement) { return; }
- newElements.forEach(node => {
- beforeElement.parentNode.insertBefore(node, beforeElement);
- });
- } else {
- newElements.forEach(node => {
- targetElement.appendChild(node);
- });
- }
- }
- function isRoom() {
- const bonkDoc = getBonk();
- if (!bonkDoc) return false;
- const element = bonkDoc.getElementById('gamerenderer');
- if (element) {
- return window.getComputedStyle(element).visibility === 'inherit';
- }
- return false;
- }
- function Init() {
- addHTML(`<div style="background-color: #1f1f1f; display: flex; position: absolute; top: 50%; left: 50%; width: 85%; height: 85%; transform: translate(-50%, -50%); flex-direction: column; align-items: flex-start; padding: 10px;">
- <div style="display: flex; align-items: center; margin-bottom: 10px;">
- <img src="https://bonk.io/graphics/flags/us.png" alt="Imagem 1" style="width: 40px; height: 32px;">
- <label style="color: white; margin-left: 10px;">Download new version XP Involker no MrMenu and remove XP Involker old</label>
- </div>
- <div style="display: flex; align-items: center; margin-bottom: 10px;">
- <img src="https://bonk.io/graphics/flags/br.png" alt="Imagem 2" style="width: 40px; height: 32px;">
- <label style="color: white; margin-left: 10px;">Baixe nova versão do XP Involker in MrMenu e remova está versão velha do XP Involker</label>
- </div>
- <div style="margin-top: 10px;">
- <a href="https://greasyfork.org/en/scripts/504571-mrmenu/code" target="_blank" style="color: white; text-decoration: none;">Download</a>
- </div>
- </div>
- `, '#bonkiocontainer');
- let getWS;
- let timer = null;
- let deletePressed = false;
- function XP()
- {
- if (isRoom && getWS != null) { getWS.send('42[38]');}
- }
- function handleDeleteKey(event) {
- if (event.key === "Delete"|| event.key === "L" || event.key === "l") {
- if (!deletePressed) {
- deletePressed = true;
- timer = setInterval(XP, 6000);
- getBonk().getElementById('xpbarfill').style.backgroundColor = 'lightgreen';
- } else {
- clearInterval(timer);
- deletePressed = false;
- getBonk().getElementById('xpbarfill').style.backgroundColor = '#473aaf';
- }
- }
- }
- getBonk().addEventListener("keydown", handleDeleteKey);
- const originalSend = getBonk().defaultView.WebSocket.prototype.send;
- getBonk().defaultView.WebSocket.prototype.send = function (...args) {
- if (this.url.includes('socket.io')) {
- getWS = this;
- const originalOnMessage = this.onmessage;
- this.onmessage = function (msg) {
- return originalOnMessage.call(this, msg);
- };
- const originalOnClose = this.onclose;
- this.onclose = function () {
- getWS = null;
- return originalOnClose.call(this);
- };
- }
- return originalSend.apply(this, args);
- };
- }
- function ScriptInjector(f) {
- if (window.location === window.parent.location) {
- if (document.readyState === 'complete') {
- setTimeout(f, 1200);
- } else {
- document.addEventListener('readystatechange', function () {
- setTimeout(f, 3500);
- });
- }
- }
- }
- ScriptInjector(Init);