Public Crabby Script

10/13/2021, 6:09:45 PM

  1. // ==UserScript==
  2. // @name Public Crabby Script
  3. // @namespace LIGMABALLS
  4. // @match http://bloble.io/
  5. // @grant none
  6. // @version 1.1
  7. // @author Crabby
  8. // @description 10/13/2021, 6:09:45 PM
  9. // ==/UserScript==
  10.  
  11. const keys = {};
  12.  
  13. let botsSpamming = false;
  14. let botSpamMessage;
  15.  
  16. const sleep = ms => new Promise(res => setTimeout(res, ms));
  17.  
  18. const getToken = () => {
  19. return grecaptcha.execute("6Ldh8e0UAAAAAFOKBv25wQ87F3EKvBzyasSbqxCE");
  20. }
  21.  
  22. // do not steal this part of my code and upload it or else i will report you
  23. class Bot {
  24. constructor(existingSocket) {
  25. this.socket = existingSocket || io.connect(socket.io.uri, {
  26. query: `cid=${UTILS.getUniqueID()}&rmid=${lobbyRoomID}`
  27. });
  28. this.socket.bot = true;
  29. this.players = [];
  30. this.units = [];
  31. this.player = {};
  32. this.socket.on("setUser", (raw, newPlayerIsYou) => {
  33. if (!raw || !raw[0]) return;
  34. const index = this.getPlayerIndexById(raw[0]);
  35. const player = {};
  36. player.id = raw[0];
  37. player.name = raw[1];
  38. player.dead = false;
  39. player.color = raw[2];
  40. player.size = raw[3];
  41. player.startSize = raw[4];
  42. player.x = raw[5];
  43. player.y = raw[6];
  44. player.buildRange = raw[7];
  45. player.gridIndex = raw[8];
  46. player.spawnProt = raw[9];
  47. player.skin = raw[10];
  48. if (index !== null) {
  49. this.players[index] = player;
  50. if (newPlayerIsYou) {
  51. this.player = this.players[index];
  52. }
  53. } else {
  54. this.players.push(player);
  55. if (newPlayerIsYou) {
  56. this.player = this.players[this.players.length - 1];
  57. }
  58. }
  59. });
  60. this.socket.on("delUser", id => {
  61. const index = this.getPlayerIndexById(id);
  62. this.players.splice(index, 1);
  63. });
  64. this.socket.on("au", raw => {
  65. if (raw) {
  66. this.units.push({
  67. id: raw[0],
  68. owner: raw[1],
  69. uPath: raw[2] || 0,
  70. type: raw[3] || 0,
  71. color: raw[4] || 0,
  72. paths: raw[5],
  73. x: raw[6] || 0,
  74. sX: raw[6] || 0,
  75. y: raw[7] || 0,
  76. sY: raw[7] || 0,
  77. dir: raw[8] || 0,
  78. turRot: raw[8] || 0,
  79. speed: raw[9] || 0,
  80. renderIndex: raw[10] || 0,
  81. turretIndex: raw[11] || 0,
  82. range: raw[12] || 0,
  83. cloak: raw[13] || 0
  84. });
  85. }
  86. });
  87. this.socket.on("spa", (a, d, c, b) => {
  88. a = this.getPlayerIndexById(a);
  89. if (this.units[a] == null) this.units[a] = {};
  90. this.units[a].x = d;
  91. this.units[a].y = c;
  92. this.units[a].sX = this.units[a].x || 0;
  93. this.units[a].sY = this.units[a].y || 0;
  94. });
  95. this.socket.on("du", id => {
  96. const index = this.getPlayerIndexById(id);
  97. this.units.splice(index, 1);
  98. });
  99. }
  100. async spawn(name, skin = 0) {
  101. this.socket.emit("spawn", { name, skin }, await getToken())
  102. }
  103. chat(msg) {
  104. this.socket.emit("ch", msg);
  105. }
  106. getPlayerIndexById(id) {
  107. for (let i = 0; i < this.players.length; i++) {
  108. if (this.players[i].id === id) {
  109. return i;
  110. }
  111. }
  112. return null;
  113. }
  114. }
  115.  
  116. window.Bot = Bot;
  117.  
  118. window.bots = [];
  119.  
  120. function placeGenerators() {
  121. socket.emit("1", 4.73, 245, 3);
  122. socket.emit("1", 5.0025, 245, 3);
  123. socket.emit("1", 5.275, 245, 3);
  124. socket.emit("1", 5.5475, 245, 3);
  125. socket.emit("1", 5.82, 245, 3);
  126. socket.emit("1", 6.0925, 245, 3);
  127. socket.emit("1", 6.365, 245, 3);
  128. socket.emit("1", 6.6375, 245, 3);
  129. socket.emit("1", 6.91, 245, 3);
  130. socket.emit("1", 7.1825, 245, 3);
  131. socket.emit("1", 7.455, 245, 3);
  132. socket.emit("1", 7.7275, 245, 3);
  133. socket.emit("1", 8.0025, 245, 3);
  134. socket.emit("1", 8.275, 245, 3);
  135. socket.emit("1", 8.5475, 245, 3);
  136. socket.emit("1", 8.82, 245, 3);
  137. socket.emit("1", 9.0925, 245, 3);
  138. socket.emit("1", 9.3675, 245, 3);
  139. socket.emit("1", 9.64, 245, 3);
  140. socket.emit("1", 9.9125, 245, 3);
  141. socket.emit("1", 10.1875, 245, 3);
  142. socket.emit("1", 10.4625, 245, 3);
  143. socket.emit("1", 10.7375, 245, 3);
  144. socket.emit("1", 4.5889, 186.5, 3);
  145. socket.emit("1", 5.085, 180.5, 3);
  146. socket.emit("1", 5.64, 180, 3);
  147. socket.emit("1", 5.999, 180, 3);
  148. socket.emit("1", 6.51, 185, 3);
  149. socket.emit("1", 7.05, 185, 3);
  150. socket.emit("1", 7.6, 185, 3);
  151. socket.emit("1", 8.15, 185, 3);
  152. socket.emit("1", 8.675, 185, 3);
  153. socket.emit("1", 9.225, 185, 3);
  154. socket.emit("1", 9.78, 185, 3);
  155. socket.emit("1", 10.325, 185, 3);
  156. socket.emit("1", 4.81, 130, 3);
  157. socket.emit("1", 5.36, 130, 3);
  158. socket.emit("1", 6.275, 130, 3);
  159. socket.emit("1", 6.775, 130, 3);
  160. socket.emit("1", 7.3, 130, 3);
  161. socket.emit("1", 7.85, 130, 3);
  162. socket.emit("1", 8.4, 130, 3);
  163. socket.emit("1", 8.925, 130, 3);
  164. socket.emit("1", 9.5, 130, 3);
  165. socket.emit("1", 10.05, 130, 3);
  166. socket.emit("1", 10.6, 130, 3);
  167. units.forEach(unit => {
  168. if (unit.owner === player.sid && unit.uPath[0] === 3 && unit.uPath[1] == null) {
  169. socket.emit("4", unit.id, 0);
  170. }
  171. })
  172. }
  173. function placeMicroGens() {
  174. socket.emit("1", 7.86, 311, 1);
  175. socket.emit("1", 8.06, 311, 1);
  176. socket.emit("1", 8.26, 311, 1);
  177. socket.emit("1", 8.46, 311, 1);
  178. socket.emit("1", 8.66, 311, 1);
  179. socket.emit("1", 8.86, 311, 1);
  180. socket.emit("1", 9.06, 311, 1);
  181. socket.emit("1", 9.26, 311, 1);
  182. socket.emit("1", 9.46, 311, 1);
  183. socket.emit("1", 9.66, 311, 1);
  184. socket.emit("1", 9.86, 311, 1);
  185. socket.emit("1", 10.28, 311, 1);
  186. socket.emit("1", 10.70, 311, 1);
  187. socket.emit("1", 10.90, 311, 1);
  188. socket.emit("1", 11.10, 311, 1);
  189. socket.emit("1", 11.30, 311, 1);
  190. socket.emit("1", 11.72, 311, 1);
  191. socket.emit("1", 12.14, 311, 1);
  192. socket.emit("1", 12.34, 311, 1);
  193. socket.emit("1", 12.54, 311, 1);
  194. socket.emit("1", 12.74, 311, 1);
  195. socket.emit("1", 12.94, 311, 1);
  196. socket.emit("1", 13.14, 311, 1);
  197. socket.emit("1", 13.34, 311, 1);
  198. socket.emit("1", 13.54, 311, 1);
  199. socket.emit("1", 13.74, 311, 1);
  200. socket.emit("1", 13.94, 311, 1);
  201. socket.emit("1", 10.07, 311, 1);
  202. socket.emit("1", 10.49, 311, 1);
  203. socket.emit("1", 11.51, 311, 1);
  204. socket.emit("1", 11.93, 311, 1);
  205. units.forEach(unit => {
  206. if (unit.owner === player.sid && unit.uPath[0] === 1 && unit.uPath[1] == null) {
  207. socket.emit("4", unit.id, 1);
  208. }
  209. })
  210. }
  211. function sellGenerators() {
  212. const yourGens = [];
  213. units.forEach(unit => {
  214. if (unit.owner === player.sid && unit.uPath[0] === 3) {
  215. yourGens.push(unit);
  216. }
  217. })
  218. socket.emit("3", yourGens.map(v => v.id));
  219. }
  220. function placeHouses() {
  221. socket.emit("1", 4.725, 130, 7);
  222. socket.emit("1", 5.245, 130, 4);
  223. socket.emit("1", 5.715, 130, 4);
  224. socket.emit("1", 6.185, 130, 4);
  225. socket.emit("1", 6.655, 130, 4);
  226. socket.emit("1", 7.13, 130, 4);
  227. socket.emit("1", 7.6, 130, 4);
  228. socket.emit("1", 1.85, 130, 4);
  229. socket.emit("1", 2.32, 130, 4);
  230. socket.emit("1", 2.79, 130, 4);
  231. socket.emit("1", 3.265, 130, 4);
  232. socket.emit("1", 3.735, 130, 4);
  233. socket.emit("1", 4.205, 130, 4);
  234. socket.emit("1", 5.06, 185, 4);
  235. socket.emit("1", 5.4, 185, 4);
  236. socket.emit("1", 5.725, 190, 4);
  237. socket.emit("1", 6.045, 186, 4);
  238. socket.emit("1", 6.374, 185, 4);
  239. socket.emit("1", 6.7215, 189.5, 4);
  240. socket.emit("1", 7.0425, 188.5, 4);
  241. socket.emit("1", 7.365, 185, 4);
  242. socket.emit("1", 7.712, 187.45, 4);
  243. socket.emit("1", 8.035, 188.5, 4);
  244. socket.emit("1", 8.36, 185, 4);
  245. socket.emit("1", 2.425, 188, 4);
  246. socket.emit("1", 2.75, 190, 4);
  247. socket.emit("1", 3.075, 184, 4);
  248. socket.emit("1", 3.42, 186, 4);
  249. socket.emit("1", 3.74, 190, 4);
  250. socket.emit("1", 4.06, 186, 4);
  251. socket.emit("1", 4.39, 185, 4);
  252. socket.emit("1", 4.8625, 245, 4);
  253. socket.emit("1", 5.1125, 245, 4);
  254. socket.emit("1", 5.3625, 245, 4);
  255. socket.emit("1", 5.6125, 245, 4);
  256. socket.emit("1", 5.8625, 245, 4);
  257. socket.emit("1", 6.1125, 245, 4);
  258. socket.emit("1", 6.3625, 245, 4);
  259. socket.emit("1", 6.6125, 245, 4);
  260. socket.emit("1", 6.8625, 245, 4);
  261. socket.emit("1", 7.14, 245, 4);
  262. socket.emit("1", 7.39, 245, 4);
  263. socket.emit("1", 7.64, 246, 4);
  264. socket.emit("1", 7.89, 246, 4);
  265. socket.emit("1", 8.14, 246, 4);
  266. socket.emit("1", 8.39, 246, 4);
  267. socket.emit("1", 8.635, 246, 4);
  268. socket.emit("1", 8.885, 246, 4);
  269. socket.emit("1", 2.5825, 245, 4);
  270. socket.emit("1", 2.8625, 245, 4);
  271. socket.emit("1", 3.1125, 245, 4);
  272. socket.emit("1", 3.3625, 245, 4);
  273. socket.emit("1", 3.6125, 245, 4);
  274. socket.emit("1", 3.8625, 245, 4);
  275. socket.emit("1", 4.1125, 245, 4);
  276. socket.emit("1", 4.3625, 245, 4);
  277. socket.emit("1", 4.6125, 245, 4);
  278. }
  279. function alertInfo() {
  280. alert(`
  281. info:
  282. - hold shift for troop join
  283. - press Z to rotate your troops
  284. - press B to summon a bot
  285. `);
  286. }
  287. function placeWalls() {
  288. socket.emit("1", 4.725, 130, 1);
  289. socket.emit("1", 5.245, 130, 1);
  290. socket.emit("1", 5.715, 130, 1);
  291. socket.emit("1", 6.185, 130, 1);
  292. socket.emit("1", 6.655, 130, 1);
  293. socket.emit("1", 7.13, 130, 1);
  294. socket.emit("1", 7.6, 130, 1);
  295. socket.emit("1", 1.85, 130, 1);
  296. socket.emit("1", 2.32, 130, 1);
  297. socket.emit("1", 2.79, 130, 1);
  298. socket.emit("1", 3.265, 130, 1);
  299. socket.emit("1", 3.735, 130, 1);
  300. socket.emit("1", 4.205, 130, 1);
  301. socket.emit("1", 5.06, 185, 1);
  302. socket.emit("1", 5.4, 185, 1);
  303. socket.emit("1", 5.725, 190, 1);
  304. socket.emit("1", 6.045, 186, 1);
  305. socket.emit("1", 6.374, 185, 1);
  306. socket.emit("1", 6.7215, 189.5, 1);
  307. socket.emit("1", 7.0425, 188.5, 1);
  308. socket.emit("1", 7.365, 185, 1);
  309. socket.emit("1", 7.712, 187.45, 1);
  310. socket.emit("1", 8.035, 188.5, 1);
  311. socket.emit("1", 8.36, 185, 1);
  312. socket.emit("1", 2.425, 188, 1);
  313. socket.emit("1", 2.75, 190, 1);
  314. socket.emit("1", 3.075, 184, 1);
  315. socket.emit("1", 3.42, 186, 1);
  316. socket.emit("1", 3.74, 190, 1);
  317. socket.emit("1", 4.06, 186, 1);
  318. socket.emit("1", 4.39, 185, 1);
  319. socket.emit("1", 4.8625, 245, 1);
  320. socket.emit("1", 5.1125, 245, 1);
  321. socket.emit("1", 5.3625, 245, 1);
  322. socket.emit("1", 5.6125, 245, 1);
  323. socket.emit("1", 5.8625, 245, 1);
  324. socket.emit("1", 6.1125, 245, 1);
  325. socket.emit("1", 6.3625, 245, 1);
  326. socket.emit("1", 6.6125, 245, 1);
  327. socket.emit("1", 6.8625, 245, 1);
  328. socket.emit("1", 7.14, 245, 1);
  329. socket.emit("1", 7.39, 245, 1);
  330. socket.emit("1", 7.64, 246, 1);
  331. socket.emit("1", 7.89, 246, 1);
  332. socket.emit("1", 8.14, 246, 1);
  333. socket.emit("1", 8.39, 246, 1);
  334. socket.emit("1", 8.635, 246, 1);
  335. socket.emit("1", 8.885, 246, 1);
  336. socket.emit("1", 2.5825, 245, 1);
  337. socket.emit("1", 2.8625, 245, 1);
  338. socket.emit("1", 3.1125, 245, 1);
  339. socket.emit("1", 3.3625, 245, 1);
  340. socket.emit("1", 3.6125, 245, 1);
  341. socket.emit("1", 3.8625, 245, 1);
  342. socket.emit("1", 4.1125, 245, 1);
  343. socket.emit("1", 4.3625, 245, 1);
  344. socket.emit("1", 4.6125, 245, 1);
  345. socket.emit("1", 5.21, 245, 1);
  346. socket.emit("1", 5.71, 245, 1);
  347. socket.emit("1", 3.725, 245, 1);
  348. socket.emit("1", 4.225, 245, 1);
  349. socket.emit("1", 7.86, 311, 1);
  350. socket.emit("1", 8.06, 311, 1);
  351. socket.emit("1", 8.26, 311, 1);
  352. socket.emit("1", 8.46, 311, 1);
  353. socket.emit("1", 8.66, 311, 1);
  354. socket.emit("1", 8.86, 311, 1);
  355. socket.emit("1", 9.06, 311, 1);
  356. socket.emit("1", 9.26, 311, 1);
  357. socket.emit("1", 9.46, 311, 1);
  358. socket.emit("1", 9.66, 311, 1);
  359. socket.emit("1", 9.86, 311, 1);
  360. socket.emit("1", 10.28, 311, 1);
  361. socket.emit("1", 10.70, 311, 1);
  362. socket.emit("1", 10.90, 311, 1);
  363. socket.emit("1", 11.10, 311, 1);
  364. socket.emit("1", 11.30, 311, 1);
  365. socket.emit("1", 11.72, 311, 1);
  366. socket.emit("1", 12.14, 311, 1);
  367. socket.emit("1", 12.34, 311, 1);
  368. socket.emit("1", 12.54, 311, 1);
  369. socket.emit("1", 12.74, 311, 1);
  370. socket.emit("1", 12.94, 311, 1);
  371. socket.emit("1", 13.14, 311, 1);
  372. socket.emit("1", 13.34, 311, 1);
  373. socket.emit("1", 13.54, 311, 1);
  374. socket.emit("1", 13.74, 311, 1);
  375. socket.emit("1", 13.94, 311, 1);
  376. socket.emit("1", 10.07, 311, 1);
  377. socket.emit("1", 10.49, 311, 1);
  378. socket.emit("1", 11.51, 311, 1);
  379. socket.emit("1", 11.93, 311, 1);
  380. socket.emit("1", 4.725, 250, 1);
  381. socket.emit("1", -1.55, 190, 1);
  382. }
  383. async function addBot() {
  384. const bot = new Bot();
  385. bot.spawn(`${player.name}`, player.skin);
  386. window.bots.push(bot);
  387. }
  388. function closeBots() {
  389. window.bots.forEach(bot => bot.socket.close());
  390. window.bots = [];
  391. }
  392. function rotateDrones() {
  393. const distanceBetweenTroops = 2 * Math.PI / selUnits.length;
  394. const droneRadiusFromMouse = 300;
  395. const mousePlayerDelta = polarToCartesian(targetDir, targetDst);
  396. const worldMousePos = { x: mousePlayerDelta.x + player.x, y: mousePlayerDelta.y + player.y };
  397. const x1 = player.x + targetDst * Math.cos(targetDir) + camX;
  398. const y1 = player.y + targetDst * Math.cos(targetDir) + camY;
  399. selUnits.forEach((unit, i) => {
  400. const x2 = x1 + (Math.cos(distanceBetweenTroops * i + rotateDrones.rotation) * droneRadiusFromMouse);
  401. const y2 = y1 + (Math.sin(distanceBetweenTroops * i + rotateDrones.rotation) * droneRadiusFromMouse);
  402. socket.emit("5", x2, y2, [unit.id], 0, 0);
  403. });
  404.  
  405. rotateDrones.rotation += 0.1;
  406. }
  407. rotateDrones.rotation = 0;
  408.  
  409. function polarToCartesian(r, theta) {
  410. return {
  411. x: r * Math.cos(theta),
  412. y: r * Math.sin(theta)
  413. };
  414. }
  415.  
  416. window.placeWalls = placeWalls
  417.  
  418. function onReady() {
  419. backgroundColor = "#444";
  420. outerColor = "#373737";
  421. socket._emit = socket.emit;
  422. socket.emit = (...args) => {
  423. // note: if you use my code and do not include this feature, i will take action against the script you upload by reporting it
  424. if (args[0] === "spawn") {
  425. args[1].name = "CS " + args[1].name;
  426. setTimeout(() => socket._emit("ch", "I am using Public Crabby Script"), 1000);
  427. }
  428. if (args[0] === "5") {
  429. args[4] = keys.ShiftLeft ? 0 : args[3];
  430. }
  431. socket._emit(...args);
  432. }
  433. }
  434.  
  435. document.addEventListener("keydown", async ({ code}) => {
  436. keys[code] = true;
  437. });
  438.  
  439. document.addEventListener("keyup", ({ code}) => {
  440. delete keys[code];
  441. });
  442.  
  443. const waitUntilReadyInterval = setInterval(() => {
  444. if (socket) {
  445. clearInterval(waitUntilReadyInterval);
  446. onReady();
  447. }
  448. }, 100);
  449.  
  450. // this commented out code down here will make the base automatically place walls if there are troops that are dangerous once i decide to fix it
  451. const updateInterval = setInterval(() => {
  452. if (keys.KeyZ) rotateDrones();
  453. let needsToDefend = false;
  454. units.forEach(unit => {
  455. if (unit.owner === player.sid) return;
  456. const distance = Math.sqrt((unit.x - player.x) ** 2 + (unit.y - player.y) ** 2);
  457. if (distance < 400) needsToDefend = true;
  458. });
  459. if (needsToDefend) {
  460. placeWalls();
  461. }
  462. }, 1000 / 20);
  463.  
  464. // making this a function so i can close it in my ide
  465. (function gui() {
  466. const crabbyScriptGui = document.createElement("div");
  467. const buttonAddGens = document.createElement("button");
  468. const buttonAddMicroGens = document.createElement("button");
  469. const buttonSellGens = document.createElement("button");
  470. const buttonGetHouses = document.createElement("button");
  471. const buttonInfo = document.createElement("button");
  472. const buttonSpamWalls = document.createElement("button");
  473. const buttonAddBot = document.createElement("button");
  474. const buttonCloseBots = document.createElement("button");
  475.  
  476.  
  477. crabbyScriptGui.style.position = "absolute";
  478. crabbyScriptGui.style.left = "40px";
  479. crabbyScriptGui.style.top = "40%";
  480. crabbyScriptGui.style.width = "270px";
  481. crabbyScriptGui.style.height = "260px";
  482. crabbyScriptGui.style.background = "linear-gradient(#4330ff88, #53507f88)";
  483. crabbyScriptGui.style.border = "5px solid #5350ff";
  484. crabbyScriptGui.style["border-radius"] = "5px";
  485. crabbyScriptGui.style["box-shadow"] = "10px 6px 10px #0000007f";
  486.  
  487.  
  488. buttonAddGens.style.position = "relative";
  489. buttonAddGens.style.left = "5px";
  490. buttonAddGens.style.top = "5px";
  491. buttonAddGens.style.width = "80px";
  492. buttonAddGens.style.height = "30px";
  493. buttonAddGens.style.background = "linear-gradient(to bottom right, #53507f, #5350ff)";
  494. buttonAddGens.style.color = "#aaa";
  495. buttonAddGens.style["font-family"] = "Ubuntu";
  496. buttonAddGens.style["font-size"] = "13px";
  497. buttonAddGens.style["border-radius"] = "5px";
  498. buttonAddGens.innerText = "Get power";
  499. buttonAddGens.addEventListener("click", placeGenerators);
  500.  
  501. buttonAddMicroGens.style.position = "relative";
  502. buttonAddMicroGens.style.left = "10px";
  503. buttonAddMicroGens.style.top = "5px";
  504. buttonAddMicroGens.style.width = "85px";
  505. buttonAddMicroGens.style.height = "30px";
  506. buttonAddMicroGens.style.background = "linear-gradient(to bottom right, #53507f, #5350ff)";
  507. buttonAddMicroGens.style.color = "#aaa";
  508. buttonAddMicroGens.style["font-family"] = "Ubuntu";
  509. buttonAddMicroGens.style["font-size"] = "13px";
  510. buttonAddMicroGens.style["border-radius"] = "5px";
  511. buttonAddMicroGens.innerText = "Micro gens";
  512. buttonAddMicroGens.addEventListener("click", placeMicroGens);
  513.  
  514. buttonSellGens.style.position = "relative";
  515. buttonSellGens.style.left = "15px";
  516. buttonSellGens.style.top = "5px";
  517. buttonSellGens.style.width = "85px";
  518. buttonSellGens.style.height = "30px";
  519. buttonSellGens.style.background = "linear-gradient(to bottom right, #53507f, #5350ff)";
  520. buttonSellGens.style.color = "#aaa";
  521. buttonSellGens.style["font-family"] = "Ubuntu";
  522. buttonSellGens.style["font-size"] = "13px";
  523. buttonSellGens.style["border-radius"] = "5px";
  524. buttonSellGens.innerText = "Sell gens";
  525. buttonSellGens.addEventListener("click", sellGenerators);
  526.  
  527. buttonGetHouses.style.position = "relative";
  528. buttonGetHouses.style.left = "5px";
  529. buttonGetHouses.style.top = "10px";
  530. buttonGetHouses.style.width = "85px";
  531. buttonGetHouses.style.height = "30px";
  532. buttonGetHouses.style.background = "linear-gradient(to bottom right, #53507f, #5350ff)";
  533. buttonGetHouses.style.color = "#aaa";
  534. buttonGetHouses.style["font-family"] = "Ubuntu";
  535. buttonGetHouses.style["font-size"] = "13px";
  536. buttonGetHouses.style["border-radius"] = "5px";
  537. buttonGetHouses.innerText = "Add houses";
  538. buttonGetHouses.addEventListener("click", placeHouses);
  539.  
  540. buttonSpamWalls.style.position = "relative";
  541. buttonSpamWalls.style.left = "-80px";
  542. buttonSpamWalls.style.top = "10px";
  543. buttonSpamWalls.style.width = "85px";
  544. buttonSpamWalls.style.height = "30px";
  545. buttonSpamWalls.style.background = "linear-gradient(to bottom right, #53507f, #5350ff)";
  546. buttonSpamWalls.style.color = "#aaa";
  547. buttonSpamWalls.style["font-family"] = "Ubuntu";
  548. buttonSpamWalls.style["font-size"] = "13px";
  549. buttonSpamWalls.style["border-radius"] = "5px";
  550. buttonSpamWalls.innerText = "Place walls";
  551. buttonSpamWalls.addEventListener("click", placeWalls);
  552.  
  553. buttonInfo.style.position = "relative";
  554. buttonInfo.style.left = "5px";
  555. buttonInfo.style.top = "195px";
  556. buttonInfo.style.width = "85px";
  557. buttonInfo.style.height = "30px";
  558. buttonInfo.style.background = "linear-gradient(to bottom right, #53507f, #5350ff)";
  559. buttonInfo.style.color = "#aaa";
  560. buttonInfo.style["font-family"] = "Ubuntu";
  561. buttonInfo.style["font-size"] = "13px";
  562. buttonInfo.style["border-radius"] = "5px";
  563. buttonInfo.innerText = "info";
  564. buttonInfo.addEventListener("click", alertInfo);
  565.  
  566. buttonAddBot.style.position = "relative";
  567. buttonAddBot.style.left = "180px";
  568. buttonAddBot.style.top = "-20px";
  569. buttonAddBot.style.width = "85px";
  570. buttonAddBot.style.height = "30px";
  571. buttonAddBot.style.background = "linear-gradient(to bottom right, #53507f, #5350ff)";
  572. buttonAddBot.style.color = "#aaa";
  573. buttonAddBot.style["font-family"] = "Ubuntu";
  574. buttonAddBot.style["font-size"] = "13px";
  575. buttonAddBot.style["border-radius"] = "5px";
  576. buttonAddBot.innerText = "Add bot";
  577. buttonAddBot.addEventListener("click", addBot);
  578. buttonCloseBots.style.position = "relative";
  579. buttonCloseBots.style.left = "-80px";
  580. buttonCloseBots.style.top = "15px";
  581. buttonCloseBots.style.width = "85px";
  582. buttonCloseBots.style.height = "30px";
  583. buttonCloseBots.style.background = "linear-gradient(to bottom right, #53507f, #5350ff)";
  584. buttonCloseBots.style.color = "#aaa";
  585. buttonCloseBots.style["font-family"] = "Ubuntu";
  586. buttonCloseBots.style["font-size"] = "13px";
  587. buttonCloseBots.style["border-radius"] = "5px";
  588. buttonCloseBots.innerText = "Close bots";
  589. buttonCloseBots.addEventListener("click", closeBots);
  590.  
  591. crabbyScriptGui.appendChild(buttonAddGens);
  592. crabbyScriptGui.appendChild(buttonAddMicroGens);
  593. crabbyScriptGui.appendChild(buttonSellGens);
  594. crabbyScriptGui.appendChild(buttonGetHouses);
  595. crabbyScriptGui.appendChild(buttonInfo);
  596. crabbyScriptGui.appendChild(buttonSpamWalls);
  597. crabbyScriptGui.appendChild(buttonAddBot);
  598. crabbyScriptGui.appendChild(buttonCloseBots);
  599. document.body.appendChild(crabbyScriptGui);
  600. })();