Eval Script

8/28/2022, 8:19:50 PM

目前為 2022-09-02 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name        Eval Script
// @namespace   Wolfy0615
// @match       https://mppclone.com/*
// @match       https://multiplayerpiano.com/*
// @grant       none
// @version     1.3
// @author      Wolfy0615
// @require     https://greasyfork.org/scripts/450595-utilinspectforbrowser/code/UtilInspectForBrowser.js
// @description 8/28/2022, 8:19:50 PM
// ==/UserScript==

// Why the require? Minified code is scary.
// Unminified code is avalible here: https://gist.github.com/Wolfy0615/e2617aca7cece2c2f067f3082fc37b5c?permalink_comment_id=4287505#gistcomment-4287505
// Please note: Some function names etc. may seem odd, but the file is realitivly small. This module comes straight from NodeJS and was *compiled* for the browser.
// This means I did not write that code myself, it was simply compiled to the file so it could work for the browser.

function handleMessage(msg) {
    let client = MPP.client;
    let token = localStorage.token;
    if (client) {
        if (msg.a.startsWith(">") && msg.p._id == client.getOwnParticipant()._id) {
            try {
                let localStorage = {};
                window.localStorage = {};
                let evaled = eval(msg.a.substring(1).trim());
                client.sendArray([{
                    m: 'a',
                    message: `✔️ ${typeof evaled} ${window.inspect(evaled)}`.substring(0, 512).replaceAll(token, "[REDACTED]").replaceAll("\n", " ")
                }])
            } catch (err) {
                if (err) {
                    client.sendArray([{
                        m: 'a',
                        message: `❌ ${typeof err} ${err}`
                    }]);
                }
            }
        }
    }
}
 
function init() {
    MPP.client.on("a", msg => { handleMessage(msg); });
}
 
const checkInterval = setInterval(() => {
    if (window.MPP) {
        clearInterval(checkInterval);
        init();
    }
}, 200);