// ==UserScript== // @name Paper.IO Skins & Zoom Hack // @namespace http://tampermonkey.net/ // @version 0.2 // @description Get all skins and ability to zoom in paper.io // @author Zertalious (Zert) // @match *://paper-io.com/* // @icon https://www.google.com/s2/favicons?sz=64&domain=paper.io // @grant none // @antifeature ads // @run-at document-start // @downloadURL https://update.greasyfork.icu/scripts/444987/PaperIO%20Skins%20%20Zoom%20Hack.user.js // @updateURL https://update.greasyfork.icu/scripts/444987/PaperIO%20Skins%20%20Zoom%20Hack.meta.js // ==/UserScript== Object.defineProperty( window, 'shop', { get() { return this._shop; }, set( shop ) { console.log( 'SHOP!!', shop ); Object.defineProperty( shop, 'btnsData', { set( btnsData ) { for ( let i = 0; i < btnsData.length; i ++ ) { Object.defineProperty( btnsData[ i ], 'status', { get() { if ( this._status === 'locked' ) { return 'open'; } return this._status; }, set( value ) { this._status = value; } } ); } console.log( 'btnsData!!!', btnsData ); this._btnsData = btnsData; }, get() { return this._btnsData; } } ) this._shop = shop; } } ); Object.defineProperty( window, 'checkShouldUnlockSkin', { get() { return function () { return true; } } } ); let scale = 1; window.addEventListener( 'DOMContentLoaded', function () { const value = parseInt( new URLSearchParams( window.location.search ).get( 'showAd' ), 16 ); const shouldShowAd = isNaN( value ) || Date.now() - value < 0 || Date.now() - value > 10 * 60 * 1000; const el = document.createElement( 'div' ); el.innerHTML = `
${shouldShowAd ? `Loading ad...` : `
Skins & Zoom Cheat
Use the shop to equip any skin you like.
Scroll to zoom.

By Zertalious

Discord
Instagram
Twitter
More scripts
` }
`; while ( el.children.length > 0 ) { document.body.appendChild( el.children[ 0 ] ); } if ( shouldShowAd ) { const url = new URL( window.location.href ); url.searchParams.set( 'showAd', Date.now().toString( 16 ) ); url.searchParams.set( 'scriptVersion', GM.info.script.version ); window.location.href = 'https://zertalious.xyz?ref=' + new TextEncoder().encode( url.href ).toString(); } const zoomEl = document.getElementById( 'the_game' ); zoomEl.style.transformOrigin = '0 0'; document.addEventListener( 'wheel', function ( event ) { scale *= event.deltaY > 0 ? 0.9 : 1.1; zoomEl.style.transform = 'scale(' + scale + ')'; zoomEl.style.width = window.innerWidth / scale + 'px'; zoomEl.style.height = window.innerHeight / scale + 'px'; } ); } ); CanvasRenderingContext2D.prototype.clearRect = new Proxy( CanvasRenderingContext2D.prototype.clearRect, { apply( target, thisArgs, args ) { Reflect.apply( ...arguments ); if ( args[ 2 ] === window.innerWidth && args[ 3 ] === window.innerHeight ) { thisArgs.restore(); thisArgs.save(); const f = ( 0.5 - scale * 0.5 ); thisArgs.translate( window.innerWidth * f, window.innerHeight * f ); thisArgs.scale( scale, scale ); } } } );