Cookie clicker tools

Cookie clicker tools (visual)

目前為 2017-03-03 提交的版本,檢視 最新版本

// ==UserScript==
// @name         Cookie clicker tools
// @namespace    orteil.dashnet.org
// @version      2.041
// @description  Cookie clicker tools (visual)
// @author       Anton
// @match        http://orteil.dashnet.org/cookieclicker/*
// @require      http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
// ==/UserScript==

(function() {
    'use strict';
    var log = [], logTitle = '<div class="section">Cookies 2.0.41 is here!</div>', newLogs = 0;

    var started = false, t2, t3, tClick, tClickFrenzy, oldTitle = '', tLog;

    var _getBuffMult = function () {
        var buffMult = 1;
        for (var buff in Game.buffs) {
            if (Game.buffs[buff] !== 0 && typeof Game.buffs[buff].multCpS !== 'undefined') {
                buffMult = buffMult * Game.buffs[buff].multCpS;
            }
        }
        return buffMult === 0 ? 1 : buffMult;
    }

    var priorityListObj = {}, priorityList = [];
    var _createPriorityList = function() {

    }
    
    var _caption = function(txt) {
        var $v = jQuery('#versionNumber');
        if ($v.text() != txt) $v.text(txt);
    }

    var _title = function(txt) {
        var newTitle = (newLogs > 0 ? '(' + newLogs + ') ' : '') + txt;
        if (document.title != newTitle) {
            oldTitle = txt;
            document.title = newTitle;
        }
    }

    var _titlePercent = function(have, need, txt) {
        var percent = Math.ceil(have / (need !== 0 ? need : 1) * 100);
        _title((percent < 10 ? '00' : (percent < 100 ? '0' : '')) + String(percent) + "% - " + txt);
    }

    var _logSectionTitle = function (text) {
        return '<div class="title">' + text + '</div>';
    }

    var _logSection = function (title, items) {
        return '<div class="subsection">' + _logSectionTitle(title) +
            '<div class="listing">' + items.join('</div><div class="listing">') + '</div>' +
            '</div>';
    }

    var _updateLog = function () {
        Game.updateLog = logTitle + _logSection('Priority', priorityList) + _logSection('Log', log);
        jQuery('#logButton').text('Log (' + newLogs + ')');
        _title(oldTitle);
    }

    var _addLog = function(text) {
        var t = new Date();
        log.push(t.toUTCString() + ': ' + text);
        newLogs++;
        _updateLog();
    }

    tLog = setInterval(function () {
        _updateLog();
    }, 600);
    
    jQuery('#logButton').text('Log').on("click", function() {
        newLogs = 0;
        jQuery('#logButton').text('Log');
    });

    var _getNormalCookiesPs = function () {
        return Game.cookiesPs / _getBuffMult();
    }

    var _getMinimalMoney = function () {
        return _getNormalCookiesPs() * 42100;
    }

    var _getMoneyCanSpend = function () {
        var moneyCanSpend = Game.cookies - _getMinimalMoney();
        return moneyCanSpend;
    }

    var _getLongTimeUpgrade = function () {
        var moneyCanSpend = _getMoneyCanSpend();
        var longTime = (Game.cookiesPs < 100) ? 1 : (
            (Game.cookiesPs < 1000) ? 2 : (
                (Game.cookiesPs < 10000) ? 3 : (
                    (Game.cookiesPs < 1E5) ? 4 : (
                        (Game.cookiesPs < 1E6) ? 5 : (
                            (Game.cookiesPs < 1E9) ? 10 : 15
                            )
                        )
                    )
                )
            );
        return longTime;
    }

    var _getWrinklerCount = function () {
        var wrinklersCount = 0;
        for (i in Game.wrinklers) {
            if (Game.wrinklers[i].sucked > 0) {
                wrinklersCount++;
            }
        }
        return wrinklersCount;
    }

    var _killAllWrinklers = function () {
        var wrinklersCount = _getWrinklerCount();
        if (wrinklersCount >= 10 || Game.hasBuff('Elder frenzy')) {
            var wrinklesIncome = 0;
            for (i in Game.wrinklers) {
                wrinklesIncome += Game.wrinklers[i].sucked;
                Game.wrinklers[i].hp = 0; // kill ALL
            }
            if (wrinklesIncome > 0) {
                _addLog('Killed all Wrinkles for ' + Beautify(wrinklesIncome) + ' because of ' + (Game.hasBuff('Elder frenzy') ? '"Elder frenzy"' : 'count 10.'));
            }
        }
    }

    var _getMinimalPriceForNewObject = function () {
        var minNewObjectPrice = null;
        for (var i in Game.ObjectsById) {
            if (typeof i !== 'undefined' && i != 'undefined' && Game.ObjectsById.hasOwnProperty(i)) {
                if (Game.ObjectsById[i].locked === 0 && Game.ObjectsById[i].amount === 0) {
                    var p = Game.ObjectsById[i].price;
                    if (minNewObjectPrice === null || p < minNewObjectPrice) minNewObjectPrice = p;
                }
            }
        }
        return minNewObjectPrice;
    }
    
    var startT = function() {
        t2 = setInterval(function() {

            _killAllWrinklers();

            var moneyCanSpend = _getMoneyCanSpend();
            
            if (moneyCanSpend < 0) {
                var minimalMoney = _getMinimalMoney();
                _caption('Collecting minimum ' + Beautify(minimalMoney));
                _titlePercent(Game.cookies, minimalMoney, 'minimum');
                return;
            }
                
            var minNewObjectPrice = _getMinimalPriceForNewObject();

            var u = null; // upgrade can buy
            var minUpgradePrice = null;
            for (var g in Game.UpgradesById) {
                if (Game.UpgradesById[g].bought === 0 && Game.UpgradesById[g].unlocked == 1) {
                    //u.push(Game.UpgradesById[g]);
                    if (minUpgradePrice === null) {
                        minUpgradePrice = Game.UpgradesById[g].basePrice;
                        u = g;
                    } else if (Game.UpgradesById[g].basePrice < minUpgradePrice) {
                        minUpgradePrice = Game.UpgradesById[g].basePrice;
                        u = g;
                    }
                }
            }
            
            var longTime = _getLongTimeUpgrade();
            var needUpgrade = (minNewObjectPrice > minUpgradePrice || minUpgradePrice === null) &&
                u !== null && typeof Game.UpgradesById[u] !== 'undefined' &&
                (moneyCanSpend >= minUpgradePrice || ((minUpgradePrice - moneyCanSpend) / _getNormalCookiesPs()) <= (longTime*60));
                
            if (needUpgrade)
            {
                if (Game.UpgradesById[u].canBuy()) {
                    Game.UpgradesById[u].buy();
                    _addLog('Buy upgrade ' + Game.UpgradesById[u].name + ' for ' + Beautify(minUpgradePrice));
                } else {
                    _caption('Upgrading ' + Game.UpgradesById[u].name + ' for ' + Beautify(minUpgradePrice));
                    _titlePercent(moneyCanSpend, minUpgradePrice, Game.UpgradesById[u].name);
                }
            } else {
                var minInvert = null, minObj = null;
                for (i in Game.ObjectsById) {
                    if (typeof i !== 'undefined' && i != 'undefined' && Game.ObjectsById.hasOwnProperty(i)) {
                        if (Game.ObjectsById[i].locked === 0) {
                            var interest = Game.ObjectsById[i].price / Game.ObjectsById[i].storedCps;
                            if (minInvert === null) {
                                minInvert = interest;
                                minObj = i;
                            } else if (interest < minInvert) {
                                minInvert = interest;
                                minObj = i;
                            }
                        }
                    }
                }
                if (minObj !== null) {
                    if (Game.ObjectsById[minObj].price < moneyCanSpend) {
                        Game.ObjectsById[minObj].buy(1);
                        _addLog('Buy object ' + Game.ObjectsById[minObj].name + ' for ' + Beautify(Game.ObjectsById[minObj].price));
                    } else {
                        _caption('Collecting ' + Beautify(Game.ObjectsById[minObj].price) + ' for ' + Game.ObjectsById[minObj].name);
                        _titlePercent(moneyCanSpend, Game.ObjectsById[minObj].price, Game.ObjectsById[minObj].name);
                    }
                }
                
            }

        }, 1000);
        
        started = true;
        _caption('Started');
        _addLog('Autobuy start!');
    }
    
    var stopT = function() {
        clearInterval(t2);
        started = false;
        _caption('Collecting gold...');
        _addLog('Autobuy stop.');
    }
    
    jQuery('#versionNumber').on("click", function() {
        if (!started)
            startT();
        else
            stopT();
    });
    
    setTimeout(function() {
        t3 = setInterval(function() {
            var golden = Game.shimmers;
            if (golden.length > 0) {
                for (var i in golden) {
                    golden[i].pop();
                }
            }
        }, 500);
        
        tClickFrenzy = setInterval(function() {
            if (Game.hasBuff('Click frenzy') || Game.hasBuff('Cursed finger')) {
                Game.ClickCookie();
            }
        }, 75);
        
        if (Game.cookiesPs < 1E6) {
            tClick = setInterval(function() {
                Game.mouseX = jQuery('#bigCookie').width() / 2 + jQuery('#bigCookie').offset().left;
                Game.mouseY = jQuery('#bigCookie').height() / 2 + jQuery('#bigCookie').offset().top;
                Game.ClickCookie();
                if (Game.cookiesPs > 1E8) clearInterval(tClick);
            }, 300);
        }
        
        _caption('Collecting gold...');
    }, 5000);
})();

QingJ © 2025

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