Cube Client

Cliente PvP para Bloxd.io con hitboxes, keystrokes, contador de CPS, crosshair personalizado, FPS Boost y barra de salud.

当前为 2025-01-04 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Cube Client
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.4
  5. // @description Cliente PvP para Bloxd.io con hitboxes, keystrokes, contador de CPS, crosshair personalizado, FPS Boost y barra de salud.
  6. // @author TuNombre
  7. // @match https://*.bloxd.io/*
  8. // @grant none
  9. // @license MIT
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. // Configuración inicial
  16. const config = {
  17. hitboxes: false,
  18. customCrosshair: false,
  19. fpsBoost: false,
  20. healthBar: false,
  21. keystrokes: true, // Keystrokes activado por defecto
  22. cpsCounter: true // CPS activado por defecto
  23. };
  24.  
  25. // Crear el contenedor de Keystrokes y CPS
  26. const keystrokesContainer = document.createElement('div');
  27. keystrokesContainer.id = 'keystrokes';
  28. keystrokesContainer.style.position = 'fixed';
  29. keystrokesContainer.style.bottom = '100px';
  30. keystrokesContainer.style.left = '10px';
  31. keystrokesContainer.style.zIndex = '10000';
  32. keystrokesContainer.style.fontFamily = 'Arial, sans-serif';
  33. keystrokesContainer.style.color = 'white';
  34. keystrokesContainer.style.display = config.keystrokes ? 'block' : 'none';
  35. keystrokesContainer.style.textAlign = 'center';
  36.  
  37. keystrokesContainer.innerHTML = `
  38. <div style="display: flex; flex-direction: column; align-items: center;">
  39. <div id="key-W" style="width: 50px; height: 50px; background: grey; margin: 5px; display: flex; justify-content: center; align-items: center; border: 2px solid white; font-size: 18px;">W</div>
  40. <div style="display: flex;">
  41. <div id="key-A" style="width: 50px; height: 50px; background: grey; margin: 5px; display: flex; justify-content: center; align-items: center; border: 2px solid white; font-size: 18px;">A</div>
  42. <div id="key-S" style="width: 50px; height: 50px; background: grey; margin: 5px; display: flex; justify-content: center; align-items: center; border: 2px solid white; font-size: 18px;">S</div>
  43. <div id="key-D" style="width: 50px; height: 50px; background: grey; margin: 5px; display: flex; justify-content: center; align-items: center; border: 2px solid white; font-size: 18px;">D</div>
  44. </div>
  45. <div id="key-Shift" style="width: 100px; height: 50px; background: grey; margin: 5px; display: flex; justify-content: center; align-items: center; border: 2px solid white; font-size: 16px;">Shift</div>
  46. <div id="key-Space" style="width: 150px; height: 50px; background: grey; margin: 5px; display: flex; justify-content: center; align-items: center; border: 2px solid white; font-size: 16px;">Space</div>
  47. <div style="margin-top: 20px;">
  48. <div id="leftCPS" style="margin: 5px; font-size: 16px;">LMB CPS: 0</div>
  49. <div id="rightCPS" style="margin: 5px; font-size: 16px;">RMB CPS: 0</div>
  50. </div>
  51. </div>
  52. `;
  53. document.body.appendChild(keystrokesContainer);
  54.  
  55. // Actualizar Keystrokes al presionar teclas
  56. document.addEventListener('keydown', (e) => {
  57. const keyElement = document.getElementById(`key-${e.key}`);
  58. if (keyElement) {
  59. keyElement.style.background = '#00ff00'; // Cambiar a verde cuando está presionado
  60. }
  61. });
  62.  
  63. document.addEventListener('keyup', (e) => {
  64. const keyElement = document.getElementById(`key-${e.key}`);
  65. if (keyElement) {
  66. keyElement.style.background = 'grey'; // Volver a gris cuando se suelta
  67. }
  68. });
  69.  
  70. // Contadores de clics
  71. let leftClickCount = 0;
  72. let rightClickCount = 0;
  73.  
  74. document.addEventListener('mousedown', (e) => {
  75. if (e.button === 0) leftClickCount++; // Clic izquierdo
  76. if (e.button === 2) rightClickCount++; // Clic derecho
  77. });
  78.  
  79. // Reiniciar los contadores cada segundo y mostrar los CPS
  80. setInterval(() => {
  81. document.getElementById('leftCPS').textContent = `LMB CPS: ${leftClickCount}`;
  82. document.getElementById('rightCPS').textContent = `RMB CPS: ${rightClickCount}`;
  83. leftClickCount = 0;
  84. rightClickCount = 0;
  85. }, 1000);
  86.  
  87. // Crear el menú de configuración
  88. const menu = document.createElement('div');
  89. menu.style.position = 'fixed';
  90. menu.style.top = '50px';
  91. menu.style.left = '50px';
  92. menu.style.backgroundColor = '#000';
  93. menu.style.color = '#fff';
  94. menu.style.padding = '10px';
  95. menu.style.border = '2px solid #fff';
  96. menu.style.borderRadius = '5px';
  97. menu.style.zIndex = '10000';
  98. menu.style.display = 'none';
  99. menu.style.fontFamily = 'Arial, sans-serif';
  100.  
  101. menu.innerHTML = `
  102. <h3>Cube Client</h3>
  103. <label><input type="checkbox" id="toggleHitboxes" ${config.hitboxes ? 'checked' : ''}> Hitboxes</label><br>
  104. <label><input type="checkbox" id="toggleCrosshair" ${config.customCrosshair ? 'checked' : ''}> Custom Crosshair</label><br>
  105. <label><input type="checkbox" id="toggleFPSBoost" ${config.fpsBoost ? 'checked' : ''}> FPS Boost</label><br>
  106. <label><input type="checkbox" id="toggleHealthBar" ${config.healthBar ? 'checked' : ''}> Health Bar</label><br>
  107. <label><input type="checkbox" id="toggleKeystrokes" ${config.keystrokes ? 'checked' : ''}> Keystrokes</label><br>
  108. <label><input type="checkbox" id="toggleCPS" ${config.cpsCounter ? 'checked' : ''}> CPS Counter</label><br>
  109. <button id="closeMenu" style="margin-top: 10px;">Cerrar Menú</button>
  110. `;
  111.  
  112. document.body.appendChild(menu);
  113.  
  114. // Eventos para los controles del menú
  115. document.getElementById('toggleHitboxes').addEventListener('change', (e) => {
  116. config.hitboxes = e.target.checked;
  117. if (config.hitboxes) enableHitboxes();
  118. else disableHitboxes();
  119. });
  120.  
  121. document.getElementById('toggleCrosshair').addEventListener('change', (e) => {
  122. config.customCrosshair = e.target.checked;
  123. if (config.customCrosshair) enableCustomCrosshair();
  124. else disableCustomCrosshair();
  125. });
  126.  
  127. document.getElementById('toggleFPSBoost').addEventListener('change', (e) => {
  128. config.fpsBoost = e.target.checked;
  129. if (config.fpsBoost) enableFPSBoost();
  130. else disableFPSBoost();
  131. });
  132.  
  133. document.getElementById('toggleHealthBar').addEventListener('change', (e) => {
  134. config.healthBar = e.target.checked;
  135. if (config.healthBar) enableHealthBar();
  136. else disableHealthBar();
  137. });
  138.  
  139. document.getElementById('toggleKeystrokes').addEventListener('change', (e) => {
  140. config.keystrokes = e.target.checked;
  141. keystrokesContainer.style.display = config.keystrokes ? 'block' : 'none';
  142. });
  143.  
  144. document.getElementById('toggleCPS').addEventListener('change', (e) => {
  145. config.cpsCounter = e.target.checked;
  146. document.querySelectorAll('#leftCPS, #rightCPS').forEach(el => {
  147. el.style.display = config.cpsCounter ? 'block' : 'none';
  148. });
  149. });
  150.  
  151. document.getElementById('closeMenu').addEventListener('click', () => {
  152. menu.style.display = 'none';
  153. });
  154.  
  155. // Abrir el menú con la tecla "Inicio"
  156. document.addEventListener('keydown', (e) => {
  157. if (e.key === 'Home') {
  158. menu.style.display = menu.style.display === 'none' ? 'block' : 'none';
  159. }
  160. });
  161.  
  162. // Función para habilitar/deshabilitar hitboxes
  163. function enableHitboxes() {
  164. document.querySelectorAll('.player').forEach(player => {
  165. player.style.border = '2px solid red'; // Ejemplo básico
  166. });
  167. }
  168.  
  169. function disableHitboxes() {
  170. document.querySelectorAll('.player').forEach(player => {
  171. player.style.border = 'none';
  172. });
  173. }
  174.  
  175. // Función para habilitar/deshabilitar el crosshair
  176. function enableCustomCrosshair() {
  177. const crosshair = document.createElement('div');
  178. crosshair.id = 'customCrosshair';
  179. crosshair.style.position = 'fixed';
  180. crosshair.style.top = '50%';
  181. crosshair.style.left = '50%';
  182. crosshair.style.width = '10px';
  183. crosshair.style.height = '10px';
  184. crosshair.style.backgroundColor = 'red';
  185. crosshair.style.borderRadius = '50%';
  186. crosshair.style.zIndex = '9999';
  187. document.body.appendChild(crosshair);
  188. }
  189.  
  190. function disableCustomCrosshair() {
  191. const crosshair = document.getElementById('customCrosshair');
  192. if (crosshair) crosshair.remove();
  193. }
  194.  
  195. // Función para habilitar/deshabilitar FPS Boost
  196. function enableFPSBoost() {
  197. document.body.style.filter = 'brightness(1.2) contrast(1.5)'; // Mejora ligera
  198. }
  199.  
  200. function disableFPSBoost() {
  201. document.body.style.filter = 'none';
  202. }
  203.  
  204. // Función para habilitar/deshabilitar la barra de salud
  205. function enableHealthBar() {
  206. const healthBar = document.createElement('div');
  207. healthBar.id = 'customHealthBar';
  208. healthBar.style.position = 'fixed';
  209. healthBar.style.bottom = '10px';
  210. healthBar.style.left = '50%';
  211. healthBar.style.transform = 'translateX(-50%)';
  212. healthBar.style.width = '300px';
  213. healthBar.style.height = '20px';
  214. healthBar.style.backgroundColor = 'grey';
  215. healthBar.style.border = '2px solid white';
  216. healthBar.innerHTML = '<div style="width: 100%; height: 100%; background: red;" id="healthFill"></div>';
  217. document.body.appendChild(healthBar);
  218.  
  219. // Simular cambios en la salud
  220. const healthFill = document.getElementById('healthFill');
  221. setInterval(() => {
  222. healthFill.style.width = Math.random() * 100 + '%'; // Simulación de salud
  223. }, 1000);
  224. }
  225.  
  226. function disableHealthBar() {
  227. const healthBar = document.getElementById('customHealthBar');
  228. if (healthBar) healthBar.remove();
  229. }
  230.  
  231. })();