1st-cheat-FOR-ALL-MODES

Cheat for brofist.io

目前为 2024-10-27 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name 1st-cheat-FOR-ALL-MODES
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.13.4
  5. // @description Cheat for brofist.io
  6. // @author CiNoP
  7. // @match http://brofist.io/
  8. // @match http://brofist.io/modes/twoPlayer/c/index.html
  9. // @match http://brofist.io/modes/hideAndSeek/c/index.html
  10. // @match http://brofist.io/modes/sandbox/c/index.html
  11. // @icon https://www.google.com/s2/favicons?sz=64&domain=brofist.io
  12. // @grant none
  13. // @license GPL-3.0-only
  14. // ==/UserScript==
  15. /* jshint esversion: 11 */
  16. /* jshint asi: true */
  17.  
  18. document.body.insertAdjacentHTML("beforebegin",
  19. `<button id="infoPanelBtn" style="display: inherit; width: 30px; height: 30px; position: fixed; top: 50%; left: 0px; background: rgba(0, 0, 0, 0.3); color: rgb(255, 255, 255); border: none; cursor: pointer;">ⓘ</button>`
  20. );
  21.  
  22. document.getElementById('infoPanelBtn').addEventListener('click', () => {
  23. const panel = document.getElementById('cheatInfoPanel')
  24. panel.style.display = (panel.style.display === 'none') ? 'block' : 'none';
  25. })
  26.  
  27. document.body.insertAdjacentHTML("beforebegin",
  28. `<div id="cheatInfoPanel" style="display: none; position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background: rgba(0, 0, 0, 0.8); color: rgb(255, 255, 255); padding: 15px; border-radius: 5px; font-size: 20px; text-align: center; z-index: 1000;">
  29. ${getCheatInfoText()}
  30. </div>`
  31. )
  32.  
  33. function getCheatInfoText() {
  34. if (window.location.href === 'http://brofist.io/') {
  35. return "Зайдите в любой режим";
  36. } else if (window.location.href === 'http://brofist.io/modes/twoPlayer/c/index.html') {
  37. return `
  38. <b>Функционал чита:</b><br>
  39. английская <b>C</b> - рывок (во все стороны)<br>
  40. англ. <b>Z</b> - прыжок с возможностью второго прыжка<br>
  41. <b>F2</b> - Режим бога<br>
  42. <b>ё</b> или <b>\`</b> - Изменение скорости в режиме бога<br>
  43. <b>F4</b> - Невосприимчивость к яду<br>
  44. <b>F9</b> - Невосприимчивость к смерти (по умолчанию вкл.)<br>
  45. <b>Home</b>/<b>End</b> - тп к спавну/двери<br>
  46. Зажатие англ. <b>S</b> - Увеличение массы в 3 раза<br>
  47. <b>Insert</b> - Тп к игроку<br><br>
  48.  
  49. <b так же:</b><br>
  50. Информация об игроке, скриптовых переменных и т.п. в левой верхней панели<br>
  51. Переключение между новым и старым передвижением в левой нижней панели<br>
  52. Нажмите <b>Esc</b> чтобы скрыть новые панели<br>
  53. `;
  54. } else {
  55. return `
  56. <b>Функционал чита:</b><br>
  57. английская <b>C</b> - рывок (во все стороны)<br>
  58. англ. <b>Z</b> - прыжок с возможностью второго прыжка<br>
  59. <b>F2</b> - Режим бога<br>
  60. <b>ё</b> или <b>\`</b> - Изменение скорости в режиме бога<br>
  61. Зажатие англ. <b>S</b> - Увеличение массы в 3 раза<br><br>
  62.  
  63. <b так же:</b><br>
  64. Информация об игроке, скриптовых переменных и т.п. в левой верхней панели<br>
  65. Переключение между новым и старым передвижением в левой нижней панели<br>
  66. Нажмите <b>Esc</b> чтобы скрыть новые панели<br>
  67. `
  68. }
  69. }
  70.  
  71.  
  72.  
  73.  
  74. function sandboxHack() {
  75. function activateMain(temp1) {
  76. const hack = {
  77. keyBindings: {
  78. isCPressed: false,
  79. cTimer: null,
  80. isZPressed: false
  81. },
  82. playerMoveData: {
  83. lastHorizontalDirection: 1,
  84. isDashingDown: false,
  85. isDashingUp: false,
  86. lastDashTime: 0,
  87. dashDuration: 100,
  88. dashEndTime: 0,
  89. isDoubleJumpAllowed: false,
  90. airDashAvailable: true,
  91. newMovementIsOn: true,
  92. },
  93. bindKeys: function () {
  94. document.addEventListener('keydown', function (event) {
  95. if (event.key === 'Escape') {
  96. const panel = document.getElementById('someData')
  97. const panel1 = document.getElementById('controlPanel')
  98. if (panel.style.display === 'none') {
  99. panel.style.display = 'inherit'
  100. } else {
  101. panel.style.display = 'none'
  102. }
  103. if (panel1.style.display === 'none') {
  104. panel1.style.display = 'inherit'
  105. } else {
  106. panel1.style.display = 'none'
  107. }
  108. }
  109. if (event.key.toLowerCase() === 's' && event.repeat) {
  110. if (!hack.vars.modeIsOn) {
  111. hack.getters.me.p.mass = 3
  112. }
  113. }
  114. if (event.key.toLowerCase() === 'z' && !event.repeat) {
  115. hack.keyBindings.isZPressed = true
  116. } else if (event.repeat) {
  117. hack.keyBindings.isZPressed = false
  118. }
  119. if (event.key.toLowerCase() === 'c') {
  120. hack.keyBindings.isCPressed = true
  121. if (!hack.keyBindings.cTimer) {
  122. hack.keyBindings.cTimer = setTimeout(() => {
  123. hack.keyBindings.isCPressed = false
  124. hack.keyBindings.cTimer = null
  125. }, 250)
  126. }
  127. }
  128. })
  129. document.addEventListener('keyup', function (event) {
  130. if (event.key.toLowerCase() === 's') {
  131. if (!hack.vars.modeIsOn) {
  132. hack.getters.me.p.mass = 1
  133. }
  134. }
  135. if (event.key.toLowerCase() === 'z') {
  136. hack.keyBindings.isZPressed = false
  137. }
  138. if (event.key.toLowerCase() === 'c') {
  139. hack.keyBindings.isCPressed = false
  140. if (hack.keyBindings.cTimer) {
  141. clearTimeout(hack.keyBindings.cTimer)
  142. hack.keyBindings.cTimer = null
  143. }
  144. }
  145. })
  146. },
  147. getters: {
  148. get client() { return temp1[1].exports },
  149. get gf() { return temp1[5].exports },
  150. get gp() { return temp1[6].exports },
  151. get graphics() { return temp1[7].exports },
  152. get mode() { return temp1[11].exports },
  153. get envirData() { return temp1[16].exports },
  154. get network() { return temp1[29].exports },
  155. get physics() { return temp1[325].exports },
  156. get ray() { return this.mode.player.gpData.ray },
  157. get velocity() { return this.mode.player.gpData.p.velocity },
  158. get otherPlayers() { return this.mode.otherPlayers },
  159. ghost: false,
  160. get me() { return hack.getters.mode.player.gpData },
  161. get ray() { return hack.getters.me.ray },
  162. get velocity() { return hack.getters.me.p.velocity },
  163. get otherPlayers() { return hack.getters.mode.otherPlayers }
  164. },
  165. vars: {
  166. get isGround() { return isGrounded() },
  167. mult: 1,
  168. lrSpd: 3,
  169. udSpd: 3,
  170. 'POSITION INFO ': '-----------------------',
  171. get currentPosX() { return Math.round(hack.getters.me.getX() * 100) / 100 },
  172. get currentPosY() { return Math.round(hack.getters.me.getY() * 100) / 100 },
  173. 'SPEED INFO ': '----------------------------',
  174. get totalSpd() { return (((this.lrSpd + this.udSpd) / 2) * this.mult) },
  175. get currentSpdX() { return Math.round(hack.getters.me.p.velocity[0] * 100) / 100 },
  176. get currentSpdY() { return Math.round(hack.getters.me.p.velocity[1] * 100) / 100 },
  177. 'SCRIPT VALUES ': '----------------------',
  178. multSpdIsOn: false,
  179. modeIsOn: false,
  180. ghost1: false,
  181. 'MOVEMENT VALUES ': '---------------'
  182. },
  183. suppFuncs: {
  184. getMult: () => {
  185. if (hack.vars.mult < 3) {
  186. return 1
  187. } else if (hack.vars.mult < 4) {
  188. return 2
  189. }
  190. },
  191. setMult: function (e) {
  192. if (e != undefined) {
  193. return (hack.vars.lrSpd = hack.vars.udSpd = e)
  194. }
  195. if (hack.suppFuncs.getMult() === 1) {
  196. hack.vars.mult++
  197. } else if (hack.suppFuncs.getMult() === 2) {
  198. hack.vars.mult += 2
  199. } else {
  200. hack.vars.mult = 1
  201. }
  202. },
  203. getIndexByName: function (playerName) {
  204. const index = hack.getters.otherPlayers.findIndex(player => player?.myName === playerName)
  205. return index === -1 ? false : index
  206. }
  207. },
  208. functions: {
  209. godModeEnable: () => {
  210. hack.vars.ghost1 = true
  211. hack.getters.me.p.collisionResponse = false
  212. hack.getters.me.p.mass = 0
  213. hack.vars.modeIsOn = true
  214. hack.getters.velocity[0] = 0
  215. hack.getters.velocity[1] = 0
  216. },
  217. godModeDisable: () => {
  218. hack.vars.ghost1 = false
  219. hack.getters.me.p.collisionResponse = true
  220. hack.getters.me.p.mass = 1
  221. hack.vars.modeIsOn = false
  222. hack.getters.velocity[0] = 0
  223. hack.getters.velocity[1] = 0
  224. },
  225. multSpdEnable: () => {
  226. hack.vars.lrSpd *= hack.vars.mult
  227. hack.vars.udSpd *= hack.vars.mult
  228. hack.vars.multSpdIsOn = true
  229. },
  230. multSpdDisable: () => {
  231. hack.vars.lrSpd /= hack.vars.mult
  232. hack.vars.udSpd /= hack.vars.mult
  233. hack.vars.multSpdIsOn = false
  234. }
  235. },
  236. logFuncs: {
  237. logModeIsOn: () => {
  238. console.log('modeIsOn:', hack.vars.modeIsOn)
  239. },
  240. logSpd: () => {
  241. console.log('speed:', ((hack.vars.lrSpd + hack.vars.udSpd) / 2) * hack.vars.mult)
  242. }
  243. }
  244. }
  245.  
  246.  
  247.  
  248. document.body.insertAdjacentHTML("beforebegin", `
  249. <div id="someData" style="display: inherit; width: auto; position: fixed; top: 0px; left: 0px; height: auto; text-align: left; font-size: 14px; background: rgb(0, 0, 0); color: rgb(255, 255, 255); opacity: 0.7; padding: 2px 2px;"></div>
  250. `)
  251.  
  252. const updateData = () => {
  253. const o = []
  254. for (let i in hack.vars) {
  255. o.push(`${i}: ${hack.vars[i]}`)
  256. }
  257. for (let i in hack.playerMoveData) {
  258. o.push(`${i}: ${hack.playerMoveData[i]}`)
  259. }
  260. document.getElementById("someData").innerHTML = o.join('<br>')
  261. }
  262.  
  263. document.body.insertAdjacentHTML("beforebegin", `
  264. <div id="controlPanel" style="display: inherit; width: auto; position: fixed; bottom: 0px; left: 0px; height: auto; text-align: left; font-size: 14px; background: rgb(0, 0, 0); color: rgb(255, 255, 255); opacity: 0.7; padding: 2px 2px;">
  265. <div>
  266. <span>new movement: </span>
  267. <button id="newMoveBtn" style="background: rgba(255, 255, 255, 0.7); color: black;">${hack.playerMoveData.newMovementIsOn}</button>
  268. </div>
  269. </div>
  270. `)
  271.  
  272. const updateButtonStates = () => {
  273. document.getElementById("newMoveBtn").innerText = hack.playerMoveData.newMovementIsOn
  274. }
  275.  
  276. document.getElementById("newMoveBtn").addEventListener("click", () => {
  277. if (!hack.playerMoveData.newMovementIsOn) {
  278. newMovement()
  279. } else {
  280. oldMovement()
  281. }
  282. updateButtonStates()
  283. })
  284.  
  285.  
  286. setInterval(updateData, 100 / 6)
  287. updateButtonStates()
  288. setInterval(updateButtonStates, 100 / 6)
  289. hack.bindKeys()
  290.  
  291. let scrActivate = function () {
  292. hack.getters.client.loopFunctions[2].timeOut = 100 / 6
  293. hack.getters.client.loopFunctions[3].timeOut = 0
  294. oldMovement()
  295. Object.defineProperty(hack.vars, 'mult', { enumerable: false })
  296. Object.defineProperty(hack.vars, 'lrSpd', { enumerable: false })
  297. Object.defineProperty(hack.vars, 'udSpd', { enumerable: false })
  298. Object.defineProperty(hack.vars, 'multSpdIsOn', { enumerable: false })
  299. Object.defineProperty(hack.vars, 'ghost1', { enumerable: false })
  300. Object.defineProperty(hack.playerMoveData, 'lastDashTime', { enumerable: false })
  301. Object.defineProperty(hack.playerMoveData, 'lastHorizontalDirection', { enumerable: false })
  302. Object.defineProperty(hack.playerMoveData, 'lastDashTime', { enumerable: false })
  303. Object.defineProperty(hack.playerMoveData, 'dashDuration', { enumerable: false })
  304. Object.defineProperty(hack.playerMoveData, 'dashEndTime', { enumerable: false })
  305. Object.defineProperty(hack.playerMoveData, 'newMovementIsOn', { enumerable: false })
  306. }
  307.  
  308.  
  309. hack.getters.client.findUntilFound = function (e, t, n) {
  310. hack.getters.network.gsip = e;
  311. hack.getters.network.gsrn = t;
  312. hack.getters.network.getSID?.((sid) => {
  313. hack.getters.network.sid = sid;
  314. hack.getters.network.connectToGs?.(hack.getters.network.gsip, () => {
  315. console.log("connected to gs");
  316.  
  317. hack.getters.client.verifyIsHuman?.(() => {
  318. hack.getters.network.registerSidOnGs?.((verifyStatus) => {
  319. console.log("verified on gs server", verifyStatus);
  320.  
  321. if (verifyStatus === "") {
  322. alert("You are already playing the game in another browser tab.");
  323. location.reload();
  324. n(2);
  325. } else {
  326. hack.getters.network.joinRoom?.(hack.getters.network.gsrn, (joinStatus) => {
  327. if (joinStatus === 1) {
  328. hack.getters.client.sendPlayingInfo?.(hack.getters.client.roomId, () => {
  329. hack.getters.client.onReady?.();
  330. n(1);
  331. scrActivate()
  332. });
  333. } else {
  334. console.log("else");
  335. hack.getters.network.gsSockehack?.getters.client.disconnect?.();
  336.  
  337. do {
  338. hack.getters.client.rIndex++;
  339. const currentDataCenter = hack.getters.network.dataCenters?.[hack.getters.client.dcIndex];
  340.  
  341. if (!currentDataCenter?.[hack.getters.client.rIndex]) {
  342. hack.getters.client.dcIndex++;
  343. hack.getters.client.rIndex = 0;
  344.  
  345. if (!hack.getters.network.dataCenters?.[hack.getters.client.dcIndex]) {
  346. alert("It seems all servers are full. Please refresh your page and try again.");
  347. location.reload();
  348. return;
  349. }
  350. }
  351. } while (hack.getters.network.dataCenters?.[hack.getters.client.dcIndex]?.[hack.getters.client.rIndex]?.[2] !== hack.getters.client.modeInfo.mp);
  352.  
  353. const newGsip = hack.getters.network.dataCenters?.[hack.getters.client.dcIndex]?.[hack.getters.client.rIndex]?.[1];
  354. const newGsrn = hack.getters.network.dataCenters?.[hack.getters.client.dcIndex]?.[hack.getters.client.rIndex]?.[3];
  355. hack.getters.client.roomId = hack.getters.network.dataCenters?.[hack.getters.client.dcIndex]?.[hack.getters.client.rIndex]?.[4];
  356.  
  357. hack.getters.client.findUntilFound(newGsip, newGsrn, n);
  358. }
  359. });
  360. }
  361. });
  362. });
  363. });
  364. });
  365. };
  366.  
  367. document.body.onkeydown = (event) => {
  368. const keyCode = event.keyCode
  369. switch (keyCode) {
  370. case 17:
  371. hack.getters.mode.makeMeGhost()
  372. break
  373. case 113:
  374. if (!hack.vars.modeIsOn) {
  375. hack.functions.godModeEnable()
  376. hack.logFuncs.logModeIsOn()
  377. hack.functions.multSpdEnable()
  378. } else {
  379. hack.functions.godModeDisable()
  380. hack.logFuncs.logModeIsOn()
  381. hack.functions.multSpdDisable()
  382. }
  383. break
  384. case 192:
  385. case 190:
  386. if (hack.vars.modeIsOn) {
  387. hack.suppFuncs.setMult()
  388. hack.logFuncs.logSpd()
  389. }
  390. break
  391. }
  392. }
  393.  
  394. function isGrounded() {
  395. const meX = hack.getters.me.getX()
  396. const meY = hack.getters.me.getY()
  397. const ray = hack.getters.ray
  398. const physics = hack.getters.physics
  399. const gpPWorld = hack.getters.gp.pWorld
  400. const rayResult = hack.getters.me.ray.result
  401. const rayHitPoint = (hack.getters.ray.hitPoint = [Infinity, Infinity])
  402.  
  403. const verticalOffset = 50
  404. const checkYPosition = meY + 45
  405.  
  406. for (let i = 0; i < 121; i++) {
  407. const o = meX - 15 + i * (30 / 120)
  408. const s = checkYPosition
  409. const u = s + verticalOffset
  410.  
  411. ray.from = [physics.xAxis(o, 0), physics.yAxis(s, 0)]
  412. ray.to = [physics.xAxis(o, 0), physics.yAxis(u, 0)]
  413.  
  414. ray.update()
  415. rayResult.reset()
  416.  
  417. if (gpPWorld.raycast(rayResult, ray)) {
  418. rayResult.getHitPoint(rayHitPoint, ray)
  419. const hitDistance = rayResult.getHitDistance(ray)
  420.  
  421. if (rayResult.shape.ref.getCollision() && hitDistance < 0.1) {
  422. return true
  423. }
  424. }
  425. }
  426.  
  427. return false
  428. }
  429.  
  430. function newMovement() {
  431. hack.getters.client.loopFunctions[2].fun = function () {
  432. const currentTime = Date.now()
  433. const dashCooldown = 250
  434. const dashDistance = 2.5
  435. const dashSpeed = 25
  436. const grounded = isGrounded()
  437.  
  438. if (grounded) {
  439. hack.playerMoveData.airDashAvailable = true
  440. }
  441.  
  442. if (hack.getters.mode.moveLeft) {
  443. hack.playerMoveData.lastHorizontalDirection = -1
  444. } else if (hack.getters.mode.moveRight) {
  445. hack.playerMoveData.lastHorizontalDirection = 1
  446. }
  447.  
  448. if (
  449. hack.keyBindings.isCPressed &&
  450. hack.getters.mode.moveDown &&
  451. currentTime - hack.playerMoveData.lastDashTime >= dashCooldown &&
  452. !hack.playerMoveData.isDashingDown &&
  453. (grounded || (!grounded && hack.playerMoveData.airDashAvailable))
  454. ) {
  455. hack.playerMoveData.lastDashTime = currentTime
  456. hack.playerMoveData.isDashingDown = true
  457. hack.playerMoveData.dashDuration = (dashDistance / dashSpeed) * 1000
  458. hack.playerMoveData.dashEndTime = currentTime + hack.playerMoveData.dashDuration
  459. if (!grounded) {
  460. hack.playerMoveData.airDashAvailable = false
  461. }
  462. }
  463.  
  464. if (
  465. hack.keyBindings.isCPressed &&
  466. hack.getters.mode.moveUp &&
  467. currentTime - hack.playerMoveData.lastDashTime >= dashCooldown &&
  468. !hack.playerMoveData.isDashingUp &&
  469. (grounded || (!grounded && hack.playerMoveData.airDashAvailable))
  470. ) {
  471. hack.playerMoveData.lastDashTime = currentTime
  472. hack.playerMoveData.isDashingUp = true
  473. hack.playerMoveData.dashDuration = (dashDistance / dashSpeed) * 1000
  474. hack.playerMoveData.dashEndTime = currentTime + hack.playerMoveData.dashDuration
  475. if (!grounded) {
  476. hack.playerMoveData.airDashAvailable = false
  477. }
  478. }
  479.  
  480. if (
  481. hack.keyBindings.isCPressed &&
  482. currentTime - hack.playerMoveData.lastDashTime >= dashCooldown &&
  483. !hack.playerMoveData.isDashing &&
  484. (grounded || (!grounded && hack.playerMoveData.airDashAvailable))
  485. ) {
  486. hack.playerMoveData.lastDashTime = currentTime
  487. hack.playerMoveData.isDashing = true
  488. hack.playerMoveData.dashVelocity = dashSpeed * hack.playerMoveData.lastHorizontalDirection
  489. hack.playerMoveData.dashDuration = (dashDistance / dashSpeed) * 1000
  490. hack.playerMoveData.dashEndTime = currentTime + hack.playerMoveData.dashDuration
  491. if (!grounded) {
  492. hack.playerMoveData.airDashAvailable = false
  493. }
  494. }
  495.  
  496. if (hack.playerMoveData.isDashingDown) {
  497. hack.getters.mode.player.gpData.p.velocity[1] = -dashSpeed
  498. hack.getters.mode.player.gpData.p.velocity[0] = 0
  499. hack.getters.me.p.collisionResponse = false
  500. if (currentTime >= hack.playerMoveData.dashEndTime) {
  501. hack.playerMoveData.isDashingDown = false
  502. hack.getters.mode.player.gpData.p.velocity[1] = 0
  503. if (!hack.vars.modeIsOn) {
  504. hack.getters.me.p.collisionResponse = true
  505. }
  506. }
  507. return
  508. }
  509.  
  510. if (hack.playerMoveData.isDashingUp) {
  511. hack.getters.mode.player.gpData.p.velocity[1] = dashSpeed
  512. hack.getters.mode.player.gpData.p.velocity[0] = 0
  513. hack.getters.me.p.collisionResponse = false
  514. if (currentTime >= hack.playerMoveData.dashEndTime) {
  515. hack.playerMoveData.isDashingUp = false
  516. hack.getters.mode.player.gpData.p.velocity[1] = 0
  517. if (!hack.vars.modeIsOn) {
  518. hack.getters.me.p.collisionResponse = true
  519. }
  520. }
  521. return
  522. }
  523.  
  524. if (hack.playerMoveData.isDashing) {
  525. hack.getters.mode.player.gpData.p.velocity[0] = hack.playerMoveData.dashVelocity
  526. hack.getters.mode.player.gpData.p.velocity[1] = 0
  527. hack.getters.me.p.collisionResponse = false
  528. if (currentTime >= hack.playerMoveData.dashEndTime) {
  529. hack.playerMoveData.isDashing = false
  530. hack.getters.mode.player.gpData.p.velocity[0] = 0
  531. if (!hack.vars.modeIsOn) {
  532. hack.getters.me.p.collisionResponse = true
  533. }
  534. }
  535. return
  536. } else {
  537. if (hack.getters.mode.moveRight) {
  538. hack.getters.mode.player.gpData.p.velocity[0] = hack.vars.lrSpd * hack.vars.mult
  539. } else if (hack.getters.mode.moveLeft) {
  540. hack.getters.mode.player.gpData.p.velocity[0] = -hack.vars.lrSpd * hack.vars.mult
  541. } else {
  542. hack.getters.mode.player.gpData.p.velocity[0] = 0
  543. }
  544. }
  545.  
  546. if (grounded) {
  547. hack.playerMoveData.isDoubleJumpAllowed = true
  548. if (hack.keyBindings.isZPressed) {
  549. hack.keyBindings.isZPressed = false
  550. hack.getters.velocity[1] = 8 * (hack.getters.me.p.gravityScale)
  551. }
  552. } else if (hack.playerMoveData.isDoubleJumpAllowed && hack.keyBindings.isZPressed) {
  553. hack.keyBindings.isZPressed = false
  554. hack.getters.velocity[1] = 8 * (hack.getters.me.p.gravityScale)
  555. hack.playerMoveData.isDoubleJumpAllowed = false
  556. }
  557.  
  558. if (hack.vars.ghost1) {
  559. if (hack.getters.mode.moveUp) {
  560. hack.getters.velocity[1] = hack.vars.udSpd * hack.vars.mult
  561. }
  562. if (hack.getters.mode.moveDown) {
  563. hack.getters.velocity[1] = -hack.vars.udSpd * hack.vars.mult
  564. }
  565. if (!hack.getters.mode.moveUp && !hack.getters.mode.moveDown) {
  566. hack.getters.velocity[1] = 0
  567. }
  568. }
  569. }
  570. hack.playerMoveData.newMovementIsOn = true
  571. }
  572.  
  573. function oldMovement() {
  574. hack.getters.client.loopFunctions[2].fun = function () {
  575. const grounded = isGrounded()
  576.  
  577. if (hack.getters.mode.moveRight) {
  578. hack.getters.mode.player.gpData.p.velocity[0] = hack.vars.lrSpd * hack.vars.mult
  579. } else if (hack.getters.mode.moveLeft) {
  580. hack.getters.mode.player.gpData.p.velocity[0] = -hack.vars.lrSpd * hack.vars.mult
  581. } else {
  582. hack.getters.mode.player.gpData.p.velocity[0] = 0
  583. }
  584. if (grounded) {
  585. if (hack.getters.mode.moveUp) {
  586. hack.getters.velocity[1] = 8
  587. }
  588. }
  589. if (hack.vars.ghost1) {
  590. if (hack.getters.mode.moveUp) {
  591. hack.getters.velocity[1] = hack.vars.udSpd * hack.vars.mult
  592. }
  593. if (hack.getters.mode.moveDown) {
  594. hack.getters.velocity[1] = -hack.vars.udSpd * hack.vars.mult
  595. }
  596. if (!hack.getters.mode.moveUp && !hack.getters.mode.moveDown) {
  597. hack.getters.velocity[1] = 0
  598. }
  599. }
  600. }
  601. hack.playerMoveData.newMovementIsOn = false
  602. }
  603. }
  604.  
  605. let temp1 = {};
  606. const _call = Function.prototype.call;
  607. new Promise((resolve, reject) => {
  608. Function.prototype.call = function (...args) {
  609. if (args[2]?.exports) {
  610. temp1 = args[6]
  611. Function.prototype.call = _call
  612. console.log(temp1)
  613. resolve(temp1)
  614. }
  615. return _call.apply(this, args)
  616. };
  617. }).then((result) => {
  618. if (Object.keys(result).length > 0) {
  619. activateMain(result)
  620. } else {
  621. console.log("temp1 is empty")
  622. }
  623. }).catch((error) => {
  624. console.error("An error occurred:", error)
  625. })
  626. }
  627.  
  628. function twoPlayerHack() {
  629. function activateMain(temp1) {
  630. const hack = {
  631. keyBindings: {
  632. isCPressed: false,
  633. cTimer: null,
  634. isZPressed: false
  635. },
  636. playerMoveData: {
  637. lastHorizontalDirection: 1,
  638. isDashingDown: false,
  639. isDashingUp: false,
  640. lastDashTime: 0,
  641. dashDuration: 100,
  642. dashEndTime: 0,
  643. isDoubleJumpAllowed: false,
  644. airDashAvailable: true,
  645. newMovementIsOn: true,
  646. division: 120,
  647. },
  648. bindKeys: function () {
  649. document.addEventListener('keydown', function (event) {
  650. if (event.key === 'Escape') {
  651. const panel = document.getElementById('someData')
  652. const panel1 = document.getElementById('controlPanel')
  653. if (panel.style.display === 'none') {
  654. panel.style.display = 'inherit'
  655. } else {
  656. panel.style.display = 'none'
  657. }
  658. if (panel1.style.display === 'none') {
  659. panel1.style.display = 'inherit'
  660. } else {
  661. panel1.style.display = 'none'
  662. }
  663. }
  664. if (event.key.toLowerCase() === 's' && event.repeat) {
  665. if (!hack.vars.modeIsOn) {
  666. hack.getters.me.p.mass = 3
  667. }
  668. }
  669. if (event.key.toLowerCase() === 'z' && !event.repeat) {
  670. hack.keyBindings.isZPressed = true
  671. } else if (event.repeat) {
  672. hack.keyBindings.isZPressed = false
  673. }
  674. if (event.key.toLowerCase() === 'c') {
  675. hack.keyBindings.isCPressed = true
  676. if (!hack.keyBindings.cTimer) {
  677. hack.keyBindings.cTimer = setTimeout(() => {
  678. hack.keyBindings.isCPressed = false
  679. hack.keyBindings.cTimer = null
  680. }, 250)
  681. }
  682. }
  683. })
  684. document.addEventListener('keyup', function (event) {
  685. if (event.key.toLowerCase() === 's') {
  686. if (!hack.vars.modeIsOn) {
  687. hack.getters.me.p.mass = 1
  688. }
  689. }
  690. if (event.key.toLowerCase() === 'z') {
  691. hack.keyBindings.isZPressed = false
  692. }
  693. if (event.key.toLowerCase() === 'c') {
  694. hack.keyBindings.isCPressed = false
  695. if (hack.keyBindings.cTimer) {
  696. clearTimeout(hack.keyBindings.cTimer)
  697. hack.keyBindings.cTimer = null
  698. }
  699. }
  700. })
  701. },
  702. getters: {
  703. get client() { return temp1[1].exports },
  704. get gf() { return temp1[5].exports },
  705. get gp() { return temp1[6].exports },
  706. get graphics() { return temp1[7].exports },
  707. get mode() { return temp1[11].exports },
  708. get envirData() { return temp1[15].exports },
  709. get rGho() { return temp1[26].exports },
  710. get modules_resultScreen() { return temp1[35].exports },
  711. get network() { return temp1[36].exports },
  712. get physics() { return temp1[332].exports },
  713. get me() { return hack.getters.mode.player.gpData },
  714. get ray() { return hack.getters.me.ray },
  715. get velocity() { return hack.getters.me.p.velocity },
  716. get otherPlayers() { return hack.getters.mode.otherPlayers },
  717. },
  718. vars: {
  719. get isGround() {return isGrounded()},
  720. mult: 1,
  721. lrSpd: 3,
  722. udSpd: 3,
  723. 'POSITION INFO ': '-----------------------',
  724. get currentPosX() {return Math.round(hack.getters.me.getX()*100)/100},
  725. get currentPosY() {return Math.round(hack.getters.me.getY()*100)/100},
  726. pX: 0,
  727. pY: 0,
  728. 'SPEED INFO ': '----------------------------',
  729. get totalSpd() {return (((this.lrSpd + this.udSpd) / 2) * this.mult)},
  730. get currentSpdX() {return Math.round(hack.getters.me.p.velocity[0]*100)/100},
  731. get currentSpdY() {return Math.round(hack.getters.me.p.velocity[1]*100)/100},
  732. 'SCRIPT VALUES ': '----------------------',
  733. multSpdIsOn: false,
  734. modeIsOn: false,
  735. immIsOn: false,
  736. MMGIsOn: false,
  737. interTpToOtherIsOn: false,
  738. ghost1: false,
  739. ghost2: false,
  740. isPlayerDead: false,
  741. tpSpawnCounter: 0,
  742. 'MOVEMENT VALUES ': '---------------',
  743. },
  744. suppFuncs: {/*
  745. searchShapesById: function(b, a = temp1[6].exports.list) {
  746. for (n = [], i = 0; i < a.length; i++) {
  747. if (a[i]?.id == b) {
  748. n.push(a[i])
  749. }
  750. } return n
  751. },
  752. getDistanceToShape: function(spawn = this.searchShapesById('spawn')[0], checkpoints = this.searchShapesById('checkpoint')) {
  753. let distances = checkpoints.map((checkpoint, index) => {
  754. const distance = Math.sqrt(
  755. (spawn.getX() - checkpoint.getX()) ** 2 +
  756. (spawn.getY() - checkpoint.getY()) ** 2
  757. );
  758. return { index, distance };
  759. });
  760. distances.sort((a, b) => a.distance - b.distance);
  761. return distances.map(d => d.index);
  762. },*/
  763. getMult: () => {
  764. if (hack.vars.mult < 3) {
  765. return 1
  766. } else if (hack.vars.mult < 4) {
  767. return 2
  768. }
  769. },
  770. setMult: function (e) {
  771. if (e != undefined) {
  772. hack.vars.lrSpd = hack.vars.udSpd = e
  773. return
  774. }
  775. if (hack.suppFuncs.getMult() === 1) {
  776. hack.vars.mult++
  777. } else if (hack.suppFuncs.getMult() === 2) {
  778. hack.vars.mult += 2
  779. } else {
  780. hack.vars.mult = 1
  781. }
  782. },
  783. getIndexByName: function(playerName) {
  784. const index = hack.getters.otherPlayers.findIndex(player => player?.myName === playerName)
  785. return index === -1 ? false : index
  786. }
  787. },
  788. functions: {/*
  789. tpShape: function(e,o = 0) {
  790. this.tp(e[o].getX(),e[o].getY())
  791. },*/
  792. prevPos: function () {
  793. hack.vars.pX = temp1[11].exports.player.gpData.getX()
  794. hack.vars.pY = temp1[11].exports.player.gpData.getY()
  795. },
  796. tpSpawn: function () {
  797. if (hack.vars.tpSpawnCounter == 0) {
  798. this.tp(hack.vars.pX,hack.vars.pY); hack.vars.tpSpawnCounter++
  799. return
  800. } else if (hack.vars.tpSpawnCounter == 1) {this.tp(
  801. temp1[11].exports.spawn.refP.getX(),
  802. temp1[11].exports.spawn.refP.getY()
  803. )}; hack.vars.tpSpawnCounter = 0
  804. },
  805. tpDoor: function () {
  806. this.prevPos()
  807. hack.vars.tpSpawnCounter = 0
  808. this.tp(
  809. temp1[11].exports.exitGate.exitGateCounter.refP.getX(),
  810. temp1[11].exports.exitGate.exitGateCounter.refP.getY()
  811. )
  812. },
  813. tp: function (x,y) {
  814. temp1[11].exports.player.gpData.setX(x)
  815. temp1[11].exports.player.gpData.setY(y)
  816. },
  817. setTpToOther: function (playerIndex) {
  818. if (!hack.vars.interTpToOtherIsOn && playerIndex !== false) {
  819. this.interTpToOther = setInterval(() => {
  820. hack.getters.me.p.position[0] = hack.getters.otherPlayers[playerIndex].gpData.p.position[0]
  821. hack.getters.me.p.position[1] = hack.getters.otherPlayers[playerIndex].gpData.p.position[1]
  822. }, 100 / 14.4)
  823. hack.vars.interTpToOtherIsOn = true
  824. } else if (playerIndex === false) {
  825. try {
  826. clearInterval(this.interTpToOther)
  827. hack.vars.interTpToOtherIsOn = false
  828. } catch {
  829. console.log('не существующий интервал')
  830. }
  831. }
  832. },
  833. MMGEnable: function () {
  834. hack.getters.mode.makeMeGhost = function () {
  835. hack.getters.me.setAlpha(0.3)
  836. hack.getters.me.p.shapes[0].sensor = true
  837. hack.getters.me.p.gravityScale = 0
  838. hack.getters.velocity[0] = 0
  839. hack.getters.velocity[1] = 0
  840. hack.getters.me.me = void 0
  841. hack.vars.ghost2 = true
  842. hack.vars.isPlayerDead = true
  843. if (hack.vars.multSpdIsOn) { hack.functions.multSpdDisable() }
  844. hack.getters.rGho.fire(hack.getters.network.gsSocket)
  845. if (hack.getters.mode.md.mobile()) {hack.getters.mode.setupTouchButtons(true)}
  846. }
  847. hack.vars.MMGIsOn = true
  848. },
  849. MMGDisable: function () {
  850. hack.getters.mode.makeMeGhost = () => { }
  851. hack.vars.MMGIsOn = false
  852. },
  853. immEnable: () => {
  854. hack.getters.me.me = void 0
  855. hack.vars.immIsOn = true
  856. },
  857. immDisable: () => {
  858. hack.getters.me.me = true
  859. hack.vars.immIsOn = false
  860. },
  861. godModeEnable: () => {
  862. hack.vars.ghost1 = true
  863. hack.getters.me.p.collisionResponse = false
  864. hack.getters.me.p.mass = 0
  865. hack.vars.modeIsOn = true
  866. hack.getters.velocity[0] = 0
  867. hack.getters.velocity[1] = 0
  868. },
  869. godModeDisable: () => {
  870. hack.vars.ghost1 = false
  871. hack.getters.me.p.collisionResponse = true
  872. hack.getters.me.p.mass = 1
  873. hack.vars.modeIsOn = false
  874. hack.getters.velocity[0] = 0
  875. hack.getters.velocity[1] = 0
  876. },
  877. multSpdEnable: () => {
  878. hack.vars.lrSpd *= hack.vars.mult
  879. hack.vars.udSpd *= hack.vars.mult
  880. hack.vars.multSpdIsOn = true
  881. },
  882. multSpdDisable: () => {
  883. hack.vars.lrSpd /= hack.vars.mult
  884. hack.vars.udSpd /= hack.vars.mult
  885. hack.vars.multSpdIsOn = false
  886. }
  887. },
  888. logFuncs: {
  889. logModeIsOn: () => {
  890. console.log('modeIsOn:', hack.vars.modeIsOn)
  891. },
  892. logImmIsOn: () => {
  893. console.log('immIsOn:', hack.vars.immIsOn)
  894. },
  895. logSpd: () => {
  896. console.log('speed:', ((hack.vars.lrSpd + hack.vars.udSpd) / 2) * hack.vars.mult)
  897. },
  898. logMMGIsOn: () => {
  899. console.log('MMGIsOn:', hack.vars.MMGIsOn)
  900. }
  901. }
  902. }
  903.  
  904. document.body.insertAdjacentHTML("beforebegin", `
  905. <div id="someData" style="display: inherit; width: auto; position: fixed; top: 25px; left: 0px; height: auto; text-align: left; font-size: 14px; background: rgb(0, 0, 0); color: rgb(255, 255, 255); opacity: 0.7; padding: 2px 2px;"></div>
  906. `)
  907.  
  908. const updateData = () => {
  909. const o = []
  910. for (let i in hack.vars) {
  911. o.push(`${i}: ${hack.vars[i]}`)
  912. }
  913. for (let i in hack.playerMoveData) {
  914. o.push(`${i}: ${hack.playerMoveData[i]}`)
  915. }
  916. document.getElementById("someData").innerHTML = o.join('<br>')
  917. }
  918.  
  919. setInterval(updateData, 100 / 6)
  920.  
  921. document.body.insertAdjacentHTML("beforebegin", `
  922. <div id="controlPanel" style="display: inherit; width: auto; position: fixed; bottom: 0px; left: 0px; height: auto; text-align: left; font-size: 14px; background: rgb(0, 0, 0); color: rgb(255, 255, 255); opacity: 0.7; padding: 2px 2px;">
  923. <div>
  924. <span>new movement: </span>
  925. <button id="newMoveBtn" style="background: rgba(255, 255, 255, 0.7); color: black;">${hack.playerMoveData.newMovementIsOn}</button>
  926. </div>
  927. <div>
  928. <span>poison immunity: </span>
  929. <button id="immBtn" style="background: rgba(255, 255, 255, 0.7); color: black;">${hack.vars.immIsOn}</button>
  930. </div>
  931. <div>
  932. <span>death immunity: </span>
  933. <button id="MMGBtn" style="background: rgba(255, 255, 255, 0.7); color: black;">${!hack.vars.MMGIsOn}</button>
  934. </div>
  935. </div>
  936. `)
  937.  
  938. const updateButtonStates = () => {
  939. document.getElementById("newMoveBtn").innerText = hack.playerMoveData.newMovementIsOn
  940. document.getElementById("immBtn").innerText = hack.vars.immIsOn
  941. document.getElementById("MMGBtn").innerText = !hack.vars.MMGIsOn
  942. }
  943.  
  944. document.getElementById("newMoveBtn").addEventListener("click", () => {
  945. if (!hack.playerMoveData.newMovementIsOn) {
  946. newMovement()
  947. } else {
  948. oldMovement()
  949. }
  950. updateButtonStates()
  951. })
  952.  
  953. document.getElementById("immBtn").addEventListener("click", () => {
  954. if (hack.vars.immIsOn) {
  955. hack.functions.immDisable()
  956. } else {
  957. hack.functions.immEnable()
  958. }
  959. updateButtonStates()
  960. })
  961.  
  962. document.getElementById("MMGBtn").addEventListener("click", () => {
  963. if (hack.vars.MMGIsOn) {
  964. hack.functions.MMGDisable()
  965. } else {
  966. hack.functions.MMGEnable()
  967. }
  968. updateButtonStates()
  969. })
  970.  
  971. updateButtonStates()
  972.  
  973. setInterval(updateButtonStates, 100 / 6)
  974.  
  975. hack.functions.MMGDisable()
  976.  
  977. let scrActivate = function() {
  978. hack.getters.client.loopFunctions[2].timeOut = 100 / 6
  979. newMovement()
  980. Object.defineProperty(hack.vars, 'mult', { enumerable: false })
  981. Object.defineProperty(hack.vars, 'lrSpd', { enumerable: false })
  982. Object.defineProperty(hack.vars, 'udSpd', { enumerable: false })
  983. Object.defineProperty(hack.vars, 'ghost2', { enumerable: false })
  984. Object.defineProperty(hack.vars, 'pX', { enumerable: false })
  985. Object.defineProperty(hack.vars, 'pY', { enumerable: false })
  986. Object.defineProperty(hack.vars, 'tpSpawnCounter', { enumerable: false })
  987. Object.defineProperty(hack.vars, 'multSpdIsOn', { enumerable: false })
  988. Object.defineProperty(hack.vars, 'ghost1', { enumerable: false })
  989. Object.defineProperty(hack.playerMoveData, 'lastDashTime', { enumerable: false })
  990. Object.defineProperty(hack.playerMoveData, 'lastHorizontalDirection', { enumerable: false })
  991. Object.defineProperty(hack.playerMoveData, 'lastDashTime', { enumerable: false })
  992. Object.defineProperty(hack.playerMoveData, 'dashDuration', { enumerable: false })
  993. Object.defineProperty(hack.playerMoveData, 'dashEndTime', { enumerable: false })
  994. Object.defineProperty(hack.playerMoveData, 'newMovementIsOn', { enumerable: false })
  995. Object.defineProperty(hack.playerMoveData, 'division', { enumerable: false })
  996. document.getElementById('timer').style.background = 'rgb(0, 0, 0)'
  997. document.getElementById('timer').style.color = 'rgb(255, 255, 255)'
  998. document.getElementById('mapCredits').style.background = 'rgb(0, 0, 0)'
  999. document.getElementById('mapCredits').style.color = 'rgb(255, 255, 255)'
  1000. document.getElementById('leaderboard').style.background = 'rgb(0, 0, 0)'
  1001. document.getElementById('timer').style.opacity = 0.7
  1002. document.getElementById('leaderboard').style.opacity = 0.7
  1003. document.getElementById('mapCredits').style.opacity = 0.7
  1004. }
  1005.  
  1006. hack.bindKeys()
  1007.  
  1008. hack.getters.mode.onChangeMap = function (e) {
  1009. try {
  1010. scrActivate()
  1011. scrActivate = null
  1012. } catch {}
  1013. clearInterval(hack.getters.mode.startTimeId)
  1014. clearTimeout(hack.getters.mode.smallStepTimeId)
  1015. hack.getters.modules_resultScreen.hideResultScreen()
  1016. hack.getters.gp.unload(hack.getters.gp)
  1017. hack.getters.gp.list = hack.getters.gp.load(e, hack.getters.gp)
  1018. hack.getters.mode.syncArr = []
  1019. hack.getters.mode.ghost = false
  1020. hack.getters.mode.tweenObjects = []
  1021. hack.getters.mode.defineBehaviours(hack.getters.gp.list, hack.getters.mode.syncArr, hack.getters.gp)
  1022. if (hack.getters.mode.md.mobile()) {
  1023. hack.getters.mode.setupTouchButtons(false)
  1024. }
  1025. hack.getters.mode.setMyBio()
  1026. hack.getters.mode.setBio(hack.getters.me, hack.getters.mode.myName, hack.getters.mode.mySkin, hack.getters.mode.whatBro, hack.getters.mode.chatColor, hack.getters.mode.teamColor)
  1027. for (let n = 0; n < hack.getters.otherPlayers.length; n++) {
  1028. if (hack.getters.otherPlayers[n]) {
  1029. let t = hack.getters.otherPlayers[n].gpData.g.myIndex
  1030. hack.getters.otherPlayers[n].gpData = hack.getters.mode.createPlayer()
  1031. hack.getters.otherPlayers[n].gpData.g.myIndex = t
  1032. hack.getters.gp.gWorld.removeChild(hack.getters.otherPlayers[n].gpData.g)
  1033. hack.getters.gp.gWorld.mid.addChild(hack.getters.otherPlayers[n].gpData.g)
  1034. hack.getters.mode.setBio(
  1035. hack.getters.otherPlayers[n].gpData,
  1036. hack.getters.otherPlayers[n].myName,
  1037. hack.getters.otherPlayers[n].mySkin,
  1038. hack.getters.otherPlayers[n].whatBro,
  1039. hack.getters.otherPlayers[n].chatColor,
  1040. hack.getters.otherPlayers[n].teamColor
  1041. )
  1042. }
  1043. }
  1044. hack.getters.mode.firstTimeMapChange = hack.getters.mode.firstTimeMapChange || true
  1045. hack.getters.mode.smallStepTimeId = setTimeout(function () {
  1046. document.getElementById("startTime").style.display = "inherit"
  1047. document.getElementById("startTime").innerHTML = hack.getters.mode.startTime
  1048. hack.getters.client.runPhysics = false
  1049. hack.getters.mode.startTimeId = setInterval(function () {
  1050. hack.getters.mode.startTime++
  1051. document.getElementById("startTime").innerHTML = hack.getters.mode.startTime
  1052. if (hack.getters.mode.startTime == 3) {
  1053. hack.getters.mode.startTime = 0
  1054. hack.getters.client.runPhysics = true
  1055. clearInterval(hack.getters.mode.startTimeId)
  1056. document.getElementById("startTime").style.display = "none"
  1057. }
  1058. }, 1000)
  1059. }, 0)
  1060. hack.getters.me.me = true
  1061. if (hack.vars.modeIsOn) {
  1062. hack.functions.godModeEnable()
  1063. } else {
  1064. hack.functions.godModeDisable()
  1065. }
  1066. if (hack.vars.immIsOn) {
  1067. hack.functions.immEnable()
  1068. } else {
  1069. hack.functions.immDisable()
  1070. }
  1071. hack.vars.ghost2 = false
  1072. hack.vars.isPlayerDead = false
  1073. }
  1074.  
  1075. document.body.onkeydown = (event) => {
  1076. const keyCode = event.keyCode
  1077. switch (keyCode) {
  1078. case 17:
  1079. hack.getters.mode.makeMeGhost()
  1080. break
  1081. case 113:
  1082. if (!hack.vars.modeIsOn) {
  1083. hack.functions.godModeEnable()
  1084. hack.logFuncs.logModeIsOn()
  1085. hack.functions.multSpdEnable()
  1086. } else {
  1087. hack.functions.godModeDisable()
  1088. hack.logFuncs.logModeIsOn()
  1089. hack.functions.multSpdDisable()
  1090. }
  1091. break
  1092. case 36:
  1093. hack.functions.tpSpawn()
  1094. break
  1095. case 35:
  1096. hack.functions.tpDoor()
  1097. break
  1098. case 120:
  1099. if (!hack.vars.MMGIsOn) {
  1100. hack.functions.MMGEnable()
  1101. hack.logFuncs.logMMGIsOn()
  1102. } else {
  1103. hack.functions.MMGDisable()
  1104. hack.logFuncs.logMMGIsOn()
  1105. }
  1106. break
  1107. case 192:
  1108. case 190:
  1109. if (hack.vars.modeIsOn) {
  1110. hack.suppFuncs.setMult()
  1111. hack.logFuncs.logSpd()
  1112. }
  1113. break
  1114. case 45:
  1115. case 96:
  1116. hack.functions.setTpToOther(hack.suppFuncs.getIndexByName(prompt('Введите корректный никнейм. Чтобы выйти из интервала нажмите Esc.')))
  1117. break
  1118. case 115:
  1119. if (!hack.vars.immIsOn) {
  1120. hack.functions.immEnable()
  1121. hack.logFuncs.logImmIsOn()
  1122. } else {
  1123. hack.functions.immDisable()
  1124. hack.logFuncs.logImmIsOn()
  1125. }
  1126. break
  1127. }
  1128. }
  1129.  
  1130. function isGrounded() {
  1131. const meX = hack.getters.me.getX()
  1132. const meY = hack.getters.me.getY()
  1133. const ray = hack.getters.ray
  1134. const physics = hack.getters.physics
  1135. const gpPWorld = hack.getters.gp.pWorld
  1136. const rayResult = hack.getters.me.ray.result
  1137. const rayHitPoint = (hack.getters.ray.hitPoint = [Infinity, Infinity])
  1138. const division = hack.playerMoveData.division
  1139.  
  1140. const verticalOffset = 50
  1141. const checkYPosition = meY + 45
  1142.  
  1143. for (let i = 0; i < division+1; i++) {
  1144. const o = meX - 15 + i * (30 / division)
  1145. const s = checkYPosition
  1146. const u = s + verticalOffset
  1147.  
  1148. ray.from = [physics.xAxis(o, 0), physics.yAxis(s, 0)]
  1149. ray.to = [physics.xAxis(o, 0), physics.yAxis(u, 0)]
  1150.  
  1151. ray.update()
  1152. rayResult.reset()
  1153.  
  1154. if (gpPWorld.raycast(rayResult, ray)) {
  1155. rayResult.getHitPoint(rayHitPoint, ray)
  1156. const hitDistance = rayResult.getHitDistance(ray)
  1157.  
  1158. if (rayResult.shape.ref.getCollision() && hitDistance < 0.1) {
  1159. return true
  1160. }
  1161. }
  1162. }
  1163.  
  1164. return false
  1165. }
  1166.  
  1167. function newMovement() {
  1168. hack.playerMoveData.division = 120
  1169. hack.getters.client.loopFunctions[2].fun = function() {
  1170. const currentTime = Date.now()
  1171. const dashCooldown = 250
  1172. const dashDistance = 2.5
  1173. const dashSpeed = 25
  1174. const grounded = isGrounded()
  1175.  
  1176. if (grounded) {
  1177. hack.playerMoveData.airDashAvailable = true
  1178. }
  1179.  
  1180. if (hack.getters.mode.moveLeft) {
  1181. hack.playerMoveData.lastHorizontalDirection = -1
  1182. } else if (hack.getters.mode.moveRight) {
  1183. hack.playerMoveData.lastHorizontalDirection = 1
  1184. }
  1185.  
  1186. if (
  1187. hack.keyBindings.isCPressed &&
  1188. hack.getters.mode.moveDown &&
  1189. currentTime - hack.playerMoveData.lastDashTime >= dashCooldown &&
  1190. !hack.playerMoveData.isDashingDown &&
  1191. (grounded || (!grounded && hack.playerMoveData.airDashAvailable))
  1192. ) {
  1193. hack.playerMoveData.lastDashTime = currentTime
  1194. hack.playerMoveData.isDashingDown = true
  1195. hack.playerMoveData.dashDuration = (dashDistance / dashSpeed) * 1000
  1196. hack.playerMoveData.dashEndTime = currentTime + hack.playerMoveData.dashDuration
  1197. if (!grounded) {
  1198. hack.playerMoveData.airDashAvailable = false
  1199. }
  1200. }
  1201.  
  1202. if (
  1203. hack.keyBindings.isCPressed &&
  1204. hack.getters.mode.moveUp &&
  1205. currentTime - hack.playerMoveData.lastDashTime >= dashCooldown &&
  1206. !hack.playerMoveData.isDashingUp &&
  1207. (grounded || (!grounded && hack.playerMoveData.airDashAvailable))
  1208. ) {
  1209. hack.playerMoveData.lastDashTime = currentTime
  1210. hack.playerMoveData.isDashingUp = true
  1211. hack.playerMoveData.dashDuration = (dashDistance / dashSpeed) * 1000
  1212. hack.playerMoveData.dashEndTime = currentTime + hack.playerMoveData.dashDuration
  1213. if (!grounded) {
  1214. hack.playerMoveData.airDashAvailable = false
  1215. }
  1216. }
  1217.  
  1218. if (
  1219. hack.keyBindings.isCPressed &&
  1220. currentTime - hack.playerMoveData.lastDashTime >= dashCooldown &&
  1221. !hack.playerMoveData.isDashing &&
  1222. (grounded || (!grounded && hack.playerMoveData.airDashAvailable))
  1223. ) {
  1224. hack.playerMoveData.lastDashTime = currentTime
  1225. hack.playerMoveData.isDashing = true
  1226. hack.playerMoveData.dashVelocity = dashSpeed * hack.playerMoveData.lastHorizontalDirection
  1227. hack.playerMoveData.dashDuration = (dashDistance / dashSpeed) * 1000
  1228. hack.playerMoveData.dashEndTime = currentTime + hack.playerMoveData.dashDuration
  1229. if (!grounded) {
  1230. hack.playerMoveData.airDashAvailable = false
  1231. }
  1232. }
  1233.  
  1234. if (hack.playerMoveData.isDashingDown) {
  1235. hack.getters.mode.player.gpData.p.velocity[1] = -dashSpeed
  1236. hack.getters.mode.player.gpData.p.velocity[0] = 0
  1237. hack.getters.me.p.collisionResponse = false
  1238. if (currentTime >= hack.playerMoveData.dashEndTime) {
  1239. hack.playerMoveData.isDashingDown = false
  1240. hack.getters.mode.player.gpData.p.velocity[1] = 0
  1241. if (!hack.vars.modeIsOn) {
  1242. hack.getters.me.p.collisionResponse = true
  1243. }
  1244. }
  1245. return
  1246. }
  1247.  
  1248. if (hack.playerMoveData.isDashingUp) {
  1249. hack.getters.mode.player.gpData.p.velocity[1] = dashSpeed
  1250. hack.getters.mode.player.gpData.p.velocity[0] = 0
  1251. hack.getters.me.p.collisionResponse = false
  1252. if (currentTime >= hack.playerMoveData.dashEndTime) {
  1253. hack.playerMoveData.isDashingUp = false
  1254. hack.getters.mode.player.gpData.p.velocity[1] = 0
  1255. if (!hack.vars.modeIsOn) {
  1256. hack.getters.me.p.collisionResponse = true
  1257. }
  1258. }
  1259. return
  1260. }
  1261.  
  1262. if (hack.playerMoveData.isDashing) {
  1263. hack.getters.mode.player.gpData.p.velocity[0] = hack.playerMoveData.dashVelocity
  1264. hack.getters.mode.player.gpData.p.velocity[1] = 0
  1265. hack.getters.me.p.collisionResponse = false
  1266. if (currentTime >= hack.playerMoveData.dashEndTime) {
  1267. hack.playerMoveData.isDashing = false
  1268. hack.getters.mode.player.gpData.p.velocity[0] = 0
  1269. if (!hack.vars.modeIsOn) {
  1270. hack.getters.me.p.collisionResponse = true
  1271. }
  1272. }
  1273. return
  1274. } else {
  1275. if (hack.getters.mode.moveRight) {
  1276. hack.getters.mode.player.gpData.p.velocity[0] = hack.vars.lrSpd * hack.vars.mult
  1277. } else if (hack.getters.mode.moveLeft) {
  1278. hack.getters.mode.player.gpData.p.velocity[0] = -hack.vars.lrSpd * hack.vars.mult
  1279. } else {
  1280. hack.getters.mode.player.gpData.p.velocity[0] = 0
  1281. }
  1282. }
  1283.  
  1284. if (grounded) {
  1285. hack.playerMoveData.isDoubleJumpAllowed = true
  1286. if (hack.keyBindings.isZPressed) {
  1287. hack.keyBindings.isZPressed = false
  1288. hack.getters.velocity[1] = 8*(hack.getters.me.p.gravityScale)
  1289. }
  1290. } else if (hack.playerMoveData.isDoubleJumpAllowed && hack.keyBindings.isZPressed) {
  1291. hack.keyBindings.isZPressed = false
  1292. hack.getters.velocity[1] = 8*(hack.getters.me.p.gravityScale)
  1293. hack.playerMoveData.isDoubleJumpAllowed = false
  1294. }
  1295.  
  1296. if (hack.vars.ghost1 || hack.vars.ghost2) {
  1297. if (hack.getters.mode.moveUp) {
  1298. hack.getters.velocity[1] = hack.vars.udSpd * hack.vars.mult
  1299. }
  1300. if (hack.getters.mode.moveDown) {
  1301. hack.getters.velocity[1] = -hack.vars.udSpd * hack.vars.mult
  1302. }
  1303. if (!hack.getters.mode.moveUp && !hack.getters.mode.moveDown) {
  1304. hack.getters.velocity[1] = 0
  1305. }
  1306. }
  1307. }
  1308. hack.playerMoveData.newMovementIsOn = true}
  1309.  
  1310. function oldMovement() {
  1311. hack.playerMoveData.division = 12
  1312. hack.getters.client.loopFunctions[2].fun = function() {
  1313. const grounded = isGrounded()
  1314.  
  1315. if (hack.getters.mode.moveRight) {
  1316. hack.getters.mode.player.gpData.p.velocity[0] = hack.vars.lrSpd * hack.vars.mult
  1317. } else if (hack.getters.mode.moveLeft) {
  1318. hack.getters.mode.player.gpData.p.velocity[0] = -hack.vars.lrSpd * hack.vars.mult
  1319. } else {
  1320. hack.getters.mode.player.gpData.p.velocity[0] = 0
  1321. }
  1322. if (grounded) {
  1323. if (hack.getters.mode.moveUp) {
  1324. hack.getters.velocity[1] = 8
  1325. }
  1326. }
  1327. if (hack.vars.ghost1 || hack.vars.ghost2) {
  1328. if (hack.getters.mode.moveUp) {
  1329. hack.getters.velocity[1] = hack.vars.udSpd * hack.vars.mult
  1330. }
  1331. if (hack.getters.mode.moveDown) {
  1332. hack.getters.velocity[1] = -hack.vars.udSpd * hack.vars.mult
  1333. }
  1334. if (!hack.getters.mode.moveUp && !hack.getters.mode.moveDown) {
  1335. hack.getters.velocity[1] = 0
  1336. }
  1337. }
  1338. }
  1339. hack.playerMoveData.newMovementIsOn = false}
  1340. }
  1341.  
  1342. let temp1 = {};
  1343. const _call = Function.prototype.call;
  1344. new Promise((resolve, reject) => {
  1345. Function.prototype.call = function (...args) {
  1346. if (args[2]?.exports) {
  1347. temp1 = args[6]
  1348. Function.prototype.call = _call
  1349. console.log(temp1)
  1350. resolve(temp1)
  1351. }
  1352. return _call.apply(this, args)
  1353. };
  1354. }).then((result) => {
  1355. if (Object.keys(result).length > 0) {
  1356. activateMain(result)
  1357. } else {
  1358. console.log("temp1 is empty")
  1359. }
  1360. }).catch((error) => {
  1361. console.error("An error occurred:", error)
  1362. })
  1363. }
  1364.  
  1365. function hideAndSeekHack() {
  1366. function activateMain(temp1) {
  1367. const hack = {
  1368. keyBindings: {
  1369. isCPressed: false,
  1370. cTimer: null,
  1371. isZPressed: false
  1372. },
  1373. playerMoveData: {
  1374. lastHorizontalDirection: 1,
  1375. isDashingDown: false,
  1376. isDashingUp: false,
  1377. lastDashTime: 0,
  1378. dashDuration: 100,
  1379. dashEndTime: 0,
  1380. isDoubleJumpAllowed: false,
  1381. airDashAvailable: true,
  1382. newMovementIsOn: true
  1383. },
  1384. bindKeys: function () {
  1385. document.addEventListener('keydown', function (event) {
  1386. if (event.key === 'Escape') {
  1387. const panel = document.getElementById('someData')
  1388. const panel1 = document.getElementById('controlPanel')
  1389. if (panel.style.display === 'none') {
  1390. panel.style.display = 'inherit'
  1391. } else {
  1392. panel.style.display = 'none'
  1393. }
  1394. if (panel1.style.display === 'none') {
  1395. panel1.style.display = 'inherit'
  1396. } else {
  1397. panel1.style.display = 'none'
  1398. }
  1399. }
  1400. if (event.key.toLowerCase() === 's' && event.repeat) {
  1401. if (!hack.vars.modeIsOn) {
  1402. hack.getters.me.p.mass = 3
  1403. }
  1404. }
  1405. if (event.key.toLowerCase() === 'z' && !event.repeat) {
  1406. hack.keyBindings.isZPressed = true
  1407. } else if (event.repeat) {
  1408. hack.keyBindings.isZPressed = false
  1409. }
  1410. if (event.key.toLowerCase() === 'c') {
  1411. hack.keyBindings.isCPressed = true
  1412. if (!hack.keyBindings.cTimer) {
  1413. hack.keyBindings.cTimer = setTimeout(() => {
  1414. hack.keyBindings.isCPressed = false
  1415. hack.keyBindings.cTimer = null
  1416. }, 250)
  1417. }
  1418. }
  1419. })
  1420. document.addEventListener('keyup', function (event) {
  1421. if (event.key.toLowerCase() === 's') {
  1422. if (!hack.vars.modeIsOn) {
  1423. hack.getters.me.p.mass = 1
  1424. }
  1425. }
  1426. if (event.key.toLowerCase() === 'z') {
  1427. hack.keyBindings.isZPressed = false
  1428. }
  1429. if (event.key.toLowerCase() === 'c') {
  1430. hack.keyBindings.isCPressed = false
  1431. if (hack.keyBindings.cTimer) {
  1432. clearTimeout(hack.keyBindings.cTimer)
  1433. hack.keyBindings.cTimer = null
  1434. }
  1435. }
  1436. })
  1437. },
  1438. getters: {
  1439. get client() { return temp1[1].exports },
  1440. get gf() { return temp1[5].exports },
  1441. get gp() { return temp1[6].exports },
  1442. get graphics() { return temp1[7].exports },
  1443. get mode() { return temp1[11].exports },
  1444. get envirData() { return temp1[16].exports },
  1445. get network() { return temp1[37].exports },
  1446. get physics() { return temp1[333].exports },
  1447. get ray() { return this.mode.player.gpData.ray },
  1448. get velocity() { return this.mode.player.gpData.p.velocity },
  1449. get otherPlayers() { return this.mode.otherPlayers },
  1450. ghost: false,
  1451. get me() { return hack.getters.mode.player.gpData },
  1452. get ray() { return hack.getters.me.ray },
  1453. get velocity() { return hack.getters.me.p.velocity },
  1454. get otherPlayers() { return hack.getters.mode.otherPlayers }
  1455. },
  1456. vars: {
  1457. get isGround() { return isGrounded() },
  1458. mult: 1,
  1459. lrSpd: 3,
  1460. udSpd: 3,
  1461. 'POSITION INFO ': '-----------------------',
  1462. get currentPosX() { return Math.round(hack.getters.me.getX() * 100) / 100 },
  1463. get currentPosY() { return Math.round(hack.getters.me.getY() * 100) / 100 },
  1464. 'SPEED INFO ': '----------------------------',
  1465. get totalSpd() { return (((this.lrSpd + this.udSpd) / 2) * this.mult) },
  1466. get currentSpdX() { return Math.round(hack.getters.me.p.velocity[0] * 100) / 100 },
  1467. get currentSpdY() { return Math.round(hack.getters.me.p.velocity[1] * 100) / 100 },
  1468. 'SCRIPT VALUES ': '----------------------',
  1469. multSpdIsOn: false,
  1470. modeIsOn: false,
  1471. ghost1: false,
  1472. isPlayerDead: false,
  1473. 'MOVEMENT VALUES ': '---------------'
  1474. },
  1475. suppFuncs: {
  1476. getMult: () => {
  1477. if (hack.vars.mult < 3) {
  1478. return 1
  1479. } else if (hack.vars.mult < 4) {
  1480. return 2
  1481. }
  1482. },
  1483. setMult: function (e) {
  1484. if (e != undefined) {
  1485. return (hack.vars.lrSpd = hack.vars.udSpd = e)
  1486. }
  1487. if (hack.suppFuncs.getMult() === 1) {
  1488. hack.vars.mult++
  1489. } else if (hack.suppFuncs.getMult() === 2) {
  1490. hack.vars.mult += 2
  1491. } else {
  1492. hack.vars.mult = 1
  1493. }
  1494. },
  1495. getIndexByName: function (playerName) {
  1496. const index = hack.getters.otherPlayers.findIndex(player => player?.myName === playerName)
  1497. return index === -1 ? false : index
  1498. }
  1499. },
  1500. functions: {
  1501. godModeEnable: () => {
  1502. hack.vars.ghost1 = true
  1503. hack.getters.me.p.collisionResponse = false
  1504. hack.getters.me.p.mass = 0
  1505. hack.vars.modeIsOn = true
  1506. hack.getters.velocity[0] = 0
  1507. hack.getters.velocity[1] = 0
  1508. },
  1509. godModeDisable: () => {
  1510. hack.vars.ghost1 = false
  1511. hack.getters.me.p.collisionResponse = true
  1512. hack.getters.me.p.mass = 1
  1513. hack.vars.modeIsOn = false
  1514. hack.getters.velocity[0] = 0
  1515. hack.getters.velocity[1] = 0
  1516. },
  1517. multSpdEnable: () => {
  1518. hack.vars.lrSpd *= hack.vars.mult
  1519. hack.vars.udSpd *= hack.vars.mult
  1520. hack.vars.multSpdIsOn = true
  1521. },
  1522. multSpdDisable: () => {
  1523. hack.vars.lrSpd /= hack.vars.mult
  1524. hack.vars.udSpd /= hack.vars.mult
  1525. hack.vars.multSpdIsOn = false
  1526. }
  1527. },
  1528. logFuncs: {
  1529. logModeIsOn: () => {
  1530. console.log('modeIsOn:', hack.vars.modeIsOn)
  1531. },
  1532. logSpd: () => {
  1533. console.log('speed:', ((hack.vars.lrSpd + hack.vars.udSpd) / 2) * hack.vars.mult)
  1534. }
  1535. }
  1536. }
  1537.  
  1538.  
  1539.  
  1540. document.body.insertAdjacentHTML("beforebegin", `
  1541. <div id="someData" style="display: inherit; width: auto; position: fixed; top: 25px; left: 0px; height: auto; text-align: left; font-size: 14px; background: rgb(0, 0, 0); color: rgb(255, 255, 255); opacity: 0.7; padding: 2px 2px;"></div>
  1542. `)
  1543.  
  1544. const updateData = () => {
  1545. const o = []
  1546. for (let i in hack.vars) {
  1547. o.push(`${i}: ${hack.vars[i]}`)
  1548. }
  1549. for (let i in hack.playerMoveData) {
  1550. o.push(`${i}: ${hack.playerMoveData[i]}`)
  1551. }
  1552. document.getElementById("someData").innerHTML = o.join('<br>')
  1553. }
  1554.  
  1555. document.body.insertAdjacentHTML("beforebegin", `
  1556. <div id="controlPanel" style="display: inherit; width: auto; position: fixed; bottom: 0px; left: 0px; height: auto; text-align: left; font-size: 14px; background: rgb(0, 0, 0); color: rgb(255, 255, 255); opacity: 0.7; padding: 2px 2px;">
  1557. <div>
  1558. <span>new movement: </span>
  1559. <button id="newMoveBtn" style="background: rgba(255, 255, 255, 0.7); color: black;">${hack.playerMoveData.newMovementIsOn}</button>
  1560. </div>
  1561. </div>
  1562. `)
  1563.  
  1564. const updateButtonStates = () => {
  1565. document.getElementById("newMoveBtn").innerText = hack.playerMoveData.newMovementIsOn
  1566. }
  1567.  
  1568. document.getElementById("newMoveBtn").addEventListener("click", () => {
  1569. if (!hack.playerMoveData.newMovementIsOn) {
  1570. newMovement()
  1571. } else {
  1572. oldMovement()
  1573. }
  1574. updateButtonStates()
  1575. })
  1576.  
  1577.  
  1578. setInterval(updateData, 100 / 6)
  1579. updateButtonStates()
  1580. setInterval(updateButtonStates, 100 / 6)
  1581. hack.bindKeys()
  1582.  
  1583. let scrActivate = function () {
  1584. hack.getters.client.loopFunctions[2].timeOut = 100 / 6
  1585. hack.getters.client.loopFunctions[3].timeOut = 0
  1586. oldMovement()
  1587. Object.defineProperty(hack.vars, 'mult', { enumerable: false })
  1588. Object.defineProperty(hack.vars, 'lrSpd', { enumerable: false })
  1589. Object.defineProperty(hack.vars, 'udSpd', { enumerable: false })
  1590. Object.defineProperty(hack.vars, 'multSpdIsOn', { enumerable: false })
  1591. Object.defineProperty(hack.vars, 'ghost1', { enumerable: false })
  1592. Object.defineProperty(hack.playerMoveData, 'lastDashTime', { enumerable: false })
  1593. Object.defineProperty(hack.playerMoveData, 'lastHorizontalDirection', { enumerable: false })
  1594. Object.defineProperty(hack.playerMoveData, 'lastDashTime', { enumerable: false })
  1595. Object.defineProperty(hack.playerMoveData, 'dashDuration', { enumerable: false })
  1596. Object.defineProperty(hack.playerMoveData, 'dashEndTime', { enumerable: false })
  1597. Object.defineProperty(hack.playerMoveData, 'newMovementIsOn', { enumerable: false })
  1598. document.getElementById('timer').style.opacity = 0.7
  1599. document.getElementById('timer').style.background = 'rgb(0, 0, 0)'
  1600. document.getElementById('timer').style.color = 'rgb(255, 255, 255)'
  1601. document.getElementById('seekerDistance').style.opacity = 0.7
  1602. document.getElementById('seekerDistance').style.background = 'rgb(0, 0, 0)'
  1603. document.getElementById('seekerDistance').style.color = 'rgb(255, 255, 255)'
  1604. document.getElementById('hidersCount').style.color = 'rgb(255, 255, 255)'
  1605. document.getElementById('hidersCount').style.opacity = 0.7
  1606. }
  1607.  
  1608. setTimeout(() => {if (hack.vars.modeIsOn) {hack.functions.godModeEnable()}},300)
  1609.  
  1610. hack.getters.client.findUntilFound = function (e, t, n) {
  1611. hack.getters.network.gsip = e;
  1612. hack.getters.network.gsrn = t;
  1613. hack.getters.network.getSID?.((sid) => {
  1614. hack.getters.network.sid = sid;
  1615. hack.getters.network.connectToGs?.(hack.getters.network.gsip, () => {
  1616. console.log("connected to gs");
  1617.  
  1618. hack.getters.client.verifyIsHuman?.(() => {
  1619. hack.getters.network.registerSidOnGs?.((verifyStatus) => {
  1620. console.log("verified on gs server", verifyStatus);
  1621.  
  1622. if (verifyStatus === "") {
  1623. alert("You are already playing the game in another browser tab.");
  1624. location.reload();
  1625. n(2);
  1626. } else {
  1627. hack.getters.network.joinRoom?.(hack.getters.network.gsrn, (joinStatus) => {
  1628. if (joinStatus === 1) {
  1629. hack.getters.client.sendPlayingInfo?.(hack.getters.client.roomId, () => {
  1630. hack.getters.client.onReady?.();
  1631. n(1);
  1632. scrActivate()
  1633. });
  1634. } else {
  1635. console.log("else");
  1636. hack.getters.network.gsSockehack?.getters.client.disconnect?.();
  1637.  
  1638. do {
  1639. hack.getters.client.rIndex++;
  1640. const currentDataCenter = hack.getters.network.dataCenters?.[hack.getters.client.dcIndex];
  1641.  
  1642. if (!currentDataCenter?.[hack.getters.client.rIndex]) {
  1643. hack.getters.client.dcIndex++;
  1644. hack.getters.client.rIndex = 0;
  1645.  
  1646. if (!hack.getters.network.dataCenters?.[hack.getters.client.dcIndex]) {
  1647. alert("It seems all servers are full. Please refresh your page and try again.");
  1648. location.reload();
  1649. return;
  1650. }
  1651. }
  1652. } while (hack.getters.network.dataCenters?.[hack.getters.client.dcIndex]?.[hack.getters.client.rIndex]?.[2] !== hack.getters.client.modeInfo.mp);
  1653.  
  1654. const newGsip = hack.getters.network.dataCenters?.[hack.getters.client.dcIndex]?.[hack.getters.client.rIndex]?.[1];
  1655. const newGsrn = hack.getters.network.dataCenters?.[hack.getters.client.dcIndex]?.[hack.getters.client.rIndex]?.[3];
  1656. hack.getters.client.roomId = hack.getters.network.dataCenters?.[hack.getters.client.dcIndex]?.[hack.getters.client.rIndex]?.[4];
  1657.  
  1658. hack.getters.client.findUntilFound(newGsip, newGsrn, n);
  1659. }
  1660. });
  1661. }
  1662. });
  1663. });
  1664. });
  1665. });
  1666. };
  1667.  
  1668. document.body.onkeydown = (event) => {
  1669. const keyCode = event.keyCode
  1670. switch (keyCode) {
  1671. case 17:
  1672. hack.getters.mode.makeMeGhost()
  1673. break
  1674. case 113:
  1675. if (!hack.vars.modeIsOn) {
  1676. hack.functions.godModeEnable()
  1677. hack.logFuncs.logModeIsOn()
  1678. hack.functions.multSpdEnable()
  1679. } else {
  1680. hack.functions.godModeDisable()
  1681. hack.logFuncs.logModeIsOn()
  1682. hack.functions.multSpdDisable()
  1683. }
  1684. break
  1685. case 192:
  1686. case 190:
  1687. if (hack.vars.modeIsOn) {
  1688. hack.suppFuncs.setMult()
  1689. hack.logFuncs.logSpd()
  1690. }
  1691. break
  1692. }
  1693. }
  1694.  
  1695. function isGrounded() {
  1696. const meX = hack.getters.me.getX()
  1697. const meY = hack.getters.me.getY()
  1698. const ray = hack.getters.ray
  1699. const physics = hack.getters.physics
  1700. const gpPWorld = hack.getters.gp.pWorld
  1701. const rayResult = hack.getters.me.ray.result
  1702. const rayHitPoint = (hack.getters.ray.hitPoint = [Infinity, Infinity])
  1703.  
  1704. const verticalOffset = 50
  1705. const checkYPosition = meY + 45
  1706.  
  1707. for (let i = 0; i < 121; i++) {
  1708. const o = meX - 15 + i * (30 / 120)
  1709. const s = checkYPosition
  1710. const u = s + verticalOffset
  1711.  
  1712. ray.from = [physics.xAxis(o, 0), physics.yAxis(s, 0)]
  1713. ray.to = [physics.xAxis(o, 0), physics.yAxis(u, 0)]
  1714.  
  1715. ray.update()
  1716. rayResult.reset()
  1717.  
  1718. if (gpPWorld.raycast(rayResult, ray)) {
  1719. rayResult.getHitPoint(rayHitPoint, ray)
  1720. const hitDistance = rayResult.getHitDistance(ray)
  1721.  
  1722. if (rayResult.shape.ref.getCollision() && hitDistance < 0.1) {
  1723. return true
  1724. }
  1725. }
  1726. }
  1727.  
  1728. return false
  1729. }
  1730.  
  1731. function newMovement() {
  1732. hack.getters.client.loopFunctions[2].fun = function () {
  1733. const currentTime = Date.now()
  1734. const dashCooldown = 250
  1735. const dashDistance = 2.5
  1736. const dashSpeed = 25
  1737. const grounded = isGrounded()
  1738.  
  1739. if (grounded) {
  1740. hack.playerMoveData.airDashAvailable = true
  1741. }
  1742.  
  1743. if (hack.getters.mode.moveLeft) {
  1744. hack.playerMoveData.lastHorizontalDirection = -1
  1745. } else if (hack.getters.mode.moveRight) {
  1746. hack.playerMoveData.lastHorizontalDirection = 1
  1747. }
  1748.  
  1749. if (
  1750. hack.keyBindings.isCPressed &&
  1751. hack.getters.mode.moveDown &&
  1752. currentTime - hack.playerMoveData.lastDashTime >= dashCooldown &&
  1753. !hack.playerMoveData.isDashingDown &&
  1754. (grounded || (!grounded && hack.playerMoveData.airDashAvailable))
  1755. ) {
  1756. hack.playerMoveData.lastDashTime = currentTime
  1757. hack.playerMoveData.isDashingDown = true
  1758. hack.playerMoveData.dashDuration = (dashDistance / dashSpeed) * 1000
  1759. hack.playerMoveData.dashEndTime = currentTime + hack.playerMoveData.dashDuration
  1760. if (!grounded) {
  1761. hack.playerMoveData.airDashAvailable = false
  1762. }
  1763. }
  1764.  
  1765. if (
  1766. hack.keyBindings.isCPressed &&
  1767. hack.getters.mode.moveUp &&
  1768. currentTime - hack.playerMoveData.lastDashTime >= dashCooldown &&
  1769. !hack.playerMoveData.isDashingUp &&
  1770. (grounded || (!grounded && hack.playerMoveData.airDashAvailable))
  1771. ) {
  1772. hack.playerMoveData.lastDashTime = currentTime
  1773. hack.playerMoveData.isDashingUp = true
  1774. hack.playerMoveData.dashDuration = (dashDistance / dashSpeed) * 1000
  1775. hack.playerMoveData.dashEndTime = currentTime + hack.playerMoveData.dashDuration
  1776. if (!grounded) {
  1777. hack.playerMoveData.airDashAvailable = false
  1778. }
  1779. }
  1780.  
  1781. if (
  1782. hack.keyBindings.isCPressed &&
  1783. currentTime - hack.playerMoveData.lastDashTime >= dashCooldown &&
  1784. !hack.playerMoveData.isDashing &&
  1785. (grounded || (!grounded && hack.playerMoveData.airDashAvailable))
  1786. ) {
  1787. hack.playerMoveData.lastDashTime = currentTime
  1788. hack.playerMoveData.isDashing = true
  1789. hack.playerMoveData.dashVelocity = dashSpeed * hack.playerMoveData.lastHorizontalDirection
  1790. hack.playerMoveData.dashDuration = (dashDistance / dashSpeed) * 1000
  1791. hack.playerMoveData.dashEndTime = currentTime + hack.playerMoveData.dashDuration
  1792. if (!grounded) {
  1793. hack.playerMoveData.airDashAvailable = false
  1794. }
  1795. }
  1796.  
  1797. if (hack.playerMoveData.isDashingDown) {
  1798. hack.getters.mode.player.gpData.p.velocity[1] = -dashSpeed
  1799. hack.getters.mode.player.gpData.p.velocity[0] = 0
  1800. hack.getters.me.p.collisionResponse = false
  1801. if (currentTime >= hack.playerMoveData.dashEndTime) {
  1802. hack.playerMoveData.isDashingDown = false
  1803. hack.getters.mode.player.gpData.p.velocity[1] = 0
  1804. if (!hack.vars.modeIsOn) {
  1805. hack.getters.me.p.collisionResponse = true
  1806. }
  1807. }
  1808. return
  1809. }
  1810.  
  1811. if (hack.playerMoveData.isDashingUp) {
  1812. hack.getters.mode.player.gpData.p.velocity[1] = dashSpeed
  1813. hack.getters.mode.player.gpData.p.velocity[0] = 0
  1814. hack.getters.me.p.collisionResponse = false
  1815. if (currentTime >= hack.playerMoveData.dashEndTime) {
  1816. hack.playerMoveData.isDashingUp = false
  1817. hack.getters.mode.player.gpData.p.velocity[1] = 0
  1818. if (!hack.vars.modeIsOn) {
  1819. hack.getters.me.p.collisionResponse = true
  1820. }
  1821. }
  1822. return
  1823. }
  1824.  
  1825. if (hack.playerMoveData.isDashing) {
  1826. hack.getters.mode.player.gpData.p.velocity[0] = hack.playerMoveData.dashVelocity
  1827. hack.getters.mode.player.gpData.p.velocity[1] = 0
  1828. hack.getters.me.p.collisionResponse = false
  1829. if (currentTime >= hack.playerMoveData.dashEndTime) {
  1830. hack.playerMoveData.isDashing = false
  1831. hack.getters.mode.player.gpData.p.velocity[0] = 0
  1832. if (!hack.vars.modeIsOn) {
  1833. hack.getters.me.p.collisionResponse = true
  1834. }
  1835. }
  1836. return
  1837. } else {
  1838. if (hack.getters.mode.moveRight) {
  1839. hack.getters.mode.player.gpData.p.velocity[0] = hack.vars.lrSpd * hack.vars.mult
  1840. } else if (hack.getters.mode.moveLeft) {
  1841. hack.getters.mode.player.gpData.p.velocity[0] = -hack.vars.lrSpd * hack.vars.mult
  1842. } else {
  1843. hack.getters.mode.player.gpData.p.velocity[0] = 0
  1844. }
  1845. }
  1846.  
  1847. if (grounded) {
  1848. hack.playerMoveData.isDoubleJumpAllowed = true
  1849. if (hack.keyBindings.isZPressed) {
  1850. hack.keyBindings.isZPressed = false
  1851. hack.getters.velocity[1] = 8 * (hack.getters.me.p.gravityScale)
  1852. }
  1853. } else if (hack.playerMoveData.isDoubleJumpAllowed && hack.keyBindings.isZPressed) {
  1854. hack.keyBindings.isZPressed = false
  1855. hack.getters.velocity[1] = 8 * (hack.getters.me.p.gravityScale)
  1856. hack.playerMoveData.isDoubleJumpAllowed = false
  1857. }
  1858.  
  1859. if (hack.vars.ghost1) {
  1860. if (hack.getters.mode.moveUp) {
  1861. hack.getters.velocity[1] = hack.vars.udSpd * hack.vars.mult
  1862. }
  1863. if (hack.getters.mode.moveDown) {
  1864. hack.getters.velocity[1] = -hack.vars.udSpd * hack.vars.mult
  1865. }
  1866. if (!hack.getters.mode.moveUp && !hack.getters.mode.moveDown) {
  1867. hack.getters.velocity[1] = 0
  1868. }
  1869. }
  1870. }
  1871. hack.playerMoveData.newMovementIsOn = true
  1872. }
  1873.  
  1874. function oldMovement() {
  1875. hack.getters.client.loopFunctions[2].fun = function () {
  1876. const grounded = isGrounded()
  1877.  
  1878. if (hack.getters.mode.moveRight) {
  1879. hack.getters.mode.player.gpData.p.velocity[0] = hack.vars.lrSpd * hack.vars.mult
  1880. } else if (hack.getters.mode.moveLeft) {
  1881. hack.getters.mode.player.gpData.p.velocity[0] = -hack.vars.lrSpd * hack.vars.mult
  1882. } else {
  1883. hack.getters.mode.player.gpData.p.velocity[0] = 0
  1884. }
  1885. if (grounded) {
  1886. if (hack.getters.mode.moveUp) {
  1887. hack.getters.velocity[1] = 8
  1888. }
  1889. }
  1890. if (hack.vars.ghost1) {
  1891. if (hack.getters.mode.moveUp) {
  1892. hack.getters.velocity[1] = hack.vars.udSpd * hack.vars.mult
  1893. }
  1894. if (hack.getters.mode.moveDown) {
  1895. hack.getters.velocity[1] = -hack.vars.udSpd * hack.vars.mult
  1896. }
  1897. if (!hack.getters.mode.moveUp && !hack.getters.mode.moveDown) {
  1898. hack.getters.velocity[1] = 0
  1899. }
  1900. }
  1901. }
  1902. hack.playerMoveData.newMovementIsOn = false
  1903. }
  1904. }
  1905.  
  1906. let temp1 = {};
  1907. const _call = Function.prototype.call;
  1908. new Promise((resolve, reject) => {
  1909. Function.prototype.call = function (...args) {
  1910. if (args[2]?.exports) {
  1911. temp1 = args[6]
  1912. Function.prototype.call = _call
  1913. console.log(temp1)
  1914. resolve(temp1)
  1915. }
  1916. return _call.apply(this, args)
  1917. };
  1918. }).then((result) => {
  1919. if (Object.keys(result).length > 0) {
  1920. activateMain(result)
  1921. } else {
  1922. console.log("temp1 is empty")
  1923. }
  1924. }).catch((error) => {
  1925. console.error("An error occurred:", error)
  1926. })
  1927. }
  1928.  
  1929.  
  1930. if (window.location.href == 'http://brofist.io/modes/sandbox/c/index.html') {
  1931. sandboxHack();
  1932. } else if (window.location.href == 'http://brofist.io/modes/twoPlayer/c/index.html') {
  1933. twoPlayerHack();
  1934. } else if (window.location.href == 'http://brofist.io/modes/hideAndSeek/c/index.html') {
  1935. hideAndSeekHack();
  1936. }