Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name Krunker.IO Aimbot & ESP
- // @namespace http://tampermonkey.net/
- // @version 0.2.1
- // @description Locks aim to the nearest player in krunker.io and shows players behind walls. Also shows a line between you and them.
- // @author Someone
- // @match *://krunker.io/*
- // @match *://browserfps.com/*
- // @exclude *://krunker.io/social*
- // @exclude *://krunker.io/editor*
- // @icon https://www.google.com/s2/favicons?domain=krunker.io
- // @grant none
- // @run-at document-start
- // @require https://unpkg.com/three@latest/build/three.min.js
- // ==/UserScript==
- let scene;
- const x = {
- document: document,
- querySelector: document.querySelector,
- consoleLog: console.log,
- ReflectApply: Reflect.apply,
- ArrayPrototype: Array.prototype
- };
- const proxied = new Proxy(Array.prototype.push, {
- apply(target, thisArgs, [object]) {
- try {
- if (typeof object === 'object' &&
- typeof object.parent === 'object' &&
- object.parent.type === 'Scene' &&
- object.parent.name === 'Main') {
- scene = object.parent;
- }
- } catch (error) {
- }
- return x.ReflectApply(...arguments);
- }
- });
- const interval = setInterval(function () {
- const el = x.querySelector.call(x.document, '#initLoader');
- if (el && el.style.display === 'none') {
- x.consoleLog('Injecting!');
- x.ArrayPrototype.push = proxied;
- clearInterval(interval);
- }
- }, 1);
- let espEnabled = true;
- let aimbotEnabled = true;
- let aimbotOnRightMouse = true;
- let espLinesEnabled = true;
- const tempVector = new THREE.Vector3();
- const tempObject = new THREE.Object3D();
- tempObject.rotation.order = 'YXZ';
- const geometry = new THREE.EdgesGeometry(new THREE.BoxGeometry(5, 15, 5).translate(0, 7.5, 0));
- const material = new THREE.RawShaderMaterial({
- vertexShader: `
- attribute vec3 position;
- uniform mat4 projectionMatrix;
- uniform mat4 modelViewMatrix;
- void main() {
- gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
- gl_Position.z = 1.0;
- }
- `,
- fragmentShader: `
- void main() {
- gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );
- }
- `
- });
- const line = new THREE.LineSegments(new THREE.BufferGeometry(), material);
- line.frustumCulled = false;
- const linePositions = new THREE.BufferAttribute(new Float32Array(100 * 2 * 3), 3);
- line.geometry.setAttribute('position', linePositions);
- function animate() {
- window.requestAnimationFrame(animate);
- if (scene === undefined) {
- return;
- }
- const players = [];
- let myPlayer;
- for (let i = 0; i < scene.children.length; i++) {
- const child = scene.children[i];
- if (child.type === 'Object3D') {
- try {
- if (child.children[0].children[0].type === 'PerspectiveCamera') {
- myPlayer = child;
- } else {
- players.push(child);
- }
- } catch (err) {
- }
- }
- }
- let counter = 0;
- let targetPlayer;
- let minDistance = Infinity;
- tempObject.matrix.copy(myPlayer.matrix).invert()
- for (let i = 0; i < players.length; i++) {
- const player = players[i];
- if (!player.box) {
- const box = new THREE.LineSegments(geometry, material);
- box.frustumCulled = false;
- player.add(box);
- player.box = box;
- }
- if (player.position.x === myPlayer.position.x && player.position.z === myPlayer.position.z) {
- player.box.visible = false;
- if (line.parent !== player) {
- player.add(line);
- }
- continue;
- }
- linePositions.setXYZ(counter++, 0, 10, -5);
- tempVector.copy(player.position);
- tempVector.y += 9;
- tempVector.applyMatrix4(tempObject.matrix);
- linePositions.setXYZ(
- counter++,
- tempVector.x,
- tempVector.y,
- tempVector.z
- );
- player.visible = espEnabled || player.visible;
- player.box.visible = espEnabled;
- const distance = player.position.distanceTo(myPlayer.position);
- if (distance < minDistance) {
- targetPlayer = player;
- minDistance = distance;
- }
- }
- linePositions.needsUpdate = true;
- line.geometry.setDrawRange(0, counter);
- line.visible = espLinesEnabled;
- if (aimbotEnabled === false || (aimbotOnRightMouse && !rightMouseDown) || targetPlayer === undefined) {
- return;
- }
- tempVector.setScalar(0);
- targetPlayer.children[0].children[0].localToWorld(tempVector);
- tempObject.position.copy(myPlayer.position);
- tempObject.lookAt(tempVector);
- myPlayer.children[0].rotation.x = -tempObject.rotation.x;
- myPlayer.rotation.y = tempObject.rotation.y + Math.PI;
- }
- const value = parseInt(new URLSearchParams(window.location.search).get('showAd'), 16);
- const el = document.createElement('div');
- el.innerHTML = `<style>
- .dialog {
- position: absolute;
- left: 50%;
- top: 50%;
- padding: 20px;
- background: rgba(0, 0, 0, 0.8);
- border: 6px solid rgba(0, 0, 0, 0.2);
- color: #fff;
- transform: translate(-50%, -50%);
- text-align: center;
- z-index: 999999;
- }
- .dialog * {
- color: #fff;
- }
- .close {
- position: absolute;
- right: 5px;
- top: 5px;
- width: 20px;
- height: 20px;
- opacity: 0.5;
- cursor: pointer;
- }
- .close:before, .close:after {
- content: ' ';
- position: absolute;
- left: 50%;
- top: 50%;
- width: 100%;
- height: 20%;
- transform: translate(-50%, -50%) rotate(-45deg);
- background: #fff;
- }
- .close:after {
- transform: translate(-50%, -50%) rotate(45deg);
- }
- .close:hover {
- opacity: 1;
- }
- .btn {
- cursor: pointer;
- padding: 0.5em;
- background: red;
- border: 3px solid rgba(0, 0, 0, 0.2);
- }
- .btn:active {
- transform: scale(0.8);
- }
- .msg {
- position: absolute;
- left: 10px;
- bottom: 10px;
- color: #fff;
- background: rgba(0, 0, 0, 0.6);
- font-weight: bolder;
- padding: 15px;
- animation: msg 0.5s forwards, msg 0.5s reverse forwards 3s;
- z-index: 999999;
- pointer-events: none;
- }
- @keyframes msg {
- from {
- transform: translate(-120%, 0);
- }
- to {
- transform: none;
- }
- }
- </style>
- <div class="msg" style="display: none;"></div>
- <div class="dialog">
- <big>== Aimbot & ESP ==</big>
- <br>
- <br>
- [B] to toggle aimbot
- <br>
- [V] to toggle ESP
- <br>
- [N] to toggle ESP Lines
- <br>
- [L] to toggle aimbot on <br>right mouse hold
- <br>
- [H] to show/hide help
- </div>`;
- const msgEl = el.querySelector('.msg');
- const dialogEl = el.querySelector('.dialog');
- window.addEventListener('DOMContentLoaded', function () {
- while (el.children.length > 0) {
- document.body.appendChild(el.children[0]);
- }
- });
- let rightMouseDown = false;
- function handleMouse(event) {
- if (event.button === 2) {
- rightMouseDown = event.type === 'pointerdown' ? true : false;
- }
- }
- window.addEventListener('pointerdown', handleMouse);
- window.addEventListener('pointerup', handleMouse);
- window.addEventListener('keyup', function (event) {
- switch (event.code) {
- case 'KeyV':
- espEnabled = !espEnabled;
- showMsg('ESP', espEnabled);
- break;
- case 'KeyB':
- aimbotEnabled = !aimbotEnabled;
- showMsg('Aimbot', aimbotEnabled);
- break;
- case 'KeyH':
- dialogEl.style.display = dialogEl.style.display === '' ? 'none' : '';
- break;
- case 'KeyL':
- aimbotOnRightMouse = !aimbotOnRightMouse;
- showMsg('Aimbot On Right Mouse Hold', aimbotOnRightMouse);
- break;
- case 'KeyN':
- espLinesEnabled = !espLinesEnabled;
- showMsg('ESP Lines', espLinesEnabled);
- break;
- }
- });
- function showMsg(name, bool) {
- msgEl.innerText = name + ': ' + (bool ? 'ON' : 'OFF');
- msgEl.style.display = 'none';
- void msgEl.offsetWidth;
- msgEl.style.display = '';
- }
- animate();
Advertisement
Advertisement