8/28/2022, 8:19:50 PM
As of
// ==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);