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.2
// @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
// @run-at       document-end
// @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 = 3
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() * 6) + 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 DOGEWARE = {
    player: {
        wireframe: false,
        opacity: 0.5
    },
    spinbot: {
        on: false,
        speed: 0.1,
        spinAngle: 0
    },
    xray: {
        on: false,
        layer: 2,
        opacity: 0.3
    },
    cameraOffset: {
        on: true,
        x: 0,
        y: 0,
        z: 0
    },
    aimbot: {
        on: true,
        smoothingFactor: 0.7,
        onfov: false,
        size: 0.15,
    },
    scene: {
        wireframe: false
    },
    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;
        }, DOGEWARE.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 === null || undefined) {
        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.cameraOffset.y
    myController.children[0].position.x = DOGEWARE.cameraOffset.x
    myController.children[0].position.z = DOGEWARE.cameraOffset.z
    let intersections;
    if (typeof myController !== 'undefined' &&
        typeof Player2Target !== 'undefined' && DOGEWARE.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
            DOGEWARE.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
            DOGEWARE.allowTarget = true
            intersections = raycaster.intersectObject(Player2Target, true)
        }
        DOGEWARE.console(intersections)
        try {
            if (intersections[0].object.material && intersections[0].object) {
                const material = intersections[0].object.material
                intersections[0].object.renderOrder = 9999
                material.transparent = true;
                DOGEWARE.console(intersections[0].object.renderOrder)
                material.wireframe = DOGEWARE.player.wireframe
                material.opacity = DOGEWARE.player.opacity
            } else {}
        } catch {}
        if (intersections[0].object && DOGEWARE.allowTarget) {
            if (DOGEWARE.aimbot.on) {
                placeholderObj.position.copy(myController.position)
                placeholderObj.lookAt(temporaryVector3)
                DOGEWARE.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
                DOGEWARE.console('Player2Target is visible to myPlayer.')
                DOGEWARE.console(myController)
            }
        } else {
            DOGEWARE.allowTarget = false
            DOGEWARE.console('Player2Target is not visible to myPlayer.')
        }
    } else {
        DOGEWARE.console('myPlayer or Player2Target is not defined or is not an instance of THREE.Object3D.')
    }
}

function createMenuItem() {
    const styleTag = document.createElement('style')
    styleTag.textContent = `
        .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); }
        }
      `;
    document.head.appendChild(styleTag)
    const menuItemDiv = document.createElement('div')
    menuItemDiv.classList.add('menuItem')
    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)
let fovDiv = document.getElementById('fovVisualization')
if (!fovDiv) {
    fovDiv = document.createElement('div')
    fovDiv.id = 'fovVisualization'
    fovDiv.style.position = 'fixed'
    fovDiv.style.width = '250px'
    fovDiv.style.height = '230px'
    fovDiv.style.left = '50%'
    fovDiv.style.top = '50%'
    fovDiv.style.transform = 'translate(-50%, -50%)'
    fovDiv.style.border = '2px solid rgba(255, 0, 0, 0.5)'
    fovDiv.style.background = 'transparent'
    fovDiv.style.pointerEvents = 'none'
    if (DOGEWARE.aimbot.onfov) {
        document.body.appendChild(fovDiv);
    }
}
window.addEventListener('resize', () => {
    fovDiv.style.left = '50%'
    fovDiv.style.top = '50%'
    fovDiv.style.transform = 'translate(-50%, -50%)'
});
const menuContainer = document.createElement('div')
menuContainer.id = 'menuContainer'
menuContainer.style.position = 'fixed'
menuContainer.style.top = '20px'
menuContainer.style.left = '20px'
menuContainer.style.backgroundColor = '#fff'
menuContainer.style.padding = '10px'
menuContainer.style.border = '1px solid #ccc'
menuContainer.style.zIndex = '1000'
menuContainer.style.maxWidth = '200px'
menuContainer.style.fontFamily = 'Arial, sans-serif'
menuContainer.style.fontSize = '12px'
menuContainer.style.lineHeight = '1.5'
menuContainer.style.overflow = 'auto'
document.body.appendChild(menuContainer)
const tabNames = Object.keys(DOGEWARE)
const tabLinks = document.createElement('div')
tabLinks.classList.add('tab')
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)
});
menuContainer.appendChild(tabLinks)
tabNames.forEach(tabName => {
    const tabContent = document.createElement('div')
    tabContent.id = tabName
    tabContent.classList.add('tabcontent')
    menuContainer.appendChild(tabContent)
    populateTab(tabName)
});
openTab(tabNames[0])

function populateTab(tabName) {
    const tabContent = document.getElementById(tabName)
    const tabOptions = DOGEWARE[tabName]
    for (const option in tabOptions) {
        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.text = 'Yes';
            const optionFalse = document.createElement('option')
            optionFalse.value = 'false'
            optionFalse.text = 'No';
            select.appendChild(optionTrue);
            select.appendChild(optionFalse);
            select.value = tabOptions[option].toString()
            select.addEventListener('change', () => {
                tabOptions[option] = select.value === 'true'
            });
            tabContent.appendChild(select);
        } else {
            const inputField = document.createElement('input');
            inputField.type = 'text'
            inputField.value = tabOptions[option]
            inputField.style.width = '100%'
            inputField.addEventListener('change', function(event) {
                tabOptions[option] = event.target.value;
            });
            tabContent.appendChild(inputField);
        }
    }
}

function openTab(tabName) {
    const tabs = document.getElementsByClassName('tabcontent');
    for (const tab of tabs) {
        tab.style.display = 'none'
    }
    const tabButtons = document.querySelectorAll('.tab button');
    tabButtons.forEach(tabButton => {
        tabButton.classList.remove('active')
        if (tabButton.textContent === tabName.charAt(0).toUpperCase() + tabName.slice(1)) {
            tabButton.classList.add('active')
        }
    });
    document.getElementById(tabName).style.display = 'block'
}

function openCheats() {
    const displayStyle = menuContainer.style.display;
    menuContainer.style.display = displayStyle === 'none' ? 'block' : 'none'
}
Inject();