Greasy Fork is available in English.

Matrix Menu V2 | ESP & X-Ray | Wireframe Players&World

X-RAY Menu

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください。
// ==UserScript==
// @name         Matrix Menu V2 | ESP & X-Ray | Wireframe Players&World
// @namespace    http://tampermonkey.net/
// @version      0.2.1
// @description  X-RAY Menu
// @author       Whoami
// @match        *://voxiom.io/*
// @require      https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js
// @icon         https://media.giphy.com/media/CxYGmxv0Oyz4I/giphy.gif
// @grant        none
// @license      MIT
// ==/UserScript==

const originalArrayPush = Array.prototype.push;
const THREE = window.THREE;
const prototype_ = {
    world: {
        wireframe: false,
        visibleOnDamage: true,
        notVisible: true,
        depthFunc: 2
    },
    player: {
        opacity: 0.5,
        wireframe: false
    }
};

Array.prototype.push = function(...args) {
    if (args[0] && args[0].material && args[0].material.type && args[0].material.type === "ShaderMaterial") {
        const material = args[0].material;
        material.opacity = 0;
        material.transparent = prototype_.world.visibleOnDamage;
        material.side = 2;
        material.depthFunc = prototype_.world.depthFunc;
        material.wireframe = prototype_.world.wireframe;
        material.visible = prototype_.world.notVisible;
    }
    if (args[0] && args[0].material && args[0].material.type && args[0].material.type === "MeshBasicMaterial") {
        const material = args[0].material;
        material.opacity = prototype_.player.opacity;
        material.wireframe = prototype_.player.wireframe;
    }
    return originalArrayPush.apply(this, args);
};

const style = document.createElement('style');
style.innerHTML = `
    .menuHeaderText1 {
        font-size: 35px;
        font-weight: 900;
        text-align: center !important;
        animation: rgbAnimation 0.5s infinite alternate;
    }
    .menuItemTitle1 {
        font-size: 18px;
        animation: rgbAnimation 0.5s infinite alternate;
    }
    @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);
    }
    #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 * {
        -webkit-font-smoothing: antialiased;
        font-smoothing: antialiased;
    }
    #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;
        width: 100%;
        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;
    }
    @import url(https://fonts.googleapis.com/css2?family=Space+Grotesk:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900&display=swap);
    @import url(https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900&display=swap);
    div div b {
        font-family: Montserrat;
    }
    h2.menuHeaderText1 {
        display: none;
    }
    button.active {
        font-family: Space Grotesk;
    }
    div div button {
        font-family: Space Grotesk;
        background-color: #7300a8;
        border-color: #000000;
        color: #eceff1;
        border-radius: 3px;
    }
    div div label {
        font-family: Montserrat;
    }
    div div select {
        font-family: Space Grotesk;
        background-color: #000000;
        color: #f5f5f5;
        text-decoration: overline;
        border-color: #7300a8;
        border-radius: 3px;
        text-align: center;
        height: 40px;
    }
    div div input {
        background-color: #7300a8;
        border-color: #000000;
        color: #ffffff;
        border-radius: 6px;
    }
    div div div {
        background-color: #000000;
    }
    div.sc-iJKOTD.jqbzkO {
        display: none;
    }
    a.sc-giYglK.bzRdHa {
        display: none;
    }
    img.sc-pVTFL.iRqeFU {
        display: none;
    }
    #menuContainer {
        width: 500px;
    }
    img.sc-ibSMNl.emCBjU {
        display: none;
    }
    div.sc-lbCmg.kLCLJb {
        text-decoration: overline;
        font-family: Montserrat;
    }
    div.sc-bgMUWu.hqpBqs {
        font-family: Montserrat;
    }
    div.sc-ivsNig.kqMamr {
        font-family: Montserrat;
    }
    div.sc-bxYNtK.ekaCUa {
        font-family: Montserrat;
    }
    div.sc-inrDdN.ehvxZP {
        font-family: Montserrat;
        align-items: center;
    }
    div.sc-fBgqEL.ljNuSc {
        background-color: #212121;
    }
    div.sc-ikJyIC.vCrTy {
        background-color: #7300a8;
        opacity: 0.4;
    }
    div.sc-jwrNVz.fVmNa {
        background-color: #7300a8;
        border-radius: 5px;
        height: 50px;
        align-items: center;
        padding-left: 40px;
    }
    div.sc-hnCQzQ.gFCsYN {
        font-family: Montserrat;
    }
    a.sc-cgLTVH.hqKrdE {
        font-family: Montserrat;
    }
`;
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'>WHOAMI CHEATS</h2>
    </div>
    <b>"O" Exit</b>
