自動クッキー叩き

  • /*
     * @title        自動クッキー叩き
     * @description  Cookie Clicker( http://orteil.dashnet.org/cookieclicker/ )にてクッキーを自動でクリックし続ける
     * @include      http://orteil.dashnet.org/cookieclicker/*
     */
    
    (function() {
    
      //// Auto Click the Big Cookie ////
      
      setInterval(function() {
        document.querySelector('#bigCookie').click();
      }, 1000/16); // meijin
    
      //// Auto Click Golden Cookies ////
    
      var isDisplayNone = function(node) {
        return document.defaultView.getComputedStyle(node).getPropertyValue('display') === 'none';
      }
    
      var $q = function(sel) {
        return Array.prototype.slice.call(document.querySelectorAll(sel));
      }
    
      // MutationObserver - Web API interfaces | MDN
      // https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver
    
      // select the target node
      var goldenCookie = document.querySelector('#goldenCookie');
      var seasonPopup = document.querySelector('#seasonPopup');
    
      // create an observer instance
      var popupObserver = new MutationObserver(function(mutations, observer) {
        mutations.forEach(function(mutation) {
          if (!isDisplayNone(mutation.target)) {
            var popupTxt = '';
            if (mutation.target.id == 'goldenCookie') {
              popupTxt += 'clicked Goleden Cookie, ';
            } else if (mutation.target.id == 'seasonPopup') {
              popupTxt += 'clicked Season Popup,   ';
            }
            mutation.target.click();
            $q('#notes > div').some(function(e) {
              if (!isDisplayNone(e) && e.textContent !== 'Game saved') {
                popupTxt += e.textContent;
              }
              return popupTxt;
            });
            console.log([
              new Date().toLocaleFormat('%Y-%m-%d %T %Z'),
              popupTxt,
            ].join(', '));
          }
        });
      });
    
      // configuration of the observer:
      var observerConfig = { attributes: true, attributeFilter: ['style'] };
    
      //pass in the target node, as well as the observer options
      popupObserver.observe(goldenCookie, observerConfig);
      popupObserver.observe(seasonPopup, observerConfig);
    
      // later, you can stop observing
      // popupObserver.disconnect();
    
      console.log('loaded 自動クッキー叩き')
    
    })();
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2014/12/15 02:40:25 - 2014-12-15
  2. 2014/11/05 15:30:26 - 2014-11-05
  3. 2013/09/18 06:43:53 - 2013-09-18
  4. 2013/09/18 06:13:56 - 2013-09-18