// ==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();
Krunker.IO Aimbot & ESP (Clean, No-ADS etc...) - Pastebin.com (2024)
Top Articles
Utilization Management | Aetna
Chime Bank Referral Bonus | Up To $1,000 In FREE Money - Loud Money Moves
Traverse City Tv Listings
Oncology Live CME - Webinar Series - UC San Diego Continuing Professional Development
Miami Heat Newsnow
Ancient Altar Balthazar
Mason Core Requirements
Spectre Stitchfix Com
Sams Gas Price Columbia Sc
Over 140,000 Amazon Purchasers Have Already Given This AirTag 5-Star Reviews
hhh4 function - RDocumentation
hhh4_plot function - RDocumentation
Latest Posts
Article information
Author: Lidia Grady
Last Updated:
Views: 6152
Rating: 4.4 / 5 (45 voted)
Reviews: 84% of readers found this page helpful
Author information
Name: Lidia Grady
Birthday: 1992-01-22
Address: Suite 493 356 Dale Fall, New Wanda, RI 52485
Phone: +29914464387516
Job: Customer Engineer
Hobby: Cryptography, Writing, Dowsing, Stand-up comedy, Calligraphy, Web surfing, Ghost hunting
Introduction: My name is Lidia Grady, I am a thankful, fine, glamorous, lucky, lively, pleasant, shiny person who loves writing and wants to share my knowledge and understanding with you.