Matrix Menu V2 | ESP & X-Ray | Wireframe Players&World

X-RAY Menu

  1. // ==UserScript==
  2. // @name Matrix Menu V2 | ESP & X-Ray | Wireframe Players&World
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.2.1
  5. // @description X-RAY Menu
  6. // @author Whoami
  7. // @match *://voxiom.io/*
  8. // @require https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js
  9. // @icon https://media.giphy.com/media/CxYGmxv0Oyz4I/giphy.gif
  10. // @grant none
  11. // @license MIT
  12. // ==/UserScript==
  13.  
  14. const originalArrayPush = Array.prototype.push;
  15. const THREE = window.THREE;
  16. const prototype_ = {
  17. world: {
  18. wireframe: false,
  19. visibleOnDamage: true,
  20. notVisible: true,
  21. depthFunc: 2
  22. },
  23. player: {
  24. opacity: 0.5,
  25. wireframe: false
  26. }
  27. };
  28.  
  29. Array.prototype.push = function(...args) {
  30. if (args[0] && args[0].material && args[0].material.type && args[0].material.type === "ShaderMaterial") {
  31. const material = args[0].material;
  32. material.opacity = 0;
  33. material.transparent = prototype_.world.visibleOnDamage;
  34. material.side = 2;
  35. material.depthFunc = prototype_.world.depthFunc;
  36. material.wireframe = prototype_.world.wireframe;
  37. material.visible = prototype_.world.notVisible;
  38. }
  39. if (args[0] && args[0].material && args[0].material.type && args[0].material.type === "MeshBasicMaterial") {
  40. const material = args[0].material;
  41. material.opacity = prototype_.player.opacity;
  42. material.wireframe = prototype_.player.wireframe;
  43. }
  44. return originalArrayPush.apply(this, args);
  45. };
  46.  
  47. const style = document.createElement('style');
  48. style.innerHTML = `
  49. .menuHeaderText1 {
  50. font-size: 35px;
  51. font-weight: 900;
  52. text-align: center !important;
  53. animation: rgbAnimation 0.5s infinite alternate;
  54. }
  55. .menuItemTitle1 {
  56. font-size: 18px;
  57. animation: rgbAnimation 0.5s infinite alternate;
  58. }
  59. @keyframes rgbAnimation {
  60. 0% { color: rgb(255, 0, 0); }
  61. 25% { color: rgb(255, 255, 0); }
  62. 50% { color: rgb(0, 255, 0); }
  63. 75% { color: rgb(0, 255, 255); }
  64. 100% { color: rgb(255, 0, 255); }
  65. }
  66. .menuItem1:hover img {
  67. transform: scale(1.1);
  68. }
  69. #menuContainer {
  70. position: fixed;
  71. top: 50%;
  72. left: 50%;
  73. transform: translate(-50%, -50%);
  74. background-color: #212121;
  75. padding: 10px;
  76. border-radius: 10px;
  77. border: revert-layer;
  78. z-index: 1000;
  79. max-width: 400px;
  80. font-size: 14px;
  81. line-height: 1.5;
  82. box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
  83. }
  84. #menuContainer * {
  85. -webkit-font-smoothing: antialiased;
  86. font-smoothing: antialiased;
  87. }
  88. #menuContainer label {
  89. color: white !important;
  90. font-weight: bold;
  91. }
  92. .tab {
  93. display: flex;
  94. justify-content: space-around;
  95. margin-bottom: 10px;
  96. }
  97. .tab button {
  98. background-color: #f0f0f0;
  99. border: 1px solid #ccc;
  100. padding: 3px 5px;
  101. width: 100%;
  102. cursor: pointer;
  103. }
  104. .tab button.active {
  105. background-color: #ccc;
  106. }
  107. .tabcontent {
  108. display: none;
  109. margin-top: 10px;
  110. }
  111. .tabcontent.active {
  112. display: block;
  113. }
  114. label {
  115. display: block;
  116. margin-bottom: 5px;
  117. }
  118. select, input[type="text"] {
  119. width: calc(100% - 12px);
  120. padding: 3px;
  121. margin-bottom: 5px;
  122. }
  123. select {
  124. width: calc(100% - 2px) !important;
  125. }
  126. .header {
  127. position: relative;
  128. text-align: center;
  129. }
  130. .headerContent {
  131. position: absolute;
  132. top: 50%;
  133. left: 50%;
  134. transform: translate(-50%, -50%);
  135. }
  136. .header h2 {
  137. margin: 0;
  138. position: relative;
  139. bottom: -100px;
  140. }
  141. .headerImage {
  142. width: 100%;
  143. height: auto;
  144. margin-top: -50px;
  145. border-radius: 10px;
  146. object-fit: cover;
  147. }
  148. @import url(https://fonts.googleapis.com/css2?family=Space+Grotesk:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900&display=swap);
  149. @import url(https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900&display=swap);
  150. div div b {
  151. font-family: Montserrat;
  152. }
  153. h2.menuHeaderText1 {
  154. display: none;
  155. }
  156. button.active {
  157. font-family: Space Grotesk;
  158. }
  159. div div button {
  160. font-family: Space Grotesk;
  161. background-color: #7300a8;
  162. border-color: #000000;
  163. color: #eceff1;
  164. border-radius: 3px;
  165. }
  166. div div label {
  167. font-family: Montserrat;
  168. }
  169. div div select {
  170. font-family: Space Grotesk;
  171. background-color: #000000;
  172. color: #f5f5f5;
  173. text-decoration: overline;
  174. border-color: #7300a8;
  175. border-radius: 3px;
  176. text-align: center;
  177. height: 40px;
  178. }
  179. div div input {
  180. background-color: #7300a8;
  181. border-color: #000000;
  182. color: #ffffff;
  183. border-radius: 6px;
  184. }
  185. div div div {
  186. background-color: #000000;
  187. }
  188. div.sc-iJKOTD.jqbzkO {
  189. display: none;
  190. }
  191. a.sc-giYglK.bzRdHa {
  192. display: none;
  193. }
  194. img.sc-pVTFL.iRqeFU {
  195. display: none;
  196. }
  197. #menuContainer {
  198. width: 500px;
  199. }
  200. img.sc-ibSMNl.emCBjU {
  201. display: none;
  202. }
  203. div.sc-lbCmg.kLCLJb {
  204. text-decoration: overline;
  205. font-family: Montserrat;
  206. }
  207. div.sc-bgMUWu.hqpBqs {
  208. font-family: Montserrat;
  209. }
  210. div.sc-ivsNig.kqMamr {
  211. font-family: Montserrat;
  212. }
  213. div.sc-bxYNtK.ekaCUa {
  214. font-family: Montserrat;
  215. }
  216. div.sc-inrDdN.ehvxZP {
  217. font-family: Montserrat;
  218. align-items: center;
  219. }
  220. div.sc-fBgqEL.ljNuSc {
  221. background-color: #212121;
  222. }
  223. div.sc-ikJyIC.vCrTy {
  224. background-color: #7300a8;
  225. opacity: 0.4;
  226. }
  227. div.sc-jwrNVz.fVmNa {
  228. background-color: #7300a8;
  229. border-radius: 5px;
  230. height: 50px;
  231. align-items: center;
  232. padding-left: 40px;
  233. }
  234. div.sc-hnCQzQ.gFCsYN {
  235. font-family: Montserrat;
  236. }
  237. a.sc-cgLTVH.hqKrdE {
  238. font-family: Montserrat;
  239. }
  240. `;
  241. document.head.appendChild(style);
  242.  
  243. const menuContainer = document.createElement('div');
  244. menuContainer.id = 'menuContainer';
  245. document.body.appendChild(menuContainer);
  246.  
  247. const header = document.createElement('div');
  248. header.innerHTML = `
  249. <div class="header">
  250. <h2 class='menuHeaderText1'>WHOAMI CHEATS</h2>
  251. </div>
  252. <b>"O" Exit</b>
  253. `;
  254. menuContainer.appendChild(header);
  255.  
  256. const tab = document.createElement('div');
  257. tab.className = 'tab';
  258. tab.innerHTML = `
  259. <button class="tablinks active" onclick="openTab(event, 'mainMenu')">Main Menu</button>
  260. <button class="tablinks" onclick="openTab(event, 'players')">Players</button>
  261. <button class="tablinks" onclick="openTab(event, 'world')">World</button>
  262. `;
  263. menuContainer.appendChild(tab);
  264.  
  265. const mainMenu = document.createElement('div');
  266. mainMenu.id = 'mainMenu';
  267. mainMenu.className = 'tabcontent active';
  268. mainMenu.innerHTML = `
  269. <label for="opacity"><span class='menuItemTitle1'>Opacity:</span></label>
  270. <select id="opacity">
  271. <option value="0">0</option>
  272. <option value="0.1">0.1</option>
  273. <option value="0.2">0.2</option>
  274. <option value="0.3">0.3</option>
  275. <option value="0.4">0.4</option>
  276. <option value="0.5">0.5</option>
  277. <option value="0.6">0.6</option>
  278. <option value="0.7">0.7</option>
  279. <option value="0.8">0.8</option>
  280. <option value="0.9">0.9</option>
  281. <option value="1">1</option>
  282. </select>
  283. <button onclick="resetSettings()">Reset to Defaults</button>
  284. `;
  285. menuContainer.appendChild(mainMenu);
  286.  
  287. const players = document.createElement('div');
  288. players.id = 'players';
  289. players.className = 'tabcontent';
  290. players.innerHTML = `
  291. <label for="playerOpacity"><span class='menuItemTitle1'>Player Opacity:</span></label>
  292. <select id="playerOpacity">
  293. <option value="0">0</option>
  294. <option value="0.1">0.1</option>
  295. <option value="0.2">0.2</option>
  296. <option value="0.3">0.3</option>
  297. <option value="0.4">0.4</option>
  298. <option value="0.5">0.5</option>
  299. <option value="0.6">0.6</option>
  300. <option value="0.7">0.7</option>
  301. <option value="0.8">0.8</option>
  302. <option value="0.9">0.9</option>
  303. <option value="1">1</option>
  304. </select>
  305. `;
  306. menuContainer.appendChild(players);
  307.  
  308. const world = document.createElement('div');
  309. world.id = 'world';
  310. world.className = 'tabcontent';
  311. world.innerHTML = `
  312. <label for="wireframe"><span class='menuItemTitle1'>World Wireframe:</span></label>
  313. <select id="wireframe">
  314. <option value="true">True</option>
  315. <option value="false" selected>False</option>
  316. </select>
  317. `;
  318. menuContainer.appendChild(world);
  319.  
  320. function openTab(evt, tabName) {
  321. const tabcontent = document.getElementsByClassName('tabcontent');
  322. for (let i = 0; i < tabcontent.length; i++) {
  323. tabcontent[i].style.display = 'none';
  324. tabcontent[i].classList.remove('active');
  325. }
  326. const tablinks = document.getElementsByClassName('tablinks');
  327. for (let i = 0; i < tablinks.length; i++) {
  328. tablinks[i].classList.remove('active');
  329. }
  330. document.getElementById(tabName).style.display = 'block';
  331. document.getElementById(tabName).classList.add('active');
  332. evt.currentTarget.classList.add('active');
  333. }
  334.  
  335. document.getElementById('opacity').addEventListener('change', function() {
  336. prototype_.player.opacity = parseFloat(this.value);
  337. });
  338.  
  339. document.getElementById('playerOpacity').addEventListener('change', function() {
  340. prototype_.player.opacity = parseFloat(this.value);
  341. });
  342.  
  343. document.getElementById('wireframe').addEventListener('change', function() {
  344. prototype_.world.wireframe = this.value === 'true';
  345. });
  346.  
  347. function resetSettings() {
  348. prototype_.world.wireframe = false;
  349. prototype_.player.opacity = 0.5;
  350. prototype_.world.visibleOnDamage = true;
  351. prototype_.world.notVisible = true;
  352. prototype_.world.depthFunc = 2;
  353. document.getElementById('opacity').value = '0.5';
  354. document.getElementById('playerOpacity').value = '0.5';
  355. document.getElementById('wireframe').value = 'false';
  356. }