ZcxJames's hornex wave script

PLEASE DON'T ATTACT MY SERVER PLS!

目前为 2024-05-08 提交的版本。查看 最新版本

// ==UserScript==
// @name         ZcxJames's hornex wave script
// @namespace    tampermonkey.net/
// @version      2.0
// @description  PLEASE DON'T ATTACT MY SERVER PLS!
// @author       ZcxJames(x星球上的流沙包)
// @match        https://hornex.pro/*
// @grant        GM_xmlhttpRequest
// @connect      zcxjames.top
// @connect      103.193.151.90
// @license      GPL
// ==/UserScript==

(function() {
    'use strict';


    function createTable(jsonData) {
        var existingTable = document.getElementById('jsonDataTable');
        if (existingTable) {
            existingTable.remove();
        }

        var table = document.createElement('table');
        table.id = 'jsonDataTable';
        table.style.position = 'fixed';
        table.style.top = '50%';
        table.style.right = '0';
        table.style.transform = 'translateY(-50%)';
        table.style.border = '1px solid black';
        table.style.backgroundColor = 'transparent';
        table.style.zIndex = '1000';

        var thead = document.createElement('thead');
        var headerRow = document.createElement('tr');
        var th1 = document.createElement('th'); th1.textContent = 'Region';
        var th2 = document.createElement('th'); th2.textContent = 'Super';
        var th3 = document.createElement('th'); th3.textContent = 'Hyper';
        headerRow.appendChild(th1);
        headerRow.appendChild(th2);
        headerRow.appendChild(th3);
        thead.appendChild(headerRow);
        table.appendChild(thead);

        var tbody = document.createElement('tbody');

        Object.keys(jsonData).forEach(function(key) {
            var regionData = jsonData[key];
            var tr = document.createElement('tr');
            var tdRegion = document.createElement('td'); tdRegion.textContent = key;
            var tdSuper = document.createElement('td'); tdSuper.textContent = regionData.Super || 'N/A';
            var tdHyper = document.createElement('td'); tdHyper.textContent = regionData.Hyper || 'N/A';
            tr.appendChild(tdRegion);
            tr.appendChild(tdSuper);
            tr.appendChild(tdHyper);
            tbody.appendChild(tr);
        });

        table.appendChild(tbody);
        document.body.appendChild(table);
    }


    function fetchAndUpdateTable() {
        GM_xmlhttpRequest({
            method: 'GET',
            url: 'https://zcxjames.top/data.json',
            onload: function(response) {
                var jsonData = JSON.parse(response.responseText);
                createTable(jsonData);
            },
            onerror: function(error) {
                console.error('Error fetching JSON data: ', error);
            }
        });
    }

    setInterval(fetchAndUpdateTable, 1000);


    var servers = {
        'eu1': 'rgb(166, 56, 237)',
        'eu2': 'rgb(81, 121, 251)',
        'as1': 'rgb(237, 61, 234)',
        'us1': 'rgb(219, 130, 41)',
        'us2': 'rgb(237, 236, 61)',
        'as2': 'rgb(61, 179, 203)'
    };
    var zones = {
        'Ultra': 'rgb(255, 43, 117)',
        'Super': 'rgb(43, 255, 163)',
        'Hyper': 'rgb(92, 116, 176)',
        'Waveroom': 'rgb(126, 239, 109)' // 添加 'Waveroom' 区域和对应颜色
    };

    var container = document.createElement('div');
    container.style.position = 'fixed';
    container.style.top = '50%';
    container.style.right = '0';
    container.style.transform = 'translateY(-50%)';
    container.style.zIndex = '9999';
    document.body.appendChild(container);

    var table = document.createElement('table');
    table.style.border = '1px solid black';
    table.style.borderCollapse = 'collapse';
    container.appendChild(table);

    var customContent = {
        '1-2': 'Super wave',
        '1-3': 'Hyper wave',
        '2-1': 'as1',
        '3-1': 'as2',
        '4-1': 'eu1',
        '5-1': 'eu2',
        '6-1': 'us1',
        '7-1': 'us2'
    };

    var indicator = document.createElement('div');
    indicator.style.position = 'fixed';
    indicator.style.bottom = '20px';
    indicator.style.right = '0';
    indicator.style.backgroundColor = 'transparent';
    indicator.style.padding = '10px';
    indicator.style.zIndex = '10000';
    document.body.appendChild(indicator);

    var currentServer = '';
    var currentZone = '';
    var progress = '';

    function updateIndicator() {
        Object.keys(servers).forEach(function(server) {
            var btn = document.querySelector(`div.btn.active[style="background-color: ${servers[server]};"]`);
            if (btn) {
                currentServer = server;
            }
        });

        Object.keys(zones).forEach(function(zone) {
            var zoneDiv = document.querySelector(`div.zone-name[stroke="${zone}"]`);
            if (zoneDiv) {
                currentZone = zone;
            }
        });

        var zoneNameDiv = document.querySelector('div.zone-name[stroke="Waveroom"]');
        if (zoneNameDiv) {
            currentZone = 'waveroom';
        }

        var waveSpan = document.querySelector('body > div.hud > div.zone > div.progress > span[stroke]');
        var waveText = waveSpan ? waveSpan.getAttribute('stroke') : '';
        var waveMatch = waveText.match(/Wave (\d+)/i);

        var progressBars = document.querySelectorAll('div.bar');
        progress = 0;
        if (waveMatch) {
            progress = 'Wave ' + waveMatch[1];
        } else {
            progressBars.forEach(function(bar) {
                var transformValue = bar.style.transform;
                var matches = transformValue.match(/translate\(calc\(-(\d+\.\d+)% \+ \d+\.\d+em\), 0px\)/);
                if (matches && matches[1]) {
                    var tempProgress = (100 - parseFloat(matches[1])).toFixed(4);
                    if (tempProgress > progress) {
                        progress = tempProgress + '%';
                    }
                }
            });
        }

        indicator.textContent = `${currentServer || 'Server not detected'} - ${currentZone || 'Zone not detected'} - Progress: ${progress}`;
    }

    function sendPost() {
        var data = {
            server: currentServer || 'Server not detected',
            zone: currentZone || 'Zone not detected',
            progress: progress
        };
        GM_xmlhttpRequest({
            method: "POST",
            url: "http://103.193.151.90:5000",
            data: JSON.stringify(data),
            headers: {
                "Content-Type": "application/json"
            },
            onload: function(response) {
                console.log('Data sent:', data);
            }
        });
    }

    function animate() {
        updateIndicator();
        requestAnimationFrame(animate);
    }

    animate();

    setInterval(sendPost, 1000);

    var observer = new MutationObserver(function(mutations) {
        mutations.forEach(function(mutation) {
            if (mutation.type === 'attributes' && (mutation.attributeName === 'class' || mutation.attributeName === 'stroke' || mutation.attributeName === 'style')) {
                updateIndicator();
            }
        });
    });

    var config = { attributes: true, subtree: true, attributeFilter: ['style', 'class'] };
    observer.observe(document.querySelector('body > div.hud > div.zone > div.zone-name'), config);
    observer.observe(document.querySelector('body > div.hud > div.zone > div.progress > div'), config);
    observer.observe(document.querySelector('body > div.hud > div.zone > div.progress > span'), config);
    observer.observe(document.querySelector('body > div.menu'), config);
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址