Skip to content

Instantly share code, notes, and snippets.

@Leko
Last active December 23, 2015 04:48
Show Gist options
  • Save Leko/6582242 to your computer and use it in GitHub Desktop.
Save Leko/6582242 to your computer and use it in GitHub Desktop.
Firefox, Chrome, Safari最新版で動作確認。 今はやりのCookie Clicker(http://orteil.dashnet.org/cookieclicker/)を自動制御するjsを書いた。 コンソールを開いて、以下のjsをベタっと貼り付けてEnter。あとは基本放置するだけです。
!function() {
"use strict";
// 設定
var FPS = 500, // 1秒に何回処理を行うか
DONT_BUY_ELDER = true; // Elder Pledge, Elder Covenantを買わない
// 汎用関数群
var each = function(arr, fn) {
for(var i = 0; i < arr.length; i++) {
fn.call(arr[i], arr[i], i);
}
},
q = function(selector) {
return document.querySelectorAll(selector);
},
hasClass = function(el, className) {
return el.classList.contains(className);
},
getOwnedCnt = function(el) {
var cnt = el.childNodes[1].childNodes[2];
return cnt ? +cnt.textContent : 0;
},
parseItemId = function(el) {
var onclickStr = el.attributes.getNamedItem("onclick").textContent;
return +onclickStr.match(/\[(\d+)\]/)[1];
},
getCookieCnt = function(el) {
return +el.textContent.match(/[\d\,]+/);
},
enableThenClick = function(el, i) {
var itemId = parseItemId(el);
// アポカリプスハマり解除
if(DONT_BUY_ELDER && itemId === 84 || itemId === 74) return;
if(hasClass(el, 'enabled')) {
el.onclick();
}
};
// oneMind等の購入確認アラートを上書き
window.confirm = function() { return true; };
var FILL128 = false,
NEVER_CLICK = true,
BUY_STEPS = [10, 50, 100, 128, Number.MAX_VALUE], // n個ずつアイテムの数を買い揃えてく
cookieCnt = q("#cookies")[0],
cookie = q("#bigCookie")[0],
golden = q("#goldenCookie")[0],
upgrades = q("#upgrades .upgrade"),
products = q("#products .product"),
news = q("#commentsText")[0],
newses = [];
// クッキー連打, 商品を買う, アップグレードする, ゴールデンを押す
setInterval(function() {
var buyElement,
nextStep = true;
if(!NEVER_CLICK) cookie.onclick(); // 通常クッキー
if(NEVER_CLICK || getCookieCnt(cookieCnt) > 1000000) NEVER_CLICK = false;
golden.onclick(); // ゴールデン
// 128個までは実績に必要、あとはBBAを増やす
if(FILL128) {
buyElement = products[1];
} else {
each(products, function(el, i) {
var buyCnt = el.childNodes[1].childNodes[2];
if(hasClass(el, 'enabled') && (!buyCnt || +buyCnt.textContent < BUY_STEPS[0])) {
buyElement = el;
}
nextStep = nextStep && !!buyCnt && +buyCnt.textContent >= BUY_STEPS[0];
});
if(nextStep && BUY_STEPS.length > 1) {
BUY_STEPS.shift();
if(BUY_STEPS.length === 1) FILL128 = true;
}
}
if(buyElement) buyElement.onclick();
// 余った金でアップグレード
each(upgrades, enableThenClick);
// ニュース収集(重複は除外)
var newsTxt = news.textContent;
if(newses.indexOf(newsTxt) < 0) {
console.log(newsTxt); // コンソールにニュースを出力
newses.push(newsTxt);
}
}, 1000 / FPS);
}();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment