This is a beta adapter for your ping/FPS in MooMoo.io! + Remove Ad
// ==UserScript== // @name Beta adapter Ping/Fps! (v3) // @name:ru Бета адаптер Ping/Fps! (v3) // @namespace none // @version 3.1.0 // @description This is a beta adapter for your ping/FPS in MooMoo.io! + Remove Ad // @description:ru Это бета-адаптер для вашего ping/FPS в MooMoo.io! + Удалить Рекламу // @author @nudoo // @match *://moomoo.io/* // @match *://*.moomoo.io/* // @icon https://www.google.com/s2/favicons?sz=64&domain=moomoo.io // @grant none // @run-at document-start // ==/UserScript== (function() { "use strict" const adSelectors = [ "#adCard", "#adBlock", "#promoImgHolder", "#pre-content-container" ] const meaninglessSelectors = [ "#joinPartyButton", "#partyButton", "#settingsButton", `script[src="./libs/howler.core.min.js"]`, "#errorNotification", "#youtubeFollow", "#linksContainer2", "#twitterFollow", "#followText", "#youtuberOf", "#mobileInstructions", "#downloadButtonContainer", "#mobileDownloadButtonContainer", ".downloadBadge", "#altServer" ] const stateColors = { enabled: "#7ee559", disabled: "#e55959" } function removeElement(selector) { const elements = [ ...document.querySelectorAll(selector) ] for (const element of elements) { if (!element) continue if (!(element.remove instanceof Function)) { element.style.display = "none !important" element.style.visiblity = "hidden !important" continue } element.remove() } } function removeElements(selectors) { for (const selector of selectors) { if (!selector) continue removeElement(selector) } } function getCustomId(id) { id = id.toLowerCase().replace(/(\-|\s)/g, "_") return `beta_adapter_${id}` } function getGameDefaultButton(id) { const button = document.createElement("div") button.classList.add("menuButton") button.id = id return button } function addButtonToSetupCard(name, state, listener) { const setupCard = document.getElementById("setupCard") const id = getCustomId(name) const button = getGameDefaultButton(id) button.innerHTML = `<span>${name}</span>` button.style.marginTop = "16px" setupCard.appendChild(button) button.setState = function(_state) { const stateColor = stateColors[_state ? "enabled" : "disabled"] button.style.backgroundColor = stateColor } button.setState(state) if (!(listener instanceof Function)) return button.addEventListener("click", listener.bind(null, button)) } function getRemoveStoreHatsState() { return JSON.parse(localStorage.getItem("remove_store_hats")) } function setRemoveStoreHatsState(_state) { localStorage.setItem("remove_store_hats", JSON.stringify(_state)) } function onDOMLoaded() { removeElements(adSelectors) removeElements(meaninglessSelectors) addButtonToSetupCard("Remove store hats", getRemoveStoreHatsState(), (button) => { const state = !getRemoveStoreHatsState() button.setState(state) setRemoveStoreHatsState(state) }) const storeButton = document.getElementById("storeButton") const storeTabs = document.querySelectorAll(".storeTab") const removeHatsButtons = [ storeButton, ...storeTabs ] removeHatsButtons.forEach((button) => { button.addEventListener("click", () => { if (!getRemoveStoreHatsState()) return const interval = setInterval(() => { const mainMenu = document.getElementById("mainMenu") const hatPreview = document.querySelector(".hatPreview") if (mainMenu) return clearInterval(interval) if (!hatPreview) return removeElement(".hatPreview") clearInterval(interval) }) }) }) } window.location.native_resolution = true const oldReqAnimFrame = window.requestAnimationFrame window.requestAnimationFrame = function(callback) { if (callback.toString().length === 69) { return window.setTimeout(callback, 1e3 / 111) } return oldReqAnimFrame(callback) } Object.defineProperty(HTMLImageElement.prototype, "src", { get() { return this[Symbol("src")] }, set(value) { if (this.classList.contains("hatPreview")) { if (getRemoveStoreHatsState() && (/\/hats\/hat\_/.test(value) || /\/accessories\/access\_/.test(value))) { return this.remove() } } this.setAttribute("src", value) this[Symbol("src")] = value }, configurable: true }) Object.defineProperty(Object.prototype, "turnSpeed", { get() { return 0 }, set(value) { this[Symbol("turnSpeed")] = 0 }, configurable: true }) const maxScreenWidth = 1920 const maxScreenHeight = 1080 const { lineTo, moveTo } = CanvasRenderingContext2D.prototype const gridAlpha = 0.06 CanvasRenderingContext2D.prototype.moveTo = function(x, y) { if (this.globalAlpha === gridAlpha) return return moveTo.apply(this, arguments) } CanvasRenderingContext2D.prototype.lineTo = function(x, y) { if (this.globalAlpha === gridAlpha && (y === maxScreenHeight || x === maxScreenWidth)) return return lineTo.apply(this, arguments) } window.addEventListener("DOMContentLoaded", onDOMLoaded) })()