Paper.IO Enhanced

Zoom cheat, game speed change cheat

目前为 2023-01-10 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Paper.IO Enhanced
  3. // @namespace -
  4. // @version 1.0.0
  5. // @description Zoom cheat, game speed change cheat
  6. // @author NotYou
  7. // @match *://paper-io.com*
  8. // @match *://www.paper-io.com*
  9. // @run-at document-start
  10. // @license GPL-3.0-or-later
  11. // @grant none
  12. // @icon data:image/png;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAe8MAYnvDAHp7wwB6e8MAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHvDAMp7wwD/e8MA/3vDAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7wwDKe8MA/3vDAP97wwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfcQAyn3EAP99xAD/fcQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIHGAMqBxgD/gcYA/4HGAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHyQDKh8kA/4fJAP+HyQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjcwAyo3MAP+NzAD/jcwAsI7MAJSOzACUhrgAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJPPAMqTzwD/k88A/5PPAP+TzwD/k88A/4q5DfqKtxdaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACb0wDKm9MA/5vTAP+b0wD/m9MA/5vTAP+Rvif/kLss+pG8MVoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAodYDyqHWA/+h1gP/oNYBhp/VAFyf1QBcnc4X7J3OGP+ezhf6oNMOIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKnaKMqp2ij/qdoo/6naKEAAAAAAAAAAAKnaKOKp2ij/qdoo/6naKCoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACv3UHKr91B/6/dQf+v3UFAAAAAAAAAAACv3UHir91B/6/dQf+v3UEqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAr9VclK/UX/+v1F//tN1WwrXgVK614FSur9Ve9q/UX/+v1F7gsdpUEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK/QbASx0XCisdFx/7nfY/+64mD/uuJg/7LTb/+x0XDgsNBtIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtdN3ArbUeqK+4W//v+Rt/7/kbf+31nngtdN4IgAAAAAAAAAAAAAAALXTdwwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC614AEweR2QMLmdELC5nRCvNt8GgAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAPH/AADx/wAA8f8AAPH/AADx/wAA8D8AAPAfAADwDwAA8McAAPHHAADxxwAA8AcAAPgPAAD8HwAA//8AAA==
  13. // ==/UserScript==
  14.  
  15. (function() {
  16. let minimalZoom = 0.5
  17. let maximalZoom = 3.5
  18.  
  19. let minimalGameSpeed = 10
  20. let maximalGameSpeed = 200
  21.  
  22. // Do NOT edit code below
  23.  
  24. let css = `
  25. #get_random_name {
  26. width: 60px;
  27. height: 60px;
  28. left: -70px;
  29. background: rgb(255, 255, 255);
  30. position: absolute;
  31. box-shadow: rgb(151, 151, 151) 0 6px 0;
  32. background-image: url(https://cdn-icons-png.flaticon.com/512/1714/1714041.png);
  33. background-size: 70% 70%;
  34. background-repeat: no-repeat;
  35. background-position: 50% 50%;
  36. filter: grayscale(1);
  37. }
  38.  
  39. #get_random_name:active {
  40. box-shadow: none;
  41. top: 6px;
  42. }`
  43.  
  44. class CookieControl {
  45. getEntries() {
  46. return document.cookie.replace(/\s/g, '').split(';').map(e => e.split('='))
  47. }
  48.  
  49. set(name, value) {
  50. document.cookie = encodeURIComponent(name.trim()) + '=' + encodeURIComponent(value.trim())
  51. }
  52.  
  53. get(name) {
  54. let entries = this.getEntries()
  55.  
  56. return entries.find(e => e[0] === name)[1]
  57. }
  58. }
  59.  
  60. let cookies = CookieControl.prototype
  61.  
  62. waitForProperty(window, 'paper2').then(() => {
  63. let paper = window.paper2
  64.  
  65. waitForProperty(paper, 'game').then(() => {
  66. let config = paper.game.config
  67. let scene = paper.configs.paper2_classic
  68. let game = paper.game
  69.  
  70. // Get Random Name
  71.  
  72. let username = document.querySelector('.username')
  73.  
  74. username.insertAdjacentHTML('beforebegin', '<div id="get_random_name"></div>')
  75.  
  76. document.querySelector('#get_random_name').addEventListener('click', () => {
  77. let name = getRandomName()
  78.  
  79. username.querySelector('input').value = name
  80. cookies.set('paperio_username', name)
  81. })
  82.  
  83. window.addEventListener('wheel', e => {
  84. let isPositive = e.deltaY > 0
  85.  
  86. if(e.ctrlKey) {
  87. e.preventDefault()
  88.  
  89. // Game Speed Cheat
  90.  
  91. config.unitSpeed += isPositive ? -2.5 : 2.5
  92.  
  93. let current = config.unitSpeed
  94.  
  95. config.unitSpeed = correctValue(current, minimalGameSpeed, maximalGameSpeed)
  96. } else {
  97.  
  98. // Zoom Cheat
  99.  
  100. scene.maxScale += isPositive ? -0.5 : 0.5
  101.  
  102. let current = scene.maxScale
  103.  
  104. scene.maxScale = correctValue(current, minimalZoom, maximalZoom)
  105. }
  106. })
  107.  
  108. // Movement Cheat
  109.  
  110. let listenersData = ['w', 'a', 's', 'd']
  111.  
  112. listenersData.forEach((e, i) => {
  113. addKeyListener(e, i > 1 ? false : true, i % 2 === 0 ? 'y' : 'x')
  114. })
  115.  
  116. // Nerd Stuff
  117.  
  118. let styleNode = document.createElement('style')
  119. styleNode.appendChild(document.createTextNode(css))
  120. document.head.appendChild(styleNode)
  121.  
  122. function addKeyListener(key, isNegative, coordinate) {
  123. let code = 'Key' + key.toUpperCase()
  124. let randomValue = Math.floor(Math.random() * 18)
  125.  
  126. window.addEventListener('keydown', e => {
  127. if(e.code === code) {
  128. let player = game.player
  129.  
  130. if(player) {
  131. player.position[coordinate] += randomValue * (isNegative ? -1 : 1)
  132. }
  133. }
  134. })
  135. }
  136.  
  137. function getRandomName() {
  138. let namesPool = game.nameManager.pool
  139.  
  140. return namesPool[Math.floor(Math.random() * namesPool.length)]
  141. }
  142.  
  143. function correctValue(currentValue, minimalValue, maximalValue) {
  144. return Math.max(minimalValue, Math.min(maximalValue, currentValue))
  145. }
  146. })
  147. })
  148.  
  149. function waitForProperty(target, prop) {
  150. return new Promise(res => {
  151. let interval = setInterval(() => {
  152. if(target[prop]) {
  153. clearInterval(interval)
  154. return res(target[prop])
  155. }
  156. }, 1e3)
  157. })
  158. }
  159. })()