您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Cheat for brofist.io
- // ==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();
- }