Cookie clicker tools

Cookie clicker tools (visual)

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

  1. // ==UserScript==
  2. // @name Cookie clicker tools
  3. // @namespace orteil.dashnet.org
  4. // @version 2.035
  5. // @description Cookie clicker tools (visual)
  6. // @author Anton
  7. // @match http://orteil.dashnet.org/cookieclicker/*
  8. // @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
  9. // ==/UserScript==
  10.  
  11. (function() {
  12. 'use strict';
  13. var log = [], logTitle = '<div class="section">Cookies 2.0.35 is here!</div>', newLogs = 0;
  14.  
  15. var started = false, t2, t3, tClick, tClickFrenzy, oldTitle = '';
  16. var _caption = function(txt) {
  17. var $v = jQuery('#versionNumber');
  18. if ($v.text() != txt) $v.text(txt);
  19. }
  20. var _title = function(txt) {
  21. var newTitle = (newLogs > 0 ? '(' + newLogs + ') ' : '') + txt;
  22. if (document.title != newTitle) {
  23. oldTitle = txt;
  24. document.title = newTitle;
  25. }
  26. }
  27. var _titlePercent = function(have, need, txt) {
  28. var percent = Math.ceil(have / (need !== 0 ? need : 1) * 100);
  29. _title((percent < 10 ? '00' : (percent < 100 ? '0' : '')) + String(percent) + "% - " + txt);
  30. }
  31. var _addLog = function(text) {
  32. var t = new Date();
  33. log.push(t.toUTCString() + ': ' + text);
  34. Game.updateLog = logTitle + '<div class="subsection"><div class="listing">' +
  35. log.join('</div><div class="listing">') + '</div></div>';
  36. newLogs++;
  37. jQuery('#logButton').text('Log (' + newLogs + ')')
  38. _title(oldTitle);
  39. }
  40. jQuery('#logButton').text('Log').on("click", function() {
  41. newLogs = 0;
  42. jQuery('#logButton').text('Log');
  43. });
  44. Game.Win('Third-party');
  45. var startT = function() {
  46. t2 = setInterval(function() {
  47. var wrinklersCount = 0, maxWrinkler = -1, maxSucked = 0;
  48. for (i in Game.wrinklers) {
  49. if (Game.wrinklers[i].sucked > 0) {
  50. wrinklersCount++;
  51. }
  52. }
  53. if (wrinklersCount >= 10 || Game.hasBuff('Elder frenzy')) {
  54. var wrinklesIncome = 0;
  55. for (i in Game.wrinklers) {
  56. wrinklesIncome += Game.wrinklers[i].sucked;
  57. Game.wrinklers[i].hp = 0; // kill ALL
  58. }
  59. if (wrinklesIncome > 0) {
  60. _addLog('Killed all Wrinkles for ' + Beautify(wrinklesIncome) + ' because of ' + (Game.hasBuff('Elder frenzy') ? '"Elder frenzy"' : 'count 10.'));
  61. }
  62. }
  63.  
  64. var buffMult = 1;
  65. for (var buff in Game.buffs) {
  66. if (Game.buffs[buff] !== 0 && typeof Game.buffs[buff].multCpS !== 'undefined') {
  67. buffMult = buffMult * Game.buffs[buff].multCpS;
  68. }
  69. }
  70. var normalCookiesPs = Game.cookiesPs / (buffMult !== 0 ? buffMult : 1);
  71. var minimalMoney = normalCookiesPs * 42100;
  72. var moneyCanSpend = Game.cookies - minimalMoney;
  73. if (moneyCanSpend < 0) {
  74. _caption('Collecting minimum ' + Beautify(minimalMoney));
  75. _titlePercent(Game.cookies, minimalMoney, 'minimum');
  76. return;
  77. }
  78. var minNewObjectPrice = null;
  79. for (var i in Game.ObjectsById) {
  80. if (typeof i !== 'undefined' && i != 'undefined' && Game.ObjectsById.hasOwnProperty(i)) {
  81. if (Game.ObjectsById[i].locked === 0 && Game.ObjectsById[i].amount === 0) {
  82. var p = Game.ObjectsById[i].price;
  83. if (minNewObjectPrice === null || p < minNewObjectPrice) minNewObjectPrice = p;
  84. }
  85. }
  86. }
  87. var u = null; // upgrade can buy
  88. var minUpgradePrice = null;
  89. for (var g in Game.UpgradesById) {
  90. if (Game.UpgradesById[g].bought === 0 && Game.UpgradesById[g].unlocked == 1) {
  91. //u.push(Game.UpgradesById[g]);
  92. if (minUpgradePrice === null) {
  93. minUpgradePrice = Game.UpgradesById[g].basePrice;
  94. u = g;
  95. } else if (Game.UpgradesById[g].basePrice < minUpgradePrice) {
  96. minUpgradePrice = Game.UpgradesById[g].basePrice;
  97. u = g;
  98. }
  99. }
  100. }
  101. var longTime = (Game.cookiesPs < 100) ? 1 : (
  102. (Game.cookiesPs < 1000) ? 2 : (
  103. (Game.cookiesPs < 10000) ? 3 : (
  104. (Game.cookiesPs < 1E5) ? 4 : (
  105. (Game.cookiesPs < 1E6) ? 5 : (
  106. (Game.cookiesPs < 1E9) ? 10 : 15
  107. )
  108. )
  109. )
  110. )
  111. );
  112. var needUpgrade = (minNewObjectPrice > minUpgradePrice || minUpgradePrice === null) &&
  113. u !== null && typeof Game.UpgradesById[u] !== 'undefined' &&
  114. (moneyCanSpend >= minUpgradePrice || ((minUpgradePrice - moneyCanSpend) / Game.cookiesPs) <= (longTime*60));
  115. if (needUpgrade)
  116. {
  117. if (Game.UpgradesById[u].canBuy()) {
  118. Game.UpgradesById[u].buy();
  119. _addLog('Buy upgrade ' + Game.UpgradesById[u].name + ' for ' + Beautify(minUpgradePrice));
  120. } else {
  121. _caption('Upgrading ' + Game.UpgradesById[u].name + ' for ' + Beautify(minUpgradePrice));
  122. _titlePercent(moneyCanSpend, minUpgradePrice, Game.UpgradesById[u].name);
  123. }
  124. } else {
  125. var minInvert = null, minObj = null;
  126. for (i in Game.ObjectsById) {
  127. if (typeof i !== 'undefined' && i != 'undefined' && Game.ObjectsById.hasOwnProperty(i)) {
  128. if (Game.ObjectsById[i].locked === 0) {
  129. var interest = Game.ObjectsById[i].price / Game.ObjectsById[i].storedCps;
  130. if (minInvert === null) {
  131. minInvert = interest;
  132. minObj = i;
  133. } else if (interest < minInvert) {
  134. minInvert = interest;
  135. minObj = i;
  136. }
  137. }
  138. }
  139. }
  140. if (minObj !== null) {
  141. if (Game.ObjectsById[minObj].price < moneyCanSpend) {
  142. Game.ObjectsById[minObj].buy(1);
  143. _addLog('Buy object ' + Game.ObjectsById[minObj].name + ' for ' + Beautify(Game.ObjectsById[minObj].price));
  144. } else {
  145. _caption('Collecting ' + Beautify(Game.ObjectsById[minObj].price) + ' for ' + Game.ObjectsById[minObj].name);
  146. _titlePercent(moneyCanSpend, Game.ObjectsById[minObj].price, Game.ObjectsById[minObj].name);
  147. }
  148. }
  149. }
  150.  
  151. }, 1000);
  152. started = true;
  153. _caption('Started');
  154. _addLog('Autobuy start!');
  155. }
  156. var stopT = function() {
  157. clearInterval(t2);
  158. started = false;
  159. _caption('Collecting gold...');
  160. _addLog('Autobuy stop.');
  161. }
  162. jQuery('#versionNumber').on("click", function() {
  163. if (!started)
  164. startT();
  165. else
  166. stopT();
  167. });
  168. setTimeout(function() {
  169. t3 = setInterval(function() {
  170. var golden = Game.shimmers;
  171. if (golden.length > 0) {
  172. for (var i in golden) {
  173. golden[i].pop();
  174. }
  175. }
  176. }, 1000);
  177. tClickFrenzy = setInterval(function() {
  178. if (Game.hasBuff('Click frenzy') || Game.hasBuff('Cursed finger')) {
  179. Game.ClickCookie();
  180. }
  181. }, 75);
  182. if (Game.cookiesPs < 1E6) {
  183. tClick = setInterval(function() {
  184. Game.mouseX = jQuery('#bigCookie').width() / 2 + jQuery('#bigCookie').offset().left;
  185. Game.mouseY = jQuery('#bigCookie').height() / 2 + jQuery('#bigCookie').offset().top;
  186. Game.ClickCookie();
  187. if (Game.cookiesPs > 1E8) clearInterval(tClick);
  188. }, 300);
  189. }
  190. _caption('Collecting gold...');
  191. }, 5000);
  192. })();