ANTON App ZAYNE SCRIPT

A collection of modules/hacks for the Anton App put into one script.

// ==UserScript==
// @name ANTON App ZAYNE SCRIPT
// @namespace http://tampermonkey.net/
// @version 0.2.4.3
// @description A collection of modules/hacks for the Anton App put into one script.
// @author @ccm1rza
// @match https://www.tampermonkey.net/index.php?ext=dhdg&updated=true&version=5.1.1
// @icon https://salrn.github.io/publicfiles/rs.png
// @grant none
// @match        https://anton.app/*
// @match        https://www.anton.app/*
// @exclude ://sjs7.xyz/scripttest/tapermonkey/arav
// @exclude https://salrn.github.io/*
// @license MIT
// ==/UserScript==
// Only me and god were able to understand this code. Now that you poses it, I wish you good luck.
// inshallah the comments ive added are enough. please follow the licenses rules, else ill have to strike your project down. just credit me. thats enough.

(function() {
const styles = `
.zui {
    position: fixed;
    right: 10px;
    top: 10px;
    z-index: 999999;
    display: flex;
    flex-direction: column;
    font-family: monospace;
    font-size: 14px;
    color: #fff;
    width: 250px;
    user-select: none;
    border: 2px solid #000;
    cursor: move;
    background: #000;
    overflow: hidden;
    padding: 5px;
    border-radius: 8px;
    opacity: 0;
    transition: opacity 0.3s ease;
}
.zui-item {
    padding: 5px 8px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    background: #000;
    cursor: pointer;
}
.zui-item:hover {
    background: #111;
}
.zui-header {
    background: #000;
    font-weight: bold;
    display: flex;
    align-items: center;
    gap: 8px;
}
.zui-header span {
    font-size: 16px;
}
.zui-header:hover {
    background: #111;
}
.zui-content {
    height: 0;
    overflow-y: auto;
    max-height: 300px;
    scrollbar-width: thin;
    scrollbar-color: #444 #222;
}
.zui-content::-webkit-scrollbar {
    width: 8px;
}
.zui-content::-webkit-scrollbar-track {
    background: #222;
}
.zui-content::-webkit-scrollbar-thumb {
    background-color: #444;
    border-radius: 6px;
}
.zui-modal {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.7);
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 1000000;
}
.zui-modal-content {
    background-color: #111;
    border: 2px solid #333;
    border-radius: 8px;
    padding: 20px;
    width: 300px;
    color: #fff;
    font-family: monospace;
}
.zui-modal-title {
    color: #ff5555;
    font-size: 18px;
    margin-bottom: 15px;
    text-align: center;
}
.zui-modal-message {
    margin-bottom: 20px;
    line-height: 1.4;
}
.zui-modal-buttons {
    display: flex;
    justify-content: space-between;
}
.zui-modal-button {
    padding: 8px 15px;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    font-family: monospace;
    font-weight: bold;
}
.zui-modal-button-continue {
    background-color: #ff5555;
    color: white;
}
.zui-modal-button-cancel {
    background-color: #333;
    color: white;
}
`;

console.log("Zayne: Start Shift Load")
const styleEl = document.createElement('style');
styleEl.textContent = styles;
document.head.appendChild(styleEl);

let gui = null;
let guiCheckInterval = null;
let guiCreationAttempts = 0;
const MAX_CREATION_ATTEMPTS = 10;
const guiId = "zayne-gui-" + Math.random().toString(36).substring(2, 10);

function showConfirmationModal(message, onContinue, onCancel) {
    const modalEl = document.createElement('div');
    modalEl.className = 'zui-modal';
    modalEl.innerHTML = `
        <div class="zui-modal-content">
            <div class="zui-modal-title">WARNING</div>
            <div class="zui-modal-message">${message}</div>
            <div class="zui-modal-buttons">
                <button class="zui-modal-button zui-modal-button-continue">Continue anyway</button>
                <button class="zui-modal-button zui-modal-button-cancel">Cancel</button>
            </div>
        </div>
    `;

    const continueButton = modalEl.querySelector('.zui-modal-button-continue');
    const cancelButton = modalEl.querySelector('.zui-modal-button-cancel');

    continueButton.addEventListener('click', () => {
        document.body.removeChild(modalEl);
        if (onContinue) onContinue();
    });

    cancelButton.addEventListener('click', () => {
        document.body.removeChild(modalEl);
        if (onCancel) onCancel();
    });

    document.body.appendChild(modalEl);
}

function createAndAttachGUI() {
    if (document.getElementById(guiId)) {
        return document.getElementById(guiId);
    }

    const guiEl = document.createElement('div');
    guiEl.className = 'zui';
    guiEl.id = guiId;
    guiEl.innerHTML = `
        <div class="zui-item zui-header">
            <span>[/] zayne 0.2.4.3 by ccmirza</span>
            <span class="zui-item-value">[close]</span>
        </div>
        <div class="zui-content">
            <div class="zui-item">
                <input type="number" id="coinInput" placeholder="Enter coin amount" style="width: 100%;">
            </div>
            <div class="zui-item" id="addCoinsButton">
                <span>Add Coins</span>
            </div>
            <div class="zui-item" id="completeLevel">
                <span>Complete Level</span>
            </div>
            <div class="zui-item" id="button1">
                <span>Hide Name</span>
            </div>
        </div>
    `;

    const headerEl = guiEl.querySelector('.zui-header');
    const contentEl = guiEl.querySelector('.zui-content');
    const headerStatusEl = guiEl.querySelector('.zui-item-value');
    const addCoinsButton = guiEl.querySelector('#addCoinsButton');
    const coinInput = guiEl.querySelector('#coinInput');
    const completeLevelButton = guiEl.querySelector('#completeLevel');

    let isOpen = false;

    headerEl.onclick = function() {
        isOpen = !isOpen;
        animateHeight(contentEl, isOpen ? 300 : 0, 300);
        headerStatusEl.innerText = isOpen ? '[close]' : '[open]';
    };

    addCoinsButton.onclick = function() {
        const coins = parseInt(coinInput.value);
        if (isNaN(coins)) {
            alert("Zayne: Please enter a valid number of coins.");
            return;
        }

        showConfirmationModal(
            `You are about to add ${coins} coins to your account. This action could result in your account being banned, which I - or anyone else - is not responsible for. Do you wish to continue?`,
            function() {
                addCoins(coins);
            },
            function() {
                console.log("Zayne: Add coins operation cancelled");
            }
        );
    };

    completeLevelButton.onclick = function() {
        alert('Fail');
    };

    const hideNameButton = guiEl.querySelector('#button1');
    hideNameButton.onclick = function() {
        // Store current state to update button text
        let isCurrentlyVisible = true;

        // Hide names in the main interface
        const nameElements = document.querySelectorAll('div[style*="display: flex"][style*="max-width: 12em"]');
        nameElements.forEach(el => {
            const nameDiv = el.querySelector('div[style*="overflow: hidden"]');
            if (nameDiv) {
                // Update visibility state
                isCurrentlyVisible = nameDiv.style.display !== 'none';
                nameDiv.style.display = isCurrentlyVisible ? 'none' : '';
            }
        });

        // Also hide names in the popup menu
        const popupNameElements = document.querySelectorAll('div[style*="overflow: hidden"][style*="text-overflow: ellipsis"][style*="white-space: nowrap"][style*="max-width: 9em"]');
        popupNameElements.forEach(el => {
            el.style.display = isCurrentlyVisible ? 'none' : '';
        });

        // Update button text based on the new state
        hideNameButton.querySelector('span').textContent = isCurrentlyVisible ? 'Show Name' : 'Hide Name';
    };
    makeDraggable(guiEl, headerEl);

    document.body.appendChild(guiEl);

    fadeIn(guiEl, 300);
    return guiEl;
}

function setupKeyboardShortcuts() {
    window.addEventListener('keyup', function(event) {
        if (document.activeElement && document.activeElement.tagName === 'INPUT') return;

        if (event.code === 'Slash') {
            ensureGUIExists();
            if (gui) {
                gui.style.display = gui.style.display === 'none' ? '' : 'none';
            }
        }
    });
}

function ensureGUIExists() {
    let existingGui = document.getElementById(guiId);

    if (!existingGui && guiCreationAttempts < MAX_CREATION_ATTEMPTS) {
        guiCreationAttempts++;
        gui = createAndAttachGUI();
        return true;
    } else if (existingGui) {
        gui = existingGui;
        return true;
    }

    return false;
}

function startPersistentGUIMonitoring() {
    setTimeout(() => {
        ensureGUIExists();

        guiCheckInterval = setInterval(() => {
            let guiInDom = document.getElementById(guiId);

            if (!guiInDom && guiCreationAttempts < MAX_CREATION_ATTEMPTS) {
                gui = createAndAttachGUI();
            } else if (guiInDom) {
                guiCreationAttempts = 0;
            }
        }, 2000);
    }, 10000);
}

function easeOutQuad(t) {
    return t * (2 - t);
}

function animateHeight(element, targetHeight, duration) {
    let startHeight = element.clientHeight;
    let startTime = performance.now();

    function step(currentTime) {
        let elapsedTime = currentTime - startTime;
        let progress = Math.min(elapsedTime / duration, 1);
        let easedProgress = easeOutQuad(progress);

        element.style.height = (startHeight + (targetHeight - startHeight) * easedProgress) + "px";

        if (progress < 1) {
            requestAnimationFrame(step);
        }
    }

    requestAnimationFrame(step);
}

function fadeIn(element, duration) {
    element.style.opacity = '0';
    let startTime = performance.now();

    function step(currentTime) {
        let elapsedTime = currentTime - startTime;
        let progress = Math.min(elapsedTime / duration, 1);
        let easedProgress = easeOutQuad(progress);

        element.style.opacity = easedProgress;

        if (progress < 1) {
            requestAnimationFrame(step);
        }
    }

    requestAnimationFrame(step);
}

function makeDraggable(element, dragHandle) {
    let isDragging = false;
    let offsetX = 0;
    let offsetY = 0;

    dragHandle.addEventListener('mousedown', (e) => {
        isDragging = true;
        offsetX = e.clientX - element.getBoundingClientRect().left;
        offsetY = e.clientY - element.getBoundingClientRect().top;
        document.addEventListener('mousemove', move);
        document.addEventListener('mouseup', stopDrag);
    });

    function move(e) {
        if (isDragging) {
            element.style.left = `${e.clientX - offsetX}px`;
            element.style.top = `${e.clientY - offsetY}px`;
        }
    }

    function stopDrag() {
        isDragging = false;
        document.removeEventListener('mousemove', move);
        document.removeEventListener('mouseup', stopDrag);
    }
}

function addCoins(coins) {
    try {
        const sourceId = localStorage.getItem('sourceId')?.split('"').join('');
        const deviceLogId = localStorage.getItem('deviceLogId')?.split('"').join('');
        const users = JSON.parse(localStorage.getItem('users') || '[]');

        if (!sourceId || !deviceLogId || users.length === 0) {
            alert("Required login data not found. Please make sure you're logged in.");
            return;
        }

        users.forEach(users__value => {
            fetch('https://logger-lb-5.anton.app/events', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json'
                },
                body: JSON.stringify({
                    "events":[{
                        "event":"adjustCoins",
                        "value":coins,
                        "src":sourceId,
                        "created":(new Date()).toISOString()
                    }],
                    "log":users__value.l,
                    "credentials":{
                        "authToken":users__value.t,
                        "deviceLogId":deviceLogId
                    }
                }),
            })
            .then(v=>v)
            .catch(v=>v)
            .then(data => {
                window.location.reload();
            });
        });
    } catch (e) {
        alert("Zayne: Failed to add coins. Error: " + e.message, "please report this to the developer.");
    }
}

setupKeyboardShortcuts();
startPersistentGUIMonitoring();

const observer = new MutationObserver((mutations) => {
    if (!document.getElementById(guiId) && guiCreationAttempts < MAX_CREATION_ATTEMPTS) {
        guiCreationAttempts++;
        gui = createAndAttachGUI();
    }
});

setTimeout(() => {
    observer.observe(document.body, {
        childList: true,
        subtree: true
    });
}, 15000);

})();

QingJ © 2025

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