// ==UserScript==
// @name 1st-cheat-FOR-ALL-MODES
// @namespace http://tampermonkey.net/
// @version 1.13.4
// @description Cheat for brofist.io
// @author CiNoP
// @match http://brofist.io/
// @match http://brofist.io/modes/twoPlayer/c/index.html
// @match http://brofist.io/modes/hideAndSeek/c/index.html
// @match http://brofist.io/modes/sandbox/c/index.html
// @icon https://www.google.com/s2/favicons?sz=64&domain=brofist.io
// @grant none
// @license GPL-3.0-only
// ==/UserScript==
/* jshint esversion: 11 */
/* jshint asi: true */
document.body.insertAdjacentHTML("beforebegin",
`<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>`
);
document.getElementById('infoPanelBtn').addEventListener('click', () => {
const panel = document.getElementById('cheatInfoPanel')
panel.style.display = (panel.style.display === 'none') ? 'block' : 'none';
})
document.body.insertAdjacentHTML("beforebegin",
`<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;">
${getCheatInfoText()}
</div>`
)
function getCheatInfoText() {
if (window.location.href === 'http://brofist.io/') {
return "Зайдите в любой режим";
} else if (window.location.href === 'http://brofist.io/modes/twoPlayer/c/index.html') {
return `
<b>Функционал чита:</b><br>
английская <b>C</b> - рывок (во все стороны)<br>
англ. <b>Z</b> - прыжок с возможностью второго прыжка<br>
<b>F2</b> - Режим бога<br>
<b>ё</b> или <b>\`</b> - Изменение скорости в режиме бога<br>
<b>F4</b> - Невосприимчивость к яду<br>
<b>F9</b> - Невосприимчивость к смерти (по умолчанию вкл.)<br>
<b>Home</b>/<b>End</b> - тп к спавну/двери<br>
Зажатие англ. <b>S</b> - Увеличение массы в 3 раза<br>
<b>Insert</b> - Тп к игроку<br><br>
<b>А так же:</b><br>
Информация об игроке, скриптовых переменных и т.п. в левой верхней панели<br>
Переключение между новым и старым передвижением в левой нижней панели<br>
Нажмите <b>Esc</b> чтобы скрыть новые панели<br>
`;
} else {
return `
<b>Функционал чита:</b><br>
английская <b>C</b> - рывок (во все стороны)<br>
англ. <b>Z</b> - прыжок с возможностью второго прыжка<br>
<b>F2</b> - Режим бога<br>
<b>ё</b> или <b>\`</b> - Изменение скорости в режиме бога<br>
Зажатие англ. <b>S</b> - Увеличение массы в 3 раза<br><br>
<b>А так же:</b><br>
Информация об игроке, скриптовых переменных и т.п. в левой верхней панели<br>
Переключение между новым и старым передвижением в левой нижней панели<br>
Нажмите <b>Esc</b> чтобы скрыть новые панели<br>
`
}
}
function sandboxHack() {
function activateMain(temp1) {
const hack = {
keyBindings: {
isCPressed: false,
cTimer: null,
isZPressed: false
},
playerMoveData: {
lastHorizontalDirection: 1,
isDashingDown: false,
isDashingUp: false,
lastDashTime: 0,
dashDuration: 100,
dashEndTime: 0,
isDoubleJumpAllowed: false,
airDashAvailable: true,
newMovementIsOn: true,
},
bindKeys: function () {
document.addEventListener('keydown', function (event) {
if (event.key === 'Escape') {
const panel = document.getElementById('someData')
const panel1 = document.getElementById('controlPanel')
if (panel.style.display === 'none') {
panel.style.display = 'inherit'
} else {
panel.style.display = 'none'
}
if (panel1.style.display === 'none') {
panel1.style.display = 'inherit'
} else {
panel1.style.display = 'none'
}
}
if (event.key.toLowerCase() === 's' && event.repeat) {
if (!hack.vars.modeIsOn) {
hack.getters.me.p.mass = 3
}
}
if (event.key.toLowerCase() === 'z' && !event.repeat) {
hack.keyBindings.isZPressed = true
} else if (event.repeat) {
hack.keyBindings.isZPressed = false
}
if (event.key.toLowerCase() === 'c') {
hack.keyBindings.isCPressed = true
if (!hack.keyBindings.cTimer) {
hack.keyBindings.cTimer = setTimeout(() => {
hack.keyBindings.isCPressed = false
hack.keyBindings.cTimer = null
}, 250)
}
}
})
document.addEventListener('keyup', function (event) {
if (event.key.toLowerCase() === 's') {
if (!hack.vars.modeIsOn) {
hack.getters.me.p.mass = 1
}
}
if (event.key.toLowerCase() === 'z') {
hack.keyBindings.isZPressed = false
}
if (event.key.toLowerCase() === 'c') {
hack.keyBindings.isCPressed = false
if (hack.keyBindings.cTimer) {
clearTimeout(hack.keyBindings.cTimer)
hack.keyBindings.cTimer = null
}
}
})
},
getters: {
get client() { return temp1[1].exports },
get gf() { return temp1[5].exports },
get gp() { return temp1[6].exports },
get graphics() { return temp1[7].exports },
get mode() { return temp1[11].exports },
get envirData() { return temp1[16].exports },
get network() { return temp1[29].exports },
get physics() { return temp1[325].exports },
get ray() { return this.mode.player.gpData.ray },
get velocity() { return this.mode.player.gpData.p.velocity },
get otherPlayers() { return this.mode.otherPlayers },
ghost: false,
get me() { return hack.getters.mode.player.gpData },
get ray() { return hack.getters.me.ray },
get velocity() { return hack.getters.me.p.velocity },
get otherPlayers() { return hack.getters.mode.otherPlayers }
},
vars: {
get isGround() { return isGrounded() },
mult: 1,
lrSpd: 3,
udSpd: 3,
'POSITION INFO ': '-----------------------',
get currentPosX() { return Math.round(hack.getters.me.getX() * 100) / 100 },
get currentPosY() { return Math.round(hack.getters.me.getY() * 100) / 100 },
'SPEED INFO ': '----------------------------',
get totalSpd() { return (((this.lrSpd + this.udSpd) / 2) * this.mult) },
get currentSpdX() { return Math.round(hack.getters.me.p.velocity[0] * 100) / 100 },
get currentSpdY() { return Math.round(hack.getters.me.p.velocity[1] * 100) / 100 },
'SCRIPT VALUES ': '----------------------',
multSpdIsOn: false,
modeIsOn: false,
ghost1: false,
'MOVEMENT VALUES ': '---------------'
},
suppFuncs: {
getMult: () => {
if (hack.vars.mult < 3) {
return 1
} else if (hack.vars.mult < 4) {
return 2
}
},
setMult: function (e) {
if (e != undefined) {
return (hack.vars.lrSpd = hack.vars.udSpd = e)
}
if (hack.suppFuncs.getMult() === 1) {
hack.vars.mult++
} else if (hack.suppFuncs.getMult() === 2) {
hack.vars.mult += 2
} else {
hack.vars.mult = 1
}
},
getIndexByName: function (playerName) {
const index = hack.getters.otherPlayers.findIndex(player => player?.myName === playerName)
return index === -1 ? false : index
}
},
functions: {
godModeEnable: () => {
hack.vars.ghost1 = true
hack.getters.me.p.collisionResponse = false
hack.getters.me.p.mass = 0
hack.vars.modeIsOn = true
hack.getters.velocity[0] = 0
hack.getters.velocity[1] = 0
},
godModeDisable: () => {
hack.vars.ghost1 = false
hack.getters.me.p.collisionResponse = true
hack.getters.me.p.mass = 1
hack.vars.modeIsOn = false
hack.getters.velocity[0] = 0
hack.getters.velocity[1] = 0
},
multSpdEnable: () => {
hack.vars.lrSpd *= hack.vars.mult
hack.vars.udSpd *= hack.vars.mult
hack.vars.multSpdIsOn = true
},
multSpdDisable: () => {
hack.vars.lrSpd /= hack.vars.mult
hack.vars.udSpd /= hack.vars.mult
hack.vars.multSpdIsOn = false
}
},
logFuncs: {
logModeIsOn: () => {
console.log('modeIsOn:', hack.vars.modeIsOn)
},
logSpd: () => {
console.log('speed:', ((hack.vars.lrSpd + hack.vars.udSpd) / 2) * hack.vars.mult)
}
}
}
document.body.insertAdjacentHTML("beforebegin", `
<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>
`)
const updateData = () => {
const o = []
for (let i in hack.vars) {
o.push(`${i}: ${hack.vars[i]}`)
}
for (let i in hack.playerMoveData) {
o.push(`${i}: ${hack.playerMoveData[i]}`)
}
document.getElementById("someData").innerHTML = o.join('<br>')
}
document.body.insertAdjacentHTML("beforebegin", `
<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;">
<div>
<span>new movement: </span>
<button id="newMoveBtn" style="background: rgba(255, 255, 255, 0.7); color: black;">${hack.playerMoveData.newMovementIsOn}</button>
</div>
</div>
`)
const updateButtonStates = () => {
document.getElementById("newMoveBtn").innerText = hack.playerMoveData.newMovementIsOn
}
document.getElementById("newMoveBtn").addEventListener("click", () => {
if (!hack.playerMoveData.newMovementIsOn) {
newMovement()
} else {
oldMovement()
}
updateButtonStates()
})
setInterval(updateData, 100 / 6)
updateButtonStates()
setInterval(updateButtonStates, 100 / 6)
hack.bindKeys()
let scrActivate = function () {
hack.getters.client.loopFunctions[2].timeOut = 100 / 6
hack.getters.client.loopFunctions[3].timeOut = 0
oldMovement()
Object.defineProperty(hack.vars, 'mult', { enumerable: false })
Object.defineProperty(hack.vars, 'lrSpd', { enumerable: false })
Object.defineProperty(hack.vars, 'udSpd', { enumerable: false })
Object.defineProperty(hack.vars, 'multSpdIsOn', { enumerable: false })
Object.defineProperty(hack.vars, 'ghost1', { enumerable: false })
Object.defineProperty(hack.playerMoveData, 'lastDashTime', { enumerable: false })
Object.defineProperty(hack.playerMoveData, 'lastHorizontalDirection', { enumerable: false })
Object.defineProperty(hack.playerMoveData, 'lastDashTime', { enumerable: false })
Object.defineProperty(hack.playerMoveData, 'dashDuration', { enumerable: false })
Object.defineProperty(hack.playerMoveData, 'dashEndTime', { enumerable: false })
Object.defineProperty(hack.playerMoveData, 'newMovementIsOn', { enumerable: false })
}
hack.getters.client.findUntilFound = function (e, t, n) {
hack.getters.network.gsip = e;
hack.getters.network.gsrn = t;
hack.getters.network.getSID?.((sid) => {
hack.getters.network.sid = sid;
hack.getters.network.connectToGs?.(hack.getters.network.gsip, () => {
console.log("connected to gs");
hack.getters.client.verifyIsHuman?.(() => {
hack.getters.network.registerSidOnGs?.((verifyStatus) => {
console.log("verified on gs server", verifyStatus);
if (verifyStatus === "") {
alert("You are already playing the game in another browser tab.");
location.reload();
n(2);
} else {
hack.getters.network.joinRoom?.(hack.getters.network.gsrn, (joinStatus) => {
if (joinStatus === 1) {
hack.getters.client.sendPlayingInfo?.(hack.getters.client.roomId, () => {
hack.getters.client.onReady?.();
n(1);
scrActivate()
});
} else {
console.log("else");
hack.getters.network.gsSockehack?.getters.client.disconnect?.();
do {
hack.getters.client.rIndex++;
const currentDataCenter = hack.getters.network.dataCenters?.[hack.getters.client.dcIndex];
if (!currentDataCenter?.[hack.getters.client.rIndex]) {
hack.getters.client.dcIndex++;
hack.getters.client.rIndex = 0;
if (!hack.getters.network.dataCenters?.[hack.getters.client.dcIndex]) {
alert("It seems all servers are full. Please refresh your page and try again.");
location.reload();
return;
}
}
} while (hack.getters.network.dataCenters?.[hack.getters.client.dcIndex]?.[hack.getters.client.rIndex]?.[2] !== hack.getters.client.modeInfo.mp);
const newGsip = hack.getters.network.dataCenters?.[hack.getters.client.dcIndex]?.[hack.getters.client.rIndex]?.[1];
const newGsrn = hack.getters.network.dataCenters?.[hack.getters.client.dcIndex]?.[hack.getters.client.rIndex]?.[3];
hack.getters.client.roomId = hack.getters.network.dataCenters?.[hack.getters.client.dcIndex]?.[hack.getters.client.rIndex]?.[4];
hack.getters.client.findUntilFound(newGsip, newGsrn, n);
}
});
}
});
});
});
});
};
document.body.onkeydown = (event) => {
const keyCode = event.keyCode
switch (keyCode) {
case 17:
hack.getters.mode.makeMeGhost()
break
case 113:
if (!hack.vars.modeIsOn) {
hack.functions.godModeEnable()
hack.logFuncs.logModeIsOn()
hack.functions.multSpdEnable()
} else {
hack.functions.godModeDisable()
hack.logFuncs.logModeIsOn()
hack.functions.multSpdDisable()
}
break
case 192:
case 190:
if (hack.vars.modeIsOn) {
hack.suppFuncs.setMult()
hack.logFuncs.logSpd()
}
break
}
}
function isGrounded() {
const meX = hack.getters.me.getX()
const meY = hack.getters.me.getY()
const ray = hack.getters.ray
const physics = hack.getters.physics
const gpPWorld = hack.getters.gp.pWorld
const rayResult = hack.getters.me.ray.result
const rayHitPoint = (hack.getters.ray.hitPoint = [Infinity, Infinity])
const verticalOffset = 50
const checkYPosition = meY + 45
for (let i = 0; i < 121; i++) {
const o = meX - 15 + i * (30 / 120)
const s = checkYPosition
const u = s + verticalOffset
ray.from = [physics.xAxis(o, 0), physics.yAxis(s, 0)]
ray.to = [physics.xAxis(o, 0), physics.yAxis(u, 0)]
ray.update()
rayResult.reset()
if (gpPWorld.raycast(rayResult, ray)) {
rayResult.getHitPoint(rayHitPoint, ray)
const hitDistance = rayResult.getHitDistance(ray)
if (rayResult.shape.ref.getCollision() && hitDistance < 0.1) {
return true
}
}
}
return false
}
function newMovement() {
hack.getters.client.loopFunctions[2].fun = function () {
const currentTime = Date.now()
const dashCooldown = 250
const dashDistance = 2.5
const dashSpeed = 25
const grounded = isGrounded()
if (grounded) {
hack.playerMoveData.airDashAvailable = true
}
if (hack.getters.mode.moveLeft) {
hack.playerMoveData.lastHorizontalDirection = -1
} else if (hack.getters.mode.moveRight) {
hack.playerMoveData.lastHorizontalDirection = 1
}
if (
hack.keyBindings.isCPressed &&
hack.getters.mode.moveDown &&
currentTime - hack.playerMoveData.lastDashTime >= dashCooldown &&
!hack.playerMoveData.isDashingDown &&
(grounded || (!grounded && hack.playerMoveData.airDashAvailable))
) {
hack.playerMoveData.lastDashTime = currentTime
hack.playerMoveData.isDashingDown = true
hack.playerMoveData.dashDuration = (dashDistance / dashSpeed) * 1000
hack.playerMoveData.dashEndTime = currentTime + hack.playerMoveData.dashDuration
if (!grounded) {
hack.playerMoveData.airDashAvailable = false
}
}
if (
hack.keyBindings.isCPressed &&
hack.getters.mode.moveUp &&
currentTime - hack.playerMoveData.lastDashTime >= dashCooldown &&
!hack.playerMoveData.isDashingUp &&
(grounded || (!grounded && hack.playerMoveData.airDashAvailable))
) {
hack.playerMoveData.lastDashTime = currentTime
hack.playerMoveData.isDashingUp = true
hack.playerMoveData.dashDuration = (dashDistance / dashSpeed) * 1000
hack.playerMoveData.dashEndTime = currentTime + hack.playerMoveData.dashDuration
if (!grounded) {
hack.playerMoveData.airDashAvailable = false
}
}
if (
hack.keyBindings.isCPressed &&
currentTime - hack.playerMoveData.lastDashTime >= dashCooldown &&
!hack.playerMoveData.isDashing &&
(grounded || (!grounded && hack.playerMoveData.airDashAvailable))
) {
hack.playerMoveData.lastDashTime = currentTime
hack.playerMoveData.isDashing = true
hack.playerMoveData.dashVelocity = dashSpeed * hack.playerMoveData.lastHorizontalDirection
hack.playerMoveData.dashDuration = (dashDistance / dashSpeed) * 1000
hack.playerMoveData.dashEndTime = currentTime + hack.playerMoveData.dashDuration
if (!grounded) {
hack.playerMoveData.airDashAvailable = false
}
}
if (hack.playerMoveData.isDashingDown) {
hack.getters.mode.player.gpData.p.velocity[1] = -dashSpeed
hack.getters.mode.player.gpData.p.velocity[0] = 0
hack.getters.me.p.collisionResponse = false
if (currentTime >= hack.playerMoveData.dashEndTime) {
hack.playerMoveData.isDashingDown = false
hack.getters.mode.player.gpData.p.velocity[1] = 0
if (!hack.vars.modeIsOn) {
hack.getters.me.p.collisionResponse = true
}
}
return
}
if (hack.playerMoveData.isDashingUp) {
hack.getters.mode.player.gpData.p.velocity[1] = dashSpeed
hack.getters.mode.player.gpData.p.velocity[0] = 0
hack.getters.me.p.collisionResponse = false
if (currentTime >= hack.playerMoveData.dashEndTime) {
hack.playerMoveData.isDashingUp = false
hack.getters.mode.player.gpData.p.velocity[1] = 0
if (!hack.vars.modeIsOn) {
hack.getters.me.p.collisionResponse = true
}
}
return
}
if (hack.playerMoveData.isDashing) {
hack.getters.mode.player.gpData.p.velocity[0] = hack.playerMoveData.dashVelocity
hack.getters.mode.player.gpData.p.velocity[1] = 0
hack.getters.me.p.collisionResponse = false
if (currentTime >= hack.playerMoveData.dashEndTime) {
hack.playerMoveData.isDashing = false
hack.getters.mode.player.gpData.p.velocity[0] = 0
if (!hack.vars.modeIsOn) {
hack.getters.me.p.collisionResponse = true
}
}
return
} else {
if (hack.getters.mode.moveRight) {
hack.getters.mode.player.gpData.p.velocity[0] = hack.vars.lrSpd * hack.vars.mult
} else if (hack.getters.mode.moveLeft) {
hack.getters.mode.player.gpData.p.velocity[0] = -hack.vars.lrSpd * hack.vars.mult
} else {
hack.getters.mode.player.gpData.p.velocity[0] = 0
}
}
if (grounded) {
hack.playerMoveData.isDoubleJumpAllowed = true
if (hack.keyBindings.isZPressed) {
hack.keyBindings.isZPressed = false
hack.getters.velocity[1] = 8 * (hack.getters.me.p.gravityScale)
}
} else if (hack.playerMoveData.isDoubleJumpAllowed && hack.keyBindings.isZPressed) {
hack.keyBindings.isZPressed = false
hack.getters.velocity[1] = 8 * (hack.getters.me.p.gravityScale)
hack.playerMoveData.isDoubleJumpAllowed = false
}
if (hack.vars.ghost1) {
if (hack.getters.mode.moveUp) {
hack.getters.velocity[1] = hack.vars.udSpd * hack.vars.mult
}
if (hack.getters.mode.moveDown) {
hack.getters.velocity[1] = -hack.vars.udSpd * hack.vars.mult
}
if (!hack.getters.mode.moveUp && !hack.getters.mode.moveDown) {
hack.getters.velocity[1] = 0
}
}
}
hack.playerMoveData.newMovementIsOn = true
}
function oldMovement() {
hack.getters.client.loopFunctions[2].fun = function () {
const grounded = isGrounded()
if (hack.getters.mode.moveRight) {
hack.getters.mode.player.gpData.p.velocity[0] = hack.vars.lrSpd * hack.vars.mult
} else if (hack.getters.mode.moveLeft) {
hack.getters.mode.player.gpData.p.velocity[0] = -hack.vars.lrSpd * hack.vars.mult
} else {
hack.getters.mode.player.gpData.p.velocity[0] = 0
}
if (grounded) {
if (hack.getters.mode.moveUp) {
hack.getters.velocity[1] = 8
}
}
if (hack.vars.ghost1) {
if (hack.getters.mode.moveUp) {
hack.getters.velocity[1] = hack.vars.udSpd * hack.vars.mult
}
if (hack.getters.mode.moveDown) {
hack.getters.velocity[1] = -hack.vars.udSpd * hack.vars.mult
}
if (!hack.getters.mode.moveUp && !hack.getters.mode.moveDown) {
hack.getters.velocity[1] = 0
}
}
}
hack.playerMoveData.newMovementIsOn = false
}
}
let temp1 = {};
const _call = Function.prototype.call;
new Promise((resolve, reject) => {
Function.prototype.call = function (...args) {
if (args[2]?.exports) {
temp1 = args[6]
Function.prototype.call = _call
console.log(temp1)
resolve(temp1)
}
return _call.apply(this, args)
};
}).then((result) => {
if (Object.keys(result).length > 0) {
activateMain(result)
} else {
console.log("temp1 is empty")
}
}).catch((error) => {
console.error("An error occurred:", error)
})
}
function twoPlayerHack() {
function activateMain(temp1) {
const hack = {
keyBindings: {
isCPressed: false,
cTimer: null,
isZPressed: false
},
playerMoveData: {
lastHorizontalDirection: 1,
isDashingDown: false,
isDashingUp: false,
lastDashTime: 0,
dashDuration: 100,
dashEndTime: 0,
isDoubleJumpAllowed: false,
airDashAvailable: true,
newMovementIsOn: true,
division: 120,
},
bindKeys: function () {
document.addEventListener('keydown', function (event) {
if (event.key === 'Escape') {
const panel = document.getElementById('someData')
const panel1 = document.getElementById('controlPanel')
if (panel.style.display === 'none') {
panel.style.display = 'inherit'
} else {
panel.style.display = 'none'
}
if (panel1.style.display === 'none') {
panel1.style.display = 'inherit'
} else {
panel1.style.display = 'none'
}
}
if (event.key.toLowerCase() === 's' && event.repeat) {
if (!hack.vars.modeIsOn) {
hack.getters.me.p.mass = 3
}
}
if (event.key.toLowerCase() === 'z' && !event.repeat) {
hack.keyBindings.isZPressed = true
} else if (event.repeat) {
hack.keyBindings.isZPressed = false
}
if (event.key.toLowerCase() === 'c') {
hack.keyBindings.isCPressed = true
if (!hack.keyBindings.cTimer) {
hack.keyBindings.cTimer = setTimeout(() => {
hack.keyBindings.isCPressed = false
hack.keyBindings.cTimer = null
}, 250)
}
}
})
document.addEventListener('keyup', function (event) {
if (event.key.toLowerCase() === 's') {
if (!hack.vars.modeIsOn) {
hack.getters.me.p.mass = 1
}
}
if (event.key.toLowerCase() === 'z') {
hack.keyBindings.isZPressed = false
}
if (event.key.toLowerCase() === 'c') {
hack.keyBindings.isCPressed = false
if (hack.keyBindings.cTimer) {
clearTimeout(hack.keyBindings.cTimer)
hack.keyBindings.cTimer = null
}
}
})
},
getters: {
get client() { return temp1[1].exports },
get gf() { return temp1[5].exports },
get gp() { return temp1[6].exports },
get graphics() { return temp1[7].exports },
get mode() { return temp1[11].exports },
get envirData() { return temp1[15].exports },
get rGho() { return temp1[26].exports },
get modules_resultScreen() { return temp1[35].exports },
get network() { return temp1[36].exports },
get physics() { return temp1[332].exports },
get me() { return hack.getters.mode.player.gpData },
get ray() { return hack.getters.me.ray },
get velocity() { return hack.getters.me.p.velocity },
get otherPlayers() { return hack.getters.mode.otherPlayers },
},
vars: {
get isGround() {return isGrounded()},
mult: 1,
lrSpd: 3,
udSpd: 3,
'POSITION INFO ': '-----------------------',
get currentPosX() {return Math.round(hack.getters.me.getX()*100)/100},
get currentPosY() {return Math.round(hack.getters.me.getY()*100)/100},
pX: 0,
pY: 0,
'SPEED INFO ': '----------------------------',
get totalSpd() {return (((this.lrSpd + this.udSpd) / 2) * this.mult)},
get currentSpdX() {return Math.round(hack.getters.me.p.velocity[0]*100)/100},
get currentSpdY() {return Math.round(hack.getters.me.p.velocity[1]*100)/100},
'SCRIPT VALUES ': '----------------------',
multSpdIsOn: false,
modeIsOn: false,
immIsOn: false,
MMGIsOn: false,
interTpToOtherIsOn: false,
ghost1: false,
ghost2: false,
isPlayerDead: false,
tpSpawnCounter: 0,
'MOVEMENT VALUES ': '---------------',
},
suppFuncs: {/*
searchShapesById: function(b, a = temp1[6].exports.list) {
for (n = [], i = 0; i < a.length; i++) {
if (a[i]?.id == b) {
n.push(a[i])
}
} return n
},
getDistanceToShape: function(spawn = this.searchShapesById('spawn')[0], checkpoints = this.searchShapesById('checkpoint')) {
let distances = checkpoints.map((checkpoint, index) => {
const distance = Math.sqrt(
(spawn.getX() - checkpoint.getX()) ** 2 +
(spawn.getY() - checkpoint.getY()) ** 2
);
return { index, distance };
});
distances.sort((a, b) => a.distance - b.distance);
return distances.map(d => d.index);
},*/
getMult: () => {
if (hack.vars.mult < 3) {
return 1
} else if (hack.vars.mult < 4) {
return 2
}
},
setMult: function (e) {
if (e != undefined) {
hack.vars.lrSpd = hack.vars.udSpd = e
return
}
if (hack.suppFuncs.getMult() === 1) {
hack.vars.mult++
} else if (hack.suppFuncs.getMult() === 2) {
hack.vars.mult += 2
} else {
hack.vars.mult = 1
}
},
getIndexByName: function(playerName) {
const index = hack.getters.otherPlayers.findIndex(player => player?.myName === playerName)
return index === -1 ? false : index
}
},
functions: {/*
tpShape: function(e,o = 0) {
this.tp(e[o].getX(),e[o].getY())
},*/
prevPos: function () {
hack.vars.pX = temp1[11].exports.player.gpData.getX()
hack.vars.pY = temp1[11].exports.player.gpData.getY()
},
tpSpawn: function () {
if (hack.vars.tpSpawnCounter == 0) {
this.tp(hack.vars.pX,hack.vars.pY); hack.vars.tpSpawnCounter++
return
} else if (hack.vars.tpSpawnCounter == 1) {this.tp(
temp1[11].exports.spawn.refP.getX(),
temp1[11].exports.spawn.refP.getY()
)}; hack.vars.tpSpawnCounter = 0
},
tpDoor: function () {
this.prevPos()
hack.vars.tpSpawnCounter = 0
this.tp(
temp1[11].exports.exitGate.exitGateCounter.refP.getX(),
temp1[11].exports.exitGate.exitGateCounter.refP.getY()
)
},
tp: function (x,y) {
temp1[11].exports.player.gpData.setX(x)
temp1[11].exports.player.gpData.setY(y)
},
setTpToOther: function (playerIndex) {
if (!hack.vars.interTpToOtherIsOn && playerIndex !== false) {
this.interTpToOther = setInterval(() => {
hack.getters.me.p.position[0] = hack.getters.otherPlayers[playerIndex].gpData.p.position[0]
hack.getters.me.p.position[1] = hack.getters.otherPlayers[playerIndex].gpData.p.position[1]
}, 100 / 14.4)
hack.vars.interTpToOtherIsOn = true
} else if (playerIndex === false) {
try {
clearInterval(this.interTpToOther)
hack.vars.interTpToOtherIsOn = false
} catch {
console.log('не существующий интервал')
}
}
},
MMGEnable: function () {
hack.getters.mode.makeMeGhost = function () {
hack.getters.me.setAlpha(0.3)
hack.getters.me.p.shapes[0].sensor = true
hack.getters.me.p.gravityScale = 0
hack.getters.velocity[0] = 0
hack.getters.velocity[1] = 0
hack.getters.me.me = void 0
hack.vars.ghost2 = true
hack.vars.isPlayerDead = true
if (hack.vars.multSpdIsOn) { hack.functions.multSpdDisable() }
hack.getters.rGho.fire(hack.getters.network.gsSocket)
if (hack.getters.mode.md.mobile()) {hack.getters.mode.setupTouchButtons(true)}
}
hack.vars.MMGIsOn = true
},
MMGDisable: function () {
hack.getters.mode.makeMeGhost = () => { }
hack.vars.MMGIsOn = false
},
immEnable: () => {
hack.getters.me.me = void 0
hack.vars.immIsOn = true
},
immDisable: () => {
hack.getters.me.me = true
hack.vars.immIsOn = false
},
godModeEnable: () => {
hack.vars.ghost1 = true
hack.getters.me.p.collisionResponse = false
hack.getters.me.p.mass = 0
hack.vars.modeIsOn = true
hack.getters.velocity[0] = 0
hack.getters.velocity[1] = 0
},
godModeDisable: () => {
hack.vars.ghost1 = false
hack.getters.me.p.collisionResponse = true
hack.getters.me.p.mass = 1
hack.vars.modeIsOn = false
hack.getters.velocity[0] = 0
hack.getters.velocity[1] = 0
},
multSpdEnable: () => {
hack.vars.lrSpd *= hack.vars.mult
hack.vars.udSpd *= hack.vars.mult
hack.vars.multSpdIsOn = true
},
multSpdDisable: () => {
hack.vars.lrSpd /= hack.vars.mult
hack.vars.udSpd /= hack.vars.mult
hack.vars.multSpdIsOn = false
}
},
logFuncs: {
logModeIsOn: () => {
console.log('modeIsOn:', hack.vars.modeIsOn)
},
logImmIsOn: () => {
console.log('immIsOn:', hack.vars.immIsOn)
},
logSpd: () => {
console.log('speed:', ((hack.vars.lrSpd + hack.vars.udSpd) / 2) * hack.vars.mult)
},
logMMGIsOn: () => {
console.log('MMGIsOn:', hack.vars.MMGIsOn)
}
}
}
document.body.insertAdjacentHTML("beforebegin", `
<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>
`)
const updateData = () => {
const o = []
for (let i in hack.vars) {
o.push(`${i}: ${hack.vars[i]}`)
}
for (let i in hack.playerMoveData) {
o.push(`${i}: ${hack.playerMoveData[i]}`)
}
document.getElementById("someData").innerHTML = o.join('<br>')
}
setInterval(updateData, 100 / 6)
document.body.insertAdjacentHTML("beforebegin", `
<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;">
<div>
<span>new movement: </span>
<button id="newMoveBtn" style="background: rgba(255, 255, 255, 0.7); color: black;">${hack.playerMoveData.newMovementIsOn}</button>
</div>
<div>
<span>poison immunity: </span>
<button id="immBtn" style="background: rgba(255, 255, 255, 0.7); color: black;">${hack.vars.immIsOn}</button>
</div>
<div>
<span>death immunity: </span>
<button id="MMGBtn" style="background: rgba(255, 255, 255, 0.7); color: black;">${!hack.vars.MMGIsOn}</button>
</div>
</div>
`)
const updateButtonStates = () => {
document.getElementById("newMoveBtn").innerText = hack.playerMoveData.newMovementIsOn
document.getElementById("immBtn").innerText = hack.vars.immIsOn
document.getElementById("MMGBtn").innerText = !hack.vars.MMGIsOn
}
document.getElementById("newMoveBtn").addEventListener("click", () => {
if (!hack.playerMoveData.newMovementIsOn) {
newMovement()
} else {
oldMovement()
}
updateButtonStates()
})
document.getElementById("immBtn").addEventListener("click", () => {
if (hack.vars.immIsOn) {
hack.functions.immDisable()
} else {
hack.functions.immEnable()
}
updateButtonStates()
})
document.getElementById("MMGBtn").addEventListener("click", () => {
if (hack.vars.MMGIsOn) {
hack.functions.MMGDisable()
} else {
hack.functions.MMGEnable()
}
updateButtonStates()
})
updateButtonStates()
setInterval(updateButtonStates, 100 / 6)
hack.functions.MMGDisable()
let scrActivate = function() {
hack.getters.client.loopFunctions[2].timeOut = 100 / 6
newMovement()
Object.defineProperty(hack.vars, 'mult', { enumerable: false })
Object.defineProperty(hack.vars, 'lrSpd', { enumerable: false })
Object.defineProperty(hack.vars, 'udSpd', { enumerable: false })
Object.defineProperty(hack.vars, 'ghost2', { enumerable: false })
Object.defineProperty(hack.vars, 'pX', { enumerable: false })
Object.defineProperty(hack.vars, 'pY', { enumerable: false })
Object.defineProperty(hack.vars, 'tpSpawnCounter', { enumerable: false })
Object.defineProperty(hack.vars, 'multSpdIsOn', { enumerable: false })
Object.defineProperty(hack.vars, 'ghost1', { enumerable: false })
Object.defineProperty(hack.playerMoveData, 'lastDashTime', { enumerable: false })
Object.defineProperty(hack.playerMoveData, 'lastHorizontalDirection', { enumerable: false })
Object.defineProperty(hack.playerMoveData, 'lastDashTime', { enumerable: false })
Object.defineProperty(hack.playerMoveData, 'dashDuration', { enumerable: false })
Object.defineProperty(hack.playerMoveData, 'dashEndTime', { enumerable: false })
Object.defineProperty(hack.playerMoveData, 'newMovementIsOn', { enumerable: false })
Object.defineProperty(hack.playerMoveData, 'division', { enumerable: false })
document.getElementById('timer').style.background = 'rgb(0, 0, 0)'
document.getElementById('timer').style.color = 'rgb(255, 255, 255)'
document.getElementById('mapCredits').style.background = 'rgb(0, 0, 0)'
document.getElementById('mapCredits').style.color = 'rgb(255, 255, 255)'
document.getElementById('leaderboard').style.background = 'rgb(0, 0, 0)'
document.getElementById('timer').style.opacity = 0.7
document.getElementById('leaderboard').style.opacity = 0.7
document.getElementById('mapCredits').style.opacity = 0.7
}
hack.bindKeys()
hack.getters.mode.onChangeMap = function (e) {
try {
scrActivate()
scrActivate = null
} catch {}
clearInterval(hack.getters.mode.startTimeId)
clearTimeout(hack.getters.mode.smallStepTimeId)
hack.getters.modules_resultScreen.hideResultScreen()
hack.getters.gp.unload(hack.getters.gp)
hack.getters.gp.list = hack.getters.gp.load(e, hack.getters.gp)
hack.getters.mode.syncArr = []
hack.getters.mode.ghost = false
hack.getters.mode.tweenObjects = []
hack.getters.mode.defineBehaviours(hack.getters.gp.list, hack.getters.mode.syncArr, hack.getters.gp)
if (hack.getters.mode.md.mobile()) {
hack.getters.mode.setupTouchButtons(false)
}
hack.getters.mode.setMyBio()
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)
for (let n = 0; n < hack.getters.otherPlayers.length; n++) {
if (hack.getters.otherPlayers[n]) {
let t = hack.getters.otherPlayers[n].gpData.g.myIndex
hack.getters.otherPlayers[n].gpData = hack.getters.mode.createPlayer()
hack.getters.otherPlayers[n].gpData.g.myIndex = t
hack.getters.gp.gWorld.removeChild(hack.getters.otherPlayers[n].gpData.g)
hack.getters.gp.gWorld.mid.addChild(hack.getters.otherPlayers[n].gpData.g)
hack.getters.mode.setBio(
hack.getters.otherPlayers[n].gpData,
hack.getters.otherPlayers[n].myName,
hack.getters.otherPlayers[n].mySkin,
hack.getters.otherPlayers[n].whatBro,
hack.getters.otherPlayers[n].chatColor,
hack.getters.otherPlayers[n].teamColor
)
}
}
hack.getters.mode.firstTimeMapChange = hack.getters.mode.firstTimeMapChange || true
hack.getters.mode.smallStepTimeId = setTimeout(function () {
document.getElementById("startTime").style.display = "inherit"
document.getElementById("startTime").innerHTML = hack.getters.mode.startTime
hack.getters.client.runPhysics = false
hack.getters.mode.startTimeId = setInterval(function () {
hack.getters.mode.startTime++
document.getElementById("startTime").innerHTML = hack.getters.mode.startTime
if (hack.getters.mode.startTime == 3) {
hack.getters.mode.startTime = 0
hack.getters.client.runPhysics = true
clearInterval(hack.getters.mode.startTimeId)
document.getElementById("startTime").style.display = "none"
}
}, 1000)
}, 0)
hack.getters.me.me = true
if (hack.vars.modeIsOn) {
hack.functions.godModeEnable()
} else {
hack.functions.godModeDisable()
}
if (hack.vars.immIsOn) {
hack.functions.immEnable()
} else {
hack.functions.immDisable()
}
hack.vars.ghost2 = false
hack.vars.isPlayerDead = false
}
document.body.onkeydown = (event) => {
const keyCode = event.keyCode
switch (keyCode) {
case 17:
hack.getters.mode.makeMeGhost()
break
case 113:
if (!hack.vars.modeIsOn) {
hack.functions.godModeEnable()
hack.logFuncs.logModeIsOn()
hack.functions.multSpdEnable()
} else {
hack.functions.godModeDisable()
hack.logFuncs.logModeIsOn()
hack.functions.multSpdDisable()
}
break
case 36:
hack.functions.tpSpawn()
break
case 35:
hack.functions.tpDoor()
break
case 120:
if (!hack.vars.MMGIsOn) {
hack.functions.MMGEnable()
hack.logFuncs.logMMGIsOn()
} else {
hack.functions.MMGDisable()
hack.logFuncs.logMMGIsOn()
}
break
case 192:
case 190:
if (hack.vars.modeIsOn) {
hack.suppFuncs.setMult()
hack.logFuncs.logSpd()
}
break
case 45:
case 96:
hack.functions.setTpToOther(hack.suppFuncs.getIndexByName(prompt('Введите корректный никнейм. Чтобы выйти из интервала нажмите Esc.')))
break
case 115:
if (!hack.vars.immIsOn) {
hack.functions.immEnable()
hack.logFuncs.logImmIsOn()
} else {
hack.functions.immDisable()
hack.logFuncs.logImmIsOn()
}
break
}
}
function isGrounded() {
const meX = hack.getters.me.getX()
const meY = hack.getters.me.getY()
const ray = hack.getters.ray
const physics = hack.getters.physics
const gpPWorld = hack.getters.gp.pWorld
const rayResult = hack.getters.me.ray.result
const rayHitPoint = (hack.getters.ray.hitPoint = [Infinity, Infinity])
const division = hack.playerMoveData.division
const verticalOffset = 50
const checkYPosition = meY + 45
for (let i = 0; i < division+1; i++) {
const o = meX - 15 + i * (30 / division)
const s = checkYPosition
const u = s + verticalOffset
ray.from = [physics.xAxis(o, 0), physics.yAxis(s, 0)]
ray.to = [physics.xAxis(o, 0), physics.yAxis(u, 0)]
ray.update()
rayResult.reset()
if (gpPWorld.raycast(rayResult, ray)) {
rayResult.getHitPoint(rayHitPoint, ray)
const hitDistance = rayResult.getHitDistance(ray)
if (rayResult.shape.ref.getCollision() && hitDistance < 0.1) {
return true
}
}
}
return false
}
function newMovement() {
hack.playerMoveData.division = 120
hack.getters.client.loopFunctions[2].fun = function() {
const currentTime = Date.now()
const dashCooldown = 250
const dashDistance = 2.5
const dashSpeed = 25
const grounded = isGrounded()
if (grounded) {
hack.playerMoveData.airDashAvailable = true
}
if (hack.getters.mode.moveLeft) {
hack.playerMoveData.lastHorizontalDirection = -1
} else if (hack.getters.mode.moveRight) {
hack.playerMoveData.lastHorizontalDirection = 1
}
if (
hack.keyBindings.isCPressed &&
hack.getters.mode.moveDown &&
currentTime - hack.playerMoveData.lastDashTime >= dashCooldown &&
!hack.playerMoveData.isDashingDown &&
(grounded || (!grounded && hack.playerMoveData.airDashAvailable))
) {
hack.playerMoveData.lastDashTime = currentTime
hack.playerMoveData.isDashingDown = true
hack.playerMoveData.dashDuration = (dashDistance / dashSpeed) * 1000
hack.playerMoveData.dashEndTime = currentTime + hack.playerMoveData.dashDuration
if (!grounded) {
hack.playerMoveData.airDashAvailable = false
}
}
if (
hack.keyBindings.isCPressed &&
hack.getters.mode.moveUp &&
currentTime - hack.playerMoveData.lastDashTime >= dashCooldown &&
!hack.playerMoveData.isDashingUp &&
(grounded || (!grounded && hack.playerMoveData.airDashAvailable))
) {
hack.playerMoveData.lastDashTime = currentTime
hack.playerMoveData.isDashingUp = true
hack.playerMoveData.dashDuration = (dashDistance / dashSpeed) * 1000
hack.playerMoveData.dashEndTime = currentTime + hack.playerMoveData.dashDuration
if (!grounded) {
hack.playerMoveData.airDashAvailable = false
}
}
if (
hack.keyBindings.isCPressed &&
currentTime - hack.playerMoveData.lastDashTime >= dashCooldown &&
!hack.playerMoveData.isDashing &&
(grounded || (!grounded && hack.playerMoveData.airDashAvailable))
) {
hack.playerMoveData.lastDashTime = currentTime
hack.playerMoveData.isDashing = true
hack.playerMoveData.dashVelocity = dashSpeed * hack.playerMoveData.lastHorizontalDirection
hack.playerMoveData.dashDuration = (dashDistance / dashSpeed) * 1000
hack.playerMoveData.dashEndTime = currentTime + hack.playerMoveData.dashDuration
if (!grounded) {
hack.playerMoveData.airDashAvailable = false
}
}
if (hack.playerMoveData.isDashingDown) {
hack.getters.mode.player.gpData.p.velocity[1] = -dashSpeed
hack.getters.mode.player.gpData.p.velocity[0] = 0
hack.getters.me.p.collisionResponse = false
if (currentTime >= hack.playerMoveData.dashEndTime) {
hack.playerMoveData.isDashingDown = false
hack.getters.mode.player.gpData.p.velocity[1] = 0
if (!hack.vars.modeIsOn) {
hack.getters.me.p.collisionResponse = true
}
}
return
}
if (hack.playerMoveData.isDashingUp) {
hack.getters.mode.player.gpData.p.velocity[1] = dashSpeed
hack.getters.mode.player.gpData.p.velocity[0] = 0
hack.getters.me.p.collisionResponse = false
if (currentTime >= hack.playerMoveData.dashEndTime) {
hack.playerMoveData.isDashingUp = false
hack.getters.mode.player.gpData.p.velocity[1] = 0
if (!hack.vars.modeIsOn) {
hack.getters.me.p.collisionResponse = true
}
}
return
}
if (hack.playerMoveData.isDashing) {
hack.getters.mode.player.gpData.p.velocity[0] = hack.playerMoveData.dashVelocity
hack.getters.mode.player.gpData.p.velocity[1] = 0
hack.getters.me.p.collisionResponse = false
if (currentTime >= hack.playerMoveData.dashEndTime) {
hack.playerMoveData.isDashing = false
hack.getters.mode.player.gpData.p.velocity[0] = 0
if (!hack.vars.modeIsOn) {
hack.getters.me.p.collisionResponse = true
}
}
return
} else {
if (hack.getters.mode.moveRight) {
hack.getters.mode.player.gpData.p.velocity[0] = hack.vars.lrSpd * hack.vars.mult
} else if (hack.getters.mode.moveLeft) {
hack.getters.mode.player.gpData.p.velocity[0] = -hack.vars.lrSpd * hack.vars.mult
} else {
hack.getters.mode.player.gpData.p.velocity[0] = 0
}
}
if (grounded) {
hack.playerMoveData.isDoubleJumpAllowed = true
if (hack.keyBindings.isZPressed) {
hack.keyBindings.isZPressed = false
hack.getters.velocity[1] = 8*(hack.getters.me.p.gravityScale)
}
} else if (hack.playerMoveData.isDoubleJumpAllowed && hack.keyBindings.isZPressed) {
hack.keyBindings.isZPressed = false
hack.getters.velocity[1] = 8*(hack.getters.me.p.gravityScale)
hack.playerMoveData.isDoubleJumpAllowed = false
}
if (hack.vars.ghost1 || hack.vars.ghost2) {
if (hack.getters.mode.moveUp) {
hack.getters.velocity[1] = hack.vars.udSpd * hack.vars.mult
}
if (hack.getters.mode.moveDown) {
hack.getters.velocity[1] = -hack.vars.udSpd * hack.vars.mult
}
if (!hack.getters.mode.moveUp && !hack.getters.mode.moveDown) {
hack.getters.velocity[1] = 0
}
}
}
hack.playerMoveData.newMovementIsOn = true}
function oldMovement() {
hack.playerMoveData.division = 12
hack.getters.client.loopFunctions[2].fun = function() {
const grounded = isGrounded()
if (hack.getters.mode.moveRight) {
hack.getters.mode.player.gpData.p.velocity[0] = hack.vars.lrSpd * hack.vars.mult
} else if (hack.getters.mode.moveLeft) {
hack.getters.mode.player.gpData.p.velocity[0] = -hack.vars.lrSpd * hack.vars.mult
} else {
hack.getters.mode.player.gpData.p.velocity[0] = 0
}
if (grounded) {
if (hack.getters.mode.moveUp) {
hack.getters.velocity[1] = 8
}
}
if (hack.vars.ghost1 || hack.vars.ghost2) {
if (hack.getters.mode.moveUp) {
hack.getters.velocity[1] = hack.vars.udSpd * hack.vars.mult
}
if (hack.getters.mode.moveDown) {
hack.getters.velocity[1] = -hack.vars.udSpd * hack.vars.mult
}
if (!hack.getters.mode.moveUp && !hack.getters.mode.moveDown) {
hack.getters.velocity[1] = 0
}
}
}
hack.playerMoveData.newMovementIsOn = false}
}
let temp1 = {};
const _call = Function.prototype.call;
new Promise((resolve, reject) => {
Function.prototype.call = function (...args) {
if (args[2]?.exports) {
temp1 = args[6]
Function.prototype.call = _call
console.log(temp1)
resolve(temp1)
}
return _call.apply(this, args)
};
}).then((result) => {
if (Object.keys(result).length > 0) {
activateMain(result)
} else {
console.log("temp1 is empty")
}
}).catch((error) => {
console.error("An error occurred:", error)
})
}
function hideAndSeekHack() {
function activateMain(temp1) {
const hack = {
keyBindings: {
isCPressed: false,
cTimer: null,
isZPressed: false
},
playerMoveData: {
lastHorizontalDirection: 1,
isDashingDown: false,
isDashingUp: false,
lastDashTime: 0,
dashDuration: 100,
dashEndTime: 0,
isDoubleJumpAllowed: false,
airDashAvailable: true,
newMovementIsOn: true
},
bindKeys: function () {
document.addEventListener('keydown', function (event) {
if (event.key === 'Escape') {
const panel = document.getElementById('someData')
const panel1 = document.getElementById('controlPanel')
if (panel.style.display === 'none') {
panel.style.display = 'inherit'
} else {
panel.style.display = 'none'
}
if (panel1.style.display === 'none') {
panel1.style.display = 'inherit'
} else {
panel1.style.display = 'none'
}
}
if (event.key.toLowerCase() === 's' && event.repeat) {
if (!hack.vars.modeIsOn) {
hack.getters.me.p.mass = 3
}
}
if (event.key.toLowerCase() === 'z' && !event.repeat) {
hack.keyBindings.isZPressed = true
} else if (event.repeat) {
hack.keyBindings.isZPressed = false
}
if (event.key.toLowerCase() === 'c') {
hack.keyBindings.isCPressed = true
if (!hack.keyBindings.cTimer) {
hack.keyBindings.cTimer = setTimeout(() => {
hack.keyBindings.isCPressed = false
hack.keyBindings.cTimer = null
}, 250)
}
}
})
document.addEventListener('keyup', function (event) {
if (event.key.toLowerCase() === 's') {
if (!hack.vars.modeIsOn) {
hack.getters.me.p.mass = 1
}
}
if (event.key.toLowerCase() === 'z') {
hack.keyBindings.isZPressed = false
}
if (event.key.toLowerCase() === 'c') {
hack.keyBindings.isCPressed = false
if (hack.keyBindings.cTimer) {
clearTimeout(hack.keyBindings.cTimer)
hack.keyBindings.cTimer = null
}
}
})
},
getters: {
get client() { return temp1[1].exports },
get gf() { return temp1[5].exports },
get gp() { return temp1[6].exports },
get graphics() { return temp1[7].exports },
get mode() { return temp1[11].exports },
get envirData() { return temp1[16].exports },
get network() { return temp1[37].exports },
get physics() { return temp1[333].exports },
get ray() { return this.mode.player.gpData.ray },
get velocity() { return this.mode.player.gpData.p.velocity },
get otherPlayers() { return this.mode.otherPlayers },
ghost: false,
get me() { return hack.getters.mode.player.gpData },
get ray() { return hack.getters.me.ray },
get velocity() { return hack.getters.me.p.velocity },
get otherPlayers() { return hack.getters.mode.otherPlayers }
},
vars: {
get isGround() { return isGrounded() },
mult: 1,
lrSpd: 3,
udSpd: 3,
'POSITION INFO ': '-----------------------',
get currentPosX() { return Math.round(hack.getters.me.getX() * 100) / 100 },
get currentPosY() { return Math.round(hack.getters.me.getY() * 100) / 100 },
'SPEED INFO ': '----------------------------',
get totalSpd() { return (((this.lrSpd + this.udSpd) / 2) * this.mult) },
get currentSpdX() { return Math.round(hack.getters.me.p.velocity[0] * 100) / 100 },
get currentSpdY() { return Math.round(hack.getters.me.p.velocity[1] * 100) / 100 },
'SCRIPT VALUES ': '----------------------',
multSpdIsOn: false,
modeIsOn: false,
ghost1: false,
isPlayerDead: false,
'MOVEMENT VALUES ': '---------------'
},
suppFuncs: {
getMult: () => {
if (hack.vars.mult < 3) {
return 1
} else if (hack.vars.mult < 4) {
return 2
}
},
setMult: function (e) {
if (e != undefined) {
return (hack.vars.lrSpd = hack.vars.udSpd = e)
}
if (hack.suppFuncs.getMult() === 1) {
hack.vars.mult++
} else if (hack.suppFuncs.getMult() === 2) {
hack.vars.mult += 2
} else {
hack.vars.mult = 1
}
},
getIndexByName: function (playerName) {
const index = hack.getters.otherPlayers.findIndex(player => player?.myName === playerName)
return index === -1 ? false : index
}
},
functions: {
godModeEnable: () => {
hack.vars.ghost1 = true
hack.getters.me.p.collisionResponse = false
hack.getters.me.p.mass = 0
hack.vars.modeIsOn = true
hack.getters.velocity[0] = 0
hack.getters.velocity[1] = 0
},
godModeDisable: () => {
hack.vars.ghost1 = false
hack.getters.me.p.collisionResponse = true
hack.getters.me.p.mass = 1
hack.vars.modeIsOn = false
hack.getters.velocity[0] = 0
hack.getters.velocity[1] = 0
},
multSpdEnable: () => {
hack.vars.lrSpd *= hack.vars.mult
hack.vars.udSpd *= hack.vars.mult
hack.vars.multSpdIsOn = true
},
multSpdDisable: () => {
hack.vars.lrSpd /= hack.vars.mult
hack.vars.udSpd /= hack.vars.mult
hack.vars.multSpdIsOn = false
}
},
logFuncs: {
logModeIsOn: () => {
console.log('modeIsOn:', hack.vars.modeIsOn)
},
logSpd: () => {
console.log('speed:', ((hack.vars.lrSpd + hack.vars.udSpd) / 2) * hack.vars.mult)
}
}
}
document.body.insertAdjacentHTML("beforebegin", `
<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>
`)
const updateData = () => {
const o = []
for (let i in hack.vars) {
o.push(`${i}: ${hack.vars[i]}`)
}
for (let i in hack.playerMoveData) {
o.push(`${i}: ${hack.playerMoveData[i]}`)
}
document.getElementById("someData").innerHTML = o.join('<br>')
}
document.body.insertAdjacentHTML("beforebegin", `
<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;">
<div>
<span>new movement: </span>
<button id="newMoveBtn" style="background: rgba(255, 255, 255, 0.7); color: black;">${hack.playerMoveData.newMovementIsOn}</button>
</div>
</div>
`)
const updateButtonStates = () => {
document.getElementById("newMoveBtn").innerText = hack.playerMoveData.newMovementIsOn
}
document.getElementById("newMoveBtn").addEventListener("click", () => {
if (!hack.playerMoveData.newMovementIsOn) {
newMovement()
} else {
oldMovement()
}
updateButtonStates()
})
setInterval(updateData, 100 / 6)
updateButtonStates()
setInterval(updateButtonStates, 100 / 6)
hack.bindKeys()
let scrActivate = function () {
hack.getters.client.loopFunctions[2].timeOut = 100 / 6
hack.getters.client.loopFunctions[3].timeOut = 0
oldMovement()
Object.defineProperty(hack.vars, 'mult', { enumerable: false })
Object.defineProperty(hack.vars, 'lrSpd', { enumerable: false })
Object.defineProperty(hack.vars, 'udSpd', { enumerable: false })
Object.defineProperty(hack.vars, 'multSpdIsOn', { enumerable: false })
Object.defineProperty(hack.vars, 'ghost1', { enumerable: false })
Object.defineProperty(hack.playerMoveData, 'lastDashTime', { enumerable: false })
Object.defineProperty(hack.playerMoveData, 'lastHorizontalDirection', { enumerable: false })
Object.defineProperty(hack.playerMoveData, 'lastDashTime', { enumerable: false })
Object.defineProperty(hack.playerMoveData, 'dashDuration', { enumerable: false })
Object.defineProperty(hack.playerMoveData, 'dashEndTime', { enumerable: false })
Object.defineProperty(hack.playerMoveData, 'newMovementIsOn', { enumerable: false })
document.getElementById('timer').style.opacity = 0.7
document.getElementById('timer').style.background = 'rgb(0, 0, 0)'
document.getElementById('timer').style.color = 'rgb(255, 255, 255)'
document.getElementById('seekerDistance').style.opacity = 0.7
document.getElementById('seekerDistance').style.background = 'rgb(0, 0, 0)'
document.getElementById('seekerDistance').style.color = 'rgb(255, 255, 255)'
document.getElementById('hidersCount').style.color = 'rgb(255, 255, 255)'
document.getElementById('hidersCount').style.opacity = 0.7
}
setTimeout(() => {if (hack.vars.modeIsOn) {hack.functions.godModeEnable()}},300)
hack.getters.client.findUntilFound = function (e, t, n) {
hack.getters.network.gsip = e;
hack.getters.network.gsrn = t;
hack.getters.network.getSID?.((sid) => {
hack.getters.network.sid = sid;
hack.getters.network.connectToGs?.(hack.getters.network.gsip, () => {
console.log("connected to gs");
hack.getters.client.verifyIsHuman?.(() => {
hack.getters.network.registerSidOnGs?.((verifyStatus) => {
console.log("verified on gs server", verifyStatus);
if (verifyStatus === "") {
alert("You are already playing the game in another browser tab.");
location.reload();
n(2);
} else {
hack.getters.network.joinRoom?.(hack.getters.network.gsrn, (joinStatus) => {
if (joinStatus === 1) {
hack.getters.client.sendPlayingInfo?.(hack.getters.client.roomId, () => {
hack.getters.client.onReady?.();
n(1);
scrActivate()
});
} else {
console.log("else");
hack.getters.network.gsSockehack?.getters.client.disconnect?.();
do {
hack.getters.client.rIndex++;
const currentDataCenter = hack.getters.network.dataCenters?.[hack.getters.client.dcIndex];
if (!currentDataCenter?.[hack.getters.client.rIndex]) {
hack.getters.client.dcIndex++;
hack.getters.client.rIndex = 0;
if (!hack.getters.network.dataCenters?.[hack.getters.client.dcIndex]) {
alert("It seems all servers are full. Please refresh your page and try again.");
location.reload();
return;
}
}
} while (hack.getters.network.dataCenters?.[hack.getters.client.dcIndex]?.[hack.getters.client.rIndex]?.[2] !== hack.getters.client.modeInfo.mp);
const newGsip = hack.getters.network.dataCenters?.[hack.getters.client.dcIndex]?.[hack.getters.client.rIndex]?.[1];
const newGsrn = hack.getters.network.dataCenters?.[hack.getters.client.dcIndex]?.[hack.getters.client.rIndex]?.[3];
hack.getters.client.roomId = hack.getters.network.dataCenters?.[hack.getters.client.dcIndex]?.[hack.getters.client.rIndex]?.[4];
hack.getters.client.findUntilFound(newGsip, newGsrn, n);
}
});
}
});
});
});
});
};
document.body.onkeydown = (event) => {
const keyCode = event.keyCode
switch (keyCode) {
case 17:
hack.getters.mode.makeMeGhost()
break
case 113:
if (!hack.vars.modeIsOn) {
hack.functions.godModeEnable()
hack.logFuncs.logModeIsOn()
hack.functions.multSpdEnable()
} else {
hack.functions.godModeDisable()
hack.logFuncs.logModeIsOn()
hack.functions.multSpdDisable()
}
break
case 192:
case 190:
if (hack.vars.modeIsOn) {
hack.suppFuncs.setMult()
hack.logFuncs.logSpd()
}
break
}
}
function isGrounded() {
const meX = hack.getters.me.getX()
const meY = hack.getters.me.getY()
const ray = hack.getters.ray
const physics = hack.getters.physics
const gpPWorld = hack.getters.gp.pWorld
const rayResult = hack.getters.me.ray.result
const rayHitPoint = (hack.getters.ray.hitPoint = [Infinity, Infinity])
const verticalOffset = 50
const checkYPosition = meY + 45
for (let i = 0; i < 121; i++) {
const o = meX - 15 + i * (30 / 120)
const s = checkYPosition
const u = s + verticalOffset
ray.from = [physics.xAxis(o, 0), physics.yAxis(s, 0)]
ray.to = [physics.xAxis(o, 0), physics.yAxis(u, 0)]
ray.update()
rayResult.reset()
if (gpPWorld.raycast(rayResult, ray)) {
rayResult.getHitPoint(rayHitPoint, ray)
const hitDistance = rayResult.getHitDistance(ray)
if (rayResult.shape.ref.getCollision() && hitDistance < 0.1) {
return true
}
}
}
return false
}
function newMovement() {
hack.getters.client.loopFunctions[2].fun = function () {
const currentTime = Date.now()
const dashCooldown = 250
const dashDistance = 2.5
const dashSpeed = 25
const grounded = isGrounded()
if (grounded) {
hack.playerMoveData.airDashAvailable = true
}
if (hack.getters.mode.moveLeft) {
hack.playerMoveData.lastHorizontalDirection = -1
} else if (hack.getters.mode.moveRight) {
hack.playerMoveData.lastHorizontalDirection = 1
}
if (
hack.keyBindings.isCPressed &&
hack.getters.mode.moveDown &&
currentTime - hack.playerMoveData.lastDashTime >= dashCooldown &&
!hack.playerMoveData.isDashingDown &&
(grounded || (!grounded && hack.playerMoveData.airDashAvailable))
) {
hack.playerMoveData.lastDashTime = currentTime
hack.playerMoveData.isDashingDown = true
hack.playerMoveData.dashDuration = (dashDistance / dashSpeed) * 1000
hack.playerMoveData.dashEndTime = currentTime + hack.playerMoveData.dashDuration
if (!grounded) {
hack.playerMoveData.airDashAvailable = false
}
}
if (
hack.keyBindings.isCPressed &&
hack.getters.mode.moveUp &&
currentTime - hack.playerMoveData.lastDashTime >= dashCooldown &&
!hack.playerMoveData.isDashingUp &&
(grounded || (!grounded && hack.playerMoveData.airDashAvailable))
) {
hack.playerMoveData.lastDashTime = currentTime
hack.playerMoveData.isDashingUp = true
hack.playerMoveData.dashDuration = (dashDistance / dashSpeed) * 1000
hack.playerMoveData.dashEndTime = currentTime + hack.playerMoveData.dashDuration
if (!grounded) {
hack.playerMoveData.airDashAvailable = false
}
}
if (
hack.keyBindings.isCPressed &&
currentTime - hack.playerMoveData.lastDashTime >= dashCooldown &&
!hack.playerMoveData.isDashing &&
(grounded || (!grounded && hack.playerMoveData.airDashAvailable))
) {
hack.playerMoveData.lastDashTime = currentTime
hack.playerMoveData.isDashing = true
hack.playerMoveData.dashVelocity = dashSpeed * hack.playerMoveData.lastHorizontalDirection
hack.playerMoveData.dashDuration = (dashDistance / dashSpeed) * 1000
hack.playerMoveData.dashEndTime = currentTime + hack.playerMoveData.dashDuration
if (!grounded) {
hack.playerMoveData.airDashAvailable = false
}
}
if (hack.playerMoveData.isDashingDown) {
hack.getters.mode.player.gpData.p.velocity[1] = -dashSpeed
hack.getters.mode.player.gpData.p.velocity[0] = 0
hack.getters.me.p.collisionResponse = false
if (currentTime >= hack.playerMoveData.dashEndTime) {
hack.playerMoveData.isDashingDown = false
hack.getters.mode.player.gpData.p.velocity[1] = 0
if (!hack.vars.modeIsOn) {
hack.getters.me.p.collisionResponse = true
}
}
return
}
if (hack.playerMoveData.isDashingUp) {
hack.getters.mode.player.gpData.p.velocity[1] = dashSpeed
hack.getters.mode.player.gpData.p.velocity[0] = 0
hack.getters.me.p.collisionResponse = false
if (currentTime >= hack.playerMoveData.dashEndTime) {
hack.playerMoveData.isDashingUp = false
hack.getters.mode.player.gpData.p.velocity[1] = 0
if (!hack.vars.modeIsOn) {
hack.getters.me.p.collisionResponse = true
}
}
return
}
if (hack.playerMoveData.isDashing) {
hack.getters.mode.player.gpData.p.velocity[0] = hack.playerMoveData.dashVelocity
hack.getters.mode.player.gpData.p.velocity[1] = 0
hack.getters.me.p.collisionResponse = false
if (currentTime >= hack.playerMoveData.dashEndTime) {
hack.playerMoveData.isDashing = false
hack.getters.mode.player.gpData.p.velocity[0] = 0
if (!hack.vars.modeIsOn) {
hack.getters.me.p.collisionResponse = true
}
}
return
} else {
if (hack.getters.mode.moveRight) {
hack.getters.mode.player.gpData.p.velocity[0] = hack.vars.lrSpd * hack.vars.mult
} else if (hack.getters.mode.moveLeft) {
hack.getters.mode.player.gpData.p.velocity[0] = -hack.vars.lrSpd * hack.vars.mult
} else {
hack.getters.mode.player.gpData.p.velocity[0] = 0
}
}
if (grounded) {
hack.playerMoveData.isDoubleJumpAllowed = true
if (hack.keyBindings.isZPressed) {
hack.keyBindings.isZPressed = false
hack.getters.velocity[1] = 8 * (hack.getters.me.p.gravityScale)
}
} else if (hack.playerMoveData.isDoubleJumpAllowed && hack.keyBindings.isZPressed) {
hack.keyBindings.isZPressed = false
hack.getters.velocity[1] = 8 * (hack.getters.me.p.gravityScale)
hack.playerMoveData.isDoubleJumpAllowed = false
}
if (hack.vars.ghost1) {
if (hack.getters.mode.moveUp) {
hack.getters.velocity[1] = hack.vars.udSpd * hack.vars.mult
}
if (hack.getters.mode.moveDown) {
hack.getters.velocity[1] = -hack.vars.udSpd * hack.vars.mult
}
if (!hack.getters.mode.moveUp && !hack.getters.mode.moveDown) {
hack.getters.velocity[1] = 0
}
}
}
hack.playerMoveData.newMovementIsOn = true
}
function oldMovement() {
hack.getters.client.loopFunctions[2].fun = function () {
const grounded = isGrounded()
if (hack.getters.mode.moveRight) {
hack.getters.mode.player.gpData.p.velocity[0] = hack.vars.lrSpd * hack.vars.mult
} else if (hack.getters.mode.moveLeft) {
hack.getters.mode.player.gpData.p.velocity[0] = -hack.vars.lrSpd * hack.vars.mult
} else {
hack.getters.mode.player.gpData.p.velocity[0] = 0
}
if (grounded) {
if (hack.getters.mode.moveUp) {
hack.getters.velocity[1] = 8
}
}
if (hack.vars.ghost1) {
if (hack.getters.mode.moveUp) {
hack.getters.velocity[1] = hack.vars.udSpd * hack.vars.mult
}
if (hack.getters.mode.moveDown) {
hack.getters.velocity[1] = -hack.vars.udSpd * hack.vars.mult
}
if (!hack.getters.mode.moveUp && !hack.getters.mode.moveDown) {
hack.getters.velocity[1] = 0
}
}
}
hack.playerMoveData.newMovementIsOn = false
}
}
let temp1 = {};
const _call = Function.prototype.call;
new Promise((resolve, reject) => {
Function.prototype.call = function (...args) {
if (args[2]?.exports) {
temp1 = args[6]
Function.prototype.call = _call
console.log(temp1)
resolve(temp1)
}
return _call.apply(this, args)
};
}).then((result) => {
if (Object.keys(result).length > 0) {
activateMain(result)
} else {
console.log("temp1 is empty")
}
}).catch((error) => {
console.error("An error occurred:", error)
})
}
if (window.location.href == 'http://brofist.io/modes/sandbox/c/index.html') {
sandboxHack();
} else if (window.location.href == 'http://brofist.io/modes/twoPlayer/c/index.html') {
twoPlayerHack();
} else if (window.location.href == 'http://brofist.io/modes/hideAndSeek/c/index.html') {
hideAndSeekHack();
}