// ==UserScript==
// @name Paper.io Hacked Menu
// @namespace http://tampermonkey.net/
// @version 3.0
// @description Here is a simple hack menu for Paper.io!
// @author AA034
// @match https://paper-io.com/*
// @icon https://www.google.com/s2/favicons?domain=paper-io.com
// @grant none
// @downloadURL https://update.greasyfork.icu/scripts/433006/Paperio%20Hacked%20Menu.user.js
// @updateURL https://update.greasyfork.icu/scripts/433006/Paperio%20Hacked%20Menu.meta.js
// ==/UserScript==
let overlayHTML = `
PaperHack
M to toggle menu
`
//Misc stuff
function getID(x) {
return document.getElementById(x)
};
let overlay = document.createElement("div");
overlay.innerHTML = overlayHTML;
document.body.appendChild(overlay);
let acc = getID("accordian"),
unlockSkins = getID("unlockSkins"),
box = getID("box"),
radiBox = getID("radiCheck"),
invinBox = getID('invinCheck'),
paper2 = window.paper2;
//Skins
unlockSkins.onclick = function() {
paper2.skins.forEach(obj => {
unlockSkin(obj.name);
});
unlockSkin(name)
shop_open()
}
//Functions
function radiHack() {
let playerIndex;
for (let i = 0; i < paper2.game.units.length; i++) {
if (paper2.game.units[i].name === paper2.game.player.name) {
playerIndex = i;
break;
}
}
function calculateDistance(x1, y1, x2, y2) {
return Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);
}
function checkUnitProximity() {
const playerX = paper2.game.player.position.x;
const playerY = paper2.game.player.position.y;
for (let i = 0; i < paper2.game.units.length; i++) {
if (i !== playerIndex) {
const unitX = paper2.game.units[i].position.x;
const unitY = paper2.game.units[i].position.y;
const distance = calculateDistance(playerX, playerY, unitX, unitY);
if (distance <= 100) {
if (paper2.game.units[i] !== paper2.game.player) {
paper2.game.units = paper2.game.units.filter(array => array !== paper2.game.units[i]);
}
}
}
}
}
checkUnitProximity();
setInterval(checkUnitProximity, 100);
}
function pauseHack() {
document.addEventListener('keydown', (event) => {
if (event.key === 'p') {
let paused = paper2.game.paused
if(paused == false) {
paper2.game.paused = true
}
else {
paper2.game.paused = false
}
}
})
}
function invinHack() {
paper2.game.player.track.unit = paper2.game.units[4]
}
function speedHack() {
function distance(x1, y1, x2, y2) {
return Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);
}
let isMouseHeld = false;
let interval;
// Move the player towards the next location on left mouse button click and hold
document.addEventListener("mousedown", function(event) {
if (event.button === 0) { // Check if left mouse button is clicked
isMouseHeld = true;
interval = setInterval(movePlayer, 16); // Update every 16ms (approximately 60fps)
}
});
document.addEventListener("mouseup", function(event) {
if (event.button === 0) {
isMouseHeld = false;
clearInterval(interval);
}
});
function movePlayer() {
if(paper2.game.player.baseDistance > 15) {
paper2.game.player.in = null
const currentPlayerX = paper2.game.player.position.x;
const currentPlayerY = paper2.game.player.position.y;
const targetX = paper2.game.player.target.x;
const targetY = paper2.game.player.target.y;
const distanceToTarget = distance(currentPlayerX, currentPlayerY, targetX, targetY);
const stepSize = 3.5;
if (distanceToTarget > stepSize) {
const angle = Math.atan2(targetY - currentPlayerY, targetX - currentPlayerX);
const newX = currentPlayerX + stepSize * Math.cos(angle);
const newY = currentPlayerY + stepSize * Math.sin(angle);
paper2.game.player.position.x = newX;
paper2.game.player.position.y = newY;
} else {
paper2.game.player.position.x = targetX;
paper2.game.player.position.y = targetY;
if (!isMouseHeld) {
clearInterval(interval);
}
}
}
else if(paper2.game.player.baseDistance == 0) {
paper2.game.player.in = null
const currentPlayerX = paper2.game.player.position.x;
const currentPlayerY = paper2.game.player.position.y;
const targetX = paper2.game.player.target.x;
const targetY = paper2.game.player.target.y;
const distanceToTarget = distance(currentPlayerX, currentPlayerY, targetX, targetY);
const stepSize = 3.5;
if (distanceToTarget > stepSize) {
const angle = Math.atan2(targetY - currentPlayerY, targetX - currentPlayerX);
const newX = currentPlayerX + stepSize * Math.cos(angle);
const newY = currentPlayerY + stepSize * Math.sin(angle);
paper2.game.player.position.x = newX;
paper2.game.player.position.y = newY;
} else {
paper2.game.player.position.x = targetX;
paper2.game.player.position.y = targetY;
if (!isMouseHeld) {
clearInterval(interval);
}
}
}
}
}
function zoomHack() {
window.addEventListener('wheel', function(event) {
window.paper2.configs.paper2_classic.minScale = 0.5;
if (event.deltaY > 0) {
if (window.paper2.configs.paper2_classic.maxScale > 0.5) {
window.paper2.configs.paper2_classic.maxScale -= 0.5;
}
}
else if (event.deltaY < 0) {
if (window.paper2.configs.paper2_classic.maxScale < 4.5) {
window.paper2.configs.paper2_classic.maxScale += 0.5;
}
}
})
}
//Load Game
document.querySelector("#pre_game > div.grow > div.button.play").setAttribute("id", "startButton");
document.getElementById('startButton').addEventListener("click", function() {
game_start();
setTimeout(function() {
if(radiBox.checked == true) {
radiHack()
}
if(invinBox.checked == true) {
invinHack()
}
pauseHack();
speedHack();
zoomHack();
}, 600);
});