Bubble.am macro

shift - autosplit | 1,2,3,4,5 - splits | qasd - movement

  1. // ==UserScript==
  2. // @name Bubble.am macro
  3. // @namespace https://discord.gg/p56aQHNU9U
  4. // @version 1.1
  5. // @description shift - autosplit | 1,2,3,4,5 - splits | qasd - movement
  6. // @author enderror
  7. // @match *://bubble.am/*
  8. // @run-at document-start
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. let splitInterval = null;
  13. let splitSwitch = false;
  14. const keys = {
  15. q: false,
  16. a: false,
  17. s: false,
  18. d: false
  19. }
  20.  
  21. function split(times) {
  22. for(let i = 0; i < times; i++) {
  23. setTimeout(function() {
  24. $("body").trigger($.Event("keydown", { keyCode: 32 }));
  25. $("body").trigger($.Event("keyup", { keyCode: 32 }));
  26. }, 50 * i);
  27. }
  28. }
  29.  
  30. function goTo(x, y) {
  31. x = window.innerWidth / x; y = window.innerHeight / y;
  32. $("canvas").trigger($.Event("mousemove", {clientX: x, clientY: y}));
  33. }
  34.  
  35. function keydown(e) {
  36. const chat = document.querySelector("#chat_textbox");
  37. if(chat === document.activeElement) return;
  38.  
  39. const key = e.key.toString().toLowerCase();
  40.  
  41. if(keys.hasOwnProperty(key)) {
  42. keys[key] = true;
  43. }
  44. switch(key) {
  45. case "shift":
  46. if(splitSwitch) break;
  47.  
  48. splitSwitch = true;
  49. splitInterval = setInterval(() => {
  50. $("body").trigger($.Event("keydown", { keyCode: 32 }));
  51. $("body").trigger($.Event("keyup", { keyCode: 32 }));
  52. }, 4);
  53. break;
  54. case "1":
  55. split(1);
  56. break;
  57.  
  58. case "2":
  59. split(2);
  60. break;
  61.  
  62. case "3":
  63. split(3);
  64. break;
  65.  
  66. case "4":
  67. split(4);
  68. break;
  69.  
  70. case "5":
  71. split(5);
  72. break;
  73.  
  74. case "q":
  75. goTo(3, -0);
  76. break;
  77. case "a":
  78. goTo(-0, 8);
  79. break;
  80. case "s":
  81. goTo(2, 0.6);
  82. break;
  83.  
  84. case "d":
  85. goTo(0, 5);
  86. break;
  87. }
  88.  
  89. switch(true) {
  90. case keys["a"] && keys["q"]:
  91. goTo(-0, -0);
  92. break;
  93.  
  94. case keys["a"] && keys["s"]:
  95. goTo(-0, 0);
  96. break;
  97.  
  98. case keys["q"] && keys["d"]:
  99. goTo(0, -0);
  100. break;
  101.  
  102. case keys["s"] && keys["d"]:
  103. goTo(0, 0);
  104. break;
  105. }
  106. }
  107.  
  108. function keyup(e) {
  109. const chat = document.querySelector("#chat_textbox");
  110. if(chat === document.activeElement) return;
  111.  
  112. const key = e.key.toString().toLowerCase();
  113.  
  114. if(keys.hasOwnProperty(key)) {
  115. keys[key] = false;
  116. }
  117.  
  118. switch(key) {
  119. case "shift":
  120. clearInterval(splitInterval);
  121. splitSwitch = false;
  122. break;
  123. }
  124. }
  125.  
  126. document.addEventListener("keydown", keydown);
  127. document.addEventListener("keyup", keyup);
  128.  
  129. console.log("Created by DD7");