Greasy Fork

KRUNKER.IO AIMBOT, XRAY, SPINBOT, WIREFRAME, FOV BOX, AND 3RD PERSON BY DOGEWARE

Krunker's Mod Menu Aimbot targets nearest VISIBLE player. Adjust Smoothing for precision. Use Xray to see through walls, wireframe for players & world, and more

目前为 2024-03-29 提交的版本。查看 最新版本

// ==UserScript==
// @name         KRUNKER.IO AIMBOT, XRAY, SPINBOT, WIREFRAME, FOV BOX, AND 3RD PERSON BY DOGEWARE
// @namespace    http://tampermonkey.net/
// @version      0.3
// @description  Krunker's Mod Menu Aimbot targets nearest VISIBLE player. Adjust Smoothing for precision. Use Xray to see through walls, wireframe for players & world, and more
// @author       DOGEWARE
// @match        *://krunker.io/*
// @match        *://browserfps.com/*
// @icon         https://media.giphy.com/media/CxYGmxv0Oyz4I/giphy.gif
// @grant        none
// @require      https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js
// @antifeature  ads
// ==/UserScript==
const THREE = window.THREE;
const urlParams = new URLSearchParams(window.location.search)
let key = urlParams.get('key');
const Start = ["H7", "J6", "P9", "H8"]
const End = ["BJ8", "C8Y", "PLOG", "C149"]
const x = 2
let usedKey = localStorage.getItem('key')
const alertMsg = `⚠️ Invalid Key Alert ⚠️

This script now requires our license key for activation. To obtain the key, please visit our official page at dogescripts.pages.dev. This process only takes a few seconds and needs to be done about twice a day.

🛑 Please Note: The site is currently in the testing phase, and your cooperation is highly appreciated. Thank you for your understanding!
`
const ChanceToReload = Math.floor(Math.random() * 4) + 1
if(key !== null) {
	localStorage.setItem('key', key)
}
if(localStorage.getItem('key') === null) {
	alert(alertMsg)
	location.href = `https://dogescripts.pages.dev/games/?script=${location.hostname}`
	return
} else {
	console.log(ChanceToReload)
	if(ChanceToReload === x) {
		alert(alertMsg, usedKey)
		location.href = `https://dogescripts.pages.dev/games/?script=${location.hostname}`
		return
	}
}
let isValidKey = false;
switch(isValidKey) {
	case true:
		alert("Dont Modify This Script")
		return
	case null:
		alert("Dont Modify This Script")
		return
}
try {
	for(const startStr of Start) {
		if(key.startsWith(startStr)) {
			for(const endStr of End) {
				if(key.endsWith(endStr)) {
					isValidKey = true
					break;
				}
			}
			break;
		}
	}
} catch {
	isValidKey = true
}
if(isValidKey) {
	console.log('Vaild Key')
} else {
	return;
}
let WorldScene;
let intersections;
let DOGEWARE = {
	player: {
		wireframe: false,
		opacity: 0.5
	},
	spinbot: {
		on: false,
		speed: 0.1,
		spinAngle: 0
	},
	xray: {
		on: false,
		layer: 2,
		opacity: 0.3
	},
	Camera: {
		on: true,
		x: 0,
		y: 0,
		z: 0
	},
	aimbot: {
		on: true,
		smoothingFactor: 0.99,
		onfov: false,
		size: 0.15,
	},
	scene: {
		wireframe: false
	},
}
let norms = {
	allowTarget: true,
	console: console.log,
	injectTime: 3000
}
const temporaryVector3 = new THREE.Vector3()
const placeholderObj = new THREE.Object3D()
placeholderObj.rotation.order = 'YXZ'
const origialArrayPush = Array.prototype.push
const getMainScene = function(object) {
	if(object && object.parent && object.parent.type === "Scene" && object.parent.name === "Main") {
		WorldScene = object.parent;
		Array.prototype.push = origialArrayPush;
	}
	return origialArrayPush.apply(this, arguments);
};