`;
menuContainer.appendChild(header);

const tab = document.createElement('div');
tab.className = 'tab';
tab.innerHTML = `
    <button class="tablinks active" onclick="openTab(event, 'mainMenu')">Main Menu</button>
    <button class="tablinks" onclick="openTab(event, 'players')">Players</button>
    <button class="tablinks" onclick="openTab(event, 'world')">World</button>
`;
menuContainer.appendChild(tab);

const mainMenu = document.createElement('div');
mainMenu.id = 'mainMenu';
mainMenu.className = 'tabcontent active';
mainMenu.innerHTML = `
    <label for="opacity"><span class='menuItemTitle1'>Opacity:</span></label>
    <select id="opacity">
        <option value="0">0</option>
        <option value="0.1">0.1</option>
        <option value="0.2">0.2</option>
        <option value="0.3">0.3</option>
        <option value="0.4">0.4</option>
        <option value="0.5">0.5</option>
        <option value="0.6">0.6</option>
        <option value="0.7">0.7</option>
        <option value="0.8">0.8</option>
        <option value="0.9">0.9</option>
        <option value="1">1</option>
    </select>
    <button onclick="resetSettings()">Reset to Defaults</button>
`;
menuContainer.appendChild(mainMenu);

const players = document.createElement('div');
players.id = 'players';
players.className = 'tabcontent';
players.innerHTML = `
    <label for="playerOpacity"><span class='menuItemTitle1'>Player Opacity:</span></label>
    <select id="playerOpacity">
        <option value="0">0</option>
        <option value="0.1">0.1</option>
        <option value="0.2">0.2</option>
        <option value="0.3">0.3</option>
        <option value="0.4">0.4</option>
        <option value="0.5">0.5</option>
        <option value="0.6">0.6</option>
        <option value="0.7">0.7</option>
        <option value="0.8">0.8</option>
        <option value="0.9">0.9</option>
        <option value="1">1</option>
    </select>
`;
menuContainer.appendChild(players);

const world = document.createElement('div');
world.id = 'world';
world.className = 'tabcontent';
world.innerHTML = `
    <label for="wireframe"><span class='menuItemTitle1'>World Wireframe:</span></label>
    <select id="wireframe">
        <option value="true">True</option>
        <option value="false" selected>False</option>
    </select>
`;
menuContainer.appendChild(world);

function openTab(evt, tabName) {
    const tabcontent = document.getElementsByClassName('tabcontent');
    for (let i = 0; i < tabcontent.length; i++) {
        tabcontent[i].style.display = 'none';
        tabcontent[i].classList.remove('active');
    }
    const tablinks = document.getElementsByClassName('tablinks');
    for (let i = 0; i < tablinks.length; i++) {
        tablinks[i].classList.remove('active');
    }
    document.getElementById(tabName).style.display = 'block';
    document.getElementById(tabName).classList.add('active');
    evt.currentTarget.classList.add('active');
}

document.getElementById('opacity').addEventListener('change', function() {
    prototype_.player.opacity = parseFloat(this.value);
});

document.getElementById('playerOpacity').addEventListener('change', function() {
    prototype_.player.opacity = parseFloat(this.value);
});

document.getElementById('wireframe').addEventListener('change', function() {
    prototype_.world.wireframe = this.value === 'true';
});

function resetSettings() {
    prototype_.world.wireframe = false;
    prototype_.player.opacity = 0.5;
    prototype_.world.visibleOnDamage = true;
    prototype_.world.notVisible = true;
    prototype_.world.depthFunc = 2;
    document.getElementById('opacity').value = '0.5';
    document.getElementById('playerOpacity').value = '0.5';
    document.getElementById('wireframe').value = 'false';
}