Trimps tools (visual)
当前为
// ==UserScript==
// @name Trimps tools
// @namespace trimps.github.io
// @version 1.023
// @description Trimps tools (visual)
// @author Anton
// @match https://trimps.github.io
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
// ==/UserScript==
(function() {
'use strict';
var tMain, tAutoBuy, tStyleFix, $ = jQuery;
var _getBarWidthPercent = function(barSelector) {
return jQuery(barSelector).width() / jQuery(barSelector).parent().width() * 100;
}
var _log = function(mes, type) {
if (typeof type === 'undefined') type = "Story";
message("BOT: " + mes, type);
}
var _checkProgress = function() {
var maxProgress = 0, maxResource = '';
var food = _getBarWidthPercent('#foodBar');
var wood = _getBarWidthPercent('#woodBar');
var metal = _getBarWidthPercent('#metalBar');
if (food > maxProgress) {maxProgress = food; maxResource = 'food';}
if (wood > maxProgress) {maxProgress = wood; maxResource = 'wood';}
if (metal > maxProgress) {maxProgress = metal; maxResource = 'metal';}
document.title = '' + Math.floor(maxProgress) + '% ' + maxResource;
};
var _styleUpdate = function() {
// remove counts
$('head').append('<style type="text/css">.queueItem,.btn{padding:0}.thingColorCanNotAfford.upgradeThing{background-color:#530053;}</style>');
// remove tabs
$('#buyTabs').hide();
filterTabs('all');
// remove captions
$('#buildingsTitleDiv,#upgradesTitleDiv,#equipmentTitleDiv').hide();
// fix height
$('#topRow,#queueContainer').css('margin-bottom', '0');
$('#jobsTitleDiv').css('padding', '0').css('font-size', 'smaller');
$('#buyHere').css('margin', '0').css('padding', '0').css('overflow-x', 'hidden');
$('#queueContainer').css('height', '70px');
$('#numTabs').css('margin', '0');
$('#buyContainer').css('height', 'calc(99vh - 20vw - 96px)');
//
_log('Started!');
}
var _autoUpgrade = function() {
var $item = $('#upgradesHere').find('.thingColorCanAfford').first();
if ($item.length > 0) {
$item.trigger( "click" );
_log('Upgrading ' + $item.attr('id'));
return 1;
} else {
return 0;
}
}
var _autoBuy = function() {
var $item = $('#buildingsHere').find('.thingColorCanAfford').last();
if ($item.length > 0 && $item.attr('id') != 'Trap') {
$item.trigger("click");
_log('Building ' + $item.attr('id'));
return 1;
} else {
return 0;
}
}
var _autoJobs = function() {
var cnt = 0;
var $trainer = $('#jobsHere').find('.thingColorCanAfford[id=Trainer]');
if ($trainer.length > 0) {
$trainer.trigger("click");
_log('New trainer');
cnt++;
}
var $explorer = $('#jobsHere').find('.thingColorCanAfford[id=Explorer]');
if ($explorer.length > 0) {
$explorer.trigger("click");
_log('New explorer');
cnt++;
}
var farmer = parseInt($('#jobsHere').find('#FarmerOwned').text());
var lumber = parseInt($('#jobsHere').find('#LumberjackOwned').text());
var miner = parseInt($('#jobsHere').find('#MinerOwned').text());
var science = parseInt($('#jobsHere').find('#ScientistOwned').text());
var jobsTotal = farmer + lumber + miner + science;
if (science < (jobsTotal / 62)) {
var $science = $('#jobsHere').find('.thingColorCanAfford[id=Scientist]');
if ($science.length > 0) {
$science.trigger("click");
_log('New scientist', 'Combat');
cnt++;
}
}
if (miner < (jobsTotal / 3.05)) {
var $miner = $('#jobsHere').find('.thingColorCanAfford[id=Miner]');
if ($miner.length > 0) {
$miner.trigger("click");
_log('New miner', 'Combat');
cnt++;
}
}
if (lumber < (jobsTotal / 3.05)) {
var $lumber = $('#jobsHere').find('.thingColorCanAfford[id=Lumberjack]');
if ($lumber.length > 0) {
$lumber.trigger("click");
_log('New lumberjack', 'Combat');
cnt++;
}
}
if (farmer < (jobsTotal / 3.05)) {
var $farmer = $('#jobsHere').find('.thingColorCanAfford[id=Farmer]');
if ($farmer.length > 0) {
$farmer.trigger("click");
_log('New farmer', 'Combat');
cnt++
}
}
var unemployed = parseInt($('#jobsTitleUnemployed').text());
if (unemployed > 0 && cnt === 0) {
$farmer = $('#jobsHere').find('.thingColorCanAfford[id=Farmer]');
if ($farmer.length > 0) {
$farmer.trigger("click");
_log('New farmer', 'Combat');
cnt++
}
}
return cnt;
}
var _styleFix = function() {
$('.buyBox').find('.thing').find('br').remove();
$('.buyBox').find('.thing').find('.thingOwned').css('margin-left','4px');
$('#upgradesHere').find('.alert.badge').text('');
}
var _start = function() {
tAutoBuy = setInterval(function() {
var cnt = _autoUpgrade() + _autoBuy() + _autoJobs();
if (cnt > 0) {
tooltip('hide');
}
}, 1000);
}
var _stop = function() {
clearInterval(tAutoBuy);
}
setTimeout(function() {
tMain = setInterval(_checkProgress, 500);
tStyleFix = setInterval(_styleFix, 2000);
_styleUpdate();
_styleFix();
}, 1000);
})();