blackhack

Cheat for brofist.io

目前为 2024-10-30 提交的版本,查看 最新版本

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