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 提交的版本,查看 最新版本

在您安装前,Greasy Fork 希望您知道此脚本声明其包含了一些负面功能。这些功能也许会使脚本作者获利,而不能给您带来任何直接的金钱收益。

此脚本会在您访问的网站中插入广告

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==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()