Trimps tools

Trimps tools (visual)

当前为 2017-03-17 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Trimps tools
  3. // @namespace trimps.github.io
  4. // @version 1.026
  5. // @description Trimps tools (visual)
  6. // @author Anton
  7. // @match https://trimps.github.io
  8. // @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
  9. // ==/UserScript==
  10.  
  11. (function() {
  12. 'use strict';
  13.  
  14. var tMain, tAutoBuy, tStyleFix, $ = jQuery, isStarted = false;
  15.  
  16. var _getBarWidthPercent = function(barSelector) {
  17. return jQuery(barSelector).width() / jQuery(barSelector).parent().width() * 100;
  18. }
  19.  
  20. var _log = function(mes, type) {
  21. if (typeof type === 'undefined') type = "Story";
  22. message("BOT: " + mes, type);
  23. }
  24.  
  25. var _checkProgress = function() {
  26. var maxProgress = 0, maxResource = '';
  27. var food = _getBarWidthPercent('#foodBar');
  28. var wood = _getBarWidthPercent('#woodBar');
  29. var metal = _getBarWidthPercent('#metalBar');
  30. if (food > maxProgress) {maxProgress = food; maxResource = 'food';}
  31. if (wood > maxProgress) {maxProgress = wood; maxResource = 'wood';}
  32. if (metal > maxProgress) {maxProgress = metal; maxResource = 'metal';}
  33. document.title = '' + Math.floor(maxProgress) + '% ' + maxResource;
  34. };
  35.  
  36. var _start = function() {
  37. tAutoBuy = setInterval(function() {
  38. var cnt = _autoUpgrade() + _autoBuy() + _autoJobs();
  39. if (cnt > 0) {
  40. tooltip('hide');
  41. }
  42. }, 1000);
  43. $('#botStart').text('Bot stop');
  44. }
  45.  
  46. var _stop = function() {
  47. clearInterval(tAutoBuy);
  48. $('#botStart').text('Bot start');
  49. }
  50. var _onStartButton = function() {
  51. if (isStarted) {
  52. _stop();
  53. } else {
  54. _start();
  55. }
  56. }
  57.  
  58. var _styleUpdate = function() {
  59. // remove counts
  60. $('head').append('<style type="text/css">.queueItem,.btn{padding:0}.thingColorCanNotAfford.upgradeThing{background-color:#530053;}</style>');
  61. // remove tabs
  62. $('#buyTabs').hide();
  63. filterTabs('all');
  64. // remove captions
  65. $('#buildingsTitleDiv,#upgradesTitleDiv,#equipmentTitleDiv').hide();
  66. // fix height
  67. $('#topRow,#queueContainer').css('margin-bottom', '0');
  68. $('#jobsTitleDiv').css('padding', '0').css('font-size', 'smaller');
  69. $('#buyHere').css('margin', '0').css('padding', '0').css('overflow-x', 'hidden');
  70. $('#queueContainer').css('height', '70px');
  71. $('#numTabs').css('margin', '0');
  72. $('#buyContainer').css('height', 'calc(99vh - 20vw - 96px)');
  73. // add button
  74. $('#settingsTable tr').append('<td class="btn btn-info" id="botStart">Bot start</td>');
  75. $('#botStart').click(_onStartButton);
  76. //
  77. _log('Started!');
  78. }
  79.  
  80. var _autoUpgrade = function() {
  81. var $item = $('#upgradesHere').find('.thingColorCanAfford').first();
  82. if ($item.length > 0) {
  83. $item.trigger( "click" );
  84. _log('Upgrading ' + $item.attr('id'));
  85. return 1;
  86. } else {
  87. return 0;
  88. }
  89. }
  90.  
  91. var _autoBuy = function() {
  92. var $item = $('#buildingsHere').find('.thingColorCanAfford:not([id=Wormhole])').last();
  93. if ($item.length > 0 && $item.attr('id') != 'Trap') {
  94. $item.trigger("click");
  95. _log('Building ' + $item.attr('id'));
  96. return 1;
  97. } else {
  98. return 0;
  99. }
  100. }
  101.  
  102. var _autoJobs = function() {
  103. var cnt = 0;
  104. var $trainer = $('#jobsHere').find('.thingColorCanAfford[id=Trainer]');
  105. if ($trainer.length > 0) {
  106. $trainer.trigger("click");
  107. _log('New trainer');
  108. cnt++;
  109. }
  110. var $explorer = $('#jobsHere').find('.thingColorCanAfford[id=Explorer]');
  111. if ($explorer.length > 0) {
  112. $explorer.trigger("click");
  113. _log('New explorer');
  114. cnt++;
  115. }
  116. var farmer = parseInt($('#jobsHere').find('#FarmerOwned').text());
  117. var lumber = parseInt($('#jobsHere').find('#LumberjackOwned').text());
  118. var miner = parseInt($('#jobsHere').find('#MinerOwned').text());
  119. var science = parseInt($('#jobsHere').find('#ScientistOwned').text());
  120. var jobsTotal = farmer + lumber + miner + science;
  121. if (science < (jobsTotal / 61)) {
  122. var $science = $('#jobsHere').find('.thingColorCanAfford[id=Scientist]');
  123. if ($science.length > 0) {
  124. $science.trigger("click");
  125. _log('New scientist', 'Combat');
  126. cnt++;
  127. }
  128. }
  129. if (farmer < (jobsTotal / 3.05)) {
  130. var $farmer = $('#jobsHere').find('.thingColorCanAfford[id=Farmer]');
  131. if ($farmer.length > 0) {
  132. $farmer.trigger("click");
  133. _log('New farmer', 'Combat');
  134. cnt++
  135. }
  136. }
  137. if (lumber < (jobsTotal / 3.05)) {
  138. var $lumber = $('#jobsHere').find('.thingColorCanAfford[id=Lumberjack]');
  139. if ($lumber.length > 0) {
  140. $lumber.trigger("click");
  141. _log('New lumberjack', 'Combat');
  142. cnt++;
  143. }
  144. }
  145. if (miner < (jobsTotal / 3.05)) {
  146. var $miner = $('#jobsHere').find('.thingColorCanAfford[id=Miner]');
  147. if ($miner.length > 0) {
  148. $miner.trigger("click");
  149. _log('New miner', 'Combat');
  150. cnt++;
  151. }
  152. }
  153. var unemployed = parseInt($('#jobsTitleUnemployed').text());
  154. if (unemployed > 0 && cnt === 0) {
  155. $farmer = $('#jobsHere').find('.thingColorCanAfford[id=Farmer]');
  156. if ($farmer.length > 0) {
  157. $farmer.trigger("click");
  158. _log('New farmer', 'Combat');
  159. cnt++
  160. }
  161. }
  162.  
  163. return cnt;
  164. }
  165.  
  166. var _styleFix = function() {
  167. $('.buyBox').find('.thing').find('br').remove();
  168. $('.buyBox').find('.thing').find('.thingOwned').css('margin-left','4px');
  169. $('#upgradesHere').find('.alert.badge').text('');
  170. }
  171.  
  172. setTimeout(function() {
  173. tMain = setInterval(_checkProgress, 500);
  174.  
  175. tStyleFix = setInterval(_styleFix, 2000);
  176. _styleUpdate();
  177. _styleFix();
  178. }, 1000);
  179.  
  180. })();