PaperIO Simple Script

Paper.io用のシンプルなHack用Script

  1. // ==UserScript==
  2. // @name PaperIO Simple Script
  3. // @namespace https://paper-io.com/teams/
  4. // @version 0.0.22222222222222222222222222
  5. // @description Paper.io用のシンプルなHack用Script
  6. // @license MIT
  7. // @author Akkey57492
  8. // @match https://paper-io.com/*
  9. // @icon https://img.poki.com/cdn-cgi/image/quality=78,width=600,height=600,fit=cover,g=0.5x0.5,f=auto/d2708e8aa31df3fe7b211bca36405d6d.png
  10. // @grant GM_addStyle
  11. // @grant GM_getResourceText
  12. // @grant unsafeWindow
  13. // @require https://code.jquery.com/jquery-3.3.1.min.js
  14. // @require https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/js/toastr.min.js
  15. // @resource toastr.min.css https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/css/toastr.min.css
  16. // ==/UserScript==
  17.  
  18. var cf_css;
  19. var window = window.unsafeWindow;
  20. cf_css = GM_getResourceText("toastr.min.css");
  21. GM_addStyle(cf_css);
  22. let debugMode = false;
  23. let godmode = false;
  24. let stopMove = false;
  25. let fastMove = false;
  26. let shortcut = true;
  27. let teams = true;
  28. let menuHTML = `
  29. <div id="menu">
  30. <button class="toggle" id="toggle_button">Toggle</button>
  31. <div class="toggle" id="menu_main">
  32. <section><div class="menu_content"><button class="menu_button" id="play_game">Start Game</button></div></section>
  33. <section><div class="menu_content"><button class="menu_button" id="shortcut_toggle">Shortcut Toggle(Enabled)</button></div></section>
  34. <section><div class="menu_content"><button class="menu_button" id="stop_move_toggle">Stop Movement(Disabled)</button></div></section>
  35. <section><div class="menu_content"><button class="menu_button" id="fast_move_toggle">Fast Movement(Disabled)</button></div></section>
  36. <section><div class="menu_content"><button class="menu_button" id="suicide">Suicide</button></div></section>
  37. <section><div class="menu_content"><button class="menu_button" id="debug_toggle">Debug Mode(Disabled)</button></div></section>
  38. <section><div class="menu_content"><button class="menu_button" id="godmode">Godmode(Disabled)</button></div></section>
  39. <section><div class="menu_content"><button class="menu_button" id="zoom_reset">Reset Zoom</button></div></section>
  40. </div>
  41. </div>
  42. <style>
  43. #menu {
  44. z-index: 10;
  45. position: absolute;
  46. top: 256px;
  47. left: 7px;
  48. }
  49. #menu_main {
  50. padding: 15px;
  51. margin-bottom: 5px;
  52. display: grid;
  53. }
  54. section {
  55. display: flex;
  56. justify-content: space-between;margin:5px;
  57. }
  58. .toggle {
  59. background-color: #363c3d;
  60. letter-spacing: 2px;
  61. font-weight: bold;
  62. font-size: 15px;
  63. font-family: 'Open Sans', sans-serif;
  64. color:white;
  65. }
  66. p {
  67. text-align: center;
  68. border-bottom:1px solid white;
  69. }
  70. #toggle_button {
  71. width: 100%;
  72. border:0;
  73. }
  74. label {
  75. font-weight: bold;
  76. }
  77. input {
  78. margin-top: auto;
  79. margin-bottom: auto;
  80. transform: scale(1.3);
  81. }
  82. input:hover {
  83. cursor: pointer;
  84. }
  85. input:focus {
  86. box-shadow: 0 0 10px #9ecaed;
  87. }
  88. input[type=checkbox] {
  89. transform: scale(2.2);outline=none;
  90. }
  91. input[type=radio] {
  92. border-top: auto;
  93. }
  94. input[type=color] {
  95. width: 50px;
  96. }
  97. .menu_button {
  98. background-color: #242829;
  99. color: white;
  100. font-size: 16px;
  101. border: none;
  102. padding: 8px;
  103. }
  104. .menu_content {
  105. position: relative;
  106. display: inline-block;
  107. }
  108. </style>
  109. `
  110. let menu_element = document.createElement("div");
  111. menu_element.innerHTML = menuHTML;
  112. document.body.appendChild(menu_element);
  113. let toggle = document.getElementById("toggle_button");
  114. let start = document.getElementById("play_game");
  115. let shortcut_toggle = document.getElementById("shortcut_toggle");
  116. let stop_move_toggle = document.getElementById("stop_move_toggle");
  117. let fast_move_toggle = document.getElementById("fast_move_toggle");
  118. let suicide = document.getElementById("suicide");
  119. let debug_toggle = document.getElementById("debug_toggle");
  120. let godmode_toggle = document.getElementById("godmode");
  121. let reset_zoom = document.getElementById("zoom_reset");
  122.  
  123. if(window.paper2 === undefined) {
  124. teams = true;
  125. toastr.warning("モード: Teams");
  126. } else {
  127. teams = false;
  128. toastr.warning("モード: Classic");
  129. }
  130.  
  131. toggle.onclick = function() {
  132. let menu = document.getElementById("menu_main");
  133. if(menu.style.display == "none") {
  134. menu.style.display = "grid";
  135. } else {
  136. menu.style.display = "none";
  137. }
  138. }
  139.  
  140. start.onclick = function() {
  141. if(teams === true) {
  142. window.paperio2api.startGame();
  143. } else if(teams === false) {
  144. window.paper2.start("paper2_classic");
  145. }
  146. }
  147.  
  148. shortcut_toggle.onclick = function() {
  149. if(shortcut === true) {
  150. shortcut = false;
  151. shortcut_toggle.textContent = "Shortcut Toggle(Disabled)";
  152. toastr.warning("ショートカットキーを無効にしました");
  153. } else if(shortcut === false) {
  154. shortcut = true;
  155. shortcut_toggle.textContent = "Shortcut Toggle(Enabled)";
  156. toastr.success("ショートカットキーを有効にしました");
  157. }
  158. }
  159.  
  160. function stop_movement(switch_boolean) {
  161. if(switch_boolean === true) {
  162. if(teams === true) {
  163. window.paperio2api.config.unitSpeed = 0;
  164. } else if(teams === false) {
  165. window.paper2.configs.paper2_classic.unitSpeed = 0;
  166. }
  167. stopMove = true;
  168. stop_move_toggle.textContent = "Stop Movement(Enabled)";
  169. toastr.success("StopMovementを有効にしました");
  170. } else if(switch_boolean === false) {
  171. if(teams === true) {
  172. window.paperio2api.config.unitSpeed = 90;
  173. } else if(teams === false) {
  174. window.paper2.configs.paper2_classic.unitSpeed = 90;
  175. }
  176. stopMove = false;
  177. stop_move_toggle.textContent = "Stop Movement(Disabled)";
  178. toastr.info("StopMovementを無効にしました");
  179. } else {
  180. window.location.reload(true);
  181. }
  182. }
  183.  
  184. function fast_movement(switch_boolean) {
  185. if(switch_boolean === true) {
  186. if(teams === true) {
  187. window.paperio2api.config.unitSpeed = 140;
  188. } else if(teams === false) {
  189. window.paper2.configs.paper2_classic.unitSpeed = 140;
  190. }
  191. fastMove = true;
  192. fast_move_toggle.textContent = "Fast Movement(Enabled)";
  193. toastr.success("FastMovementを有効にしました");
  194. } else if(switch_boolean === false) {
  195. if(teams === true) {
  196. window.paperio2api.config.unitSpeed = 90;
  197. } else if(teams === false) {
  198. window.paper2.configs.paper2_classic.unitSpeed = 90;
  199. }
  200. fastMove = false;
  201. fast_move_toggle.textContent = "Fast Movement(Disabled)";
  202. toastr.info("FastMovementを無効にしました");
  203. }
  204. }
  205.  
  206. function player_suicide() {
  207. if(teams === true) {
  208. window.paperio2api.game.gameOver(true);
  209. } else if(teams === false) {
  210. window.paper2.game.gameOver(true);
  211. }
  212. toastr.success("自殺しました");
  213. }
  214.  
  215. function debug(switch_boolean) {
  216. if(switch_boolean === true) {
  217. if(teams === true) {
  218. window.paperio2api.game.debug = true;
  219. window.paperio2api.game.debugGraph = true;
  220. } else if(teams === false) {
  221. if(window.paper2.game.player === null) {
  222. toastr.error("Debugはプレイ中でないと起動できません");
  223. return
  224. }
  225. window.paper2.game.debug = true;
  226. window.paper2.game.debugGraph = true;
  227. }
  228. debugMode = true;
  229. debug_toggle.textContent = "Debug(Enabled)";
  230. toastr.success("Debugモードを有効にしました");
  231. } else if(switch_boolean === false) {
  232. if(teams === true) {
  233. window.paperio2api.game.debug = false;
  234. window.paperio2api.game.debugGraph = false;
  235. } else if(teams === false) {
  236. window.paper2.game.debug = false;
  237. window.paper2.game.debugGraph = false;
  238. }
  239. debugMode = false;
  240. debug_toggle.textContent = "Debug(Disabled)";
  241. toastr.info("Debugモードを有効にしました");
  242. }
  243. }
  244.  
  245. function player_godmode(switch_boolean) {
  246. if(switch_boolean === true) {
  247. if(teams === true) {
  248. const player_id = window.paperio2api.game.player.id;
  249. window.paperio2api.game.kill2 = window.paperio2api.game.kill;
  250. window.paperio2api.game.kill = function(killed, killer, count) {
  251. if(killed.id === player_id) {
  252. return
  253. } else if(killed.id === player_id && killer === undefined) {
  254. return
  255. }
  256. window.paperio2api.game.kill2(killed, killer, count);
  257. }
  258. } else if(teams === false) {
  259. const player_name = window.paper2.game.player.name;
  260. window.paper2.game.kill2 = window.paper2.game.kill;
  261. window.paper2.game.kill = function(killed, killer, count) {
  262. if(killed.name === player_name) {
  263. return
  264. } else if(killed.name === player_name && killer === undefined) {
  265. return
  266. }
  267. window.paper2.game.kill2(killed, killer, count);
  268. }
  269. }
  270. godmode = true;
  271. godmode_toggle.textContent = "Godmode(Enabled)";
  272. toastr.success("Godmodeを有効にしました");
  273. } else if(switch_boolean === false) {
  274. if(teams === true) {
  275. window.paperio2api.game.kill = window.paperio2api.game.kill2;
  276. window.paperio2api.game.kill2 = null;
  277. } else if(teams === false) {
  278. window.paper2.game.kill = window.paper2.game.kill2;
  279. window.paper2.game.kill2 = null;
  280. }
  281. godmode = false;
  282. godmode_toggle.textContent = "Godmode(Disabled)";
  283. toastr.info("Godmodeを無効にしました");
  284. }
  285. }
  286.  
  287. function zoom_reset() {
  288. if(teams === true) {
  289. window.paperio2api.config.maxScale = 4.5;
  290. } else if(teams === false) {
  291. window.paper2.configs.paper2_classic.maxScale = 4.5;
  292. }
  293. toastr.success("拡大率をリセットしました");
  294. }
  295.  
  296. stop_move_toggle.onclick = function() {
  297. if(stopMove === true) {
  298. stop_movement(false);
  299. } else if(stopMove === false) {
  300. if(fastMove === true) {
  301. toastr.error("FastMovementが有効な間はStopMovementを有効にできません");
  302. return
  303. }
  304. stop_movement(true);
  305. }
  306. }
  307.  
  308. fast_move_toggle.onclick = function() {
  309. if(fastMove === true) {
  310. fast_movement(false);
  311. } else if(fastMove === false) {
  312. if(stopMove === true) {
  313. toastr.error("StopMovementが有効な間はFastMovementを有効にできません");
  314. return
  315. }
  316. fast_movement(true);
  317. }
  318. }
  319.  
  320. suicide.onclick = function() {
  321. player_suicide();
  322. }
  323.  
  324. debug_toggle.onclick = function() {
  325. if(debugMode === true) {
  326. debug(false);
  327. } else if(debugMode === false) {
  328. debug(true);
  329. }
  330. }
  331.  
  332. godmode_toggle.onclick = function() {
  333. if(godmode === true) {
  334. player_godmode(false);
  335. } else if(godmode === false) {
  336. if(teams === true) {
  337. if(window.paperio2api.game.player === null) {
  338. toastr.error("ゲームを開始しないとGodmodeを有効にできません");
  339. return
  340. }
  341. } else if(teams === false) {
  342. if(window.paper2.game.player === null) {
  343. toastr.error("ゲームを開始しないとGodmodeを有効にできません");
  344. return
  345. }
  346. }
  347. player_godmode(true);
  348. }
  349. }
  350.  
  351. reset_zoom.onclick = function() {
  352. zoom_reset();
  353. }
  354.  
  355. window.addEventListener("keypress", function(event) {
  356. if(shortcut === false) {
  357. return
  358. }
  359. if(event.key === "e") {
  360. if(stopMove === true) {
  361. stop_movement(false);
  362. } else if(stopMove === false) {
  363. if(fastMove === true) {
  364. toastr.error("FastMovementが有効な間はStopMovementを有効にできません");
  365. return
  366. }
  367. stop_movement(true);
  368. }
  369. } else if(event.key === "g") {
  370. if(fastMove === true) {
  371. fast_movement(false);
  372. } else if(fastMove === false) {
  373. if(stopMove === true) {
  374. toastr.error("StopMovementが有効な間はFastMovementを有効にできません");
  375. return
  376. }
  377. fast_movement(true);
  378. }
  379. } else if(event.key === "r") {
  380. player_suicide();
  381. } else if(event.key === "t") {
  382. if(debugMode === false) {
  383. debug(true);
  384. } else if(debugMode === true) {
  385. debug(false);
  386. }
  387. } else if(event.key === "y") {
  388. if(godmode === true) {
  389. player_godmode(false);
  390. } else if(godmode === false) {
  391. if(teams === true) {
  392. if(window.paperio2api.game.player === null) {
  393. toastr.error("ゲームを開始しないとGodmodeを有効にできません");
  394. return
  395. }
  396. } else if(teams === false) {
  397. if(window.paper2.game.player === null) {
  398. toastr.error("ゲームを開始しないとGodmodeを有効にできません");
  399. return
  400. }
  401. }
  402. player_godmode(true);
  403. }
  404. } else if(event.key === "u") {
  405. zoom_reset();
  406. }
  407. });
  408.  
  409. window.addEventListener("wheel", function(event) {
  410. if(teams === true) {
  411. if(event.deltaY > 0) {
  412. if(window.paperio2api.config.maxScale > 0.5) {
  413. window.paperio2api.config.maxScale -= 0.5;
  414. }
  415. } else if(event.deltaY < 0) {
  416. if(window.paperio2api.config.maxScale < 4.5) {
  417. window.paperio2api.config.maxScale += 0.5;
  418. }
  419. }
  420. } else if(teams === false) {
  421. if(event.deltaY > 0) {
  422. if(window.paper2.configs.paper2_classic.maxScale > 0.5) {
  423. window.paper2.configs.paper2_classic.maxScale -= 0.5;
  424. }
  425. } else if(event.deltaY < 0) {
  426. if(window.paper2.configs.paper2_classic.maxScale < 4.5) {
  427. window.paper2.configs.paper2_classic.maxScale += 0.5;
  428. }
  429. }
  430. }
  431. });
  432.  
  433. toastr.success("Script Loaded");

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址