1st-cheat

cheat for Brofist.io

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

  1. // ==UserScript==
  2. // @name 1st-cheat
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.12.8-beta
  5. // @description cheat for Brofist.io
  6. // @author CiNoP
  7. // @match http://brofist.io/modes/twoPlayer/*
  8. // @icon https://www.google.com/s2/favicons?sz=64&domain=brofist.io
  9. // @grant none
  10. // @license GPL-3.0-only
  11. // ==/UserScript==
  12. /* jshint esversion: 11 */
  13. /* jshint asi: true */
  14.  
  15. function activateMain(temp1) {
  16. const hack = {
  17. keyBindings: {
  18. isCPressed: false,
  19. cTimer: null,
  20. isZPressed: false
  21. },
  22. playerMoveData: {
  23. lastHorizontalDirection: 1,
  24. isDashingDown: false,
  25. isDashingUp: false,
  26. lastDashTime: 0,
  27. dashDuration: 100,
  28. dashEndTime: 0,
  29. isDoubleJumpAllowed: false,
  30. airDashAvailable: true,
  31. newMovementIsOn: true
  32. },
  33. bindKeys: function () {
  34. document.addEventListener('keydown', function (event) {
  35. if (event.key === 'Escape') {
  36. const panel = document.getElementById('someData')
  37. const panel1 = document.getElementById('controlPanel')
  38. if (panel.style.display === 'none') {
  39. panel.style.display = 'inherit'
  40. } else {
  41. panel.style.display = 'none'
  42. }
  43. if (panel1.style.display === 'none') {
  44. panel1.style.display = 'inherit'
  45. } else {
  46. panel1.style.display = 'none'
  47. }
  48. }
  49. if (event.key.toLowerCase() === 's' && event.repeat) {
  50. if (!hack.vars.modeIsOn) {
  51. hack.getters.me.p.mass = 3
  52. }
  53. }
  54. if (event.key.toLowerCase() === 'z' && !event.repeat) {
  55. hack.keyBindings.isZPressed = true
  56. } else if (event.repeat) {
  57. hack.keyBindings.isZPressed = false
  58. }
  59. if (event.key.toLowerCase() === 'c') {
  60. hack.keyBindings.isCPressed = true
  61. if (!hack.keyBindings.cTimer) {
  62. hack.keyBindings.cTimer = setTimeout(() => {
  63. hack.keyBindings.isCPressed = false
  64. hack.keyBindings.cTimer = null
  65. }, 250)
  66. }
  67. }
  68. })
  69. document.addEventListener('keyup', function (event) {
  70. if (event.key.toLowerCase() === 's') {
  71. if (!hack.vars.modeIsOn) {
  72. hack.getters.me.p.mass = 1
  73. }
  74. }
  75. if (event.key.toLowerCase() === 'z') {
  76. hack.keyBindings.isZPressed = false
  77. }
  78. if (event.key.toLowerCase() === 'c') {
  79. hack.keyBindings.isCPressed = false
  80. if (hack.keyBindings.cTimer) {
  81. clearTimeout(hack.keyBindings.cTimer)
  82. hack.keyBindings.cTimer = null
  83. }
  84. }
  85. })
  86. },
  87. getters: {
  88. get client() { return temp1[1].exports },
  89. get gf() { return temp1[5].exports },
  90. get gp() { return temp1[6].exports },
  91. get graphics() { return temp1[7].exports },
  92. get mode() { return temp1[11].exports },
  93. get envirData() { return temp1[15].exports },
  94. get rGho() { return temp1[26].exports },
  95. get modules_resultScreen() { return temp1[35].exports },
  96. get network() { return temp1[36].exports },
  97. get physics() { return temp1[332].exports },
  98. get me() { return hack.getters.mode.player.gpData },
  99. get ray() { return hack.getters.me.ray },
  100. get velocity() { return hack.getters.me.p.velocity },
  101. get otherPlayers() { return hack.getters.mode.otherPlayers }
  102. },
  103. vars: {
  104. get isGround() {return isGrounded()},
  105. mult: 1,
  106. lrSpd: 3,
  107. udSpd: 3,
  108. 'POSITION INFO ': '-----------------------',
  109. get currentPosX() {return Math.round(hack.getters.me.getX()*100)/100},
  110. get currentPosY() {return Math.round(hack.getters.me.getY()*100)/100},
  111. 'SPEED INFO ': '----------------------------',
  112. get totalSpd() {return (((this.lrSpd + this.udSpd) / 2) * this.mult)},
  113. get currentSpdX() {return Math.round(hack.getters.me.p.velocity[0]*100)/100},
  114. get currentSpdY() {return Math.round(hack.getters.me.p.velocity[1]*100)/100},
  115. 'SCRIPT VALUES ': '----------------------',
  116. multSpdIsOn: false,
  117. modeIsOn: false,
  118. immIsOn: false,
  119. MMGIsOn: false,
  120. interTpToOtherIsOn: false,
  121. ghost1: false,
  122. ghost2: false,
  123. isPlayerDead: false,
  124. 'MOVEMENT VALUES ': '---------------'
  125. },
  126. suppFuncs: {
  127. searchShapesById: function(b, a = temp1[6].exports.list) {
  128. for (n = [], i = 0; i < a.length; i++) {
  129. if (a[i]?.id == b) {
  130. n.push(a[i])
  131. }
  132. } return n
  133. },
  134. getDistanceToShape: function(spawn = this.searchShapesById('spawn')[0], checkpoints = this.searchShapesById('checkpoint')) {
  135. let distances = checkpoints.map((checkpoint, index) => {
  136. const distance = Math.sqrt(
  137. (spawn.getX() - checkpoint.getX()) ** 2 +
  138. (spawn.getY() - checkpoint.getY()) ** 2
  139. );
  140. return { index, distance };
  141. });
  142. distances.sort((a, b) => a.distance - b.distance);
  143. return distances.map(d => d.index);
  144. },
  145. getMult: () => {
  146. if (hack.vars.mult < 3) {
  147. return 1
  148. } else if (hack.vars.mult < 4) {
  149. return 2
  150. }
  151. },
  152. setMult: function (e) {
  153. if (e != undefined) {
  154. return (hack.vars.lrSpd = hack.vars.udSpd = e)
  155. }
  156. if (hack.suppFuncs.getMult() === 1) {
  157. hack.vars.mult++
  158. } else if (hack.suppFuncs.getMult() === 2) {
  159. hack.vars.mult += 2
  160. } else {
  161. hack.vars.mult = 1
  162. }
  163. },
  164. getIndexByName: function(playerName) {
  165. const index = hack.getters.otherPlayers.findIndex(player => player?.myName === playerName)
  166. return index === -1 ? false : index
  167. }
  168. },
  169. functions: {
  170. tp: function (x, y) {
  171. hack.getters.me.setX(x)
  172. hack.getters.me.setY(y)
  173. },
  174. tpShape: function(e,o = 0) {
  175. this.tp(e[o].getX(),e[o].getY())
  176. },
  177. tpDoor: () => {
  178. hack.functions.tp(
  179. hack.getters.mode.exitGate.exitGateCounter.refP.getX(),
  180. hack.getters.mode.exitGate.exitGateCounter.refP.getY()
  181. )
  182. },
  183. tpSpawn: () => {
  184. hack.functions.tp(
  185. hack.getters.mode.spawn.refP.getX(),
  186. hack.getters.mode.spawn.refP.getY()
  187. )
  188. },
  189. setTpToOther: function (playerIndex) {
  190. if (!hack.vars.interTpToOtherIsOn && playerIndex !== false) {
  191. this.interTpToOther = setInterval(() => {
  192. hack.getters.me.p.position[0] = hack.getters.otherPlayers[playerIndex].gpData.p.position[0]
  193. hack.getters.me.p.position[1] = hack.getters.otherPlayers[playerIndex].gpData.p.position[1]
  194. }, 100 / 14.4)
  195. hack.vars.interTpToOtherIsOn = true
  196. } else if (playerIndex === false) {
  197. try {
  198. clearInterval(this.interTpToOther)
  199. hack.vars.interTpToOtherIsOn = false
  200. } catch {
  201. console.log('не существующий интервал')
  202. }
  203. }
  204. },
  205. MMGEnable: function () {
  206. hack.getters.mode.makeMeGhost = function () {
  207. hack.getters.me.setAlpha(0.3)
  208. hack.getters.me.p.shapes[0].sensor = true
  209. hack.getters.me.p.gravityScale = 0
  210. hack.getters.velocity[0] = 0
  211. hack.getters.velocity[1] = 0
  212. hack.getters.me.me = void 0
  213. hack.vars.ghost2 = true
  214. hack.vars.isPlayerDead = true
  215. if (hack.vars.multSpdIsOn) { hack.functions.multSpdDisable() }
  216. hack.getters.rGho.fire(hack.getters.network.gsSocket)
  217. if (hack.getters.mode.md.mobile()) {hack.getters.mode.setupTouchButtons(true)}
  218. }
  219. hack.vars.MMGIsOn = true
  220. },
  221. MMGDisable: function () {
  222. hack.getters.mode.makeMeGhost = () => { }
  223. hack.vars.MMGIsOn = false
  224. },
  225. immEnable: () => {
  226. hack.getters.me.me = void 0
  227. hack.vars.immIsOn = true
  228. },
  229. immDisable: () => {
  230. hack.getters.me.me = true
  231. hack.vars.immIsOn = false
  232. },
  233. godModeEnable: () => {
  234. hack.vars.ghost1 = true
  235. hack.getters.me.p.collisionResponse = false
  236. hack.getters.me.p.mass = 0
  237. hack.vars.modeIsOn = true
  238. hack.getters.velocity[0] = 0
  239. hack.getters.velocity[1] = 0
  240. },
  241. godModeDisable: () => {
  242. hack.vars.ghost1 = false
  243. hack.getters.me.p.collisionResponse = true
  244. hack.getters.me.p.mass = 1
  245. hack.vars.modeIsOn = false
  246. hack.getters.velocity[0] = 0
  247. hack.getters.velocity[1] = 0
  248. },
  249. multSpdEnable: () => {
  250. hack.vars.lrSpd *= hack.vars.mult
  251. hack.vars.udSpd *= hack.vars.mult
  252. hack.vars.multSpdIsOn = true
  253. },
  254. multSpdDisable: () => {
  255. hack.vars.lrSpd /= hack.vars.mult
  256. hack.vars.udSpd /= hack.vars.mult
  257. hack.vars.multSpdIsOn = false
  258. }
  259. },
  260. logFuncs: {
  261. logModeIsOn: () => {
  262. console.log('modeIsOn:', hack.vars.modeIsOn)
  263. },
  264. logImmIsOn: () => {
  265. console.log('immIsOn:', hack.vars.immIsOn)
  266. },
  267. logSpd: () => {
  268. console.log('speed:', ((hack.vars.lrSpd + hack.vars.udSpd) / 2) * hack.vars.mult)
  269. },
  270. logMMGIsOn: () => {
  271. console.log('MMGIsOn:', hack.vars.MMGIsOn)
  272. }
  273. }
  274. }
  275.  
  276. document.body.insertAdjacentHTML("beforebegin", `
  277. <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>
  278. `)
  279.  
  280. const updateData = () => {
  281. const o = []
  282. for (let i in hack.vars) {
  283. o.push(`${i}: ${hack.vars[i]}`)
  284. }
  285. for (let i in hack.playerMoveData) {
  286. o.push(`${i}: ${hack.playerMoveData[i]}`)
  287. }
  288. document.getElementById("someData").innerHTML = o.join('<br>')
  289. }
  290.  
  291. setInterval(updateData, 100 / 6)
  292.  
  293. document.body.insertAdjacentHTML("beforebegin", `
  294. <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;">
  295. <div>
  296. <span>new movement: </span>
  297. <button id="newMoveBtn" style="background: rgba(255, 255, 255, 0.7); color: black;">${hack.playerMoveData.newMovementIsOn}</button>
  298. </div>
  299. <div>
  300. <span>poison immunity: </span>
  301. <button id="immBtn" style="background: rgba(255, 255, 255, 0.7); color: black;">${hack.vars.immIsOn}</button>
  302. </div>
  303. <div>
  304. <span>death immunity: </span>
  305. <button id="MMGBtn" style="background: rgba(255, 255, 255, 0.7); color: black;">${!hack.vars.MMGIsOn}</button>
  306. </div>
  307. </div>
  308. `)
  309.  
  310. const updateButtonStates = () => {
  311. document.getElementById("newMoveBtn").innerText = hack.playerMoveData.newMovementIsOn
  312. document.getElementById("immBtn").innerText = hack.vars.immIsOn
  313. document.getElementById("MMGBtn").innerText = !hack.vars.MMGIsOn
  314. }
  315.  
  316. document.getElementById("newMoveBtn").addEventListener("click", () => {
  317. if (!hack.playerMoveData.newMovementIsOn) {
  318. newMovement()
  319. } else {
  320. oldMovement()
  321. }
  322. updateButtonStates()
  323. })
  324.  
  325. document.getElementById("immBtn").addEventListener("click", () => {
  326. if (hack.vars.immIsOn) {
  327. hack.functions.immDisable()
  328. } else {
  329. hack.functions.immEnable()
  330. }
  331. updateButtonStates()
  332. })
  333.  
  334. document.getElementById("MMGBtn").addEventListener("click", () => {
  335. if (hack.vars.MMGIsOn) {
  336. hack.functions.MMGDisable()
  337. } else {
  338. hack.functions.MMGEnable()
  339. }
  340. updateButtonStates()
  341. })
  342.  
  343. updateButtonStates()
  344.  
  345. setInterval(updateButtonStates, 100 / 6)
  346.  
  347. hack.functions.MMGDisable()
  348.  
  349. let scrActivate = function() {
  350. (() => {console.log( this )})()
  351. hack.getters.client.loopFunctions[2].timeOut = 100 / 6
  352. newMovement()
  353. Object.defineProperty(hack.vars, 'mult', { enumerable: false })
  354. Object.defineProperty(hack.vars, 'lrSpd', { enumerable: false })
  355. Object.defineProperty(hack.vars, 'udSpd', { enumerable: false })
  356. Object.defineProperty(hack.vars, 'ghost2', { enumerable: false })
  357. Object.defineProperty(hack.playerMoveData, 'lastDashTime', { enumerable: false })
  358. Object.defineProperty(hack.playerMoveData, 'lastHorizontalDirection', { enumerable: false })
  359. Object.defineProperty(hack.playerMoveData, 'lastDashTime', { enumerable: false })
  360. Object.defineProperty(hack.playerMoveData, 'dashDuration', { enumerable: false })
  361. Object.defineProperty(hack.playerMoveData, 'dashEndTime', { enumerable: false })
  362. Object.defineProperty(hack.playerMoveData, 'newMovementIsOn', { enumerable: false })
  363. document.getElementById('timer').style.background = 'rgb(0, 0, 0)'
  364. document.getElementById('timer').style.color = 'rgb(255, 255, 255)'
  365. document.getElementById('mapCredits').style.background = 'rgb(0, 0, 0)'
  366. document.getElementById('mapCredits').style.color = 'rgb(255, 255, 255)'
  367. document.getElementById('leaderboard').style.background = 'rgb(0, 0, 0)'
  368. document.getElementById('timer').style.opacity = 0.7
  369. document.getElementById('leaderboard').style.opacity = 0.7
  370. document.getElementById('mapCredits').style.opacity = 0.7
  371. }
  372.  
  373. hack.bindKeys()
  374.  
  375. hack.getters.mode.onChangeMap = function (e) {
  376. try {
  377. scrActivate()
  378. scrActivate = null
  379. } catch {}
  380. clearInterval(hack.getters.mode.startTimeId)
  381. clearTimeout(hack.getters.mode.smallStepTimeId)
  382. hack.getters.modules_resultScreen.hideResultScreen()
  383. hack.getters.gp.unload(hack.getters.gp)
  384. hack.getters.gp.list = hack.getters.gp.load(e, hack.getters.gp)
  385. hack.getters.mode.syncArr = []
  386. hack.getters.mode.ghost = false
  387. hack.getters.mode.tweenObjects = []
  388. hack.getters.mode.defineBehaviours(hack.getters.gp.list, hack.getters.mode.syncArr, hack.getters.gp)
  389. hack.getters.mode.md.mobile() && hack.getters.mode.setupTouchButtons(false)
  390. hack.getters.mode.setMyBio()
  391. 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)
  392. for (let n = 0; n < hack.getters.otherPlayers.length; n++) {
  393. if (hack.getters.otherPlayers[n]) {
  394. let t = hack.getters.otherPlayers[n].gpData.g.myIndex
  395. hack.getters.otherPlayers[n].gpData = hack.getters.mode.createPlayer()
  396. hack.getters.otherPlayers[n].gpData.g.myIndex = t
  397. hack.getters.gp.gWorld.removeChild(hack.getters.otherPlayers[n].gpData.g)
  398. hack.getters.gp.gWorld.mid.addChild(hack.getters.otherPlayers[n].gpData.g)
  399. hack.getters.mode.setBio(
  400. hack.getters.otherPlayers[n].gpData,
  401. hack.getters.otherPlayers[n].myName,
  402. hack.getters.otherPlayers[n].mySkin,
  403. hack.getters.otherPlayers[n].whatBro,
  404. hack.getters.otherPlayers[n].chatColor,
  405. hack.getters.otherPlayers[n].teamColor
  406. )
  407. }
  408. }
  409. hack.getters.mode.firstTimeMapChange = hack.getters.mode.firstTimeMapChange || true
  410. hack.getters.mode.smallStepTimeId = setTimeout(function () {
  411. document.getElementById("startTime").style.display = "inherit"
  412. document.getElementById("startTime").innerHTML = hack.getters.mode.startTime
  413. hack.getters.client.runPhysics = false
  414. hack.getters.mode.startTimeId = setInterval(function () {
  415. hack.getters.mode.startTime++
  416. document.getElementById("startTime").innerHTML = hack.getters.mode.startTime
  417. if (hack.getters.mode.startTime == 3) {
  418. hack.getters.mode.startTime = 0
  419. hack.getters.client.runPhysics = true
  420. clearInterval(hack.getters.mode.startTimeId)
  421. document.getElementById("startTime").style.display = "none"
  422. }
  423. }, 1000)
  424. }, 0)
  425. hack.getters.me.me = true
  426. if (hack.vars.modeIsOn) {
  427. hack.functions.godModeEnable()
  428. } else {
  429. hack.functions.godModeDisable()
  430. }
  431. if (hack.vars.immIsOn) {
  432. hack.functions.immEnable()
  433. } else {
  434. hack.functions.immDisable()
  435. }
  436. hack.vars.ghost2 = false
  437. hack.vars.isPlayerDead = false
  438. }
  439.  
  440. document.body.onkeydown = (event) => {
  441. const keyCode = event.keyCode
  442. switch (keyCode) {
  443. case 17:
  444. hack.getters.mode.makeMeGhost()
  445. break
  446. case 113:
  447. if (!hack.vars.modeIsOn) {
  448. hack.functions.godModeEnable()
  449. hack.logFuncs.logModeIsOn()
  450. hack.functions.multSpdEnable()
  451. } else {
  452. hack.functions.godModeDisable()
  453. hack.logFuncs.logModeIsOn()
  454. hack.functions.multSpdDisable()
  455. }
  456. break
  457. case 36:
  458. hack.functions.tpSpawn()
  459. break
  460. case 35:
  461. hack.functions.tpDoor()
  462. break
  463. case 120:
  464. if (!hack.vars.MMGIsOn) {
  465. hack.functions.MMGEnable()
  466. hack.logFuncs.logMMGIsOn()
  467. } else {
  468. hack.functions.MMGDisable()
  469. hack.logFuncs.logMMGIsOn()
  470. }
  471. break
  472. case 192:
  473. case 190:
  474. if (hack.vars.modeIsOn) {
  475. hack.suppFuncs.setMult()
  476. hack.logFuncs.logSpd()
  477. }
  478. break
  479. case 45:
  480. case 96:
  481. hack.functions.setTpToOther(hack.suppFuncs.getIndexByName(prompt('Введите корректный никнейм. Чтобы выйти из интервала нажмите Esc.')))
  482. break
  483. case 115:
  484. if (!hack.vars.immIsOn) {
  485. hack.functions.immEnable()
  486. hack.logFuncs.logImmIsOn()
  487. } else {
  488. hack.functions.immDisable()
  489. hack.logFuncs.logImmIsOn()
  490. }
  491. break
  492. }
  493. }
  494.  
  495. function isGrounded() {
  496. const meX = hack.getters.me.getX()
  497. const meY = hack.getters.me.getY()
  498. const ray = hack.getters.ray
  499. const physics = hack.getters.physics
  500. const gpPWorld = hack.getters.gp.pWorld
  501. const rayResult = hack.getters.me.ray.result
  502. const rayHitPoint = (hack.getters.ray.hitPoint = [Infinity, Infinity])
  503.  
  504. const verticalOffset = 50
  505. const checkYPosition = meY + 45
  506.  
  507. for (let i = 0; i < 121; i++) {
  508. const o = meX - 15 + i * (30 / 120)
  509. const s = checkYPosition
  510. const u = s + verticalOffset
  511.  
  512. ray.from = [physics.xAxis(o, 0), physics.yAxis(s, 0)]
  513. ray.to = [physics.xAxis(o, 0), physics.yAxis(u, 0)]
  514.  
  515. ray.update()
  516. rayResult.reset()
  517.  
  518. if (gpPWorld.raycast(rayResult, ray)) {
  519. rayResult.getHitPoint(rayHitPoint, ray)
  520. const hitDistance = rayResult.getHitDistance(ray)
  521.  
  522. if (rayResult.shape.ref.getCollision() && hitDistance < 0.1) {
  523. return true
  524. }
  525. }
  526. }
  527.  
  528. return false
  529. }
  530.  
  531. function newMovement() {
  532. hack.getters.client.loopFunctions[2].fun = function() {
  533. const currentTime = Date.now()
  534. const dashCooldown = 250
  535. const dashDistance = 2.5
  536. const dashSpeed = 25
  537. const grounded = isGrounded()
  538.  
  539. if (grounded) {
  540. hack.playerMoveData.airDashAvailable = true
  541. }
  542.  
  543. if (hack.getters.mode.moveLeft) {
  544. hack.playerMoveData.lastHorizontalDirection = -1
  545. } else if (hack.getters.mode.moveRight) {
  546. hack.playerMoveData.lastHorizontalDirection = 1
  547. }
  548.  
  549. if (
  550. hack.keyBindings.isCPressed &&
  551. hack.getters.mode.moveDown &&
  552. currentTime - hack.playerMoveData.lastDashTime >= dashCooldown &&
  553. !hack.playerMoveData.isDashingDown &&
  554. (grounded || (!grounded && hack.playerMoveData.airDashAvailable))
  555. ) {
  556. hack.playerMoveData.lastDashTime = currentTime
  557. hack.playerMoveData.isDashingDown = true
  558. hack.playerMoveData.dashDuration = (dashDistance / dashSpeed) * 1000
  559. hack.playerMoveData.dashEndTime = currentTime + hack.playerMoveData.dashDuration
  560. if (!grounded) {
  561. hack.playerMoveData.airDashAvailable = false
  562. }
  563. }
  564.  
  565. if (
  566. hack.keyBindings.isCPressed &&
  567. hack.getters.mode.moveUp &&
  568. currentTime - hack.playerMoveData.lastDashTime >= dashCooldown &&
  569. !hack.playerMoveData.isDashingUp &&
  570. (grounded || (!grounded && hack.playerMoveData.airDashAvailable))
  571. ) {
  572. hack.playerMoveData.lastDashTime = currentTime
  573. hack.playerMoveData.isDashingUp = true
  574. hack.playerMoveData.dashDuration = (dashDistance / dashSpeed) * 1000
  575. hack.playerMoveData.dashEndTime = currentTime + hack.playerMoveData.dashDuration
  576. if (!grounded) {
  577. hack.playerMoveData.airDashAvailable = false
  578. }
  579. }
  580.  
  581. if (
  582. hack.keyBindings.isCPressed &&
  583. currentTime - hack.playerMoveData.lastDashTime >= dashCooldown &&
  584. !hack.playerMoveData.isDashing &&
  585. (grounded || (!grounded && hack.playerMoveData.airDashAvailable))
  586. ) {
  587. hack.playerMoveData.lastDashTime = currentTime
  588. hack.playerMoveData.isDashing = true
  589. hack.playerMoveData.dashVelocity = dashSpeed * hack.playerMoveData.lastHorizontalDirection
  590. hack.playerMoveData.dashDuration = (dashDistance / dashSpeed) * 1000
  591. hack.playerMoveData.dashEndTime = currentTime + hack.playerMoveData.dashDuration
  592. if (!grounded) {
  593. hack.playerMoveData.airDashAvailable = false
  594. }
  595. }
  596.  
  597. if (hack.playerMoveData.isDashingDown) {
  598. hack.getters.mode.player.gpData.p.velocity[1] = -dashSpeed
  599. hack.getters.mode.player.gpData.p.velocity[0] = 0
  600. hack.getters.me.p.collisionResponse = false
  601. if (currentTime >= hack.playerMoveData.dashEndTime) {
  602. hack.playerMoveData.isDashingDown = false
  603. hack.getters.mode.player.gpData.p.velocity[1] = 0
  604. if (!hack.vars.modeIsOn) {
  605. hack.getters.me.p.collisionResponse = true
  606. }
  607. }
  608. return
  609. }
  610.  
  611. if (hack.playerMoveData.isDashingUp) {
  612. hack.getters.mode.player.gpData.p.velocity[1] = dashSpeed
  613. hack.getters.mode.player.gpData.p.velocity[0] = 0
  614. hack.getters.me.p.collisionResponse = false
  615. if (currentTime >= hack.playerMoveData.dashEndTime) {
  616. hack.playerMoveData.isDashingUp = false
  617. hack.getters.mode.player.gpData.p.velocity[1] = 0
  618. if (!hack.vars.modeIsOn) {
  619. hack.getters.me.p.collisionResponse = true
  620. }
  621. }
  622. return
  623. }
  624.  
  625. if (hack.playerMoveData.isDashing) {
  626. hack.getters.mode.player.gpData.p.velocity[0] = hack.playerMoveData.dashVelocity
  627. hack.getters.mode.player.gpData.p.velocity[1] = 0
  628. hack.getters.me.p.collisionResponse = false
  629. if (currentTime >= hack.playerMoveData.dashEndTime) {
  630. hack.playerMoveData.isDashing = false
  631. hack.getters.mode.player.gpData.p.velocity[0] = 0
  632. if (!hack.vars.modeIsOn) {
  633. hack.getters.me.p.collisionResponse = true
  634. }
  635. }
  636. return
  637. } else {
  638. if (hack.getters.mode.moveRight) {
  639. hack.getters.mode.player.gpData.p.velocity[0] = hack.vars.lrSpd * hack.vars.mult
  640. } else if (hack.getters.mode.moveLeft) {
  641. hack.getters.mode.player.gpData.p.velocity[0] = -hack.vars.lrSpd * hack.vars.mult
  642. } else {
  643. hack.getters.mode.player.gpData.p.velocity[0] = 0
  644. }
  645. }
  646.  
  647. if (grounded) {
  648. hack.playerMoveData.isDoubleJumpAllowed = true
  649. if (hack.keyBindings.isZPressed) {
  650. hack.keyBindings.isZPressed = false
  651. hack.getters.velocity[1] = 8*(hack.getters.me.p.gravityScale)
  652. }
  653. } else if (hack.playerMoveData.isDoubleJumpAllowed && hack.keyBindings.isZPressed) {
  654. hack.keyBindings.isZPressed = false
  655. hack.getters.velocity[1] = 8*(hack.getters.me.p.gravityScale)
  656. hack.playerMoveData.isDoubleJumpAllowed = false
  657. }
  658.  
  659. if (hack.vars.ghost1 || hack.vars.ghost2) {
  660. if (hack.getters.mode.moveUp) {
  661. hack.getters.velocity[1] = hack.vars.udSpd * hack.vars.mult
  662. }
  663. if (hack.getters.mode.moveDown) {
  664. hack.getters.velocity[1] = -hack.vars.udSpd * hack.vars.mult
  665. }
  666. if (!hack.getters.mode.moveUp && !hack.getters.mode.moveDown) {
  667. hack.getters.velocity[1] = 0
  668. }
  669. }
  670. }
  671. hack.playerMoveData.newMovementIsOn = true}
  672.  
  673. function oldMovement() {
  674. hack.getters.client.loopFunctions[2].fun = function() {
  675. const grounded = isGrounded()
  676.  
  677. if (hack.getters.mode.moveRight) {
  678. hack.getters.mode.player.gpData.p.velocity[0] = hack.vars.lrSpd * hack.vars.mult
  679. } else if (hack.getters.mode.moveLeft) {
  680. hack.getters.mode.player.gpData.p.velocity[0] = -hack.vars.lrSpd * hack.vars.mult
  681. } else {
  682. hack.getters.mode.player.gpData.p.velocity[0] = 0
  683. }
  684. if (grounded) {
  685. if (hack.getters.mode.moveUp) {
  686. hack.getters.velocity[1] = 8
  687. }
  688. }
  689. if (hack.vars.ghost1 || hack.vars.ghost2) {
  690. if (hack.getters.mode.moveUp) {
  691. hack.getters.velocity[1] = hack.vars.udSpd * hack.vars.mult
  692. }
  693. if (hack.getters.mode.moveDown) {
  694. hack.getters.velocity[1] = -hack.vars.udSpd * hack.vars.mult
  695. }
  696. if (!hack.getters.mode.moveUp && !hack.getters.mode.moveDown) {
  697. hack.getters.velocity[1] = 0
  698. }
  699. }
  700. }
  701. hack.playerMoveData.newMovementIsOn = false}
  702. }
  703.  
  704. new Promise((resolve, reject) => {
  705. Function.prototype.call = function (...args) {
  706. if (args[2]?.exports) {
  707. temp1 = args[6]
  708. Function.prototype.call = _call
  709. console.log(temp1)
  710. resolve(temp1)
  711. }
  712. return _call.apply(this, args)
  713. };
  714. }).then((result) => {
  715. if (Object.keys(result).length > 0) {
  716. activateMain(result)
  717. } else {
  718. console.log("temp1 is empty")
  719. }
  720. }).catch((error) => {
  721. console.error("An error occurred:", error)
  722. })