您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Locks aim to the nearest player in krunker.io
当前为
- // ==UserScript==
- // @name Krunker.IO AimLock
- // @namespace http://tampermonkey.net/
- // @version 0.0.41
- // @description Locks aim to the nearest player in krunker.io
- // @author Zertalious (Zert)
- // @match *://krunker.io/*
- // @icon https://www.google.com/s2/favicons?domain=krunker.io
- // @grant none
- // @run-at document-end
- // @require https://unpkg.com/three@latest/build/three.min.js
- // ==/UserScript==
- const tempVector = new THREE.Vector3();
- const tempObject = new THREE.Object3D();
- tempObject.rotation.order = 'YXZ';
- const geometry = new THREE.SphereGeometry( 10 );
- const material = new THREE.MeshLambertMaterial( {
- color: 'red',
- wireframe: true
- } );
- const meshes = [];
- let isActive = true;
- let scene;
- WeakMap.prototype.set = new Proxy( WeakMap.prototype.set, {
- apply( target, thisArgs, args ) {
- if ( args[ 0 ].type === 'Scene' && args[ 0 ].name === 'Main' ) {
- scene = args[ 0 ];
- }
- return Reflect.apply( ...arguments );
- }
- } );
- function animate() {
- window.requestAnimationFrame( animate );
- if ( isActive === false || 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 ) {}
- }
- }
- if ( players.length < 2 ) {
- return;
- }
- let targetPlayer;
- let minDistance = Infinity;
- for ( let i = 0; i < players.length; i ++ ) {
- const player = players[ i ];
- if ( player.position.x === myPlayer.position.x && player.position.z === myPlayer.position.z ) {
- continue;
- }
- if ( player.firstTime !== true ) {
- const mesh = new THREE.Mesh( geometry, material );
- meshes.push( mesh );
- player.add( mesh );
- player.firstTime = true;
- }
- const distance = player.position.distanceTo( myPlayer.position );
- if ( distance < minDistance ) {
- targetPlayer = player;
- minDistance = distance;
- }
- }
- if ( 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;
- }
- animate();
- window.addEventListener( 'keydown', function ( event ) {
- if ( String.fromCharCode( event.keyCode ) === 'G' ) {
- isActive = ! isActive;
- for ( let i = 0; i < meshes.length; i ++ ) {
- meshes[ i ].visible = isActive;
- }
- }
- } );
- const shouldShowAd = window.localStorage.showAd !== false && new URLSearchParams( window.location.search ).get( 'showAd' ) !== 'false';
- 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);
- margin-bottom: 5px;
- }
- .btn:active {
- transform: scale(0.8);
- }
- </style>
- <div class="dialog">${shouldShowAd ? `<big>Loading ad...</big>` : `<div class="close" onclick="this.parentNode.style.display='none';"></div>
- <big>== Aimlocker ==</big>
- <br>
- <br>
- [G] to toggle aimlock
- <br>
- <br>
- By Zertalious
- <br>
- <br>
- <div class="btn" onclick="window.open('https://discord.gg/K24Zxy88VM')">Discord</div>
- <div class="btn" onclick="window.open('https://greasyfork.org/en/users/662330-zertalious', '_blank')">More scripts</div>` }
- </div>`;
- while ( el.children.length > 0 ) {
- document.body.appendChild( el.children[ 0 ] );
- }
- if ( shouldShowAd ) {
- const url = new URL( window.location.href );
- url.searchParams.set( 'showAd', 'false' );
- window.location.href = 'https://adf.ly/10891457/' + url.href;
- }