Ev.IO Aimbot & NameTags ESP

Ev.IO's aimbot enables you to target the closest enemy even through walls and objects, with customizable settings such as Smoothing and offsetY. The NameTag ESP feature lets you view enemy health bars through walls, which can be toggled in the menu.

目前為 2024-04-21 提交的版本,檢視 最新版本

// ==UserScript==
// @name         Ev.IO Aimbot & NameTags ESP
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Ev.IO's aimbot enables you to target the closest enemy even through walls and objects, with customizable settings such as Smoothing and offsetY. The NameTag ESP feature lets you view enemy health bars through walls, which can be toggled in the menu.
// @author       DOGEWARE
// @match        *://ev.io/*
// @icon         https://media.tenor.com/images/c51500433e6f6fff5a8c362335bc8242/tenor.gif
// @grant        none
// @antifeature  ads
// ==/UserScript==

//Aimbot May Make Weapon Invisble But Still Works!
// [O]HIDE MENU
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 = 1
let usedKey = localStorage.getItem('key')
const alertMsg = `⚠️ [Invalid Key Alert] ⚠️

   Activate this script by visiting dogescripts.pages.dev for your license key. This process takes just seconds and needs to be repeated about twice daily.

🛑 Advertisements
`
const ChanceToReload = Math.floor(Math.random() * 3) + 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")
        location.href = `https://dogescripts.pages.dev/games/?script=${location.hostname}`
        return
    case null:
        alert("Dont Modify This Script")
        location.href = `https://dogescripts.pages.dev/games/?script=${location.hostname}`
        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')
    alert(`
    🎉Valid Key🎉
    [README]
    [O]Toggle Menu
    Aimbot May Make Weapons Invisible When Activated But Still Works!
    `)
}else{
    return
}

const prototype_ = {
    ESP: {
        nameTags: true
    },
    aimbot: {
        enabled: true,
        offsetY: 1.5,
        smoothing: 0.3
    },
    experimental: false

}
let Scene

let players = []
let TP
let SkoonDist = Infinity;
let Camera
const sens = 500
const game = document.getElementById( 'canvas' )
const originalWeakMapGet = WeakMap.prototype.get
function HFO(){
    for(const child of Scene.children){
        if(child.type === "PerspectiveCamera"){
            Camera = child
        }
        if ( child.type === 'Sprite' ) {

            if (child.material.map.image.className.includes('healthbar')) {
                child.material.depthTest = prototype_.ESP.nameTags ? false : true
                child.material.depthWrite = true
                players.push(child)

            }

        }
    }
    let dist
    for (const player of players) {
        try{
            dist = player.position.distanceTo(Camera.position)
            if ( dist < SkoonDist ) {
                TP = player
                SkoonDist = dist
            }
        }catch{}

    }
    if(TP && prototype_.aimbot.enabled){
        const OriginalY = Camera.rotation.y
        const OriginalX = Camera.rotation.x

        Camera.rotation.order = 'YXZ';
        const targetPosition = new THREE.Vector3(TP.position.x, TP.position.y - prototype_.aimbot.offsetY, TP.position.z)
        const targetRotation = new THREE.Quaternion().setFromRotationMatrix(
            new THREE.Matrix4().lookAt(Camera.position, targetPosition, Camera.up)
        );
        Camera.quaternion.slerp(targetRotation, prototype_.aimbot.smoothing);

        game.dispatchEvent( new MouseEvent( 'mousemove', {
            movementX: ( OriginalY - Camera.rotation.y ) * sens,
            movementY: ( OriginalX - Camera.rotation.x ) * sens
        }));
    }

    Camera = null
    Scene = null
    players.length = 0

}
function GetScene(){
    WeakMap.prototype.get = function(key) {
        const value = originalWeakMapGet.call(this, key)
        if (key && key.type === "Scene" && key.children instanceof Array && key.children.length > 4) {
            Scene = key
            HFO()
        }
        return value
    };
}
setInterval(function(){
    GetScene()
    players.length = 0
    Camera = null
    Scene = null
},4000)