function Inject() {
	requestAnimationFrame.call(window, Inject);
	if(!WorldScene) {
		window.setTimeout(() => {
			Array.prototype.push = getMainScene;
		}, norms.injectTime)
	}
	const entities = []
	let myController
	let Player2Target = Infinity
	let RangeFactor = 9999
	for(const child of WorldScene.children) {
		if(child.material) {
			child.material.wireframe = DOGEWARE.scene.wireframe
			child.material.blending = DOGEWARE.xray.on ? 2 : 1
		}
	}
	WorldScene.children.forEach(child => {
		if(child.type === 'Object3D') {
			try {
				const Camera = child.children[0]?.children[0]
				if(Camera && Camera.type === 'PerspectiveCamera') {
					myController = child
				} else {
					entities.push(child)
				}
			} catch {}
		}
	});
	if(!myController) {
		Array.prototype.push = getMainScene
		return
	}
	placeholderObj.matrix.copy(myController.matrix)
		.invert()
	entities.forEach(player => {
		const playerPosition = player.position
		const controllerPosition = myController.position
		if(playerPosition.x !== controllerPosition.x || playerPosition.z !== controllerPosition.z) {
			const dist = playerPosition.distanceTo(controllerPosition)
			if(dist < RangeFactor) {
				Player2Target = player
				RangeFactor = dist
			}
		}
	});
	temporaryVector3.setScalar(0);
	if(DOGEWARE.spinbot.on) {
		DOGEWARE.spinbot.spinAngle += DOGEWARE.spinbot.speed
		const targetRotationY = DOGEWARE.spinbot.spinAngle % (Math.PI * 2)
		myController.children[0].rotation.y += (targetRotationY - myController.children[0].rotation.y) * DOGEWARE.aimbot.smoothingFactor
	}
	myController.layers.mask = 1
	try {
		Player2Target.children[0].children[0].localToWorld(temporaryVector3)
	} catch {}
	myController.children[0].position.y = DOGEWARE.Camera.y
	myController.children[0].position.x = DOGEWARE.Camera.x
	myController.children[0].position.z = DOGEWARE.Camera.z
	if(typeof myController !== 'undefined' && typeof Player2Target !== 'undefined' && norms.allowTarget) {
		const raycaster = new THREE.Raycaster()
		const direction = new THREE.Vector3()
		const myPlayerPosition = new THREE.Vector3()
		myController.getWorldPosition(myPlayerPosition)
		if(DOGEWARE.aimbot.onfov) {
			direction.subVectors(Player2Target.position, myPlayerPosition).normalize()
			const frontDirection = new THREE.Vector3(0, 0, myController.rotation.z)
			const angleOffset = DOGEWARE.aimbot.size
			const axis = new THREE.Vector3().crossVectors(frontDirection, direction).normalize()
			const angle = Math.acos(frontDirection.dot(direction))
			const quaternion = new THREE.Quaternion().setFromAxisAngle(axis, angleOffset)
			const fanOutDirection = direction.clone().applyQuaternion(quaternion).normalize()
			raycaster.set(myPlayerPosition, fanOutDirection)
			raycaster.near = 0.05
			raycaster.far = 1000
			norms.allowTarget = true;
			intersections = raycaster.intersectObject(Player2Target, true);
		} else {
			const raycaster = new THREE.Raycaster()
			const direction = new THREE.Vector3()
			const myPlayerPosition = new THREE.Vector3()
			myController.getWorldPosition(myPlayerPosition)
			raycaster.set(myPlayerPosition, direction.subVectors(Player2Target.position, myPlayerPosition).normalize())
			raycaster.near = 0.1
			raycaster.far = 100
			norms.allowTarget = true
			intersections = raycaster.intersectObject(Player2Target, true)
		}
		try {
			if(intersections[0].object.material && intersections[0].object) {
				const material = intersections[0].object.material
				intersections[0].object.renderOrder = 9999
				material.transparent = true;
				norms.console(intersections[0].object.renderOrder)
				material.wireframe = DOGEWARE.player.wireframe
				material.opacity = DOGEWARE.player.opacity
			} else {}
		} catch {}
		if(intersections[0].object && norms.allowTarget) {
			if(DOGEWARE.aimbot.on) {
				placeholderObj.position.copy(myController.position)
				placeholderObj.lookAt(temporaryVector3)
				norms.allowTarget = true
				const targetRotationX = -placeholderObj.rotation.x;
				const targetRotationY = placeholderObj.rotation.y + Math.PI
				myController.children[0].rotation.x += (targetRotationX - myController.children[0].rotation.x) * DOGEWARE.aimbot.smoothingFactor
				myController.rotation.y += (targetRotationY - myController.rotation.y) * DOGEWARE.aimbot.smoothingFactor
				norms.console('Player2Target is visible to myPlayer.')
				norms.console(myController)
			}
		} else {
			norms.allowTarget = false
		}
	} else {}
}

