Advanced Automill - Sploop.io

Automatically place windmills when you press the M key

  1. // ==UserScript==
  2. // @name Advanced Automill - Sploop.io
  3. // @namespace http://tampermonkey.net/
  4. // @version 2024-04-27
  5. // @description Automatically place windmills when you press the M key
  6. // @author fizzixww
  7. // @match https://sploop.io/
  8. // @icon https://www.google.com/s2/favicons?sz=64&domain=sploop.io
  9. // @grant none
  10. // @license MIT
  11. // ==/UserScript==
  12. const fizzixwwSet = new Set();
  13. WebSocket.prototype.fizzixwwOriginalSend = WebSocket.prototype.send;
  14. WebSocket.prototype.send = function(data) {
  15. this.fizzixwwOriginalSend(data);
  16. fizzixwwSet.add(this);
  17. };
  18. window.addEventListener('beforeunload', () => {
  19. fizzixwwSet.clear();
  20. });
  21. (function() {
  22. 'use strict';
  23. const fizzixwwFirst = 123;
  24. const fizzixwwSecond = 247;
  25. var fizzixwwKeysPressed = new Set();
  26. document.addEventListener("keydown", (event) => {
  27. if (event.key === "w" || event.key === "a" || event.key === "s" || event.key === "d") {
  28. fizzixwwKeysPressed.add(event.key);
  29. }
  30. });
  31. document.addEventListener("keyup", (event) => {
  32. if (event.key === "w" || event.key === "a" || event.key === "s" || event.key === "d") {
  33. fizzixwwKeysPressed.delete(event.key);
  34. }
  35. });
  36. document.addEventListener("keydown", (event) => {
  37. if (event.key === "m") {
  38. let fizzixwwAng;
  39. switch (Array.from(fizzixwwKeysPressed).sort().join("")) {
  40. case "w":
  41. fizzixwwAng = 270;
  42. break;
  43. case "a":
  44. fizzixwwAng = 180;
  45. break;
  46. case "s":
  47. fizzixwwAng = 90;
  48. break;
  49. case "d":
  50. fizzixwwAng = 0;
  51. break;
  52. case "aw":
  53. fizzixwwAng = 225;
  54. break;
  55. case "as":
  56. fizzixwwAng = 135;
  57. break;
  58. case "ds":
  59. fizzixwwAng = 45;
  60. break;
  61. case "dw":
  62. fizzixwwAng = 315;
  63. break;
  64. default:
  65. return;
  66. }
  67. var fizzixwwInterval = setInterval(() => {
  68. for (let fizzixwwSocket of fizzixwwSet) {
  69. fizzixwwSocket.send(new Uint8Array([2, 14]));
  70. let balls = 65535 * (((fizzixwwAng + fizzixwwFirst) % 360) * Math.PI/180 + Math.PI) / (2 * Math.PI);
  71. fizzixwwSocket.send(new Uint8Array([19, 255 & balls, balls >> 8 & 255]));
  72. setTimeout(() => {
  73. fizzixwwSocket.send(new Uint8Array([2, 14]));
  74. let sex = 65535 * (((fizzixwwAng + fizzixwwSecond) % 360) * Math.PI/180 + Math.PI) / (2 * Math.PI);
  75. fizzixwwSocket.send(new Uint8Array([19, 255 & sex, sex >> 8 & 255]));
  76. }, 110);
  77. }
  78. }, 380);
  79. setTimeout(() => {
  80. clearInterval(fizzixwwInterval);
  81. }, 1800);
  82. for (let fizzixwwSocket of fizzixwwSet) {
  83. fizzixwwSocket.send(new Uint8Array([18]));
  84. }
  85. }
  86. });
  87. })();