您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Allows different userscripts to define functions that modify the game's code
当前为
// ==UserScript== // @name Code Injector - Bonk.io // @version 1.0.1 // @description Allows different userscripts to define functions that modify the game's code // @author Excigma & kklkkj // @namespace https://gf.qytechs.cn/users/416480 // @match https://bonk.io/gameframe-release.html // @run-at document-body // @grant GM_xmlhttpRequest // @grant unsafeWindow // ==/UserScript== // What this does: // - Finds other userscripts that have defined their injectors in `window.bonkCodeInjectors`, and runs them // Credits to https://github.com/kklkkj for creating this system where multiple // extensions can edit different parts of Bonk.io' code. // Much of the code below was copied from or inspired by https://github.com/kklkkj/kklee/blob/master/src/runInjectors.js // Go thank kklkkj for this (() => { // Original `document.head.appendChild` function that we're going to overwrite const _appendChild = document.head.appendChild; // When RequireJS tries to add alpha2s.js to <head> we will intercept it, // and patch it using functions defined by other scripts in window.bonkCodeInjectors document.head.appendChild = (...args) => { // Sure, I can do `args?.[0]?.src.includes("alpha2s.js")`, but it's more difficult to read if (args[0] && args[0].src.includes("alpha2s.js")) { console.log("[Injector] Fetching original alpha2s.js..."); // Store the url of the original unmodified alpha2s.js const alpha2sURL = args[0].src; // Remove the src attribute so it doesn't try to load the original alpha2s.js script args[0].removeAttribute("src"); // Fetch the original unmodified alpha2s.js so we can patch it // eslint-disable-next-line no-undef GM_xmlhttpRequest({ method: "GET", url: alpha2sURL, onload: (response) => { console.log("[Injector] Fetched alpha2s.js. Patching..."); // Original alpha2s.js' code let str = response.responseText; // No bonkCodeInjectors found, this might mean that the user does not have any bonk userscripts installed // or that they failed to load before this script /* I commented this out because people who prefer userscripts over extensions likely * enjoy the flexibility of being able to disable userscripts easily, and are thus likely to have * all their userscripts disabled */ if (!unsafeWindow.bonkCodeInjectors) { unsafeWindow.bonkCodeInjectors = []; // alert("Did not find any Bonk.io userscripts to load. This may be an error, make sure you have scripts installed."); } // Loop through `bonkCodeInjectors` and pass alpha2s.js' code in for them to modify for (const injector of unsafeWindow.bonkCodeInjectors) { try { // Run injector from other userscripts str = injector(str); } catch (error) { // An injector from one of the other userscripts failed to load alert("One of your Bonk.io userscripts was unable to be loaded"); console.error(error); } } // Add the new script to the <script>'s contents args[0].textContent = str; // Make RequireJS think that the script loaded properly args[0].dispatchEvent(new Event("load")); console.log("[Injector] Patched alpha2s.js successfully"); // Append the modified <script> tag to document.head return _appendChild.apply(document.head, args); }, onerror: (error) => { // Error fetching original alpha2s.js console.error(error); alert("An error occurred whilst loading bonk injectors."); return _appendChild.apply(document.head, args); } }); } else { return _appendChild.apply(document.head, args); } }; })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址