// ==UserScript== // @name ! ! ! ! ! ! ! ! ! ! ! ! ! ! Kinda Mod // @version UwU // @description Scripted Script // @author nyan ♡ lazen // @match *://sploop.io/* // @run-at document-start // @icon https://media.discordapp.net/attachments/976907841745084447/1084017135224881213/images.png // @require https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js // @namespace https://greasyfork.org/users/1151165 // @downloadURL none // ==/UserScript== Function("(" + ((GM_info) => { var __webpack_modules__ = { 147: module => { module.exports = { i8: "" }; } }; var __webpack_module_cache__ = {}; function __webpack_require__(moduleId) { var cachedModule = __webpack_module_cache__[moduleId]; if (cachedModule !== undefined) { return cachedModule.exports; } var module = __webpack_module_cache__[moduleId] = { exports: {} }; __webpack_modules__[moduleId](module, module.exports, __webpack_require__); return module.exports; } (() => { __webpack_require__.d = (exports, definition) => { for (var key in definition) { if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); } } }; })(); (() => { __webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop); })(); var __webpack_exports__ = {}; (() => { __webpack_require__.d(__webpack_exports__, { sv: () => Sploop, }); const binds = { // hats bull: "KeyU", crystal: "KeyY", boostHat: "KeyM", spikeGear: "KeyG", scuba: "KeyL", tank: "KeyZ", // items wall: "Digit4", spike: "KeyV", trap: "KeyF", mill: "KeyN", platform: "KeyB", QHeal: "KeyQ", bed: "P", cpsBuff: 1, // toggilers autoBreak: false, drawHP: true, weaponR: false, enemyMarker: true, allyMarker: true, myMarker: true, enemyTracer: true, teammatesTracer: true, animalsTracer: true, itemCount: true, antiTrap: true, autoTrap: true, autoSpike: false, autoSync: false, autoResp: false, autoReplace: false, rainbowHealth: false, markersOptimaze: false, autoPush: false, autoUpgrade: true, autoChat: false, legitMod: false, mirrorChat: false, botFollow: "KeyBoard", songLink: "", songText: "" }; localStorage.getItem("KindaSettings") ? null : localStorage.setItem("KindaSettings", JSON.stringify(binds)); const packetsID = { item: 0, move: 1, hat: 5, chat: 7, place: 8, joinGame: 11, angle: 13, upgrade: 14, stopMove: 15, clanAcc: 17, stopAttack: 18, hit: 19, joinClan: 21, clan: 22, clanLeave: 24 }; const hats = { bush: 1, berserker: 2, jungle: 3, crystal: 4, spikeGear: 5, immunity: 6, boostHat: 7, appleHat: 8, scuba: 9, hood: 10, tank: 11 }; const goldPos = { "EU" : { 0: {x: 2060, y: 6255}, 1: {x: 3000, y: 6860}, 2: {x: 7500, y: 6700}, 3: {x: 9000, y: 4630}, 4: {x: 8710, y: 3870}, 5: {x: 8200, y: 2850}, 6: {x: 5220, y: 3860} }, "USA": { 0: {x: 4385, y: 4190}, 1: {x: 4620, y: 4450}, 2: {x: 1920, y: 3840}, 3: {x: 7520, y: 6470}, 4: {x: 9560, y: 5160}, 5: {x: 7280, y: 2885}, 6: {x: 3070, y: 7540} }, "AS": { 0: {x: 7750, y: 3140}, 1: {x: 6240, y: 2830}, 2: {x: 2080, y: 3085}, 3: {x: 1020, y: 3135}, 4: {x: 2315, y: 4450}, 5: {x: 9160, y: 3420} } }; const UPDATE_DELAY = 700; const UPDATE_DELAY1 = 100; let frames = 0; let frames1 = 0; let lastUpdate = 0; let lastUpdate1 = 0; const getBind = (bind) => JSON.parse(localStorage.KindaSettings)[bind]; const displayElement1 = document.createElement("div"); displayElement1.id = "mainSettings"; displayElement1.style = "position:absolute;pointer-events:none;top:15px;width:auto;font-weight:100;left:50%;transform:translateX(-50%);font-size:15px;color:#fff"; displayElement1.textContent = "Loading..."; const updateCounter1 = () => { const today = new Date(); let h = today.getHours(); let m = today.getMinutes(); let s = today.getSeconds(); let milli = today.getMilliseconds(); if (h < 10) h = "0" + h; if (m < 10) m = "0" + m; if (milli < 100) milli = "0" + milli; const now = Date.now(); const elapsed = now - lastUpdate1; if (elapsed < UPDATE_DELAY1) { ++frames1; } else { frames1 = 0; lastUpdate1 = now; displayElement1.textContent = h + ":" + m; }; requestAnimationFrame(updateCounter1); }; lastUpdate1 = Date.now(); requestAnimationFrame(updateCounter1); const displayElement = document.createElement("div"); displayElement.style.padding = "25px"; displayElement.style = "font-size:15px;" displayElement.style.display = "block"; displayElement.style.position = "absolute"; displayElement.style.left = "50%"; displayElement.style.fontWeight = "100"; displayElement.style.transform = "translateX(-50%)"; displayElement.textContent = "Loading..."; displayElement.style.color = "#fff"; displayElement.style.pointerEvents = "none"; displayElement.style.background = "rgba(255, 255, 255, 0)"; const updateCounter = () => { const elapsed = Date.now() - lastUpdate; if (elapsed < UPDATE_DELAY) { ++frames; } else { const fps = Math.ceil(frames / (elapsed / 1000)); frames = 0; lastUpdate = Date.now(); displayElement.textContent = "Fps: " + fps; }; requestAnimationFrame(updateCounter); }; lastUpdate = Date.now(); requestAnimationFrame(updateCounter); let cps = 0; const HUD = document.createElement("div"); HUD.id = 'HUD' HUD.style.position = "relative"; HUD.style.transition = "all 0.5s ease"; const playersCount = document.createElement('span'); playersCount.style = "position: absolute;z-index: 10;left: 1%;pointer-events:none;top: 10px;font-size: 120%;color: white;font-weight: 100;text-shadow: 1px 1px 5px black, 3px 3px 5px black;" playersCount.innerHTML = 'Loading...'; const cords = document.createElement('span'); cords.style = "position: absolute;z-index: 10;left: 1%;pointer-events:none;top: 37px;font-size: 120%;color: white;font-weight: 100;text-shadow: 1px 1px 5px black, 3px 3px 5px black;" cords.innerHTML = 'Cords: [x: undefined, y: undefined]'; const pingCount = document.createElement('span'); pingCount.style = "position: absolute;z-index: 10;left: 1%;pointer-events:none;top: 64px;font-size: 120%;color: white;font-weight: 100;text-shadow: 1px 1px 5px black, 3px 3px 5px black;" pingCount.innerHTML = 'Ping: unknown'; let cpsCount = document.createElement('span'); cpsCount.style = "position: absolute;z-index: 10;left: 1%;pointer-events:none;top: 91px;font-size: 120%;color: white;font-weight: 100;text-shadow: 1px 1px 5px black, 3px 3px 5px black;" cpsCount.innerHTML = 'CPS: ' + cps; const botCount = document.createElement('span'); botCount.style = "position: absolute;z-index: 10;left: 1%;pointer-events:none;top: 118px;font-size: 120%;color: white;font-weight: 100;text-shadow: 1px 1px 5px black, 3px 3px 5px black;" botCount.innerHTML = 'Bots: 0'; let detectServer, currentServerUrl; const updatePlayersCount = async () => { await fetch("https://sploop.io/servers").then(e => e.text()).then(e => (detectServer = JSON.parse(e))); detectServer.forEach(server => { server.r == currentServerUrl && (playersCount.innerHTML = servers[currentServerUrl] + `: ${server.d[1]}`); }); }; setInterval(() => { updatePlayersCount(); }, 500); window.test = (text) => { console.debug(`%c✏️ ${text}`, 'color: green; font-size: 13px; font-weight: 700;'); }; window.replace = (build) => { if (getBind("autoReplace") && build.type != 0 && build[Sploop.id] != 0 && nearEnemy && nearEnemy.type == 0 && !getBind("legitMod") && Math.hypot(nearEnemy.y - window.myY, nearEnemy.x - window.myX) <= 300 && Math.hypot(build[Sploop.y] - window.myY, build[Sploop.x] - window.myX) <= 150) { const item = build.type == 6 ? 7 : 4; singelItemPlace(item, Math.atan2(build[Sploop.y] - window.myY, build[Sploop.x] - window.myX)); }; }; window.Teamers = []; window.currentUpgrade = []; let myWS, myID, onHand = 0, mouseX, Entity = [], nearEnemy, mouseY, mouseAngle, myPlayer = {}, lastHeal = Date.now(), lastHit = Date.now(), previousHat = 0; let currentHealth = 100; let killCount = {}; let clownCounter = 0; window.jomba = 3; let isAlive = false; let isAlive2 = false; let oldHealth = 100, lastHitDate = Date.now(), healDate = Date.now(); let newHealth = 100; let nearGold; const discordWS = new WebSocket("wss://goawayplsnigga123.glitch.me/"); window.lel = discordWS let ebalai = false; let timeOut = false; let main = false; window.WebSocket = new Proxy(window.WebSocket, { construct(target, args) { const ws = new target(...args); if (!main || currentServerUrl != ws.url.slice(ws.url.indexOf('/') + 2, ws.url.indexOf('.')).toUpperCase()) { myWS = ws; window.myWS = myWS currentServerUrl = ws.url.slice(ws.url.indexOf('/') + 2, ws.url.indexOf('.')).toUpperCase() ws.addEventListener("message", msg => { const data = msg.data; const isString = typeof data === 'string'; const decoded = isString ? JSON.parse(data) : new Uint8Array(data); decoded[0] == 33 && (myID = decoded[1]); if (decoded[0] == 33) console.debug(decoded) if (decoded[0] == 12) { console.debug(decoded) } if (decoded[0] == 28) { if (pushing) { sendPacket([packetsID.stopMove]); pushing = false; } const deadPlayer = decoded[1].slice(7) if (!Object.keys(killCount).includes(deadPlayer)) { killCount[deadPlayer] = 1; } else { killCount[deadPlayer]++; } // !getBind("legitMod") && sendMsg(deadPlayer + " died " + killCount[deadPlayer][0] + " times"); window.josh = killCount; }; if (decoded[0] == 35) { isAlive = true; window.isAlive = true; setTimeout(() => { isAlive2 = true }, 500); window.test("spawned"); }; if (decoded[0] == 19) { const killedBy = window.allPlayers.find(c => c[Sploop.id2] == nearEnemy.id); console.debug(killCount[killedBy]) clownCounter = 0; isAlive = false; isAlive2 = false; window.currentUpgrade = []; }; for (let i = 1; i < decoded.length; i += 18) { const newEnemy = { type: decoded[i], id: decoded[i + 1], hat: decoded[i + 11], teamID: decoded[i + 12], x: decoded[i + 4] | decoded[i + 5] << 8, y: decoded[i + 6] | decoded[i + 7] << 8, index: decoded[i + 2] | decoded[i + 3] << 8, health: Math.ceil(decoded[i + 13] / 255 * 100), angle: decoded[i + 9] / 255 * 6.283185307179586 - Math.PI, broken: decoded[i + 8], whichObjectIn: decoded[i + 8] } if (newEnemy.id === myID) { Object.assign(myPlayer, newEnemy); }; }; if (getBind("autoUpgrade")) { [1, 12, 9, 19, 20, 15, 8, 17, 16].forEach(item => sendPacket([packetsID.upgrade, item])); } const scale = Math.max(window.innerHeight / window.zoomH, window.innerWidth / window.zoomW); const cursorX = (mouseX - window.innerWidth / 2) / scale; const cursorY = (mouseY - window.innerHeight / 2) / scale; cursorAtMap = { x: window.myX + cursorX, y: window.myY + cursorY }; cords.innerHTML = `Cords: [x: ${myPlayer.x}, y: ${myPlayer.y}]`; window.enemys = []; mySpikes = []; if (decoded[0] == 6 && decoded[2] == myPlayer.index) { oldHealth = myPlayer.health newHealth += decoded[1]; healDate = Date.now(); } window.aboba = oldHealth /* if (myPlayer.health < oldHealth) { console.debug('hit') oldHealth = myPlayer.health; newHealth = myPlayer.health; } */ if (myPlayer.health < 100 && !getBind("legitMod")) { if (myPlayer.health < 100 && clownCounter < 4 && Date.now() - healDate > 80) { placeFood(); clownCounter++; //sendMsg("shame count: " + clownCounter); return; }; // && Date.now() - lastHeal > 90 setTimeout(() => { if (myPlayer.health < 100 && clownCounter >= 4 && Date.now() - healDate > 80) { placeFood(); clownCounter -= 2; return; }; }, 70); }; }) } main = true; return ws; } }) const checkChat = () => document.getElementById('chat-wrapper').style.display == "" || document.getElementById('chat-wrapper').style.display == "none"; window.removeTeammate = (id) => { window.test('removed teammate ID:' + id) window.Teamers.splice(id, 1); } window.deleteClan = () => { window.Teamers = []; window.test('clan deleted') }; const entities = { 0: { health: 100 }, 14: { health: 380 }, 23: { health: 380 }, 24: { health: 380 }, 25: { health: 1000 }, 27: { health: 5000 }, 28: { health: 5000 }, 36: { health: 380 }, }; const badWords = { 'suck': function() { sendMsg('✞ You are. ✞'); }, 'auto heal': function() { sendMsg('✞ Yes. ✞'); }, 'hack': function() { sendMsg('✞ Yes and what? ✞'); }, 'noob': function() { sendMsg('✞ You are. ✞'); }, 'gay': function() { sendMsg('✞ And I love you <3. ✞'); }, 'nob': function() { sendMsg('✞ You are. ✞'); }, 'trash': function() { sendMsg('✞ You trash. ✞'); }, 'retard': function() { sendMsg('✞ You retard. ✞'); }, 'ez': function() { sendMsg('✞ You ez ik. ✞'); }, 'share': function() { sendMsg('✞ Pay me then. ✞'); }, 'bitch': function() { sendMsg('✞ Ik you bitch. ✞'); }, 'fuck': function() { sendMsg('✞ Ik fuck you. ✞'); }, 'shit': function() { sendMsg('✞ You shit. ✞'); }, 'cunt': function() { sendMsg('✞ Mhm? ✞'); }, 'ass': function() { sendMsg('✞ Sounds sweet ✞'); }, 'dumb': function() { sendMsg('✞ Btw i have 1000-7 IQ ✞'); }, 'asshole': function() { sendMsg('✞ It hurts( ✞'); } }; let music = [] let songLink = new Audio(getBind("songLink")); window.addText = (element) => { music = element.value.split("\n").filter(e => e != ""); chatCount2 = music.length; binds.songText = music; localStorage.setItem("KindaSettings", JSON.stringify(binds)); }; window.changeLink = (element) => { songLink = element.value; binds.songLink = songLink; songLink = new Audio(getBind("songLink")); localStorage.setItem("KindaSettings", JSON.stringify(binds)); }; let isSongPlaying = false; let chatCount = 0; let chatCount2; setInterval(() => { if (getBind("autoChat")) { if (!isSongPlaying) { isSongPlaying = true; songLink = new Audio(getBind("songLink")) songLink.play(); } sendMsg(getBind("songText")[chatCount]); chatCount++; if (chatCount >= chatCount2) chatCount = 0; } else isSongPlaying = false; }, 2000) window.xd = badWords let gps = [false]; window.checkMsg = (msg, entity) => { if (getBind("legitMod")) return; if (getBind("mirrorChat")) sendMsg(msg); if (entity[Sploop.id] == myPlayer.id && msg.includes(".goto")) { const [, x, y] = msg.split(" ").map(Number); gps = [true, x, y]; }; if (entity[Sploop.id] != myPlayer.id && getBind("autoResp")) { Object.keys(badWords).forEach(word => { if (msg.includes(word)) badWords[word]() }); }; if (entity[Sploop.id] == myPlayer.id && Bots.length) { Bots.forEach(bot => bot.send(new Uint8Array([packetsID.chat, ...encoder.encode(msg)]))); }; }; let isSyncing = false, weaponReloading = false, hatReloading = false; const getDistance = (x1, y1, x2, y2) => Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2)); window.attackAnimation = (type, id, weapon, isObject, entity) => { if (Bots.length) return; try { const entityID = entity[Sploop.id]; entityID == myID && (weaponReloading = true); setTimeout(function() { entityID == myID && (weaponReloading = false); }, window.weapons[window.stats[window.itemBar][onHand]].reload) } catch(err) {} }; let isPlacing = false; window.getEntityData = async (entity, ctx, isTeammate) => { const isMe = entity[Sploop.id] == myID; const entityX = entity[Sploop.x], entityY = entity[Sploop.y]; if (isMe) { window.myX = entityX; window.myY = entityY; }; if (gps[0]) { ctx.beginPath(); ctx.moveTo(window.myX, window.myY); ctx.lineTo(gps[1], gps[2]); ctx.stroke(); } if (Bots.length) return; const entityID = entity[Sploop.id], entityID2 = entity[Sploop.id2], entityWeapon = entity[Sploop.currentWeapon], entityAngle = entity[Sploop.angle]; if (!isMe && !isTeammate && !window.enemys.find(c => c.id == entityID && c.id2 == entityID2)) { window.enemys.push({ id: entityID, id2: entity[Sploop.id2], type: entity.type, inWhichObject: entity[Sploop.inWhichObject], x: entityX, y: entityY }); } else if (!isMe && isTeammate && !window.Teamers.find(c => c[Sploop.id] == entityID)) { window.Teamers.push({ id: entityID, x: entityX, y: entityY }); }; if (window.enemys) nearEnemy = window.enemys.sort((a, b) => Math.hypot(a.y - window.myY, a.x - window.myX) - Math.hypot(b.y - window.myY, b.x - window.myX))[0]; const maxHealth = entities[entity.type].health; const entityHealth = entity[Sploop.health] * maxHealth / 100; const ceilHealth = Math.ceil(entityHealth / 255 * 100); const distation = Math.hypot(window.myX - entityX, window.myY - entityY); if (!isMe) { if (distation <= 90 && getBind("autoTrap") && !isTeammate && window.stats[window.itemBar].includes(9) && entity[Sploop.inWhichObject] != 32 && !getBind("legitMod")) { singelItemPlace(7, Math.atan2(entityY - window.myY, entityX - window.myX)); }; if (getBind("autoSpike") && !isPlacing && distation <= 150) { isPlacing = true; if (myTraps) { let TrapWithEnemy = myTraps.find(c => Math.hypot(c[Sploop.y] - entityY, c[Sploop.x] - entityX) <= 55); if (TrapWithEnemy) { const x = TrapWithEnemy[Sploop.x] - window.myX; const y = TrapWithEnemy[Sploop.y] - window.myY; const dist = Math.hypot(window.myX - TrapWithEnemy[Sploop.x], window.myY - TrapWithEnemy[Sploop.y]); if (dist > 90) { singelItemPlace(4, Math.atan2(y, x) + 1.1); singelItemPlace(4, Math.atan2(y, x) - 1.1); } else { singelItemPlace(4, Math.atan2(y, x) + 2.6); singelItemPlace(4, Math.atan2(y, x) - 2.6); } isPlacing = false; } else isPlacing = false; } }; const primaryWeapon = window.weapons[window.stats[window.itemBar][0]]; if (isAlive && distation - 40 <= primaryWeapon.range && binds.autoSync && !weaponReloading && !isTeammate && (myPlayer.hat == 2 || !hatReloading) && !isSyncing && !inTrap) { isSyncing = true; const entityHat = entity[Sploop.hat]; const weaponDmg = primaryWeapon[Sploop.weaponDamage]; let damage; const damageWithBull = weaponDmg + (weaponDmg / 100) * 25; if (entityHat != 4 && entityHat != 6) { damage = weaponDmg + (weaponDmg / 100) * 25; } else if (entityHat == 4 || entityHat == 6) { damage = damageWithBull - (damageWithBull / 100) * 25; }; if (ceilHealth - damage <= 0) { const isAttacking = window.autoAttack; if (myPlayer.hat != 2) equip(hats.berserker); sendPacket([packetsID.item, 0]); const hitAngle = Math.atan2(entityY - window.myY, entityX - window.myX); const back = mouseAngle; sendPacket([packetsID.place, hitAngle]) hit(hitAngle); changeAngle(back, true); sendPacket([packetsID.item, onHand]); sendPacket([packetsID.stopAttack]); if (isAttacking) { Press("KeyE"); Press("KeyE"); } isSyncing = false; } else isSyncing = false; }; const angle = (Math.atan2(window.myY - entityY, window.myX - entityX) + Math.PI) % (2 * Math.PI); const distance = Math.max(Math.hypot(entityY - window.myY, entityX - window.myX) / 2, 30); const opacity = ((1000 - distance) / 1000) / 3 const x = window.myX + distance * Math.cos(angle); const y = window.myY + distance * Math.sin(angle); let tracerColor; if (entity.type != 0) { tracerColor = "#004980"; } else if (entity.type == 0 && !isTeammate) { tracerColor = "#800000"; } else tracerColor = "#005203"; ctx.save(); ctx.beginPath(); ctx.translate(x, y); ctx.rotate(Math.PI / 4); ctx.rotate(angle); ctx.globalAlpha = opacity; ctx.lineCap = "round" ctx.fillStyle = tracerColor; ctx.moveTo(-12, -12); ctx.bezierCurveTo(-12, -12, -15, 15, 12, 12) ctx.lineTo(25, -25) ctx.fill(); ctx.closePath(); ctx.restore(); }; if (isMe) myPlayer.currentItem = window.weapons[entityWeapon] if (binds.weaponR && entity.type == 0) { const weaponRange = window.weapons[entityWeapon].range; const weaponName = window.weapons[entityWeapon][Sploop.weaponName]; ctx.save(); ctx.beginPath(); ctx.fillStyle = "#0000001A"; ctx.strokeStyle = "#ffffff80"; ctx.lineWidth = 3; if (weaponName == "XBow" || weaponName == "Bow" || weaponName == "Stone Musket" || weaponName == "Pearl") { const weaponX = weaponRange * Math.cos(entityAngle); const weaponY = weaponRange * Math.sin(entityAngle); ctx.moveTo(entityX, entityY) ctx.lineTo(weaponX + entityX, weaponY + entityY); } else { ctx.arc(entityX, entityY, weaponRange, entityAngle - 1.5, entityAngle + 1.5) }; ctx.fill(); ctx.stroke(); ctx.closePath(); ctx.restore(); }; if (binds.drawHP) { ctx.font = "100 20px MV Boli"; ctx.fillText(`${ceilHealth}/${maxHealth}`, entityX - 50, entityY + window.sprites[entity.type][Sploop.radius] + 70); }; // abobus if (binds.autoPush && !inTrap && nearEnemy.type == 0) { const nearTrap = myTraps.find(c => Math.hypot(c[Sploop.y] - nearEnemy.y, c[Sploop.x] - nearEnemy.x) <= 50); if (nearTrap && Math.hypot(nearTrap[Sploop.y] - window.myY, nearTrap[Sploop.x] - window.myX) < 250) { const nearSpike = mySpikes.find(c => Math.hypot(c[Sploop.y] - nearTrap[Sploop.y], c[Sploop.x] - nearTrap[Sploop.x]) <= 140); if (nearSpike) { pushing = true; nearSpike.x = nearSpike[Sploop.x]; nearSpike.y = nearSpike[Sploop.y]; const angleToEnemy = Math.atan2(nearEnemy.y - nearSpike.y, nearEnemy.x - nearSpike.x) let distance = Math.hypot(nearSpike.x - nearEnemy.x, nearSpike.y - nearEnemy.y) + 45; const pushPos = { x: nearSpike.x + (distance * Math.cos(angleToEnemy)), y: nearSpike.y + (distance * Math.sin(angleToEnemy)) }; const abobus = Math.hypot(window.myX - pushPos.x, window.myY - pushPos.y); let angle; if (abobus > 15) { angle = Math.atan2(pushPos.y - window.myY, pushPos.x - window.myX); } else { angle = Math.atan2(nearEnemy.y - window.myY, nearEnemy.x - window.myX); }; ctx.save(); ctx.beginPath(); ctx.lineWidth = 5; ctx.lineCap = "round"; ctx.strokeStyle = "hsla(333, 100%, 35%, 0.5)"; ctx.moveTo(window.myX, window.myY); ctx.bezierCurveTo(nearEnemy.x, nearEnemy.y, pushPos.x, pushPos.y, nearSpike.x, nearSpike.y); ctx.stroke(); ctx.closePath(); ctx.restore(); const pushAngle = 65535 * (angle + Math.PI) / (2 * Math.PI); if (distance < 40) { sendPacket([packetsID.stopMove]); } else sendPacket([packetsID.move, 255 & pushAngle, pushAngle >> 8 & 255]); }; }; }; }; let pushing = false; let mySpikes = []; let myTraps = []; window.drawMarkers = (target, id, ctx, step) => { if (Bots.length) return; const objectID = target[Sploop.id] if (objectID == 0 || binds.markersOptimaze && Math.hypot(target[Sploop.y] - window.myY, target[Sploop.x] - window.myX) >= 400) return; const isSpike = [2, 7, 17].includes(target.type); if (isSpike) { const isMySpike = myID == objectID; if (isMySpike && !mySpikes.find(c => c[Sploop.id2] == target[Sploop.id2])) mySpikes.push(target); } else if (target.type == 6) { const isMyTrap = myID == objectID; if (isMyTrap && !myTraps.find(c => c[Sploop.id2] == target[Sploop.id2])) myTraps.push(target); }; let color; if (objectID != myID && binds.enemyMarker) color = "hsla(30, 100%, 45%, 0.5)"; if (window.Teamers.find(teammate => teammate.id == objectID) && binds.allyMarker) color = "hsla(181, 100%, 35%, 0.5)"; if (objectID == myID && binds.myMarker) color = "hsla(148, 100%, 35%, 0.5)"; if (!color) return; if (target.type == 6) { ctx.beginPath(); ctx.strokeStyle = color; ctx.lineWidth = 7; ctx.arc(0, 0, 43, 0, 2 * Math.PI); ctx.stroke(); ctx.closePath(); } else if (isSpike) { ctx.beginPath(); ctx.strokeStyle = color; ctx.lineWidth = 4; ctx.arc(0, 0, 45, 0, 2 * Math.PI); ctx.stroke(); ctx.closePath(); } else { ctx.beginPath(); ctx.fillStyle = color; ctx.lineWidth = 3; ctx.strokeStyle = 'black'; ctx.arc(0, 0, 9.5, 0, 2 * Math.PI); ctx.fill(); ctx.stroke(); ctx.closePath(); }; }; const sendPacket = (packetID, value) => { isAlive && myWS.send(new Uint8Array(packetID, value)); }; const encoder = new TextEncoder(); const sendMsg = (text) => { sendPacket([packetsID.chat, ...encoder.encode(text)]); }; const placeFood = () => { sendPacket([packetsID.item, onHand]); sendPacket([packetsID.item, 2]); const healAngle = 65535 * (myPlayer.angle + Math.PI) / (2 * Math.PI); sendPacket([packetsID.hit, 255 & healAngle, healAngle >> 8 & 255]); sendPacket([packetsID.stopAttack]); sendPacket([packetsID.item, onHand]); }; const singelItemPlace = (itemID, angle) => { const back = mouseAngle; const angle2 = 65535 * (angle + Math.PI) / (2 * Math.PI); sendPacket([packetsID.item, onHand]); sendPacket([packetsID.item, itemID]); sendPacket([packetsID.hit, 255 & angle2, angle2 >> 8 & 255]); sendPacket([packetsID.stopAttack]); changeAngle(back, true); sendPacket([packetsID.item, onHand]); }; const changeAngle = (angle, isTransformed=false) => { if (isTransformed) { sendPacket([packetsID.angle, 255 & angle, angle >> 8 & 255]); return; } else { const angle2 = 65535 * (angle + Math.PI) / (2 * Math.PI); sendPacket([packetsID.angle, 255 & angle2, angle2 >> 8 & 255]); } }; const hit = (angle) => { const angle2 = 65535 * (angle + Math.PI) / (2 * Math.PI); sendPacket([packetsID.hit, 255 & angle2, angle2 >> 8 & 255]); }; const place = (itemID, angle) => { if (cursorIndex != "game-canvas") return; for (let i = 0; i < binds.cpsBuff; i++) { sendPacket([packetsID.item, onHand]); sendPacket([packetsID.item, itemID]); sendPacket([packetsID.hit, 255 & mouseAngle, mouseAngle >> 8 & 255]); sendPacket([packetsID.stopAttack]); sendPacket([packetsID.item, onHand]); cpsCount.textContent = "CPS : " + cps; cps++; setTimeout(() => cpsCount.textContent = "CPS : " + --cps, 1000) }; }; const equip = (ID) => { if (cursorIndex == "game-canvas" && checkChat() && myPlayer.hat != ID && !hatReloading) { previousHat = myPlayer.hat; sendPacket([packetsID.hat, ID]); sendPacket([packetsID.hat, ID]); if (Bots.length) Bots.forEach(bot => bot.send(new Uint8Array([packetsID.hat, ID])) && bot.send(new Uint8Array([packetsID.hat, ID]))); hatReloading = true; setTimeout(() => hatReloading = false, 300) } }; let _intervalId = undefined; let _isKeyDown = false; const repeater = (key, action, id) => { return { start (keycode) { if (keycode == key) { _isKeyDown = true; if (cursorIndex == "game-canvas" && _intervalId == undefined && checkChat() && !getBind("legitMod")) { _intervalId = setInterval(function() { action(); Bots.length && Bots.forEach(bot => { if (bot.info) { bot.send(new Uint8Array([packetsID.item, id])); bot.send(new Uint8Array([packetsID.hit, 255 & bot.info.transformedAngle, bot.info.transformedAngle >> 8 & 255])); bot.send(new Uint8Array([packetsID.stopAttack])); bot.send(new Uint8Array([packetsID.item, onHand])); } }); !_isKeyDown && (clearInterval(_intervalId), _intervalId = undefined); }, Bots.length ? 110 : 0) } }}, stop (keycode) { keycode == key && (_isKeyDown = false); }}}; let cursorIndex, cursorAtMap = {}; window.addEventListener('mousemove', e => { mouseX = e.pageX; mouseY = e.pageY; const angle = Math.atan2(mouseY - window.innerHeight / 2, mouseX - window.innerWidth / 2); mouseAngle = 65535 * (angle + Math.PI) / (2 * Math.PI); cursorIndex = e.target.id; }); var attackRepeater = undefined; window.addEventListener("mousedown", event => { if (!isAlive || !(event.target instanceof HTMLCanvasElement) || attackRepeater != undefined) return; if (event.which == 3) { attackRepeater = setInterval(() => { sendPacket([2, window.stats[window.itemBar][0]]); const mouseAngle = Math.atan2(mouseY - window.innerHeight / 2, mouseX - window.innerWidth / 2); hit(mouseAngle); sendPacket([packetsID.stopAttack]); sendPacket([2, window.stats[window.itemBar][1]]); }, 1); } else { attackRepeater = setInterval(() => { const mouseAngle = Math.atan2(mouseY - window.innerHeight / 2, mouseX - window.innerWidth / 2); hit(mouseAngle); Bots.length && Bots.forEach(bot => { bot.info && bot.send(new Uint8Array([packetsID.hit, 255 & bot.info.transformedAngle, bot.info.transformedAngle >> 8 & 255])); }); }, 1); } }); window.addEventListener("mouseup", event => { clearInterval(attackRepeater); attackRepeater = undefined; sendPacket([packetsID.stopAttack]); Bots.length && Bots.forEach(bot => { bot.info && bot.send(new Uint8Array([packetsID.stopAttack])); }); }); document.addEventListener("mouseleave", function(event){ if(event.clientY <= 0 || event.clientX <= 0 || (event.clientX >= window.innerWidth || event.clientY >= window.innerHeight)) { clearInterval(attackRepeater); attackRepeater = undefined; sendPacket([packetsID.stopAttack]); } }); let placement = { trap: repeater(binds.trap, () => place(7), 7), spike: repeater(binds.spike, () => place(4), 4), mill: repeater(binds.mill, () => place(5), 5), QHold: repeater(binds.QHeal, () => placeFood(), 2), platform: repeater(binds.platform, () => place(8), 8), }; var copyMove = 0, moving = true; window.addEventListener("keydown", event => { const pressedKey = event.code; if (checkChat() && ["KeyW", "KeyA", "KeyS", "KeyD"].includes(pressedKey)) { if (pressedKey === "KeyW") copyMove |= 1; if (pressedKey === "KeyA") copyMove |= 4; if (pressedKey === "KeyS") copyMove |= 2; if (pressedKey === "KeyD") copyMove |= 8; Bots.forEach(bot => bot.info && bot.send(new Uint8Array([6, copyMove]))); moving = true; } placement.trap.start(pressedKey); placement.spike.start(pressedKey); placement.mill.start(pressedKey); placement.QHold.start(pressedKey); placement.platform.start(pressedKey); switch (pressedKey) { case "Digit1": { Bots.forEach(bot => { bot.info && bot.send(new Uint8Array([packetsID.item, 0])); }) return (onHand = 0); } case "Digit2": { Bots.forEach(bot => { bot.info && bot.send(new Uint8Array([packetsID.item, 1])); }) return (onHand = 1); } case getBind("bush"): return equip(hats.bush); case getBind("bull"): return equip(hats.berserker); case getBind("jungle"): return equip(hats.jungle); case getBind("crystal"): return equip(hats.crystal); case getBind("spikeGear"): return equip(hats.spikeGear); case getBind("immunity"): return equip(hats.immunity); case getBind("boostHat"): return equip(hats.boostHat); case getBind("appleHat"): return equip(hats.appleHat); case getBind("scuba"): return equip(hats.scuba); case getBind("hood"): return equip(hats.hood); case getBind("tank"): return equip(hats.tank); case "Escape": return openMenu(); } }); window.addEventListener("keyup", event => { const pressedKey = event.code; if (checkChat() && ["KeyW", "KeyA", "KeyS", "KeyD"].includes(pressedKey)) { if (pressedKey == "KeyW") copyMove &= -2; if (pressedKey == "KeyA") copyMove &= -5; if (pressedKey == "KeyS") copyMove &= -3; if (pressedKey == "KeyD") copyMove &= -9; Bots.forEach(bot => bot.info && bot.send(new Uint8Array([6, copyMove]))); if (copyMove == 0) moving = false; } placement.trap.stop(pressedKey); placement.spike.stop(pressedKey); placement.mill.stop(pressedKey); placement.QHold.stop(pressedKey); placement.platform.stop(pressedKey); }); const lerp = (start, stop, amt) => amt * (stop - start) + start; const Scale = { Default: { w: 1824, h: 1026 }, lerp: { w: 1824, h: 1026 }, current: { w: 1824, h: 1026 } }; const getMinScale = scale => { let w = Scale.Default.w; let h = Scale.Default.h; while (w > scale && h > scale) { w -= scale; h -= scale; } return { w, h }; }; const zoomHandler = () => { let wheels = 0; const scaleFactor = 75; window.addEventListener("wheel", (event => { if (!(event.target instanceof HTMLCanvasElement) || event.ctrlKey || event.shiftKey || event.altKey) return; const {Default, current, lerp} = Scale; const {w, h} = getMinScale(scaleFactor); const zoom = true && event.deltaY > 0 || false && event.deltaY < 0 ? -scaleFactor : scaleFactor; current.w = Math.max(w, current.w + zoom); current.h = Math.max(h, current.h + zoom); })); }; window.zoomW = Scale.Default.w window.zoomH = Scale.Default.h let context; let _clearRect; const toggleHook = () => { delete context.clearRect; context.clearRect = new Proxy(_clearRect, { apply(target, _this, args) { target.apply(_this, args); Scale.lerp.w = lerp(Scale.lerp.w, Scale.current.w, .06); Scale.lerp.h = lerp(Scale.lerp.h, Scale.current.h, .06); window.zoomW = Scale.lerp.w; window.zoomH = Scale.lerp.h; window.dispatchEvent(new Event("resize")); } }); }; HTMLCanvasElement.prototype.getContext = new Proxy(HTMLCanvasElement.prototype.getContext, { apply(target, _this, args) { const ctx = target.apply(_this, args); if (_this.id === "game-canvas") { context = ctx; _clearRect = ctx.clearRect; toggleHook(); HTMLCanvasElement.prototype.getContext = target; } return ctx; } }); zoomHandler() const TYPEOF = value => Object.prototype.toString.call(value).slice(8, -1).toLowerCase(); const NumberSystem = [ { radix: 2, prefix: "0b0*" }, { radix: 8, prefix: "0+" }, { radix: 10, prefix: "" }, { radix: 16, prefix: "0x0*" } ]; class Regex { constructor(code, unicode) { this.code = code; this.COPY_CODE = code; this.unicode = unicode || false; this.hooks = {}; } static parseValue(value) { try { return Function(`return (${value})`)(); } catch (err) { return null; } } isRegexp(value) { return TYPEOF(value) === "regexp"; } generateNumberSystem(int) { const copy = [ ...NumberSystem ]; const template = copy.map((({prefix, radix}) => prefix + int.toString(radix))); return `(?:${template.join("|")})`; } parseVariables(regex) { regex = regex.replace(/\{VAR\}/g, "(?:let|var|const)"); regex = regex.replace(/\{QUOTE\}/g, "['\"`]"); regex = regex.replace(/ARGS\{(\d+)\}/g, ((...args) => { let count = Number(args[1]), arr = []; while (count--) arr.push("\\w+"); return arr.join("\\s*,\\s*"); })); regex = regex.replace(/NUMBER\{(\d+)\}/g, ((...args) => { const int = Number(args[1]); return this.generateNumberSystem(int); })); return regex; } format(name, inputRegex, flags) { this.totalHooks += 1; let regex = ""; if (Array.isArray(inputRegex)) { regex = inputRegex.map((exp => this.isRegexp(exp) ? exp.source : exp)).join("\\s*"); } else if (this.isRegexp(inputRegex)) { regex = inputRegex.source; } regex = this.parseVariables(regex); if (this.unicode) { regex = regex.replace(/\\w/g, "(?:[^\\x00-\\x7F-]|\\$|\\w)"); } const expression = new RegExp(regex.replace(/\{INSERT\}/, ""), flags); const match = this.code.match(expression); return regex.includes("{INSERT}") ? new RegExp(regex, flags) : expression; } template(type, name, regex, substr) { const expression = new RegExp(`(${this.format(name, regex).source})`); const match = this.code.match(expression) || []; this.code = this.code.replace(expression, type === 0 ? "$1" + substr : substr + "$1"); return match; } match(name, regex, flags, debug = false) { const expression = this.format(name, regex, flags); const match = this.code.match(expression) || []; this.hooks[name] = { expression, match }; return match; } matchAll(name, regex, debug = false) { const expression = this.format(name, regex, "g"); const matches = [ ...this.code.matchAll(expression) ]; this.hooks[name] = { expression, match: matches }; return matches; } replace(name, regex, substr, flags) { const expression = this.format(name, regex, flags); this.code = this.code.replace(expression, substr); return this.code.match(expression) || []; } replaceAll(name, regex, substr, flags) { const expression = this.format(name, regex, "g"); this.code = this.code.replaceAll(expression, substr); return this.code.match(expression) || []; } append(name, regex, substr) { return this.template(0, name, regex, substr); } prepend(name, regex, substr) { return this.template(1, name, regex, substr); } insert(name, regex, substr) { const {source} = this.format(name, regex); if (!source.includes("{INSERT}")) throw new Error("Your regexp must contain {INSERT} keyword"); const findExpression = new RegExp(source.replace(/^(.*)\{INSERT\}(.*)$/, "($1)($2)")); this.code = this.code.replace(findExpression, `$1${substr}$2`); return this.code.match(findExpression); } } const servers = { SFRA: "Sand EU#1 Frankfurt", SFRA2: "EU#2 Frankfurt", SFRA2BIS: "Sand EU#2 Frankfurt", SCA: "USA#1 California", SCA2: "USA#2 California", SGP: 'AS#1 Singapore', SGP2: 'AS#2 Singapore', SGP3: "AS#3 Singapore", SGP3BIS: "AS#3 Singapore", FRA1FFA: 'EU#1 Frankfurt', CA1FFA: "USA#1 California", SGP1FFA: "AS#1 Singapore", CA1EVENT: "USA#1 California", BRSGP: "BR Singapore1", BRSG2: "BR Singapore2", BRSCA: "BR California 1", BRSCA2: "BR California 2", BRFRA: "BR Frankfurt 1", BRFRA2: "BR Frankfurt 2", }; Object.defineProperty(KeyboardEvent, Symbol.hasInstance, { value() { return true; } }); const Press = (Key) => { window.onkeydown({isTrusted: true, target: document.getElementById("game-canvas"), code: Key, constructor: KeyboardEvent}); window.onkeyup({isTrusted: true, target: document.getElementById("game-canvas"), code: Key, constructor: KeyboardEvent}); }; const toRad = (angle) => { while(angle < 0) { angle += 360; } while(angle >= 360) { angle -= 360; } return (angle * Math.PI) / 180; } const toDegree = (angle) =>{ return ((angle * 180) / Math.PI); } let myPlayerInTrap = { "i": undefined, "x": undefined, "y": undefined, "nt": { "x": undefined, "y": undefined, "i": undefined, }, "a": [], } let inTrap; window.autoAttack = false; window.autoBreak = (object, object2) => { if (Bots.length || getBind("legitMod")) return; if (myPlayerInTrap.nt.i) { const myPlayerInCurrentTrap = object2.find(x => x[Sploop.id2] == myPlayerInTrap.nt.i) let TrapAutoAttack = false; window.autoAttack && (TrapAutoAttack = true); if (getBind("autoBreak") && myPlayerInCurrentTrap) { inTrap = true; const angle = Math.atan2(myPlayerInTrap.nt.Ws - window.myY, myPlayerInTrap.nt.Ss - window.myX); if(window.stats[window.itemBar][1] != 15) { // Kinda.myPlayer.target[Kinda.props.angle] = angle; const back = mouseAngle; sendPacket([8, angle]); changeAngle(back); sendPacket([2, window.stats[window.itemBar][0]]); hit(angle); changeAngle(back, true); sendPacket([packetsID.stopAttack]); sendPacket([2, window.stats[window.itemBar][onHand]]); }; if(window.stats[window.itemBar][1] == 15){ // Kinda.myPlayer.target[Kinda.props.angle] = angle; const back = mouseAngle; sendPacket([8, angle]); changeAngle(angle); sendPacket([2, window.stats[window.itemBar][1]]); hit(angle); changeAngle(back, true); sendPacket([packetsID.stopAttack]); sendPacket([2, window.stats[window.itemBar][onHand]]); }; myPlayerInTrap.nt.i = undefined; myPlayerInTrap.nt.Ss = undefined; myPlayerInTrap.nt.Ws = undefined; } if (!myPlayerInCurrentTrap) { if (myPlayer.hat == 11) { let hatInterval = setInterval(() => { myPlayer.hat == 11 ? sendPacket([packetsID.hat, previousHat]) : clearInterval(hatInterval); }, 1); }; const angle = Math.atan2(myPlayerInTrap.nt.Ws - window.myY, myPlayerInTrap.nt.Ss - window.myX); window.stats[window.itemBar].includes(9) && singelItemPlace(7, angle) || singelItemPlace(4, angle) if (TrapAutoAttack) { Press("KeyE") Press("KeyE") } inTrap = false; myPlayerInTrap.nt.i = undefined; myPlayerInTrap.nt.Ss = undefined; myPlayerInTrap.nt.Ws = undefined; } else { myPlayerInTrap.nt.i = myPlayerInCurrentTrap[Sploop.id2]; myPlayerInTrap.nt.Ss = myPlayerInCurrentTrap[Sploop.x]; myPlayerInTrap.nt.Ws = myPlayerInCurrentTrap[Sploop.y]; let dx = Math.abs(myPlayerInTrap.nt.Ss - window.myX), dy = Math.abs(myPlayerInTrap.nt.Ws - window.myY); if (!(dx*dx + dy*dy <= 3500 && dx <= 51 && dy <= 51)) { equip(hats.tank) equip(hats.tank) if (myPlayer.hat == 11) { let hatInterval = setInterval(() => { myPlayer.hat == 11 ? sendPacket([packetsID.hat, previousHat]) : clearInterval(hatInterval); }, 1); }; if (TrapAutoAttack) { Press("KeyE") Press("KeyE") } myPlayerInTrap.nt.i = undefined; myPlayerInTrap.nt.Ss = undefined; myPlayerInTrap.nt.Ws = undefined; inTrap = false; } } } }; window.antiTrap = (object) => { if (Bots.length || getBind("legitMod")) return; // !teammates.find(e => e == object[Kinda.props.ownerID] if(myPlayer.whichObjectIn == 32 && object[Sploop.id] != myID) { const dx = Math.abs(window.myX - object[Sploop.x]), dy = Math.abs(window.myY - object[Sploop.y]); const dx2 = Math.abs(myPlayerInTrap.nt.Ss - window.myX), dy2 = Math.abs(myPlayerInTrap.nt.Ws - window.myY); if ((!myPlayerInTrap.nt.i || (dx*dx + dy*dy < dx2*dx2 + dy2*dy2))) { myPlayerInTrap.nt.i = object[Sploop.id2]; myPlayerInTrap.nt.Ss = object[Sploop.x]; myPlayerInTrap.nt.Ws = object[Sploop.y]; inTrap = true; if (!binds.antiTrap) return; let angle = Math.atan2(-(myPlayerInTrap.nt.Ws - window.myY), -(myPlayerInTrap.nt.Ss - window.myX)); if(window.stats[window.itemBar].includes(9)) { singelItemPlace(7, angle); setTimeout(function(){ singelItemPlace(7, toRad(toDegree(angle) - 75)); setTimeout(function(){ singelItemPlace(7, toRad(toDegree(angle) + 75)); }, 80); }, 80); } else { singelItemPlace(4, angle); setTimeout(function(){ singelItemPlace(4, toRad(toDegree(angle) - 75)); setTimeout(function(){ singelItemPlace(4, toRad(toDegree(angle) + 75)); }, 80); }, 80); } } } } const tokens = []; const getToken = async () => { await fetch(`https://account.sploop.io/login?mail=NYANS_GG_COM${tokens.length}&hash=3cb0f1c5a4a574ff8a8d2aee04cbd1aa`).then(e => e.text()).then(e => tokens.push(JSON.parse(e).token) && getToken()) } getToken() window.tokens = tokens; let Bots = [], botsDist = 85; const wallForm = {}; let multipler = 80; for (let i = 1; i < 50; i++) { const upOrDown = !Boolean(i % 2) const operator = upOrDown ? "+" : "-" let distMultipler = multipler wallForm[i] = { angle: function(x, y) { return eval(`Math.atan2(window.myY - (y ${operator} ${distMultipler}), window.myX - x)`) }, dist: function(x, y) { return eval(`Math.hypot(y - window.myY ${operator} ${distMultipler}, x - window.myX) >= 30`) } } !Boolean(i % 2) ? multipler += 60 : null } const dickForm = { 1: { angle: function(x, y) { return Math.atan2(window.myY - (y + 80), window.myX - x) }, dist: function(x, y) { return Math.hypot(y - window.myY + 80, x - window.myX) >= 30 } }, 2: { angle: function(x, y) { return Math.atan2(window.myY - (y - 60), window.myX - (x - 60)) }, dist: function(x, y) { return Math.hypot(y - window.myY - 60, x - window.myX - 60) >= 30 } }, 3: { angle: function(x, y) { return Math.atan2(window.myY - (y - 60), window.myX - (x + 60)) }, dist: function(x, y) { return Math.hypot(y - window.myY - 60, x - window.myX + 60) >= 30 } }, 4: { angle: function(x, y) { return Math.atan2(window.myY - (y + 150), window.myX - x) }, dist: function(x, y) { return Math.hypot(y - window.myY + 150, x - window.myX) >= 30 } }, }; let botNumber = 1; const makeBot = (botType, serverUrl, isTest) => { const currentBot = Bots.length; const whichServer = serverUrl ? serverUrl : null Bots.push(new WebSocket(whichServer ? serverUrl : myWS.url)); const thisBot = Bots[currentBot]; thisBot.binaryType = 'arraybuffer'; thisBot.addEventListener('close', (error) => { window.test("bot disconnected"); if (botType == "gold") makeBot("gold", thisBot.url); botCount.innerHTML = "Bots: " + Bots.filter(c => c.readyState === 1).length; Bots.filter(c => { c.readyState != 1 && Bots.splice(Bots.indexOf(c), 1); }) // if (Bots.filter(c => c.readyState === 1).length == 0) request.send(JSON.stringify(params + (currentGold + oldGold))) }); thisBot.uncap = async (data) => { let Token = await fetch("https://token.sploop.io/164633?v=" + 1e5 * Math.random()).then(e => e.text()); Token = window.encodeToken(Token, 13, 9, 252); const serverInfo = window.getServerInfo(data[1], window.myToken); thisBot.send(new Uint8Array([packetsID.joinGame, data[1], ...serverInfo, ...Token])); thisBot.near = true; thisBot.alive = false; thisBot.enemys = []; thisBot.clownCount = 0; thisBot.oldX = 0; thisBot.oldY = 0; thisBot.stacked = 0; thisBot.test = true; !botType && (thisBot.numb = botNumber); !botType && botNumber++; const totalBots = Bots.filter(c => c.readyState === 1).length; botCount.innerHTML = `Bots: ${totalBots}`; if (totalBots != 1 && !botType) { if (Number.isInteger(totalBots / 4)) { botsDist += 32; } } window.test("succefully connected") }; thisBot.addEventListener('message', async (msg) => { const isString = typeof msg == "string"; const Data = "string" == typeof msg.data ? JSON.parse(msg.data) : new Uint8Array(msg.data); Data[0] == 33 && (thisBot.id = Data[1]); let isMyUpdate = undefined; if (Data[0] == 20) { for (let e = 1; e < Data.length; e += 18) { if (Data[e + 1] == thisBot.id && Data[e] == 0) { thisBot.info = { health: Data[e + 13] / 255 * 100, teamID: Data[e + 12], x: Data[e + 4] | Data[e + 5] << 8, y: Data[e + 6] | Data[e + 7] << 8, id: Data[e + 1], whichObjectIn: Data[e + 8] }; isMyUpdate = true; break; } else if (botType == "zombie" && !Bots.find(c => c.id == Data[e + 1]) && Data[e + 1] != thisBot.id && Data[e + 1] != myPlayer.id && Data[e] == 0 && !thisBot.enemys.find(c => c.id == Data[e + 1])) { thisBot.enemys.push({ id: Data[e + 1], health: Data[e + 13] / 255 * 100, x: Data[e + 4] | Data[e + 5] << 8, y: Data[e + 6] | Data[e + 7] << 8, }); } } }; if (Data[0] == 35) { thisBot.alive = true; } if (Data[0] == 19) { thisBot.alive = false; } if (Data[0] == 3 && botType == "afk") { if (!ebalai && discordWS.readyState == 1) { ebalai = true; let count = 1; let list = ''; let listNames = []; Data[1].forEach(player => { const aboba = window.allPlayers.find(e => e.Sc == player[0]) listNames.push({name: aboba.fc, gold: aboba.zr}) }) let tempMsv = []; listNames.forEach(e => tempMsv.push(e.name)) const longestNick = tempMsv.reduce((c, v) => c.match(/./gu).length > v.match(/./gu).length ? c : v).match(/./gu).length; for (let i = 1; i < tempMsv.length + 1; i++) { const sus = i - 1; const gold = listNames[sus].gold const nickLength = listNames[sus].name.match(/./gu).length; list += `${i}. ${listNames[sus].name} (${gold})\n` if (!timeOut && gold > 10000) { discordWS.send(JSON.stringify(["rich", listNames[sus].name, gold])) timeOut = true; setTimeout(() => { timeOut = false; }, 180000) } } const whichServ = thisBot.url.slice(thisBot.url.indexOf('/') + 2, thisBot.url.indexOf('.')).toUpperCase() const suba = whichServ == "FRA1FFA" ? "Frank" : whichServ == "CA1FFA" ? "USA" : whichServ == "SGP1FFA" ? "AS" : null; discordWS.send(JSON.stringify([suba, list])) window.lel = discordWS setTimeout(() => { ebalai = false; }, 9000) } } Data[0] == 25 && thisBot.uncap(Data); if (!thisBot.alive || !thisBot.alive && botType == "dick") { if (botType == "afk") { thisBot.send(JSON.stringify([10, "", '0', "FFFFFEEEEGGBBBAAA", '0', '0'])) } else if (botType == "gold") { thisBot.send(JSON.stringify([10, "nyanner's hot dog", localStorage.getItem('skin'), "FFFFFEEEEGGBBBAAA", localStorage.getItem('accessory'), localStorage.getItem('accMail'), localStorage.accToken, '0'])) } else if (botType == "zombie") { thisBot.send(JSON.stringify([10, "Zombie", "5", "FFFFFEEEEGGBBBAAA", localStorage.getItem('accessory'), '0'])) } else if (botType != "dick") { thisBot.send(JSON.stringify([10, localStorage.getItem('nickname'), String(Math.floor(Math.random() * 6)), "FFFFFEEEEGGBBBAAA", localStorage.getItem('accessory'), "NYANS_GG_COM" + botNumber, tokens[botNumber], '0'])); } }; if (!thisBot.info || botType == "afk") return; window.currentUpgrade.forEach(id => { thisBot.info && thisBot.send(new Uint8Array([packetsID.upgrade, id])); }); const mouseAngle2 = Math.atan2(cursorAtMap.y - thisBot.info.y, cursorAtMap.x - thisBot.info.x); const transformedAngle = 65535 * (mouseAngle2 + Math.PI) / (2 * Math.PI); thisBot.info.transformedAngle = transformedAngle; if (thisBot.info) { if (thisBot.info.health < 100 && thisBot.clownCount < 2) { thisBot.send(new Uint8Array([packetsID.item, 2])); thisBot.send(new Uint8Array([packetsID.hit, 255 & thisBot.info.transformedAngle, thisBot.info.transformedAngle >> 8 & 255])); thisBot.send(new Uint8Array([packetsID.stopAttack])); thisBot.send(new Uint8Array([packetsID.item, onHand])); thisBot.clownCount++; return; } setTimeout(() => { if (thisBot.info.health < 100 && thisBot.clownCount >= 2) { thisBot.send(new Uint8Array([packetsID.item, 2])); thisBot.send(new Uint8Array([packetsID.hit, 255 & thisBot.info.transformedAngle, thisBot.info.transformedAngle >> 8 & 255])); thisBot.send(new Uint8Array([packetsID.stopAttack])); thisBot.send(new Uint8Array([packetsID.item, onHand])); thisBot.clownCount -= 2; return; } }, 70) } if (thisBot.info) thisBot.info.teamID == 0 && thisBot.send(new Uint8Array([packetsID.joinClan, myPlayer.teamID])); if (botType == "zombie" && thisBot.alive && Data[0] == 20) { thisBot.send(new Uint8Array([packetsID.chat, ...encoder.encode("Brainsss...")])); [1, 12, 9, 19, 20, 15, 8, 17, 16].forEach(item => thisBot.send(new Uint8Array([packetsID.upgrade, item]))); if (thisBot.enemys) { thisBot.nearEnemy = thisBot.enemys.sort((a, b) => Math.hypot(a.y - thisBot.info.y, a.x - thisBot.info.x) - Math.hypot(b.y - thisBot.info.y, b.x - thisBot.info.x))[0]; if (thisBot.nearEnemy) { if (thisBot.nearEnemy.id != myPlayer.id) { const angleToEnemy = Math.atan2(thisBot.nearEnemy.y - thisBot.info.y, thisBot.nearEnemy.x - thisBot.info.x); const transformedAngle = 65535 * (angleToEnemy + Math.PI) / (2 * Math.PI); thisBot.send(new Uint8Array([packetsID.move, 255 & transformedAngle, transformedAngle >> 8 & 255])); thisBot.send(new Uint8Array([packetsID.hit, 255 & transformedAngle, transformedAngle >> 8 & 255])); thisBot.nearEnemy = undefined; thisBot.enemys = []; } } else if (Data[0] == 20) { thisBot.send(new Uint8Array([packetsID.stopAttack])); thisBot.send(new Uint8Array([packetsID.stopMove])); } } return; } if (botType == "gold" && isMyUpdate && thisBot.alive && thisBot.info) { [13, 12, 9, 19, 18, 15, 8, 16].forEach(item => thisBot.send(new Uint8Array([packetsID.upgrade, item]))); const crnServerURL = thisBot.url.slice(myWS.url.indexOf('/') + 2, thisBot.url.indexOf('.')).toUpperCase() const server = servers[crnServerURL] == "EU#1 Frankfurt" ? goldPos.EU : servers[crnServerURL] == "USA#1 California" ? goldPos.USA : goldPos.AS; const nearGold = Object.values(server).sort((a, b) => Math.hypot(a.y - thisBot.info.y, a.x - thisBot.info.x) - Math.hypot(b.y - thisBot.info.y, b.x - thisBot.info.x))[0]; const distation = Math.hypot(thisBot.info.x - nearGold.x, thisBot.info.y - nearGold.y); let angle = Math.atan2(nearGold.y - thisBot.info.y, nearGold.x - thisBot.info.x); angle = 65535 * (angle + Math.PI) / (2 * Math.PI); thisBot.send(new Uint8Array([packetsID.hit, 255 & angle, angle >> 8 & 255])); if (distation > 120) { thisBot.send(new Uint8Array([packetsID.move, 255 & angle, angle >> 8 & 255])); } else { thisBot.send(new Uint8Array([packetsID.stopMove])); const angle = toRad(toDegree(Math.atan2(nearGold.y - thisBot.info.y, nearGold.x - thisBot.info.x)) - 180) const transformedAngle2 = 65535 * (angle + Math.PI) / (2 * Math.PI); const angle2 = toRad(toDegree(Math.atan2(nearGold.y - thisBot.info.y, nearGold.x - thisBot.info.x)) - 90) const transformedAngle3 = 65535 * (angle2 + Math.PI) / (2 * Math.PI); const angle3 = toRad(toDegree(Math.atan2(nearGold.y - thisBot.info.y, nearGold.x - thisBot.info.x)) + 90) const transformedAngle4 = 65535 * (angle3 + Math.PI) / (2 * Math.PI); thisBot.send(new Uint8Array([packetsID.item, 4])); thisBot.send(new Uint8Array([packetsID.hit, 255 & transformedAngle2, transformedAngle2 >> 8 & 255])); thisBot.send(new Uint8Array([packetsID.stopAttack])); thisBot.send(new Uint8Array([packetsID.item, onHand])); setTimeout(() => { if (Math.hypot(thisBot.info.x - nearGold.x, thisBot.info.y - nearGold.y) > 120) { thisBot.send(new Uint8Array([packetsID.item, 4])); thisBot.send(new Uint8Array([packetsID.hit, 255 & transformedAngle3, transformedAngle3 >> 8 & 255])); thisBot.send(new Uint8Array([packetsID.stopAttack])); thisBot.send(new Uint8Array([packetsID.item, onHand])); } setTimeout(() => { if (Math.hypot(thisBot.info.x - nearGold.x, thisBot.info.y - nearGold.y) > 120) { thisBot.send(new Uint8Array([packetsID.item, 4])); thisBot.send(new Uint8Array([packetsID.hit, 255 & transformedAngle4, transformedAngle4 >> 8 & 255])); thisBot.send(new Uint8Array([packetsID.stopAttack])); thisBot.send(new Uint8Array([packetsID.item, onHand])); } }, 300) }, 300) } return; }; thisBot.info && thisBot.send(new Uint8Array([packetsID.angle, 255 & thisBot.info.transformedAngle, thisBot.info.transformedAngle >> 8 & 255])); //thisBot.send(new Uint8Array([packetsID.move, 255 & thisBot.info.transformedAngle, thisBot.info.transformedAngle >> 8 & 255])) const dist1 = Math.hypot(thisBot.info.y - window.myY, thisBot.info.x - window.myX) if (dist1 >= 600) { const angle = toRad(toDegree(Math.atan2(window.myY - thisBot.info.y, window.myX - thisBot.info.x)) - 180) const transformedAngle2 = 65535 * (angle + Math.PI) / (2 * Math.PI); thisBot.send(new Uint8Array([packetsID.item, 5])); thisBot.send(new Uint8Array([packetsID.hit, 255 & transformedAngle2, transformedAngle2 >> 8 & 255])); thisBot.send(new Uint8Array([packetsID.stopAttack])); thisBot.send(new Uint8Array([packetsID.item, onHand])); } if (botType == "zombie" || botType == "gold") return; if (getBind("botFollow") == "KeyBoard" && dist1 >= botsDist) { const angleToMe = Math.atan2(window.myY - thisBot.info.y, window.myX - thisBot.info.x); const transformedAngle2 = 65535 * (angleToMe + Math.PI) / (2 * Math.PI); if (!moving || dist1 >= 500) thisBot.send(new Uint8Array([packetsID.move, 255 & transformedAngle2, transformedAngle2 >> 8 & 255])); thisBot.near = true; } else if (getBind("botFollow") == "KeyBoard") { if (!moving && thisBot.near) thisBot.send(new Uint8Array([15])); thisBot.near = false; }; if (getBind("botFollow") == "Mouse") { thisBot.send(new Uint8Array([packetsID.move, 255 & transformedAngle, transformedAngle >> 8 & 255])); } if (getBind("botFollow") == "Wall" && thisBot.info) { const angle = wallForm[thisBot.numb].angle(thisBot.info.x, thisBot.info.y); const dist = wallForm[thisBot.numb].dist(thisBot.info.x, thisBot.info.y); if (dist) { const transformedAngle2 = 65535 * (angle + Math.PI) / (2 * Math.PI); if (!moving || dist1 >= 300) thisBot.send(new Uint8Array([packetsID.move, 255 & transformedAngle2, transformedAngle2 >> 8 & 255])); thisBot.near = true; } else if (getBind("botFollow") == "Wall") { if (!moving && thisBot.near) thisBot.send(new Uint8Array([15])); thisBot.near = false; } } if (getBind("botFollow") == "DICK?? (4)") { const angle = dickForm[thisBot.numb].angle(thisBot.info.x, thisBot.info.y); const dist = dickForm[thisBot.numb].dist(thisBot.info.x, thisBot.info.y); if (dist) { const transformedAngle2 = 65535 * (angle + Math.PI) / (2 * Math.PI); if (!moving || dist1 >= 300) thisBot.send(new Uint8Array([packetsID.move, 255 & transformedAngle2, transformedAngle2 >> 8 & 255])); thisBot.near = true; } else if (getBind("botFollow") == "DICK?? (4)") { if (!moving && thisBot.near) thisBot.send(new Uint8Array([15])); thisBot.near = false; } } }); setTimeout(() => { thisBot.send(JSON.stringify([10, localStorage.getItem('nickname'), String(Math.floor(Math.random() * 6)), "FFFFFEEEEGGBBBAAA", localStorage.getItem('accessory'), "NYANS_GG_COM" + botNumber, tokens[botNumber], '0'])); }, 1000) }; window.Bots = Bots; window.makeBot = makeBot; let hue = 0; let defaultHPColor = "#a4cc4f"; setInterval(() => { if (binds.rainbowHealth) { window.myHPColor = `hsl(${hue}, 80%, 50%)`; hue += 0.2; hue >= 360 && (hue = 0); } else { window.myHPColor = defaultHPColor; } }, 20) const modules_Regex = Regex; let Sploop; let fontSize = 30; window.enemys = []; const applyHooks = code => { const Hook = new modules_Regex(code, true); window.COPY_CODE = (Hook.COPY_CODE.match(/^\((.+)\)\(.+\);$/) || [])[1]; Hook.append("EXTERNAL fix", /\(function (\w+)\(\w+\)\{/, `EXTERNAL.__proto__.toString=()=>COPY_CODE;`); Hook.replace("strict", /{QUOTE}use strict{QUOTE};/, ""); Hook.replace('r_a', /(\(\)\.\w{2}\()([a-z]\(\d{3}\))(\,\d{2})/, `$1""$3`); const myData = Hook.match('myPlayer', /=(\w.get\(\w{2}\));\w&&\w\(\)/)[1]; const X = Hook.match('playerX', /\{this\.(\w{2})=\w\|\|0/)[1]; const Y = Hook.match('playerY', /,this\.(\w{2})=\w\|\|0\}/)[1]; const ID = Hook.match('ID', /&&\w{2}===\w\.(\w{2})\){/)[1]; const ID2 = Hook.match('ID2', /-1!==\w+\.(\w+)&&/)[1]; const currentWeapon = Hook.match("crntWeapon", /,\w.(\w{2})===/)[1]; const angle = Hook.match("angle", /;\w.(\w{2})=\w\(\)/)[1]; const weaponName = Hook.match("wpnName", /(\w{2}):"XX/)[1]; const health = Hook.match("health", /(\w{2})<<8;/)[1]; const weaponDamage = Hook.match("wpnDamage", /(\w{2}):32,reload:300/)[1]; const teamID = Hook.match('test', /,\w=\w.(\w{2})\|.+?\<\<8/)[1]; const radius = Hook.match("radius", /(\w{2}):220/)[1]; const [, currentItem, hat] = Hook.match("hat", /\(\w+\.(\w+)\|\w+\.(\w+)<NUMBER{1}\W.+?(\w+)\.(\w+).+?)function/)[3]; const serverList = Hook.match("allPlayers", /\w",\w{2}:\w\?(\w{2}\.\w{2})\[/)[1]; const weaponList = Hook.match("weaponList", /\?Math\.PI\/2.+?(\w\(\))/)[1]; window.itemBar = itemBar; Hook.replace("defaultData", /(\W\w+>NUMBER{1}\W.+?(\w+)\.(\w+).+?)function/, `$1window.stats=$2;window.weapons = ${weaponList};window.sprites = tt();window.allPlayers = ${serverList};function`); let getAutoAttack = Hook.match("autoAttack", /Date\.now.{2},\w{2}=!1\,(\w{2})|Date\[\w\(\d{3}\)\].{2},\w{2}=!1\,(\w{2})/); getAutoAttack = getAutoAttack.filter(Boolean)[1]; const findAutoAttack = new RegExp(`${getAutoAttack}=(\\w)`) const aboba = Hook.match("a", /\w{2}=\w\(3970.+?],(\w)=\w./)[1]; Hook.append("qwes", /t\(570\)\+o;/, `console.debug(r, bt);`); Hook.append("wbty", /w-form-urlencoded"\),/, `console.debug(o);`) Hook.append("awbr", /519\)\]\.visibility="visible"\);/, `console.debug(t);`) Hook.append('autoAttack', findAutoAttack, `;window.autoAttack = $1`) Hook.replace("renderItems", /(\(\w+\.\w+\+\w+,\w+\.\w+\+\w+\).+?\w+\(\).+?\w+\.\w+\.\w+\)([,;]))/, `$1window.drawMarkers(...arguments)$2`); Hook.append('AutoBreak', regex, `;window.autoBreak(${trapDatas[1]}, ${trapDatas[2]})`) Hook.replace('AntiTrap', regex2, `{$1window.antiTrap(${trapDatas[1]});}$2`) Hook.replace("betterAGEBar", /AGE "\+(\w),\d{2},.+?\)/, `KindaMod " + "«" + $1 + "»",24,"#fff","#303030")`) Hook.replace("ColorMats", /\)\,24,\"\#\w{6}\"\)|\)\,24,\w\(\d{3}\)\)/, `),24,"#AE4D57", "#303030")`) Hook.replace("ColorMats", /\)\,24,\"\#\w{6}\"\)|\)\,24,\w\(\d{3}\)\)/, `),24,"#935F3B", "#303030")`) Hook.replace("ColorMats", /\)\,24,\"\#\w{6}\"\)|\)\,24,\w\(\d{3}\)\)/, `),24,"#7B7A91", "#303030")`) Hook.replace("ColorMats", /\"\",24\,\D{9}|\"\",24\,\w\(\d{3}\)/, `"",24,"#FFD700", "#303030"`) Hook.replace("ColorBioms", /(\w{2}:16\*.+?20,\w{2}):"#ece5db"}|(:16\*.+?20,\w{2}):\w\(\d{3}\)}/, `$1:"#A9A9A9"}`) // //Hook.append("HEHE", /f\+=n.Zh.Xh,/, `console.debug(n),`); Hook.replace('ItemChoose', /\w\(\d{3}\),40,\D{6}|"Choose item",40,\D{6}/, `"«Select Item»",40,"#fff","#303030"`); Hook.append('replace', /(\w)\)return;\w\.delete\(\w\);/, `window.replace($2);`) Hook.append('showFullMats', /10},\w{2}\Dfunction\((\w)\){/, `return $2;`) Hook.replace('showFullGold', /(\w)\>\d{7}.*?\+""/, `$1`) Hook.replace('BetterAGEBar', /(\|\|\(\w{2}.\w{2}=\w\(\).\w{2}\().+?\w\(\d{3}\)|(\|\|\(\w{2}.\w{2}=\w\(\).\w{2}\().+?fff"/, `$1"KindaMod «0»",24,"#fff","#303030"`) // Hook.replace('customLoader', /Loading Sploop.io/, `Loading Kinda Mod...`) Hook.replace('customItemObvodka', /23,"#fff"/, `23,"#fff","#303030"`) Hook.replace('customItemObvodka', /eec39d"/, `eec39d", "#303030"`) Hook.replace('customItemInfo', /4f403c/, '4f403c80') Hook.replace('customBar', /F2C39F/, `FFF`) Hook.replace('customBar', /10,"#5D3A37"|10,\w\(\d{3}\)/, `10,"#00000080"`) Hook.replace('customHP', /(,\.18.+?\:).+?\)}/, `$1window.myHPColor)}`) Hook.replace('customHP', /(\.5;.+?\?).+?",/, `$1window.myHPColor : "#ff8000",`) Hook.append("showHoods", /\w+\.\w+!==\w+\)/, `|| true`); Hook.append('attackReload', /\+=NUMBER{5}.+?(\w+)=.+?(\w+)=.+?(\w+)=.+?(\w+)=.+?(\w+)=.+?;/, `window.attackAnimation($2, $3, $4, $5, $6);`) Hook.replace("zoom", /(\w+):NUMBER{1824},(\w+):NUMBER{1026}/, `get $1(){return window.zoomW},get $2(){return window.zoomH}`); Hook.append("checkChat", /Color.+?8,(\w).+?-3\)\),(\w).+?;/, `window.checkMsg($2, $3);`) /* Hook.replace('fpsSmooth', /Mi\(vo,o\)/, `Mi(vo,o / 3)`) Hook.replace("fpsSmooth", /ai\(o\)\),/, `ai(o / 3)),`) Hook.replace("fpsSmooth", /e\.Vh,o\),/, `e.Vh, o / 3),`) */ Hook.append("chat", /,o=t\.code;/, `if (document.getElementById("songChanger").style.display!="none")return;`) Hook.append("blockMouse", /\/\w{2}}function \w{2}\((\w)\)\{/, "if($2.which==3)return;") Hook.replace('customClan', /"\["/, `"✞ "`); Hook.replace('customClan', /"\]"/, `" ✞"`); Hook.replaceAll("font", /"px Baloo Paaji/, `"px Monserrat`); Hook.replace('grid', /1,(\w{2})=!0/, `1, $1=false`) Hook.replace('millMarker', /=false,(\w{2})=!0/, `=false,$1=false`) Hook.replace('enablePing', /42.5\),(\w{2})=!1/, `42.5),$1=true`) Hook.replace('getPing', /((\w).{15};)\w{2}=.{37}\)/, `$1document.querySelector("#HUD > span:nth-child(3)").innerHTML = "Ping: " + $2`) Hook.replace('customClan', /"#96C949","#404040"|"#96C949","#404040"|"#96C949",\w\(\d{3}\)/, `""`); Hook.replace('showIDs', /((\w).\w{2};const \w=\w.\w{2}\|\|\(\w.\w{2}=\w\(\).\w{2}\()(\w).(\w{2})/, `$1 "{" + $2.${Sploop.id} + "} " + $3.$4 `); const botThing = Hook.match('get', /const \w=(\w{2}\(\))\(/)[1]; const botThing1 = Hook.match('get', /window\[\(0,(\w{2}\.\w{2})\)/)[1]; const botThing2 = Hook.match('get', /\)\);(\w)\(\w\[0/)[1]; const botThing3 = Hook.match('get', /(\w\[11\])\(\w,13,9,252\)\);/)[1]; Hook.append('bots', /\].\w\)\}\}function \w{2}\(\)\{/, `window.getServerInfo = ${botThing};window.myToken = window[(0, ${botThing1})("getMemTo")]();window.anotherShit = ${botThing2};window.encodeToken = ${botThing3};`) Hook.append('upgradeDetector', /\],\w{2}\(new Uint8Array\(\[\w{2}\(\).\w{2}\.\w{2},(\w)]\)\),/, `window.currentUpgrade.push($2),`); let args = Hook.match("drawEntityInfo", /-NUMBER{50},.+?function \w+\((ARGS{3})\)\{/)[1]; Hook.append('drawEntityInfo', /width,\w\*\w.height\)|width,\w\*\w\[\w\(\d{3}\)\]\)/, `;try {window.getEntityData(${args});} catch(err) {}`) return Hook.code; } const shittyUI = ["game-bottom-content", "landscape", "game-right-content-main", "game-left-content-main", "google_play", "cross-promo", "bottom-wrap", "discord", "left-content", "top-wrap-left"]; const removeTrash = () => shittyUI.forEach(element => document.getElementById(element).remove()); window.eval = new Proxy(window.eval, { apply(target, _this, args) { const code = args[0]; if (code.length > 1e5) { args[0] = applyHooks(code); window.eval = target; document.title = "KindaMod"; document.body.append(HUD); document.body.appendChild(displayElement1); document.body.appendChild(displayElement); HUD.append(playersCount, cords, pingCount, cpsCount, botCount); const Comfortaa = document.createElement('style'); Comfortaa.innerHTML = `@import "https://fonts.googleapis.com/css2?family=Comfortaa&display=swap";`; document.head.appendChild(Comfortaa); target.apply(_this, args); return; } return target.apply(_this, args); } }); const doc = (element) => document.getElementById(element) window.addEventListener('DOMContentLoaded', function loader (event) { window.test('DOM loaded'); try { addStyles(); localStorage.setItem("keybinds", JSON.stringify({"0":"KeyW","1":"KeyS","2":"KeyD","3":"KeyA","4":"KeyF","5":"KeyQ","6":"Space","7":"KeyR","8":"KeyR","9":"KeyX","10":"KeyE","11":"ArrowUp","12":"ArrowRight","13":"ArrowDown","14":"ArrowLeft","15":"Escape","16":"Enter","17":"KeyL","18":"none"})); removeTrash(); doc("game-middle-main").style = ` left: 5%; transform: scale(0.8); background: rgb(150 67 196 / 20%); border-radius: 0px; box-shadow: rgb(111 65 140) 5px 5px 20px 2px; border-color: rgb(173 84 196 / 20%); bottom: 5vh; ` doc("nav").style = ` scale: 0.8; left: -25%; position: inherit; `; doc("chat").style = ` outline: none; background-color: rgb(159 95 196 / 50%); border: 4px solid rgb(121 60 156 / 50%); padding: 10px; width: 250px; color: white; font-weight: bold; text-shadow: none; box-shadow: none; `; doc("main-content").style.background = "none"; doc("logo").src = "https://media.discordapp.net/attachments/907337754814316565/1059471987526860882/Kinda.png"; doc("logo").style = ` left: -25%; position: inherit; `; removeEventListener("DOMContentLoaded", loader); const wallpaper = document.createElement("img"); wallpaper.src = "https://media.discordapp.net/attachments/907337754814316565/1025108123914092654/illustration-anime-anime-girls-thigh-highs-screenshot-figurine-30624-wallhere.com.jpg"; wallpaper.style = ` position: fixed;background-size: cover;background-repeat: no-repeat;overflow: hidden;z-index: 0; user-select: none; left: 0; top: 0;height: 135%;width: 135%;min-height: 1050px;min-width: 1400px; `; doc("homepage").insertAdjacentElement("afterBegin", wallpaper) } catch(err) {} }); const addStyles = () => { const styleItem = document.createElement("style"); styleItem.type = "text/css"; styleItem.appendChild(document.createTextNode(` .menus { display: block; position: relative; height: 0px; } .menu-title { display: block; width: 100px; height: 35px; padding: 8px 0 0; background: #3c3c3c; text-align: center; color: #ffffff; font-weight: 100; font-size: 15px; transition: 0.3s background-color; } .menu-title:before { content: ""; display: block; height: 0; border-top: 5px solid #9dc852; border-bottom: 0 solid #dddddd; position: absolute; top: 100%; left: 0; z-index: 101; transition: 0.2s 0.2s border-top ease-out, 0.3s border-top-color; } .menu-title:hover:before { border-top-color: #8db842; } .menus:hover > .menu-title:before { border-top-width: 0; transition: 0.2s border-top-width ease-in, 0.3s border-top-color; } .menu-title:after { content: ""; display: block; height: 0; border-bottom: 0 solid #ebebeb; position: absolute; bottom: 0; left: 0; z-index: 101; transition: 0.2s border-bottom ease-in; } .menus:hover > .menu-title:after { border-bottom-width: 5px; transition: 0.2s 0.2s border-bottom-width ease-out; } .menu-dropdown { min-width: 100px; position: absolute; background: #3c3c3c; z-index: 100; transition: 0.5s padding, 0.5s background; } .menu-dropdown:after { content: ""; display: block; height: 0; border-top: 5px solid #ebebeb; position: absolute; top: 100%; left: 0; z-index: 101; transition: 0.5s border-top; } .menus:not(:hover) > .menu-dropdown:after { border-top-color: #dddddd; } .menus:not(:hover) > .menu-title:after { border-bottom-color: #dddddd; } .menu-dropdown > * { overflow: hidden; height: 30px; font-size: 11px; padding: 8px 10px; background: rgba(0,0,0,0); white-space: nowrap; transition: 0.5s height cubic-bezier(.100,.100,.100,1.5), 0.5s padding cubic-bezier(.100,.100,.100,1.5), 0.5s margin cubic-bezier(.100,.100,.100,1.5), 0.5s 0.2s color, 0.2s background-color; } .menu-dropdown > *:hover { background: rgba(0,0,0,0.1); } .menus:not(:hover) > .menu-dropdown > * { visibility: hidden; height: 0; padding-top: 0; padding-bottom: 0; margin: 0; color: rgba(25,25,25,0); transition: 0.5s 0.1s height, 0.5s 0.1s padding, 0.5s 0.1s margin, 0.3s color, 0.6s visibility; z-index: 99; } .hList { position: relative; bottom: 25px; left: 90px; width: 80px; } .hList > * { float: left; } .hList > * + * { margin-left: 0; } .pop-box { box-shadow: none; } #play:hover { transition: all 0.5s ease; background: #7844af; box-shadow: inset 0 -9px 0 rgb(103 48 133 / 70%); } #play { transition: all 0.5s ease; background: #5f328f; box-shadow: inset 0 -9px 0 rgb(78 32 103 / 70%); border-radius: 7px; } #play:active { transition: all 0.5s ease; background: #814fb6; box-shadow: inset 0 -9px 0 rgb(101 47 130 / 70%); } .dark-blue-button { transition: all 0.5s ease; background: #5f328f; box-shadow: inset 0 -9px 0 rgb(78 32 103 / 70%); } .dark-blue-button-3-active { transition: all 0.5s ease; background: #814fb6; box-shadow: inset 0 -9px 0 rgb(101 47 130 / 70%); } .dark-blue-button:hover { transition: all 0.5s ease; background: #7844af; box-shadow: inset 0 -9px 0 rgb(103 48 133 / 70%); } .dark-blue-button-3-active:active { transition: all 0.5s ease; background: #814fb6; box-shadow: inset 0 -9px 0 rgb(101 47 130 / 70%); } .game-mode { transition: all 0.5s ease; border-radius: 7px; } #nickname { transition: all 0.5s ease; border-radius: 5px; } #server-select { transition: all 0.5s ease; border-radius: 5px; background: #5f328f; box-shadow: inset 0 -9px 0 rgb(78 32 103 / 70%); } #server-select:hover { transition: all 0.5s ease; background: #7844af; box-shadow: inset 0 -9px 0 rgb(103 48 133 / 70%); } #server-select:active { transition: all 0.5s ease; background: #814fb6; box-shadow: inset 0 -9px 0 rgb(101 47 130 / 70%); } .pop-close:hover { filter: brightness(1.1); transition: all 0.5s ease; } .pop-close { transition: all 0.5s ease; cursor: url(img/ui/cursor-pointer.png) 6 0, pointer; } .scrollbar::-webkit-scrollbar-thumb { transition: all 0.5s ease; background: #ffffff; border-radius: 0px; border: 4px solid #141414; box-shadow: none; } .scrollbar::-webkit-scrollbar { transition: all 0.5s ease; border-radius: 0px; border: 4px solid #141414 } .background-img-play { background: none; } .side-button:hover { transition: all 0.5s ease; background: #000000; } .green-button { transition: all 0.5s ease; background-color: rgb(172 102 212 / 40%); box-shadow: inset 0 -5px 0 rgb(68 20 118 / 40%); } .green-button:hover { transition: all 0.5s ease; background-color: rgb(175 104 216 / 80%); box-shadow: inset 0 -5px 0 rgb(113 57 171 / 40%); } .green-button:active { transition: all 0.5s ease; background-color: rgb(130 72 163 / 80%); box-shadow: inset 0 -5px 0 rgb(69 30 110 / 40%); } .selector { color: white; display: block; height: 20px; transition: all 0.5s ease; } .selector:hover { background: rgb(0 0 0 / 80%); color: hsl(269deg 48% 65%); cursor: url(img/ui/cursor-pointer.png) 6 0, pointer; transition: all 0.5s ease; transform: scale(1.1); letter-spacing: 0.8px; } .btn { color: #ffffff; border-radius: 5px; font-weight: 100; width: 100px; background: rgb(78 78 78 / 0%); padding: 5px; font-size: 15px; outline: none; border: 2px solid #643597; overflow: hidden; height: 35px; transition: all 0.5s ease 0s; } .btn:hover { cursor: url(img/ui/cursor-pointer.png) 6 0, pointer; transform: scale(1.1); box-shadow: 0 0 20px 1px #643597 } .btn2:hover { cursor: pointer; } .text { color: #643597; font-weight: 500; font-size: 22px; padding-left: 5px; vertical-align: middle; } @keyframes pulse { 0% { -moz-box-shadow: 0 0 0 0 rgba(255,255,255, 0.5); box-shadow: 0 0 0 0 rgba(255,255,255, 0.4); } 70% { -moz-box-shadow: 0 0 0 50px rgba(255,255,255, 0); box-shadow: 0 0 0 50px rgba(255,255,255, 0); } 100% { -moz-box-shadow: 0 0 0 0 rgba(255,255,255, 0); box-shadow: 0 0 0 0 rgba(255,255,255, 0); } } @keyframes btnPulse { 0% { -moz-box-shadow: 0 0 0 0 rgba(100, 53, 151, 1); box-shadow: 0 0 0 0 rgba(100, 53, 151, 1); } 70% { -moz-box-shadow: 0 0 0 50px rgba(100, 53, 151, 0.5); box-shadow: 0 0 0 50px rgba(100, 53, 151, 0); } 100% { -moz-box-shadow: 0 0 0 0 rgba(100, 53, 151, 0); box-shadow: 0 0 0 0 rgba(100, 53, 151, 0); } } .custom-checkbox { z-index: 1; opacity: 0; position: absolute; width: 18px; height: 20px; } .custom-checkbox+label { display: inline-flex; align-items: center; user-select: none; justify-content: center; position: absolute; } select:hover { cursor: pointer; } .custom-checkbox+label::before { content: ''; transition: all 0.3s ease; display: inline-block; width: 1em; height: 1em; flex-shrink: 0; flex-grow: 0; border: 1px solid #643597; border-radius: 0px; margin-right: 0.5em; background-repeat: no-repeat; background-position: center center; background-size: 50% 50%; } .custom-checkbox:checked+label::before { border-color: #643597; background-color: #643597; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e"); } .custom-checkbox:not(:disabled):not(:checked)+label:hover::before { border-color: #643597; } .custom-checkbox:not(:disabled):active+label::before { background-color: #643597; border-color: #643597; } .custom-checkbox:focus:not(:checked)+label::before { border-color: #643597; } .custom-checkbox:disabled+label::before { background-color: #643597; } `)); document.head.appendChild(styleItem); const menu = document.createElement("div"); menu.id = "KindaMenu"; menu.innerHTML = `
✎ KindaSettings
Hat MacroKeyBindsVisualAutoSettingsMultiboxOther
✎ Automatics...
Auto Break
Auto Trap
Auto Spike
Auto Replace
Auto Push
Anti Trap
Auto Response
Auto Upgrade
Auto Sync
Auto Chat
`; document.body.append(menu); const oldFrameUpdate = window.requestAnimationFrame; window.addEventListener("resize", event => { const width = window.innerWidth; const height = window.innerHeight; const scale = Math.min(1, Math.min(width / 824, height / 700)); [...document.querySelectorAll("#binds")].forEach(element => [...element.children].forEach(el => { if (el.textContent.includes("✎")) { el.style.fontSize = `${(scale * 120)}%`; } else { el.style.fontSize = `${(scale * 96)}%`; } })); }); [...document.getElementsByClassName("menu-dropdown")[0].children].forEach(element => { element.addEventListener("mouseup", event => { document.querySelector("#binds > div > ul > li > a > h2").innerHTML = event.target.innerHTML; binds.botFollow = event.target.innerHTML; localStorage.setItem("KindaSettings", JSON.stringify(binds)); }) }); [...document.getElementsByClassName("custom-checkbox")].forEach(element => { const bindName = element.attributes[0].value binds[bindName] = getBind(bindName); element.checked = getBind(bindName); if (bindName == 'fpsBypass' && element.checked) window.requestAnimationFrame = (frame) => setTimeout(frame, 0); element.addEventListener("mouseup", event => { if (bindName == "fpsBypass") { if (!element.checked) { window.requestAnimationFrame = (frame) => setTimeout(frame, 0); } else window.requestAnimationFrame = oldFrameUpdate }; if (bindName == "autoChat" && element.checked) { songLink.pause(); songLink.currentTime = 0; chatCount = 0; } const newPulse = document.createElement("div"); newPulse.style.position = "absolute"; newPulse.style.left = "10px"; newPulse.style.animation = "pulse 2s"; doc(element.attributes[0].nodeValue).append(newPulse); binds[bindName] = !element.checked; localStorage.setItem('KindaSettings', JSON.stringify(binds)); setTimeout(() => {newPulse.remove()}, 2000); }) }); [...document.getElementsByClassName("btn")].forEach(element => { element.addEventListener("click", event => { const x = event.clientX - 27; const y = event.clientY - event.target.offsetTop - 205; const newPulse = document.createElement("div"); newPulse.style = ` position: relative; width: 5px; left: ${x}px; top: ${y}px; overflow: hidden; animation: btnPulse 2s; `; doc(element.attributes[0].nodeValue).append(newPulse); setTimeout(() => {newPulse.remove()}, 2000) }) }); [...document.getElementsByClassName("selector")].forEach(element => { element.addEventListener("mouseup", event => { doc("tabContent"); [...document.getElementById("tabContent").children].forEach(el => { el.style.display = "none"; }); doc(element.attributes[0].nodeValue).style.display = "block"; }) }); window.zaglotus = () => { event.target.value = event.target.value.replaceAll(/[a-zA-Z]/g, '') if (!isNaN(Number(event.data)) && event.data) { binds.cpsBuff = Number(event.target.value); } } [...document.querySelectorAll("#binds")].forEach(element => { element.addEventListener("mouseup", function changeBinds (event) { if (event.target.localName == "button") { const btnName = event.target.attributes[0].value; if (btnName == "connectBot") { makeBot(); return } else if (btnName == "farmBot") { makeBot("gold", "wss://fra1ffa.sploop.io/ws"); makeBot("gold", "wss://ca1ffa.sploop.io/ws"); makeBot("gold", "wss://sgp1ffa.sploop.io/ws"); } else if (btnName == "disconnect") { Bots.forEach(bot => bot.close()) botsDist = 85; } else if (btnName == "zombieBot") { makeBot("zombie", myWS.url); /* makeBot("zombie", "wss://sfra2.sploop.io/ws"); makeBot("zombie", "wss://sca.sploop.io/ws"); makeBot("zombie", "wss://sca2.sploop.io/ws"); makeBot("zombie", "wss://sgp3.sploop.io/ws"); makeBot("zombie", "wss://sgp3bis.sploop.io/ws"); makeBot("zombie", "wss://fra1ffa.sploop.io/ws"); makeBot("zombie", "wss://ca1ffa.sploop.io/ws"); makeBot("zombie", "wss://sgp1ffa.sploop.io/ws"); */ } else if (btnName == "changeSong") { doc("songChanger").style.display = doc("songChanger").style.display == "block" ? doc("songChanger").style.display = "none" : doc("songChanger").style.display = "block"; }; doc(event.target.id).childNodes[0].nodeValue = "..."; this.addEventListener("keyup", function listener2 (event2) { doc(event.target.id).childNodes[0].nodeValue = event2.code; binds[event.target.id] = event2.code; event2.target.blur(); localStorage.setItem('KindaSettings', JSON.stringify(binds)) this.removeEventListener('keyup', listener2); placement = { trap: repeater(binds.trap, () => place(7), 7), spike: repeater(binds.spike, () => place(4), 4), mill: repeater(binds.mill, () => place(5), 5), QHold: repeater(binds.QHeal, () => placeFood(), 2), platform: repeater(binds.platform, () => place(8), 8), } }) } }) }) } const openMenu = () => { if (document.querySelector("#KindaMenu > div").style.left == "-350px") { document.querySelector("#cps").disabled = false; document.querySelector("#KindaMenu > div").style.left = "0px"; HUD.style.left = "350px"; } else { document.querySelector("#cps").disabled = true; document.querySelector("#KindaMenu > div").style.left = "-350px"; HUD.style.left = "0px"; } } })(); }).toString() + `)(${JSON.stringify(GM_info)});`)();