function createMenuItem() {
	const styleTag = document.createElement('style')
	styleTag.textContent = `
        .menuHeaderText1{
          font-size: 35px;
          font-weight: 900;
              text-align: center !important;
          animation: rgbAnimation 0.5s infinite alternate; /* Adding the animation */
          }
        .menuItemTitle1 {
          font-size: 18px;
          animation: rgbAnimation 0.5s infinite alternate; /* Adding the animation */
        }
        @keyframes rgbAnimation {
          0% { color: rgb(255, 0, 0); }
          25% { color: rgb(255, 255, 0); }
          50% { color: rgb(0, 255, 0); }
          75% { color: rgb(0, 255, 255); }
          100% { color: rgb(255, 0, 255); }
        }
        .menuItem1:hover img{
          transform: scale(1.1);
        }
      `;
	document.head.appendChild(styleTag)
	const menuItemDiv = document.createElement('div')
	menuItemDiv.classList.add('menuItem')
	menuItemDiv.classList.add('menuItem1')
	menuItemDiv.setAttribute('onmouseenter', 'playTick()');
	menuItemDiv.setAttribute('onclick', 'playSelect()');
	const iconSpan = document.createElement('span')
	iconSpan.innerHTML = `<img src="https://media.giphy.com/media/CxYGmxv0Oyz4I/giphy.gif" width='60' height='60'>`
	iconSpan.style.color = '#ff6a0b';
	const titleDiv = document.createElement('div')
	titleDiv.classList.add('menuItemTitle1')
	titleDiv.classList.add('menuItemTitle')
	titleDiv.id = 'menuBtnProfile';
	titleDiv.style.fontSize = '18px';
	titleDiv.textContent = 'CH3ATS';
	menuItemDiv.addEventListener('click', openCheats)
	menuItemDiv.appendChild(iconSpan);
	menuItemDiv.appendChild(titleDiv);
	const menuItemContainer = document.getElementById('menuItemContainer')
	if(menuItemContainer) {
		menuItemContainer.appendChild(menuItemDiv)
	} else {
		alert('Error: #menuItemContainer not found.')
	}
}
setTimeout(function() {
	createMenuItem()
}, 700)
setTimeout(function() {
	if(document.getElementById('mapInfo') && !document.getElementById('mapInfo')
		.innerText.includes("All")) {
		//location.href = `https://${location.hostname}/`;
	} else {}
}, 4000)
const style = document.createElement('style');
style.innerHTML = `
    #menuContainer {
       position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background-color: #212121;
    padding: 10px;
    border-radius: 10px;
    border: revert-layer;
    z-index: 1000;
    max-width: 400px;
    font-size: 14px;
    line-height: 1.5;
    box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
    }
    #menuContainer *{
      font-family: monospace !important;
       -webkit-font-smoothing: antialiased; /* Apply webkit anti-aliasing */
    font-smoothing: antialiased; /* Standard anti-aliasing */
    }
    #menuContainer label{
    color: white !important;
    font-weight: bold;
    }
    .tab {
        display: flex;
        justify-content: space-around;
        margin-bottom: 10px;
    }
    .tab button {
        background-color: #f0f0f0;
        border: 1px solid #ccc;
        padding: 3px 5px;
        cursor: pointer;
    }
    .tab button.active {
        background-color: #ccc;
    }
    .tabcontent {
        display: none;
        margin-top: 10px;
    }
    .tabcontent.active {
        display: block;
    }
    label {
        display: block;
        margin-bottom: 5px;
    }
    select, input[type="text"] {
        width: calc(100% - 12px);
        padding: 3px;
        margin-bottom: 5px;
    }
    select{
        width: calc(100% - 2px) !important;
    }
  .header {
      position: relative;
      text-align: center;
  }

  .headerContent {
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
  }

  .header h2 {
         margin: 0;
      position: relative;
      bottom: -100px;
  }

  .headerImage {
        width: 100%;
      height: auto;
      margin-top: -50px;
      border-radius: 10px;
          object-fit: cover;
  }
`;
document.head.appendChild(style);
const menuContainer = document.createElement('div')
menuContainer.id = 'menuContainer'
document.body.appendChild(menuContainer)
const header = document.createElement('div')
header.innerHTML = `
   <div class="header">
    <h2 class='menuHeaderText1'>DOGEWARE</h2>
    <img src="https://media.giphy.com/media/fg4EQNbMABa6c/200.gif" alt='Header Image' class='headerImage'>
    </div>
    <b>[O] HIDE</b>
`
menuContainer.appendChild(header)
const tabLinks = document.createElement('div')
tabLinks.classList.add('tab')
menuContainer.appendChild(tabLinks)
const tabContents = {}
const tabNames = Object.keys(DOGEWARE)
tabNames.forEach(tabName => {
	const tabButton = document.createElement('button')
	tabButton.textContent = tabName.charAt(0)
		.toUpperCase() + tabName.slice(1)
	tabButton.addEventListener('click', () => openTab(tabName))
	tabLinks.appendChild(tabButton)
	const tabContent = document.createElement('div')
	tabContent.classList.add('tabcontent')
	menuContainer.appendChild(tabContent)
	tabContents[tabName] = tabContent
	populateTab(tabName)
});
openTab(tabNames[0])

