The Ultimate Ratio Script (time, score/min, projected times)

Uses time from your computer to calculate your ratio and expected time to get milestones based on that

目前为 2021-05-01 提交的版本。查看 最新版本

// ==UserScript==
// @name         The Ultimate Ratio Script (time, score/min, projected times)
// @namespace    http://tampermonkey.net/
// @version      1.4
// @description  Uses time from your computer to calculate your ratio and expected time to get milestones based on that
// @author       MrCheese#1337
// @match        https://diep.io/
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    //Add text to screen
    const GUI1 = document.createElement("div");
    const GUI2 = document.createElement("div");
    const GUI3 = document.createElement("div");
    const GUI4 = document.createElement("div");
    const GUI5 = document.createElement("div");
    const GUI6 = document.createElement("div");
    GUI1.style = `pointer-events: none; position: fixed; bottom:335px; right:15px; font-family: Ubuntu; color: #FFFFFF; font-style: normal; font-size: 33px;  text-shadow: black 2px 0px, black -2px 0px, black 0px -2px, black 0px 2px, black 2px 2px, black -2px 2px, black 2px -2px, black -2px -2px, black 1px 2px, black -1px 2px, black 1px -2px, black -1px -2px, black 2px 1px, black -2px 1px, black 2px -1px, black -2px -1px;`;
    GUI2.style = `pointer-events: none; position: fixed; bottom:370px; right:15px; font-family: Ubuntu; color: #FFFFFF; font-style: normal; font-size: 0px;`;
    GUI3.style = `pointer-events: none; position: fixed; bottom:313px; right:15px; font-family: Ubuntu; color: #FFFFFF; font-style: normal; font-size: 20px;  text-shadow: black 2px 0px, black -2px 0px, black 0px -2px, black 0px 2px, black 2px 2px, black -2px 2px, black 2px -2px, black -2px -2px, black 1px 2px, black -1px 2px, black 1px -2px, black -1px -2px, black 2px 1px, black -2px 1px, black 2px -1px, black -2px -1px;`;
    GUI4.style = `pointer-events: none; position: fixed; bottom:291px; right:15px; font-family: Ubuntu; color: #FFFFFF; font-style: normal; font-size: 20px;  text-shadow: black 2px 0px, black -2px 0px, black 0px -2px, black 0px 2px, black 2px 2px, black -2px 2px, black 2px -2px, black -2px -2px, black 1px 2px, black -1px 2px, black 1px -2px, black -1px -2px, black 2px 1px, black -2px 1px, black 2px -1px, black -2px -1px;`;
    GUI5.style = `pointer-events: none; position: fixed; bottom:269px; right:15px; font-family: Ubuntu; color: #FFFFFF; font-style: normal; font-size: 20px;  text-shadow: black 2px 0px, black -2px 0px, black 0px -2px, black 0px 2px, black 2px 2px, black -2px 2px, black 2px -2px, black -2px -2px, black 1px 2px, black -1px 2px, black 1px -2px, black -1px -2px, black 2px 1px, black -2px 1px, black 2px -1px, black -2px -1px;`;
    GUI6.style = `pointer-events: none; position: fixed; bottom:247px; right:15px; font-family: Ubuntu; color: #FFFFFF; font-style: normal; font-size: 20px;  text-shadow: black 2px 0px, black -2px 0px, black 0px -2px, black 0px 2px, black 2px 2px, black -2px 2px, black 2px -2px, black -2px -2px, black 1px 2px, black -1px 2px, black 1px -2px, black -1px -2px, black 2px 1px, black -2px 1px, black 2px -1px, black -2px -1px;`;
    document.body.appendChild(GUI1);
    document.body.appendChild(GUI2);
    document.body.appendChild(GUI3);
    document.body.appendChild(GUI4);
    document.body.appendChild(GUI5);
    document.body.appendChild(GUI6);
    GUI1.innerHTML = ' 00:00:00';
    resetTimes();

    //Set vaiables
    var curTime = '00:00:00';
    var rawTime = 0;
    var ratio = 0;
    var rawRatio = 0;
    var hide = true;
    var _100k = false;
    var _500k = false;
    var _1m = false;
    var _2m = false;

    //Reset times at the start of each round
    function resetTimes() {
        GUI2.innerHTML = '100k 00:00:00';
        GUI3.innerHTML = '500k 00:00:00';
        GUI4.innerHTML = '1.0m 00:00:00';
        GUI5.innerHTML = '2.0m 00:00:00';
        GUI6.innerHTML = '0/min';
    }

    //Press X to toggle
    document.body.onkeydown=function(e){
        if(e.keyCode===88){
            if (hide == false) {
                GUI1.style = `pointer-events: none; position: fixed; bottom:335px; right:15px; font-family: Ubuntu; color: #FFFFFF; font-style: normal; font-size: 33px;  text-shadow: black 2px 0px, black -2px 0px, black 0px -2px, black 0px 2px, black 2px 2px, black -2px 2px, black 2px -2px, black -2px -2px, black 1px 2px, black -1px 2px, black 1px -2px, black -1px -2px, black 2px 1px, black -2px 1px, black 2px -1px, black -2px -1px;`;
                //GUI2.style = `pointer-events: none; position: fixed; bottom:370px; right:15px; font-family: Ubuntu; color: #FFFFFF; font-style: normal; font-size: 20px;  text-shadow: black 2px 0px, black -2px 0px, black 0px -2px, black 0px 2px, black 2px 2px, black -2px 2px, black 2px -2px, black -2px -2px, black 1px 2px, black -1px 2px, black 1px -2px, black -1px -2px, black 2px 1px, black -2px 1px, black 2px -1px, black -2px -1px;`;
                GUI3.style = `pointer-events: none; position: fixed; bottom:313px; right:15px; font-family: Ubuntu; color: #FFFFFF; font-style: normal; font-size: 20px;  text-shadow: black 2px 0px, black -2px 0px, black 0px -2px, black 0px 2px, black 2px 2px, black -2px 2px, black 2px -2px, black -2px -2px, black 1px 2px, black -1px 2px, black 1px -2px, black -1px -2px, black 2px 1px, black -2px 1px, black 2px -1px, black -2px -1px;`;
                GUI4.style = `pointer-events: none; position: fixed; bottom:291px; right:15px; font-family: Ubuntu; color: #FFFFFF; font-style: normal; font-size: 20px;  text-shadow: black 2px 0px, black -2px 0px, black 0px -2px, black 0px 2px, black 2px 2px, black -2px 2px, black 2px -2px, black -2px -2px, black 1px 2px, black -1px 2px, black 1px -2px, black -1px -2px, black 2px 1px, black -2px 1px, black 2px -1px, black -2px -1px;`;
                GUI5.style = `pointer-events: none; position: fixed; bottom:269px; right:15px; font-family: Ubuntu; color: #FFFFFF; font-style: normal; font-size: 20px;  text-shadow: black 2px 0px, black -2px 0px, black 0px -2px, black 0px 2px, black 2px 2px, black -2px 2px, black 2px -2px, black -2px -2px, black 1px 2px, black -1px 2px, black 1px -2px, black -1px -2px, black 2px 1px, black -2px 1px, black 2px -1px, black -2px -1px;`;
                GUI6.style = `pointer-events: none; position: fixed; bottom:247px; right:15px; font-family: Ubuntu; color: #FFFFFF; font-style: normal; font-size: 20px;  text-shadow: black 2px 0px, black -2px 0px, black 0px -2px, black 0px 2px, black 2px 2px, black -2px 2px, black 2px -2px, black -2px -2px, black 1px 2px, black -1px 2px, black 1px -2px, black -1px -2px, black 2px 1px, black -2px 1px, black 2px -1px, black -2px -1px;`;
                hide = true;
            } else {
                GUI1.style = `pointer-events: none; position: fixed; bottom:335px; right:15px; font-family: Ubuntu; color: #FFFFFF; font-style: normal; font-size: 0px;`;
                //GUI2.style = `pointer-events: none; position: fixed; bottom:370px; right:15px; font-family: Ubuntu; color: #FFFFFF; font-style: normal; font-size: 0px;`;
                GUI3.style = `pointer-events: none; position: fixed; bottom:313px; right:15px; font-family: Ubuntu; color: #FFFFFF; font-style: normal; font-size: 0px;`;
                GUI4.style = `pointer-events: none; position: fixed; bottom:291px; right:15px; font-family: Ubuntu; color: #FFFFFF; font-style: normal; font-size: 0px;`;
                GUI5.style = `pointer-events: none; position: fixed; bottom:269px; right:15px; font-family: Ubuntu; color: #FFFFFF; font-style: normal; font-size: 0px;`;
                GUI6.style = `pointer-events: none; position: fixed; bottom:247px; right:15px; font-family: Ubuntu; color: #FFFFFF; font-style: normal; font-size: 0px;`;
                hide = false;
            }
        }
    }

    //Get current score (by ABC)
    let _rScore = "0";
    CanvasRenderingContext2D.prototype.fillText = new Proxy(CanvasRenderingContext2D.prototype.fillText, {
        apply(fillRect, ctx, [text, x, y, ...blah]) {

            if (text.startsWith('Score: ')) _rScore = text

            fillRect.call(ctx, text, x, y, ...blah);
        }
    });

    const getScore = () => {
        if (!input.should_prevent_unload()) return -1;
        return parseFloat(_rScore.slice(7).replace(/,/g, ''));
    }

    //Parse time for projected score times
    function timeParse(score) {
        let time = (score / rawRatio) * 60;
        let hours = 0;
        let minutes = 0;
        let seconds = 0;

        if (time >= 3600) {
            hours = Math.round(time / 3600 - 0.5);
            time -= hours * 3600;
            if (hours < 10) hours = '0' + hours;
        } else hours = '00';

        if (time >= 60) {
            minutes = Math.round(time / 60 - 0.5);
            time -= minutes * 60;
            if (minutes < 10) minutes = '0' + minutes;
        } else minutes = '00';

        if (time !== 0) {
            seconds = Math.round(time);
            if (seconds < 10) seconds = '0' + seconds;
        } else seconds = '00';

        let parsedTime = hours + ':' + minutes + ':' + seconds;
        return parsedTime;
    }

    //Main code (runs once a second)
    setInterval(() => {
        //if (input.should_prevent_unload()) {
        //    GUI2.style = `pointer-events: none; position: fixed; bottom:370px; right:15px; font-family: Ubuntu; color: #FFFFFF; font-style: normal; font-size: 0px;`;
        //} else {
        //    GUI2.style = `pointer-events: none; position: fixed; bottom:370px; right:15px; font-family: Ubuntu; color: #FFFFFF; font-style: normal; font-size: 20px;  text-shadow: black 2px 0px, black -2px 0px, black 0px -2px, black 0px 2px, black 2px 2px, black -2px 2px, black 2px -2px, black -2px -2px, black 1px 2px, black -1px 2px, black 1px -2px, black -1px -2px, black 2px 1px, black -2px 1px, black 2px -1px, black -2px -1px;`;
        //}

        //Get time and display on main timer
        if (input.should_prevent_unload() && GUI1.innerHTML == ' 00:00:00') {
            GUI1.innerHTML = `${curTime}`;
        } else if (input.should_prevent_unload()) {
            let [hours, minutes, seconds] = curTime.split(':');
            if (parseInt(seconds) + 1 !== 60) {
                let addZero = (parseInt(seconds) + 1).toString().length == 1 ? '0' : '';
                seconds = `${addZero}${parseInt(seconds) + 1}`;
                rawTime += 1;
            } else {
                if (parseInt(minutes) + 1 !== 60) {
                    let addZero = (parseInt(minutes) + 1).toString().length == 1 ? '0' : '';
                    seconds = '00';
                    minutes = `${addZero}${parseInt(minutes) + 1}`;
                } else {
                    let addZero = (parseInt(hours) + 1).toString().length == 1 ? '0' : '';
                    seconds = '00';
                    minutes = '00';
                    hours = `${addZero}${parseInt(hours) + 1}`;
                }
            }

            curTime = `${hours}:${minutes}:${seconds}`;
            GUI1.innerHTML = `${curTime}`;
        } else if (!input.should_prevent_unload()) {
            GUI1.innerHTML = ' 00:00:00';
            curTime = '00:00:00';
            rawTime = 0;
        }

        //Check if score is 0
        if (getScore() !== -1) {
            if (getScore() == 0) resetTimes()
            else {

                //Calculate and display ratio
                if (rawTime != 0) ratio = getScore() / (rawTime / 60);
                    else ratio = 0;
                    rawRatio = ratio;

                if (ratio >= 1000000) {
                    ratio /= 1000000;
                    ratio = ratio.toFixed(2);
                    ratio = ratio + 'm';
                } else if (ratio >= 1000) {
                    ratio /= 1000;
                    ratio = ratio.toFixed(2);
                    ratio = ratio + 'k';
                } else ratio = Math.round(ratio);

                GUI6.innerHTML = ratio + '/min';

                //Display projected score times
                if (getScore() < 100000) {
                    GUI2.innerHTML = '100k ' + timeParse(100000);
                } else if (_100k == false) {
                    GUI2.innerHTML = curTime;
                    _100k = true;
                }
                if (getScore() < 500000) {
                    GUI3.innerHTML = '500k ' + timeParse(500000);
                } else if (_500k == false) {
                    GUI3.innerHTML = curTime;
                    _500k = true;
                }
                if (getScore() < 1000000) {
                    GUI4.innerHTML = '1.0m ' + timeParse(1000000);
                } else if (_1m == false) {
                    GUI4.innerHTML = curTime;
                    _1m = true;
                }
                if (getScore() < 2000000) {
                    GUI5.innerHTML = '2.0m ' + timeParse(2000000);
                } else if (_2m == false) {
                    GUI5.innerHTML = curTime;
                    _2m = true;
                }
            }
        }
    }, 1000);
})();

QingJ © 2025

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