const style = document.createElement('style');
style.innerHTML = `
/* Dark theme styling */
#menuContainer * {
    color: #ffffff !important;
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif !important;
}

#menuContainer {
    background-color: #1a1a1a !important;
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif !important;
    margin: 0 !important;
    padding: 0 !important;
    position: fixed !important;
    top: 50% !important;
    left: 50% !important;
    transform: translate(-50%, -50%) !important;
    padding: 20px !important;
    border-radius: 10px !important;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2) !important;
    z-index: 1000 !important;
    width: 345px !important;
}

.menuHeaderText1 {
    font-size: 20px !important;
    text-align: center !important;
    width: 170px !important;
}

.menuItemTitle1 {
    font-size: 18px !important;
    animation: rgbAnimation 0.5s infinite alternate !important;
}

@keyframes rgbAnimation {
    0% { color: rgb(255, 0, 0) !important; }
    25% { color: rgb(255, 255, 0) !important; }
    50% { color: rgb(0, 255, 0) !important; }
    75% { color: rgb(0, 255, 255) !important; }
    100% { color: rgb(255, 0, 255) !important; }
}

.tab {
    display: flex !important;
    justify-content: space-around !important;
    gap: 8px !important;
    margin-bottom: 20px !important;
}

.tab button {
    background-color: transparent !important;
    border: none !important;
    padding: 8px 12px !important;
    font-weight: 400 !important;
    outline: none !important;
    color: #ffffff !important;
    cursor: pointer !important;
    transition: all 0.3s ease !important;
}

.tab button:hover,
.tab button.active {
    background-color: rgba(255, 255, 255, 0.2) !important;
    border-radius: 5px !important;
}

.tabcontent {
    display: none !important;
    margin-top: 20px !important;
}

.tabcontent.active {
    display: block !important;
}

.dropdown-toggle {
    appearance: none !important;
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    background-color: #1f1f1f !important;
    color: #ffffff !important;
    border: none !important;
    margin-top: -37px !important;
    padding: 13px !important;
    border-radius: 5px !important;
    cursor: pointer !important;
    float: right !important;
    margin-left: 139.8px !important;
    border: 1px solid #333333 !important;
    font-weight: 400 !important;
    width: 90px !important;
    height: 50px !important;
}

.dropdown-toggle:focus {
    outline: none !important;
}

.dropdown-toggle option {
    background-color: #1f1f1f !important;
    color: #ffffff !important;
}

.dropdown-toggle:hover,
.dropdown-toggle:focus {
    background-color: #333333 !important;
}

input[type="text"] {
   width: 140px !important;
    padding: 20px !important;
    margin-bottom: 10px !important;
    border-radius: 5px !important;
    border: 1px solid #333333 !important;
    background-color: #1f1f1f !important;
    color: #ffffff !important;
    float: right !important;
    margin-left: 10px !important;
    height: 20px !important;
    margin-top: 7px !important;
}

.label-inline {
    float: left !important;
    display: inline-block !important;
    width: 100px !important;
    margin-right: 10px !important;
    margin-top: 20px !important;
    padding: 0 !important;
    font-size: 18.5px !important;
}

.overlay {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    height: 100% !important;
    background-color: rgba(0, 0, 0, 0.5) !important;
    backdrop-filter: blur(5px) !important;
    z-index: 999 !important;
    display: none !important;
}

.overlay.show {
    display: block !important;
}

.bg1 {
    background: linear-gradient(to right, rgb(90, 100, 200), rgb(200, 90, 100)) !important;
    border-radius: 3px !important;
}

.inlineNames {
    display: flex !important;
    justify-content: space-around !important;
    width: min-content !important;
    gap: 8px !important;
}

.inlineNames img {
    object-fit: cover !important;
    border-radius: 10px !important;
}

`;
document.head.appendChild(style)

const overlay = document.createElement('div')
overlay.classList.add('overlay')
document.body.appendChild(overlay)


const menuContainer = document.createElement('div')
menuContainer.id = 'menuContainer'
document.body.appendChild(menuContainer)
const header = document.createElement('div')
header.innerHTML = `
   <div class="header">
    <br>
      <div class="bg1" style="height: 6px;"></div>
    </div>
    <div style="height: 18px;"></div>
`
menuContainer.appendChild(header)
function createTab(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)
}

function populateTab(tabName) {
    const tabContent = tabContents[tabName]
    const tabOptions = prototype_[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)
            label.classList.add('label-inline')
            tabContent.appendChild(label)

            if (typeof tabOptions[option] === 'boolean') {
                const dropdownContainer = document.createElement('div')
                dropdownContainer.classList.add('dropdown-container')

                const dropdownButton = document.createElement('button')
                dropdownButton.classList.add('dropdown-toggle')
                dropdownButton.textContent = tabOptions[option] ? 'Enabled' : 'Disabled'
                dropdownButton.addEventListener('click', event => {
                    tabOptions[option] = !tabOptions[option]
                    dropdownButton.textContent = tabOptions[option] ? 'Enabled' : 'Disabled'
                });
                dropdownContainer.appendChild(dropdownButton)

                tabContent.appendChild(dropdownContainer)
            } else {
                const inputField = document.createElement('input')
                inputField.type = 'text'
                inputField.value = tabOptions[option]
                inputField.classList.add('input-field')
                inputField.addEventListener('change', event => {
                    tabOptions[option] = event.target.value
                });
                tabContent.appendChild(inputField)
            }
            tabContent.appendChild(document.createElement('br'))
        }
    }
}



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 tabLinks = document.createElement('div')
tabLinks.classList.add('tab')
menuContainer.appendChild(tabLinks)

const tabContents = {}
const tabNames = Object.keys(prototype_)
tabNames.forEach(tabName => {
    createTab(tabName)
});
openTab(tabNames[0])
let firstOpen = false
overlay.classList.add('show')
document.addEventListener('keydown', function(event) {
    if (event.keyCode === 79) {
        const displayStyle = menuContainer.style.display
        menuContainer.style.display = displayStyle === 'none' ? 'block' : 'none'

        if (menuContainer.style.display === 'block') {
            overlay.classList.add('show')
        } else {
            overlay.classList.remove('show')
        }

        if (!firstOpen) {
            window.open('https://dogescripts.pages.dev/games/promo-page', '_blank')
            firstOpen = true
        }
    }
});