Bottless Leaderboard

Non bot leaderboard

// ==UserScript==
// @name         Bottless Leaderboard
// @namespace    See all the Non bots in your server
// @version      1.0
// @description  Non bot leaderboard
// @author       𝓝𝑒ⓦ 𝓙ⓐ¢𝓀🕹️
// @match        *://agar.io/*
// @license      MIT
// @icon         https://i.imgur.com/BlocGBz.png
// @grant        none
// ==/UserScript==
(function() {
    'use strict';

    let popupWindow = null;
    let nicksGlobal = [];
    let nameCountsGlobal = {};
    let flaggedNicks = JSON.parse(localStorage.getItem("agario_enemies")) || [];
    let alarmSoundUrl = localStorage.getItem("alarm_sound_url") || "https://www.myinstants.com/media/sounds/wwe-stone-cold-steve-austin-titantron-hd-full-mp3cut.mp3";
    let enableSound = JSON.parse(localStorage.getItem("enable_sound")) || true;
    let lastPlayTime = 0;

    function createSettingsDiv(parent) {
        let settingsDiv = document.createElement("div");
        settingsDiv.style.padding = "20px";
        settingsDiv.style.background = "linear-gradient(to right, darkblue, black)";
        settingsDiv.style.border = "1px solid black";
        settingsDiv.style.color = "white";

        let soundControl = document.createElement("div");
        soundControl.innerHTML = `
            <label class="switch">
                <input type="checkbox" id="soundCheckbox" ${enableSound ? "checked" : ""}>
                <span class="slider round"></span>
            </label>
            <span id="soundStatus">${enableSound ? "Sound" : "Sound "}</span>`;
        soundControl.style.marginBottom = "10px";
        settingsDiv.appendChild(soundControl);

        let soundLabel = document.createElement("label");
        soundLabel.textContent = "Alarm sound URL:";
        settingsDiv.appendChild(soundLabel);

        let soundInput = document.createElement("input");
        soundInput.type = "text";
        soundInput.value = alarmSoundUrl;
        soundInput.style.display = "block";
        soundInput.style.marginTop = "5px";
        soundInput.style.width = "90%";
        settingsDiv.appendChild(soundInput);

        let inputLabel = document.createElement("label");
        inputLabel.textContent = "Enter enemies (comma separated):";
        inputLabel.style.marginTop = "10px";
        settingsDiv.appendChild(inputLabel);

        let input = document.createElement("input");
        input.type = "text";
        input.style.display = "block";
        input.style.marginTop = "5px";
        input.style.width = "90%";
        settingsDiv.appendChild(input);

        let addButton = document.createElement("button");
        addButton.textContent = "Add";
        addButton.style.display = "block";
        addButton.style.marginTop = "10px";
        addButton.style.backgroundColor = "green";
        addButton.style.color = "white";
        addButton.style.border = "none";
        addButton.style.padding = "5px 10px";
        addButton.style.cursor = "pointer";
        addButton.style.transition = "background-color 0.3s, transform 0.1s";
        addButton.addEventListener("mouseover", function() {
            addButton.style.backgroundColor = "darkgreen";
        });
        addButton.addEventListener("mouseout", function() {
            addButton.style.backgroundColor = "green";
        });
        addButton.addEventListener("mousedown", function() {
            addButton.style.transform = "translateY(2px)";
        });
        addButton.addEventListener("mouseup", function() {
            addButton.style.transform = "translateY(0)";
        });
        settingsDiv.appendChild(addButton);

        let currentEnemiesLabel = document.createElement("label");
        currentEnemiesLabel.textContent = "Current Enemies:";
        currentEnemiesLabel.style.display = "block";
        currentEnemiesLabel.style.marginTop = "10px";
        settingsDiv.appendChild(currentEnemiesLabel);

        let currentEnemiesDiv = document.createElement("div");
        currentEnemiesDiv.style.display = "flex";
        currentEnemiesDiv.style.flexWrap = "wrap";
        currentEnemiesDiv.style.gap = "10px";
        currentEnemiesDiv.style.marginTop = "5px";
        currentEnemiesDiv.style.padding = "5px";
        currentEnemiesDiv.style.background = "linear-gradient(to right, darkblue, black)";
        settingsDiv.appendChild(currentEnemiesDiv);

        function updateEnemiesDiv() {
            currentEnemiesDiv.innerHTML = "";
            flaggedNicks.forEach((nick, index) => {
                let nickDiv = document.createElement("div");
                nickDiv.style.display = "flex";
                nickDiv.style.alignItems = "center";
                nickDiv.style.backgroundColor = "rgba(0, 0, 0, 0.8)";
                nickDiv.style.padding = "5px 10px";
                nickDiv.style.border = "1px solid white";
                nickDiv.style.borderRadius = "1px";
                nickDiv.style.color = "white";

                let nickText = document.createElement("span");
                nickText.textContent = nick;
                nickDiv.appendChild(nickText);

                let removeButton = document.createElement("button");
                removeButton.textContent = "X";
                removeButton.style.marginLeft = "10px";
                removeButton.style.backgroundColor = "red";
                removeButton.style.color = "white";
                removeButton.style.border = "none";
                removeButton.style.borderRadius = "50%";
                removeButton.style.cursor = "pointer";
                removeButton.style.transition = "background-color 0.3s, transform 0.1s";
                removeButton.addEventListener("mousedown", function() {
                    removeButton.style.transform = "translateY(2px)";
                });
                removeButton.addEventListener("mouseup", function() {
                    removeButton.style.transform = "translateY(0)";
                });
                removeButton.addEventListener("click", function() {
                    flaggedNicks.splice(index, 1);
                    localStorage.setItem("agario_enemies", JSON.stringify(flaggedNicks));
                    updateEnemiesDiv();
                });
                nickDiv.appendChild(removeButton);

                currentEnemiesDiv.appendChild(nickDiv);
            });
        }

        updateEnemiesDiv();

        addButton.addEventListener("click", function() {
            let newNicks = input.value.split(",").map(nick => nick.trim()).filter(nick => nick);
            flaggedNicks = flaggedNicks.concat(newNicks);
            localStorage.setItem("agario_enemies", JSON.stringify(flaggedNicks));
            input.value = "";
            updateEnemiesDiv();
        });

        let saveButton = document.createElement("button");
        saveButton.textContent = "Save";
        saveButton.style.display = "block";
        saveButton.style.marginTop = "10px";
        saveButton.style.backgroundColor = "green";
        saveButton.style.color = "white";
        saveButton.style.border = "none";
        saveButton.style.padding = "5px 10px";
        saveButton.style.cursor = "pointer";
        saveButton.style.transition = "background-color 0.3s, transform 0.1s";
        saveButton.addEventListener("mouseover", function() {
            saveButton.style.backgroundColor = "darkgreen";
        });
        saveButton.addEventListener("mouseout", function() {
            saveButton.style.backgroundColor = "green";
        });
        saveButton.addEventListener("mousedown", function() {
            saveButton.style.transform = "translateY(2px)";
        });
        saveButton.addEventListener("mouseup", function() {
            saveButton.style.transform = "translateY(0)";
        });
        settingsDiv.appendChild(saveButton);

        parent.appendChild(settingsDiv);

        saveButton.addEventListener("click", function() {
            alarmSoundUrl = soundInput.value.trim();
            enableSound = soundControl.querySelector("#soundCheckbox").checked;
            localStorage.setItem("alarm_sound_url", alarmSoundUrl);
            localStorage.setItem("enable_sound", JSON.stringify(enableSound));
            document.getElementById("soundStatus").textContent = enableSound ? "Sound On" : "Sound Off";
            toastr.success("Settings saved!");
        });

        soundControl.querySelector("#soundCheckbox").addEventListener("change", function() {
            enableSound = this.checked;
            document.getElementById("soundStatus").textContent = enableSound ? "Sound On" : "Sound Off";
        });

        let leaderboardDiv = document.createElement("div");
        leaderboardDiv.id = "leaderboardDiv";
        leaderboardDiv.style.marginTop = "20px";
        settingsDiv.appendChild(leaderboardDiv);

        let style = document.createElement("style");
        style.type = "text/css";
        style.innerHTML = `
            .switch {
                position: relative;
                display: inline-block;
                width: 60px;
                height: 34px;
            }
            .switch input {
                opacity: 0;
                width: 0;
                height: 0;
            }
            .slider {
                position: absolute;
                cursor: pointer;
                top: 0;
                left: 0;
                right: 0;
                bottom: 0;
                background-color: red;
                transition: .4s;
            }
            .slider:before {
                position: absolute;
                content: "";
                height: 26px;
                width: 26px;
                left: 4px;
                bottom: 4px;
                background-color: white;
                transition: .4s;
            }
            input:checked + .slider {
                background-color: lightgreen;
            }
            input:checked + .slider:before {
                transform: translateX(26px);
            }
            .slider.round {
                border-radius: 34px;
            }
            .slider.round:before {
                border-radius: 50%;
            }
        `;
        parent.appendChild(style);
    }

    function createTable(nicks, nameCounts) {
        const table = document.createElement("table");
        table.style.fontSize = "15px";
        table.style.borderCollapse = "collapse";
        table.style.margin = "0 auto";
        table.style.color = "white";
        let header = document.createElement("th");
        header.colSpan = "3";
        header.textContent = "NON BOT LIST";
        header.style.textAlign = "center";
        header.style.padding = "15px";
        table.appendChild(header);

        let row = null;
        nicks.forEach((nick, index) => {
            if (index % 3 === 0) {
                row = document.createElement("tr");
                table.appendChild(row);
            }
            let count = nameCounts[nick];
            let cell = document.createElement("td");
            if (count > 1) {
                cell.textContent = `${nick} (${count})`;
                cell.style.color = "red";
                cell.style.fontWeight = "bold";
            } else {
                cell.textContent = nick;
            }
            cell.style.padding = "15px";
            cell.style.textAlign = "center";
            row.appendChild(cell);
        });

        if (!popupWindow || popupWindow.closed) {
            popupWindow = window.open("", "", "width=600,height=600");
            createSettingsDiv(popupWindow.document.body);
        }

        let leaderboardDiv = popupWindow.document.getElementById("leaderboardDiv");
        leaderboardDiv.innerHTML = "";
        leaderboardDiv.style.backgroundColor = "black";
        leaderboardDiv.appendChild(table);
        nicksGlobal = nicks;
        nameCountsGlobal = nameCounts;

        let saveButton = document.createElement("button");
        saveButton.textContent = "Save to CSV";
        saveButton.onclick = saveToCSV;
        saveButton.style.backgroundColor = "blue";
        saveButton.style.color = "white";
        saveButton.style.marginTop = "3px";
        saveButton.style.width = "100%";
        leaderboardDiv.appendChild(saveButton);
    }

    function playSound(url) {
        if (enableSound) {
            const audio = new Audio(url);
            audio.loop = false;
            audio.play();
        }
    }

    function extractNicks() {
        const nameCounts = {};
        if (
            typeof leaderboard !== "undefined" &&
            leaderboard.hasOwnProperty("leaderboard")
        ) {
            let nicks = leaderboard.leaderboard.map((obj) => obj.nick);
            nicks.forEach((nick) => {
                nameCounts[nick] = (nameCounts[nick] || 0) + 1;
            });
            nicks = [...new Set(nicks)];
            createTable(nicks, nameCounts);
            let foundFlaggedNicks = nicks.filter((nick) =>
                flaggedNicks.includes(nick) && nick.trim() !== ""
            );
            let currentTime = Date.now();
            if (foundFlaggedNicks.length > 0 && enableSound && (currentTime - lastPlayTime >= 10000)) {
                if (popupWindow && !popupWindow.closed) {
                    let alertDiv = popupWindow.document.createElement("div");
                    alertDiv.textContent =
                        "Flagged nicks detected: " + foundFlaggedNicks.join(", ");
                    alertDiv.style.color = "red";
                    popupWindow.document
                        .getElementById("leaderboardDiv")
                        .prepend(alertDiv);
                    playSound(alarmSoundUrl);
                    lastPlayTime = currentTime;
                }
            }
        }
    }

    function saveToCSV() {
        let csvContent = "\uFEFF"; // UTF-8 BOM
        csvContent += "nick,count\n";
        nicksGlobal.forEach((nick) => {
            csvContent += `"${nick}",${nameCountsGlobal[nick]}\n`;
        });
        let date = new Date();
        let timestamp =
            date.getFullYear() +
            "-" +
            ("0" + (date.getMonth() + 1)).slice(-2) +
            "-" +
            ("0" + date.getDate()).slice(-2) +
            "_" +
            ("0" + date.getHours()).slice(-2) +
            "-" +
            ("0" + date.getMinutes()).slice(-2) +
            "-" +
            ("0" + date.getSeconds()).slice(-2);
        let encodedUri = encodeURI("data:text/csv;charset=utf-8," + csvContent);
        let link = document.createElement("a");
        link.setAttribute("href", encodedUri);
        link.setAttribute("download", "nicks_" + timestamp + ".csv");
        link.click();
    }

    function createStartButton() {
        let button = document.createElement("button");
        button.textContent = "LB #'s";
        button.style.color = "white";
        button.style.fontWeight = "bold";
        button.className = "input-button";
        button.style.textShadow = "1px 1px 1px black";
        document.body.appendChild(button);

        let style = document.createElement("style");
        style.type = "text/css";
       style.innerHTML = `
    @keyframes borderChange {
        0% { border-color: #00008B; } /* Dark Blue */
        20% { border-color: #000000; } /* Black */
        40% { border-color: rgba(106,50,198,0.75); } /* Dark Violet */
        60% { border-color: #00008B; } /* Dark Blue */
        80% { border-color: #000000; } /* Black */
        100% { border-color: #00008B; } /* Dark Blue */
    }
    .input-button {
        border: 5px solid #00008B; /* Initial border color Dark Blue */
        animation: borderChange 4s infinite;
        border-style: outset;
        border-color: rgba(0, 0, 139, 1); /* Dark Blue */
        background: linear-gradient(180deg, rgba(9,9,121,0.75) 0%, rgba(80,6,167,0.75) 50%, rgba(2,0,36,0.75) 100%);
    }
`;

        document.getElementsByTagName("head")[0].appendChild(style);

        let isRunning = false;
        let intervalId = null;

        button.onclick = function () {
            if (!isRunning) {
                button.style.backgroundColor = "rgba(106,50,198,0.75)";
                intervalId = setInterval(extractNicks, 1500);
                isRunning = true;
                toastr.info("Leaderboard Values Started 🟢", {
                    className: "toast-custom-bg",
                });
            } else {
                button.style.backgroundColor = "rgba(55,55,197,0.75)";
                clearInterval(intervalId);
                isRunning = false;
                toastr.info("Leaderboard Values Stopped 🔴", {
                    className: "toast-custom-bg",
                });
            }
        };

        const targetDiv = document.querySelector(".fcols.grow.hinherit");
        if (targetDiv) {
            targetDiv.appendChild(button);
        }
    }

    // Call createStartButton after a delay of 5000 milliseconds
    setTimeout(function() {
        createStartButton();
    }, 5000);

})();

QingJ © 2025

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