// ==UserScript==
// @name blackhack
// @version 1.14-beta4
// @description Cheat for brofist.io
// @author CiNoP
// @match https://brofist.io/
// @match https://brofist.io/modes/twoPlayer/c/index.html
// @match https://brofist.io/modes/hideAndSeek/c/index.html
// @match https://brofist.io/modes/sandbox/c/index.html
// @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
// @match http://www.brofist.io/
// @match http://www.brofist.io/modes/twoPlayer/c/index.html
// @match http://www.brofist.io/modes/hideAndSeek/c/index.html
// @match http://www.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
// @namespace brofist.io 1st-cheat (FOR ALL MODES)
// ==/UserScript==
/* jshint esversion: 11 */
/* jshint asi: true */
// Функция для переключения вкладок (пример реализации)
window.openTab = function(tabName, event) {
const tabContents = document.querySelectorAll(".tab-content");
tabContents.forEach(tab => tab.style.display = "none");
const buttons = document.querySelectorAll(".tab-button");
buttons.forEach(btn => btn.classList.remove("active"));
document.getElementById(tabName + "Tab").style.display = "block";
event.currentTarget.classList.add("active");
}
// Функция для обновления списка в контейнере
window.updateBlacklistList = function() {
const container = document.getElementById("blacklistContainer");
container.innerHTML = "";
hack.vars.blacklisted.names.forEach(name => {
const row = document.createElement("div");
row.className = "form-row";
row.style.justifyContent = "flex-start";
row.style.alignItems = "center";
row.style.gap = "8px"; // Увеличиваем зазор между элементами
// Кнопка для удаления (эмодзи ❌) - сделана квадратной
const delBtn = document.createElement("button");
delBtn.className = "btn";
delBtn.style.padding = "0";
delBtn.style.width = "24px";
delBtn.style.height = "24px";
delBtn.style.lineHeight = "24px";
delBtn.style.display = "flex";
delBtn.style.alignItems = "center";
delBtn.style.justifyContent = "center";
delBtn.style.boxSizing = "border-box";
delBtn.innerText = "❌";
delBtn.onclick = function() {
window.removeBlacklistName(name);
};
// Эмодзи белой точки
const whiteDot = document.createElement("span");
whiteDot.innerText = "⚪";
whiteDot.style.marginRight = "4px"; // расстояние между белой точкой и никнеймом
const nameSpan = document.createElement("span");
nameSpan.innerText = name;
row.appendChild(delBtn);
row.appendChild(whiteDot);
row.appendChild(nameSpan);
container.appendChild(row);
});
}
// Функция добавления никнейма
window.addBlacklistName = function() {
const input = document.getElementById("blacklistInput");
const name = input.value.trim();
if (name !== "" && !hack.vars.blacklisted.names.includes(name)) {
hack.vars.blacklisted.names.push(name);
input.value = "";
window.updateBlacklistList();
}
}
// Функция удаления никнейма по клику на ❌
window.removeBlacklistName = function(name) {
hack.vars.blacklisted.names = hack.vars.blacklisted.names.filter(e => e !== name);
window.updateBlacklistList();
}
// Функция, возвращающая противоположный (инвертированный) цвет в формате HEX
window.getComplementaryColor = function(hex) {
hex = hex.replace("#", "");
if (hex.length === 3) {
hex = hex.split("").map(ch => ch + ch).join("");
}
const r = parseInt(hex.substring(0, 2), 16);
const g = parseInt(hex.substring(2, 4), 16);
const b = parseInt(hex.substring(4, 6), 16);
const compR = (255 - r).toString(16).padStart(2, '0');
const compG = (255 - g).toString(16).padStart(2, '0');
const compB = (255 - b).toString(16).padStart(2, '0');
return `#${compR}${compG}${compB}`;
}
// Преобразование HEX в RGBA с учетом прозрачности
window.hexToRGBA = function(hex, opacity) {
hex = hex.replace("#", "");
if (hex.length === 3) {
hex = hex.split("").map(ch => ch + ch).join("");
}
const r = parseInt(hex.substring(0, 2), 16);
const g = parseInt(hex.substring(2, 4), 16);
const b = parseInt(hex.substring(4, 6), 16);
return `rgba(${r}, ${g}, ${b}, ${opacity})`;
};
// Функция для применения выбранных настроек косметики
window.applyCosmetics = function() {
const bgColor = document.getElementById("bgColorInput").value;
const textColor = document.getElementById("textColorInput").value;
const bgOpacity = parseFloat(document.getElementById("bgOpacityInput").value);
const outlineEnabled = document.getElementById("textOutlineCheckbox").checked;
const background = window.hexToRGBA(bgColor, bgOpacity);
const elementIds = ["someData", "controlPanel", "mapCredits", "leaderboard", "timer"];
elementIds.forEach(id => {
const el = document.getElementById(id);
if (el) {
el.style.setProperty("background-color", background, "important");
el.style.setProperty("opacity", "1", "important");
// Меняем цвет текста и добавляем обводку, если это не leaderboard
if (id !== "leaderboard") {
el.style.setProperty("color", textColor, "important");
if (outlineEnabled) {
const outlineColor = getComplementaryColor(textColor);
el.style.setProperty("text-shadow", `
0.75px 0.75px 0 ${outlineColor},
-0.75px -0.75px 0 ${outlineColor},
0.75px -0.75px 0 ${outlineColor},
-0.75px 0.75px 0 ${outlineColor},
0.75px 0 0 ${outlineColor},
0 0.75px 0 ${outlineColor},
-0.75px 0 0 ${outlineColor},
0 -0.75px 0 ${outlineColor}
`, "important");
} else {
el.style.setProperty("text-shadow", "none", "important");
}
}
}
});
localStorage.setItem("cosmeticsSettings", JSON.stringify({
bgColor,
textColor,
bgOpacity,
outlineEnabled
}));
};
// Функция для загрузки сохраненных настроек
window.loadCosmetics = function() {
const savedSettings = localStorage.getItem("cosmeticsSettings");
if (savedSettings) {
const {
bgColor,
textColor,
bgOpacity,
outlineEnabled
} = JSON.parse(savedSettings);
document.getElementById("bgColorInput").value = bgColor;
document.getElementById("textColorInput").value = textColor;
document.getElementById("bgOpacityInput").value = bgOpacity;
if (typeof outlineEnabled !== "undefined") {
document.getElementById("textOutlineCheckbox").checked = outlineEnabled;
}
window.applyCosmetics();
}
};
const roomButtons = document.querySelectorAll('.button.rooms');
roomButtons.forEach(button => {
button.addEventListener('click', function() {
setTimeout(function() {
window.loadCosmetics();
}, 30);
});
});
let sandboxURL = ['https://brofist.io/modes/sandbox/c/index.html', 'http://brofist.io/modes/sandbox/c/index.html', 'http://www.brofist.io/modes/sandbox/c/index.html']
let twoPlayerURL = ['https://brofist.io/modes/twoPlayer/c/index.html', 'http://brofist.io/modes/twoPlayer/c/index.html','http://www.brofist.io/modes/twoPlayer/c/index.html']
let hideAndSeekURL = ['https://brofist.io/modes/hideAndSeek/c/index.html', 'http://brofist.io/modes/hideAndSeek/c/index.html', 'http://www.brofist.io/modes/hideAndSeek/c/index.html']
let brofioURL = ['https://brofist.io', 'http://brofist.io/']
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.body.insertAdjacentHTML("beforebegin",
`<div id="infoPanelArrow" style="position: fixed; left: 35px; top: 50%; font-size: 30px; color: #FF4136; opacity: 0; transform: translateY(-50%);">➤</div>`
);
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; font-family: Arial, sans-serif; cursor: move; max-width: 90%; max-height: 90%; overflow: auto; user-select: none;">
<div style="margin-bottom: 10px;">
<button id="decreaseFont" style="margin-right: 5px;">-</button>
<button id="increaseFont">+</button>
</div>
<div id="cheatInfoText">
${getCheatInfoText()}
</div>
</div>`
);
makePanelDraggable(document.getElementById('cheatInfoPanel'));
function getCheatInfoText() {
if (brofioURL.includes(window.location.href)) {
return "Зайдите в любой режим";
} else if (twoPlayerURL.includes(window.location.href)) {
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>
<b>Колесо мыши</b> - Выдача вертикальной скорости<br>
<b>Правый клик</b> - Телепорт к месту на котором ваш курсор<br><br>
<b>А так же:</b><br>
Информация об игроке, скриптовых переменных и т.п. во вкладке Info<br>
Изменение стиля интерфейса во вкладке Cosmetics<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>
<b>Колесо мыши</b> - Выдача вертикальной скорости<br><br>
<b>А так же:</b><br>
Информация об игроке, скриптовых переменных и т.п. в левой верхней панели<br>
Переключение между новым и старым передвижением в левой нижней панели<br>
Нажмите <b>Esc</b> чтобы скрыть новые панели<br>
`;
}
}
function makePanelDraggable(panel) {
let isDragging = false;
let startX, startY, initialX, initialY;
panel.addEventListener('mousedown', dragStart);
document.addEventListener('mouseup', dragEnd);
document.addEventListener('mousemove', drag);
function dragStart(e) {
isDragging = true;
startX = e.clientX;
startY = e.clientY;
const rect = panel.getBoundingClientRect();
initialX = rect.left;
initialY = rect.top;
panel.style.transform = 'none';
}
function drag(e) {
if (!isDragging) return;
const offsetX = e.clientX - startX;
const offsetY = e.clientY - startY;
let newX = initialX + offsetX;
let newY = initialY + offsetY;
const windowWidth = window.innerWidth;
const windowHeight = window.innerHeight;
const panelRect = panel.getBoundingClientRect();
const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;
const scrollbarHeight = window.innerHeight - document.documentElement.clientHeight;
newX = Math.max(0, Math.min(windowWidth - panelRect.width - scrollbarWidth, newX));
newY = Math.max(0, Math.min(windowHeight - panelRect.height - scrollbarHeight, newY));
panel.style.left = `${newX}px`;
panel.style.top = `${newY}px`;
}
function dragEnd() {
isDragging = false;
}
}
const cheatInfoPanel = document.getElementById('cheatInfoPanel');
const cheatInfoText = document.getElementById('cheatInfoText');
const decreaseFontBtn = document.getElementById('decreaseFont');
const increaseFontBtn = document.getElementById('increaseFont');
let fontSize = 20;
decreaseFontBtn.addEventListener('click', () => {
fontSize = Math.max(10, fontSize - 2);
cheatInfoText.style.fontSize = fontSize + 'px';
});
increaseFontBtn.addEventListener('click', () => {
fontSize = Math.min(40, fontSize + 2);
cheatInfoText.style.fontSize = fontSize + 'px';
});
const infoPanelArrow = document.getElementById('infoPanelArrow');
let animationCount = 0;
let animationRunning = false;
function initializeArrow() {
infoPanelArrow.style.position = 'fixed';
infoPanelArrow.style.top = '50%';
infoPanelArrow.style.left = '35px';
infoPanelArrow.style.transform = 'translateY(-50%) rotate(180deg)';
infoPanelArrow.style.opacity = 0;
infoPanelArrow.style.top = 'calc(50% + 15px)'
}
function animateArrow() {
if (animationRunning) return;
animationRunning = true;
let opacity = 0;
let fadeIn = true;
const animationSpeed = 25;
const animation = setInterval(() => {
if (fadeIn) {
opacity += 0.1;
if (opacity >= 1) {
fadeIn = false;
}
} else {
opacity -= 0.1;
if (opacity <= 0) {
fadeIn = true;
animationCount++;
if (animationCount >= 10) {
clearInterval(animation);
animationRunning = false;
infoPanelArrow.style.opacity = 0;
}
}
}
infoPanelArrow.style.opacity = opacity;
}, animationSpeed);
}
initializeArrow();
animateArrow();
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: false,
},
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[38].exports
},
get gf() {
return temp1[42].exports
},
get gp() {
return temp1[43].exports
},
get graphics() {
return temp1[44].exports
},
get mode() {
return temp1[48].exports
},
get envirData() {
return temp1[53].exports
},
get network() {
return temp1[66].exports
},
get physics() {
return temp1[362].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
},
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) {
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: {
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) {
const res = ''
for (let char of i) {
res += char
if (char === char.toUpperCase()) {
res += ''
}
}
o.push(`${res}: ${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.onkeyup = (event) => {
const key = event.key
switch (key) {
case 'PageUp':
if (!hack.vars.modeIsOn) {
hack.getters.me.p.gravityScale = 1
hack.getters.me.p.collisionResponse = 1
}
break;
case 'PageDown':
if (!hack.vars.modeIsOn) {
hack.getters.me.p.collisionResponse = 1
}
break;
}
}
document.body.onkeydown = (event) => {
const key = event.key;
switch (key) {
case 'PageUp':
if (!hack.vars.modeIsOn) {
hack.getters.me.p.gravityScale = -1
hack.getters.me.p.collisionResponse = 0
}
break;
case 'PageDown':
if (!hack.vars.modeIsOn) {
hack.getters.me.p.gravityScale = 1
hack.getters.me.p.collisionResponse = 0
}
break;
case 'F2':
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 '`': // Backtick (`)
case 'ё'.toLowerCase(): // Cyrillic Yo (часто на той же клавише, что и Backtick)
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
}
}
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
}
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
}
addEventListener("mousewheel", e => {
window.tweenObjects.map(x => {
try {
if (e.shiftKey) {
hack.getters.mode.player.gpData.p.velocity[0] = -Math.sign(e.deltaY) * 15;
} else {
hack.getters.mode.player.gpData.p.velocity[1] = -Math.sign(e.deltaY) * 15;
}
} catch (err) {
console.error(err);
}
});
});
}
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) {
function handleKeyDown(event) {
if (event.repeat) return;
const mode = hack.getters.mode;
const velocity = mode.player.gpData.p.velocity
switch (event.key) {
case "ArrowLeft":
mode.moveLeft = true;
mode.moveRight = false;
break;
case "ArrowRight":
mode.moveRight = true;
mode.moveLeft = false;
break;
case "ArrowUp":
mode.moveUp = true;
mode.moveDown = false;
break;
case "ArrowDown":
mode.moveDown = true;
mode.moveUp = false;
break;
}
}
function handleKeyUp(event) {
const mode = hack.getters.mode;
const velocity = mode.player.gpData.p.velocity
switch (event.key) {
case "ArrowLeft":
mode.moveLeft = false;
velocity[0] = 0;
break;
case "ArrowRight":
mode.moveRight = false;
velocity[0] = 0
break;
case "ArrowUp":
mode.moveUp = false;
break;
case "ArrowDown":
mode.moveDown = false;
break;
}
}
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,
meYplus: 45,
},
bindKeys: function() {
document.addEventListener("keydown", (event) => {
if (event.key === "Shift") {
hack.vars.shiftPressed = true;
}
});
document.addEventListener("keyup", (event) => {
if (event.key === "Shift") {
hack.vars.shiftPressed = false;
}
});
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' && !hack.keyBindings.isZPressed) {
hack.keyBindings.isZPressed = true;
}
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[38].exports
},
get gf() {
return temp1[42].exports
},
get gp() {
return temp1[43].exports
},
get graphics() {
return temp1[44].exports
},
get guiComponentsKick() {
return temp1[46].exports
},
get mode() {
return temp1[48].exports
},
get envirData() {
return temp1[52].exports
},
get remote_kickPlayer() {
return temp1[54].exports
},
get myStatus() {
return temp1[57].exports
},
get rBio() {
return temp1[62].exports
},
get rGho() {
return temp1[63].exports
},
get modules_resultScreen() {
return temp1[72].exports
},
get network() {
return temp1[73].exports
},
get keyboardjs() {
return temp1[107].exports
},
get physics() {
return temp1[369].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: {
shiftPressed: false,
blacklisted: {
data: [],
names: []
},
get isGround() {
return isGrounded()
},
tpToOtherByClickIsOn: false,
indexByClick: 0,
mult: 1,
lrSpd: 3,
udSpd: 3,
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,
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
},
multSpdIsOn: false,
modeIsOn: false,
immIsOn: false,
MMGIsOn: false,
interTpToOtherIsOn: false,
ghost1: false,
ghost2: false,
isPlayerDead: false,
tpSpawnCounter: 0,
},
suppFuncs: {
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
},
processBlacklistData: function() {
// 1. Добавляем новых игроков
for (let name of hack.vars.blacklisted.names) {
const index = hack.suppFuncs.getIndexByName(name);
if (index) {
const alreadyExists = hack.vars.blacklisted.data.some(entry => {
return entry && entry[1] === name;
});
if (!alreadyExists) {
hack.vars.blacklisted.data.push([index, name]);
}
}
}
// 2. Удаляем устаревшие записи
if (hack.vars.blacklisted.data.length) {
hack.vars.blacklisted.data = hack.vars.blacklisted.data.filter(entry => {
return entry && entry[1] && hack.vars.blacklisted.names.includes(entry[1]);
});
}
}
},
functions: {
getBio: function(index) {
let i = hack.getters.mode.otherPlayers[index]
return {
get gpData() {
return hack.getters.me
},
get myName() {
return i.myName
},
get mySkin() {
return i.mySkin
},
get whatBro() {
return i.whatBro
},
get chatColor() {
return i.chatColor
},
get teamColor() {
return i.teamColor
},
}
},
setBio: function(bio) {
let mode = hack.getters.mode
mode.setBio(
bio.gpData,
bio.myName,
bio.mySkin,
bio.whatBro,
bio.chatColor,
bio.teamColor
)
},
prevPos: function() {
hack.vars.pX = hack.getters.mode.player.gpData.getX()
hack.vars.pY = hack.getters.mode.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(
hack.getters.mode.spawn.refP.getX(),
hack.getters.mode.spawn.refP.getY()
)
}
hack.vars.tpSpawnCounter = 0
},
tpDoor: function() {
this.prevPos()
hack.vars.tpSpawnCounter = 0
this.tp(
hack.getters.mode.exitGate.exitGateCounter.refP.getX(),
hack.getters.mode.exitGate.exitGateCounter.refP.getY()
)
},
tp: function(x, y) {
hack.getters.mode.player.gpData.setX(x)
hack.getters.mode.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
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)
}
}
}
window.hack = hack
/*
***********************
* *
* infoPanel *
* *
***********************
*/
/* Добавляем общий стиль для всех элементов */
const style = document.createElement('style');
style.innerHTML = `
/* Глобальные стили для фиксированных контейнеров */
.fixed-container {
position: fixed;
z-index: 1000;
font-family: Arial, sans-serif;
color: #fff;
}
/* Фон с альфа-прозрачностью */
.transparent-bg {
background-color: rgba(0, 0, 0, 0.7);
}
/* Контейнер без фона */
.no-bg {
background-color: transparent;
}
/* Стили для контейнера кнопок */
.button-container {
display: flex;
justify-content: flex-start;
gap: 10px;
top: 0;
left: 0;
padding: 4px;
}
.tab-button {
font-size: 0.6em;
cursor: pointer;
}
/* Стили для блока данных */
.data-container {
top: 25px;
left: -12px;
padding: 5px;
margin-left: 10px;
text-align: left;
font-size: 14px;
}
.tab-content {
display: none;
}
.tab-content.active {
display: block;
}
/* Общие стили для форм */
.identity-container,
.cosmetics-container {
display: flex;
flex-direction: column;
gap: 10px;
margin-left: 1px;
}
.form-row {
display: flex;
align-items: center;
}
.form-row label {
width: 100px;
text-align: left;
margin: 0;
}
.form-row input {
width: 142px;
}
/* Стиль для кнопок */
.btn {
padding: 5px 10px;
cursor: pointer;
}
/* Панель управления */
.control-panel {
display: flex;
flex-direction: column;
gap: 10px;
margin-left: 1px;
bottom: 0;
left: 0;
font-size: 14px;
background-color: transparent;
color: rgba(255, 255, 255, 1);
}
.control-panel button {
padding: 2px 10px;
cursor: pointer;
}
`;
document.head.appendChild(style);
/* Вставляем HTML вкладок */
document.body.insertAdjacentHTML("beforeend", `
<div id="buttonContainer" class="fixed-container button-container no-bg">
<button class="tab-button active" onclick="openTab('info', event)">Info</button>
<button class="tab-button" onclick="openTab('cosmetics', event)">Cosmetics</button>
<button class="tab-button" onclick="openTab('blacklist', event)">Blacklist</button>
<button class="tab-button" onclick="openTab('identity', event)">Identity</button>
</div>
<div id="someData" class="fixed-container data-container transparent-bg">
<div id="infoTab" class="tab-content active"></div>
<div id="cosmeticsTab" class="tab-content"></div>
<div id="blacklistTab" class="tab-content">45345</div>
<div id="identityTab" class="tab-content"></div>
</div>
`);
// Обновляем содержимое вкладки blacklistTab
const blacklistTab = document.getElementById("blacklistTab");
blacklistTab.innerHTML = `
<div class="cosmetics-container no-bg" style="padding: 5px;">
<div class="form-row" style="display: flex; align-items: center; gap: 10px; width: max-content;">
<label for="blacklistInput" style="min-width: 70px; text-align: left;">Никнейм</label>
<input type="text" id="blacklistInput" style="width: 150px;">
<button class="btn">Добавить</button>
</div>
<div id="blacklistContainer" style="margin-top: 10px; max-height: 175px; overflow-y: auto; font-size: 12px;">
<!-- Здесь будут отображаться добавленные ники -->
</div>
</div>
`;
/* Обработка вкладки Identity */
const identityTab = document.getElementById("identityTab");
identityTab.innerHTML = `
<div class="identity-container no-bg" style="position: relative;">
<div class="form-row">
<label for="nicknameInput">Никнейм</label>
<input type="text" id="nicknameInput" value="">
</div>
<div class="form-row">
<label for="skinInput">Скин</label>
<input type="text" id="skinInput" value="">
</div>
<div class="form-row">
<label for="vipInput">Вип статус</label>
<input type="text" id="vipInput" value="">
</div>
<div class="form-row">
<label for="chatColorInput">Цв. чата</label>
<input type="text" id="chatColorInput" value="">
</div>
<div class="form-row">
<label for="teamColorInput">Цв. команды</label>
<input type="text" id="teamColorInput" value="">
</div>
<div style="text-align: center; margin-top: 10px;">
<button class="btn" onclick="
hack.getters.mode.setMyBio();
let skinValue = document.getElementById('skinInput').value;
if (!skinValue) {
skinValue = hack.getters.mode.mySkin;
}
let chatColorValue = document.getElementById('chatColorInput').value;
if (!chatColorValue) {
chatColorValue = hack.getters.mode.chatColor;
}
let vipValue = document.getElementById('vipInput').value;
if (!vipValue) {
vipValue = undefined;
}
hack.getters.mode.setBio(
hack.getters.mode.player.gpData,
document.getElementById('nicknameInput').value,
skinValue,
vipValue,
chatColorValue,
document.getElementById('teamColorInput').value
)">Применить</button>
</div>
<div style="position: absolute; bottom: 0; left: 0;">
<button class="btn" onclick="
hack.getters.mode.setMyBio();
const bio = hack.functions.getBio(hack.vars.indexByClick);
if (bio) {
document.getElementById('nicknameInput').value = bio.myName || '';
document.getElementById('skinInput').value = bio.mySkin || '';
document.getElementById('vipInput').value = bio.whatBro || '';
document.getElementById('chatColorInput').value = bio.chatColor || '';
document.getElementById('teamColorInput').value = bio.teamColor || '';
}
">©</button>
</div>
</div>
<script>
document.addEventListener('DOMContentLoaded', function() {
document.getElementById('nicknameInput').value = hack.getters.mode.myName || "";
document.getElementById('skinInput').value = hack.getters.mode.mySkin || "";
document.getElementById('vipInput').value = hack.getters.mode.whatBro || "";
document.getElementById('chatColorInput').value = hack.getters.mode.chatColor || "";
document.getElementById('teamColorInput').value = hack.getters.mode.teamColor || "";
});
</script>
`;
/* Обработка вкладки Cosmetics */
const cosmeticsTab = document.getElementById("cosmeticsTab");
cosmeticsTab.innerHTML = `
<div class="cosmetics-container no-bg">
<div class="form-row" style="justify-content: flex-end;">
<label for="bgColorInput" style="width: 70px; text-align: left; margin-right: 10px;">Фон:</label>
<input type="color" id="bgColorInput" style="width: 150px;" value="#000000">
</div>
<div class="form-row" style="justify-content: flex-end;">
<label for="textColorInput" style="width: 70px; text-align: left; margin-right: 10px;">Текст:</label>
<input type="color" id="textColorInput" style="width: 150px;" value="#ffffff">
</div>
<div class="form-row" style="justify-content: flex-end;">
<label for="bgOpacityInput" style="width: 70px; text-align: left; margin-right: 10px;">Прозрачн. фона:</label>
<input type="number" id="bgOpacityInput" min="0" max="1" step="0.1" value="0.7" style="width: 142px;">
</div>
<div class="form-row" style="justify-content: flex-end;">
<label for="textOutlineCheckbox" style="width: 70px; text-align: left; margin-right: 10px;">Обводка:</label>
<input type="checkbox" id="textOutlineCheckbox">
</div>
<div style="text-align: center; margin-top: 10px;">
<button class="btn" onclick="applyCosmetics()">Применить</button>
</div>
</div>
`;
/* Обновление данных в вкладке Info */
const infoTab = document.getElementById("infoTab");
const updateData = () => {
const o = [];
// POSITION INFO
o.push("<b>POSITION INFO</b>");
o.push(` current Pos X: ${hack.vars.currentPosX}`);
o.push(` current Pos Y: ${hack.vars.currentPosY}`);
// SPEED INFO
o.push("<br><b>SPEED INFO</b>");
o.push(` total Spd: ${hack.vars.totalSpd}`);
o.push(` current Spd X: ${hack.vars.currentSpdX}`);
o.push(` current Spd Y: ${hack.vars.currentSpdY}`);
// SCRIPT VALUES
o.push("<br><b>SCRIPT VALUES</b>");
o.push(` mult Spd Is On: ${hack.vars.multSpdIsOn}`);
o.push(` mode Is On: ${hack.vars.modeIsOn}`);
o.push(` imm Is On: ${hack.vars.immIsOn}`);
o.push(` MMG Is On: ${hack.vars.MMGIsOn}`);
o.push(` inter Tp To Other Is On: ${hack.vars.interTpToOtherIsOn}`);
o.push(` is Player Dead: ${hack.vars.isPlayerDead}`);
// MOVEMENT VALUES
o.push("<br><b>MOVEMENT VALUES</b>");
o.push(` new Movement Is On: ${hack.playerMoveData.newMovementIsOn}`);
infoTab.innerHTML = o.join('<br>');
};
setInterval(updateData, 100 / 6);
/* Вставляем панель управления */
document.body.insertAdjacentHTML("beforebegin", `
<div id="controlPanel" style="display: flex; flex-direction: column; gap: 5px; position: fixed; bottom: 0px; left: 0px; height: auto; text-align: left; font-size: 14px; background-color: rgba(0, 0, 0, 0.7); color: rgba(255, 255, 255, 1); font-family: Arial, sans-serif; padding: 5px;">
<div style="display: flex; align-items: center; gap: 5px;">
<span>new movement:</span>
<button id="newMoveBtn" style="padding: 0 6px; height: 18px; line-height: 18px; display: flex; align-items: center; justify-content: center; box-sizing: border-box;">${hack.playerMoveData.newMovementIsOn}</button>
</div>
<div style="display: flex; align-items: center; gap: 5px;">
<span>poison immunity:</span>
<button id="immBtn" style="padding: 0 6px; height: 18px; line-height: 18px; display: flex; align-items: center; justify-content: center; box-sizing: border-box;">${hack.vars.immIsOn}</button>
</div>
<div style="display: flex; align-items: center; gap: 5px;">
<span>death immunity:</span>
<button id="MMGBtn" style="padding: 0 6px; height: 18px; line-height: 18px; display: flex; align-items: center; justify-content: center; box-sizing: border-box;">${!hack.vars.MMGIsOn}</button>
</div>
</div>
`);
const updateButtonStates = () => {
const newMoveBtn = document.getElementById("newMoveBtn");
const immBtn = document.getElementById("immBtn");
const MMGBtn = document.getElementById("MMGBtn");
if (newMoveBtn) newMoveBtn.innerText = hack.playerMoveData.newMovementIsOn;
if (immBtn) immBtn.innerText = hack.vars.immIsOn;
if (MMGBtn) 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()
function scrActivate() {
hack.getters.mode.createKickGui = function(e) {
e.myIndex = e.myIndex;
e.interactive = true;
e.buttonMode = true;
let flag = false;
function t() {
if (hack.vars.shiftPressed) {
let name = this.ref.refP.name.getText();
if (!hack.vars.blacklisted.names.includes(name)) {
hack.vars.blacklisted.names.push(name);
}
window.updateBlacklistList();
flag = true;
}
if (flag) {
flag = false;
return;
}
let kickIndex = hack.getters.mode.kickIndex = this.ref.refP.g.myIndex;
hack.getters.guiComponentsKick.showLoading(this.ref.refP.name.getText(), this.ref.refP.g.myIndex);
hack.vars.indexByClick = kickIndex;
}
e.on("click", t).on("touchstart", t);
}
setTimeout(function() {
window.loadCosmetics();
}, 0);
hack.getters.client.loopFunctions[3].timeOut = 0
hack.getters.client.loopFunctions[2].timeOut = 100 / 6
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, '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
})
Object.defineProperty(hack.playerMoveData, 'meYplus', {
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.processOthersPlayerData = function() {
hack.suppFuncs.processBlacklistData()
let flag = false
if (0 != hack.getters.mode.othersPlayerNetworkData.length) {
var currentPlayersIndex = [];
for (var x = 0; x < hack.getters.mode.othersPlayerNetworkData.length; x++) {
for (var y = 0; y < hack.getters.mode.othersPlayerNetworkData[x].length; y++) {
var data = hack.getters.mode.othersPlayerNetworkData[x][y];
var index = data[0];
var xVelo = data[1];
var yVelo = data[2];
var xAxis = data[3];
var yAxis = data[4];
for (let iterator = 0; iterator < hack.vars.blacklisted.data.length; iterator++) {
if (hack.vars.blacklisted.data[iterator].includes(index)) {
flag = true;
}
}
if (flag) {
flag = false;
continue
}
if (typeof hack.getters.mode.otherPlayers[index] == "undefined" || hack.getters.mode.otherPlayers[index] == null) { // ИСПРАВЛЕННОЕ УСЛОВИЕ
hack.getters.mode.oldPlayersIndex[hack.getters.mode.oldPlayersIndex.length] = index;
var person = new Object();
person.myName = "";
person.mySkin = 0,
person.reset = Infinity; // changed from 1 / 0 to Infinity for readability, same value
person.gpData = hack.getters.mode.createPlayer();
person.gpData.g.myIndex = index;
hack.getters.mode.otherPlayers[index] = person;
hack.getters.mode.enableEmit && hack.getters.rBio.fire(hack.getters.network.gsSocket, index);
hack.getters.gp.gWorld.removeChild(person.gpData.g);
hack.getters.gp.gWorld.mid.addChild(person.gpData.g)
}
if (10 < hack.getters.mode.otherPlayers[index].reset) {
hack.getters.mode.otherPlayers[index].gpData.setX(xAxis);
hack.getters.mode.otherPlayers[index].gpData.setY(yAxis);
hack.getters.mode.otherPlayers[index].reset = 0
}
hack.getters.mode.otherPlayers[index].reset++;
hack.getters.mode.otherPlayers[index].gpData.p.velocity[0] = xVelo;
hack.getters.mode.otherPlayers[index].gpData.p.velocity[1] = yVelo;
currentPlayersIndex[currentPlayersIndex.length] = index;
}
}
var result = hack.getters.gf.difference(hack.getters.mode.oldPlayersIndex, currentPlayersIndex);
for (var i = 0; i < result.length; i++) {
var person = hack.getters.mode.otherPlayers[result[i]];
if (null != person) {
hack.getters.gp.gWorld.children[1].removeChild(person.gpData.g);
hack.getters.gp.pWorld.removeBody(person.gpData.p);
hack.getters.gp.list[hack.getters.gp.list.indexOf(person.gpData)] = null;
hack.getters.gp.deleteCounter++;
hack.getters.mode.otherPlayers[result[i]] = null;
}
}
hack.getters.mode.oldPlayersIndex = currentPlayersIndex;
hack.getters.mode.othersPlayerNetworkData = [];
}
}
hack.getters.mode.onChangeMap = function(e) {
try {
scrActivate()
scrActivate = null
} catch {}
let mode = hack.getters.mode;
let gp = hack.getters.gp;
let resultScreen = hack.getters.modules_resultScreen;
let client = hack.getters.client
clearInterval(mode.startTimeId);
clearTimeout(mode.smallStepTimeId);
resultScreen.hideResultScreen();
e = e;
gp.unload(gp);
gp.list = gp.load(e, gp);
mode.syncArr = [];
mode.ghost = !1;
mode.tweenObjects = [];
mode.defineBehaviours(gp.list, mode.syncArr, gp);
mode.md.mobile() && mode.setupTouchButtons(!1);
mode.setMyBio();
mode.setBio(mode.player.gpData, mode.myName, mode.mySkin, mode.whatBro, mode.chatColor, mode.teamColor);
for (var t, n = 0; n < mode.otherPlayers.length; n++)
void 0 !== mode.otherPlayers[n] && null != mode.otherPlayers[n] && (t = mode.otherPlayers[n].gpData.g.myIndex,
mode.otherPlayers[n].gpData = mode.createPlayer(),
mode.otherPlayers[n].gpData.g.myIndex = t,
mode.otherPlayers[n].gpData.p.gravityScale = 0,
gp.gWorld.removeChild(mode.otherPlayers[n].gpData.g),
gp.gWorld.mid.addChild(mode.otherPlayers[n].gpData.g),
mode.setBio(mode.otherPlayers[n].gpData, mode.otherPlayers[n].myName, mode.otherPlayers[n].mySkin, mode.otherPlayers[n].whatBro, mode.otherPlayers[n].chatColor, mode.otherPlayers[n].teamColor));
void 0 === mode.firstTimeMapChange && (mode.firstTimeMapChange = !0);
mode.smallStepTimeId = setTimeout(function() {
document.getElementById("startTime").style.display = "inherit";
document.getElementById("startTime").innerHTML = mode.startTime;
client.runPhysics = !1;
mode.startTimeId = setInterval(function() {
mode.startTime++;
document.getElementById("startTime").innerHTML = mode.startTime;
3 == mode.startTime && (mode.startTime = 0,
client.runPhysics = !0,
clearInterval(mode.startTimeId),
document.getElementById("startTime").style.display = "none");
}, 1e3);
}, 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
const keyboardjs = hack.getters.keyboardjs
for (let i in keyboardjs._listeners) {
if (i != 0) {
delete keyboardjs._listeners[i]
}
}
document.addEventListener("keyup", handleKeyUp)
document.addEventListener("keydown", handleKeyDown)
}
document.body.onkeyup = (event) => {
const key = event.key
switch (key) {
case 'PageUp':
if (!hack.vars.modeIsOn) {
hack.getters.me.p.gravityScale = 1
hack.getters.me.p.collisionResponse = 1
}
break;
case 'PageDown':
if (!hack.vars.modeIsOn) {
hack.getters.me.p.collisionResponse = 1
}
break;
}
}
document.body.onkeydown = (event) => {
const key = event.key;
switch (key) {
case 'Delete':
if (!hack.vars.tpToOtherByClickIsOn) {
hack.vars.tpToOtherByClickIsOn = true
hack.functions.setTpToOther(hack.vars.indexByClick)
} else {
hack.vars.tpToOtherByClickIsOn = false
hack.functions.setTpToOther(false)
}
break
case 'PageUp':
if (!hack.vars.modeIsOn) {
hack.getters.me.p.gravityScale = -1
hack.getters.me.p.collisionResponse = 0
}
break;
case 'PageDown':
if (!hack.vars.modeIsOn) {
hack.getters.me.p.gravityScale = 1
hack.getters.me.p.collisionResponse = 0
}
break;
case 'Control':
hack.getters.mode.makeMeGhost();
break;
case 'F2':
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 'Home':
hack.functions.tpSpawn();
break;
case 'End':
hack.functions.tpDoor();
break;
case 'F9':
if (!hack.vars.MMGIsOn) {
hack.functions.MMGEnable();
hack.logFuncs.logMMGIsOn();
} else {
hack.functions.MMGDisable();
hack.logFuncs.logMMGIsOn();
}
break;
case '`': // Backtick (`)
case 'ё'.toLowerCase(): // Cyrillic Yo (часто на той же клавише, что и Backtick)
if (hack.vars.modeIsOn) {
hack.suppFuncs.setMult();
hack.logFuncs.logSpd();
}
break;
case 'Insert':
case 'NumPad0': // Клавиша 0 на цифровой клавиатуре
hack.functions.setTpToOther(hack.suppFuncs.getIndexByName(prompt('Введите корректный никнейм. Чтобы выйти из интервала нажмите Esc.')));
break;
case 'F4':
if (!hack.vars.immIsOn) {
hack.functions.immEnable();
hack.logFuncs.logImmIsOn();
} else {
hack.functions.immDisable();
hack.logFuncs.logImmIsOn();
}
break;
}
};
function isGrounded() {
// Кэшируем необходимые геттеры и данные
const {
me,
ray,
physics,
gp
} = hack.getters;
const {
division,
meYplus
} = hack.playerMoveData;
const meX = me.getX();
const meY = me.getY();
const gpPWorld = gp.pWorld;
const rayResult = me.ray.result;
// Сброс точки попадания
const rayHitPoint = ray.hitPoint = [Infinity, Infinity];
// Предварительные вычисления
const verticalOffset = 50;
const checkYPosition = meY + meYplus;
const startYPosition = physics.yAxis(checkYPosition, 0);
const endYPosition = physics.yAxis(checkYPosition + verticalOffset, 0);
const leftX = meX - 15;
const step = 30 / division;
// Пробегаем по ряду лучей от левого до правого края игрока
for (let i = 0; i <= division; i++) {
const currentX = leftX + i * step;
const xPos = physics.xAxis(currentX, 0);
// Задаём начальную и конечную точки луча
ray.from = [xPos, startYPosition];
ray.to = [xPos, endYPosition];
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.playerMoveData.meYplus = 45;
// Константы для дэшинга
const dashCooldown = 250;
const dashDistance = 2.5;
const dashSpeed = 25;
const dashDuration = (dashDistance / dashSpeed) * 1000; // в мс
// Вспомогательная функция для старта дэша
function startDash(type, currentTime, grounded) {
hack.playerMoveData.lastDashTime = currentTime;
if (type === 'Down') {
hack.playerMoveData.isDashingDown = true;
} else if (type === 'Up') {
hack.playerMoveData.isDashingUp = true;
} else if (type === 'Horizontal') {
hack.playerMoveData.isDashing = true;
hack.playerMoveData.dashVelocity = dashSpeed * hack.playerMoveData.lastHorizontalDirection;
}
hack.playerMoveData.dashDuration = dashDuration;
hack.playerMoveData.dashEndTime = currentTime + dashDuration;
if (!grounded) {
hack.playerMoveData.airDashAvailable = false;
}
}
// Вспомогательная функция для обновления движения во время дэша
function updateDash(type, currentTime) {
const player = hack.getters.mode.player.gpData.p;
const me = hack.getters.me.p;
if (type === 'Down') {
player.velocity[1] = -dashSpeed;
player.velocity[0] = 0;
} else if (type === 'Up') {
player.velocity[1] = dashSpeed;
player.velocity[0] = 0;
} else if (type === 'Horizontal') {
player.velocity[0] = hack.playerMoveData.dashVelocity;
player.velocity[1] = 0;
}
// Отключаем стандартную реакцию столкновений во время дэша
me.collisionResponse = false;
if (currentTime >= hack.playerMoveData.dashEndTime) {
if (type === 'Down') {
hack.playerMoveData.isDashingDown = false;
player.velocity[1] = 0;
} else if (type === 'Up') {
hack.playerMoveData.isDashingUp = false;
player.velocity[1] = 0;
} else if (type === 'Horizontal') {
hack.playerMoveData.isDashing = false;
player.velocity[0] = 0;
}
if (!hack.vars.modeIsOn) {
me.collisionResponse = true;
}
}
}
// Основной цикл обновления движения
hack.getters.client.loopFunctions[2].fun = function() {
const currentTime = Date.now();
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 &&
currentTime - hack.playerMoveData.lastDashTime >= dashCooldown &&
(grounded || hack.playerMoveData.airDashAvailable)
) {
if (hack.getters.mode.moveDown && !hack.playerMoveData.isDashingDown) {
startDash('Down', currentTime, grounded);
} else if (hack.getters.mode.moveUp && !hack.playerMoveData.isDashingUp) {
startDash('Up', currentTime, grounded);
} else if (!hack.playerMoveData.isDashing) {
startDash('Horizontal', currentTime, grounded);
}
}
// Обновление дэш-движения
if (hack.playerMoveData.isDashingDown) {
updateDash('Down', currentTime);
return;
} else if (hack.playerMoveData.isDashingUp) {
updateDash('Up', currentTime);
return;
} else if (hack.playerMoveData.isDashing) {
updateDash('Horizontal', currentTime);
return;
} else {
// Обычное горизонтальное движение
const player = hack.getters.mode.player.gpData.p;
if (hack.getters.mode.moveRight) {
hack.getters.mode.moveLeft = false
player.velocity[0] = hack.vars.lrSpd * hack.vars.mult;
} else if (hack.getters.mode.moveLeft) {
hack.getters.mode.moveRight
player.velocity[0] = -hack.vars.lrSpd * hack.vars.mult;
}
}
/*
// Обработка прыжка и двойного прыжка
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.keyBindings.isZPressed) {
hack.keyBindings.isZPressed = false;
if (grounded) {
// Прыжок с земли: прыгаем и разрешаем двойной прыжок
hack.getters.velocity[1] = 8 * hack.getters.me.p.gravityScale;
hack.playerMoveData.isDoubleJumpAllowed = true;
} else if (hack.playerMoveData.isDoubleJumpAllowed) {
// Двойной прыжок в воздухе: прыгаем и запрещаем дальнейшие прыжки в воздухе
hack.getters.velocity[1] = 8 * hack.getters.me.p.gravityScale;
hack.playerMoveData.isDoubleJumpAllowed = false;
}
}
// Если игрок на земле, всегда разрешаем двойной прыжок
if (grounded) {
hack.playerMoveData.isDoubleJumpAllowed = true;
}
// Обработка движения в режиме "призрака"
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.playerMoveData.meYplus = 49
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
}
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
}
addEventListener("mousewheel", e => {
window.tweenObjects.map(x => {
try {
if (e.shiftKey) {
hack.getters.mode.player.gpData.p.velocity[0] = -Math.sign(e.deltaY) * 15;
} else {
hack.getters.mode.player.gpData.p.velocity[1] = -Math.sign(e.deltaY) * 15;
}
} catch (err) {
console.error(err);
}
});
});
window.window = this
function teleportToClick(event) {
event.preventDefault()
const gameWidthFactor = window.innerWidth / hack.getters.mode.horizontalFOV
const gameHeightFactor = window.innerHeight / (hack.getters.mode.horizontalFOV * (window.innerHeight / window.innerWidth))
const targetX = (hack.getters.me.g.x + (event.clientX - window.innerWidth / 2) / gameWidthFactor) / 100;
const targetY = -(hack.getters.me.g.y - hack.getters.me.shapes[1].getHeight() / 2 + (event.clientY - window.innerHeight / 2) / gameHeightFactor) / 100
hack.getters.me.p.position[0] = targetX
hack.getters.me.p.position[1] = targetY
}
document.addEventListener("contextmenu", teleportToClick)
}
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[38].exports
},
get gf() {
return temp1[42].exports
},
get gp() {
return temp1[43].exports
},
get graphics() {
return temp1[44].exports
},
get mode() {
return temp1[48].exports
},
get envirData() {
return temp1[53].exports
},
get network() {
return temp1[74].exports
},
get physics() {
return temp1[370].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
},
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) {
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: {
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 key = event.key;
switch (key) {
case 'PageUp':
if (!hack.vars.modeIsOn) {
hack.getters.me.p.gravityScale = -1
hack.getters.me.p.collisionResponse = 0
}
break;
case 'PageDown':
if (!hack.vars.modeIsOn) {
hack.getters.me.p.gravityScale = 1
hack.getters.me.p.collisionResponse = 0
}
break;
case 'F2':
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 '`': // Backtick (`)
case 'ё'.toLowerCase(): // Cyrillic Yo (часто на той же клавише, что и Backtick)
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
}
}
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
}
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
}
addEventListener("mousewheel", e => {
window.tweenObjects.map(x => {
try {
if (e.shiftKey) {
hack.getters.mode.player.gpData.p.velocity[0] = -Math.sign(e.deltaY) * 15;
} else {
hack.getters.mode.player.gpData.p.velocity[1] = -Math.sign(e.deltaY) * 15;
}
} catch (err) {
console.error(err);
}
});
})
}
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 (sandboxURL.includes(window.location.href)) {
sandboxHack();
} else if (twoPlayerURL.includes(window.location.href)) {
twoPlayerHack();
} else if (hideAndSeekURL.includes(window.location.href)) {
hideAndSeekHack();
}