function populateTab(tabName) {
	const tabContent = tabContents[tabName]
	const tabOptions = DOGEWARE[tabName]
	for(const option in tabOptions) {
		if(typeof tabOptions[option] !== 'object') {
			const label = document.createElement('label')
			label.textContent = option.charAt(0)
				.toUpperCase() + option.slice(1)
			tabContent.appendChild(label)
			if(typeof tabOptions[option] === 'boolean') {
				const select = document.createElement('select')
				const optionTrue = document.createElement('option')
				optionTrue.value = 'true'
				optionTrue.textContent = 'Yes'
				const optionFalse = document.createElement('option');
				optionFalse.value = 'false'
				optionFalse.textContent = 'No'
				select.appendChild(optionTrue)
				select.appendChild(optionFalse)
				select.value = tabOptions[option].toString()
				select.addEventListener('change', event => {
					tabOptions[option] = event.target.value === 'true';
				});
				tabContent.appendChild(select)
			} else {
				const inputField = document.createElement('input');
				inputField.type = 'text';
				inputField.value = tabOptions[option]
				inputField.addEventListener('change', event => {
					tabOptions[option] = event.target.value
				});
				tabContent.appendChild(inputField)
			}
		}
	}
}

function openTab(tabName) {
	const tabs = document.querySelectorAll('.tabcontent')
	tabs.forEach(tab => tab.classList.remove('active'))
	const tabButtons = document.querySelectorAll('.tab button')
	tabButtons.forEach(tabButton => tabButton.classList.remove('active'))
	const tabContent = tabContents[tabName]
	tabContent.classList.add('active')
	const tabButton = [...tabLinks.querySelectorAll('button')].find(button => button.textContent === tabName.charAt(0)
		.toUpperCase() + tabName.slice(1))
	tabButton.classList.add('active')
}
const h3Element = document.createElement('h3')
h3Element.style.position = 'absolute'
h3Element.style.top = '60%'
h3Element.style.left = '50%'
h3Element.style.transform = 'translate(-50%, -50%)'
h3Element.style.margin = '0'
h3Element.style.color = 'white'
h3Element.style.fontFamily = 'monospace'
document.body.appendChild(h3Element)
setInterval(function() {
	h3Element.textContent = `Targeting Player: ${intersections[0].distance} : ${intersections[0].name} ${intersections[0].object.type}`
}, 100)

function openCheats() {
	const displayStyle = menuContainer.style.display
	menuContainer.style.display = displayStyle === 'none' ? 'block' : 'none'
}
document.addEventListener('keydown', function(event) {
	if(event.keyCode === 79) {
		const displayStyle = menuContainer.style.display
		menuContainer.style.display = displayStyle === 'none' ? 'block' : 'none'
	}
});
Inject()