Cookie Clicker で自動クリックする Greasemonkey スクリプトを書いてみた
『気づいたら朝になっていた』『腱鞘炎患者製造機』と一部で人気のブラウザゲーム Cookie Clicker をはじめてみました。このゲームの目的はただひたすらにクッキーを作ることです。
画面左の大きなチョコチップクッキーをクリックすることで、おいしそうなクッキーが1枚手に入ります。
作ったクッキーとひきかえにアイテムを買うことでクッキーの生産効率がアップし、さらに多くのクッキーを作れるようになります。
クッキーを何個作ったら何かが起こるとか、そういうのはありません。(PS3 的な実績はありますが。)本当にそれだけ。
……なぜそうまでして人はクッキーを作り続けるのか……。
……このクッキーにいったいどれだけの意味があるというのか……。
しかしあなたに悩むための時間はありません。
「おい新入りィ!!手が止まってんぞォッ!!」
どこからか親方の声が聞こえてきます。
そう、考える暇があるのなら、ひたすらクッキーをクリックし続けるのです。
この宇宙をクッキーで埋め尽くすために……。
―――以上クッキー中毒者の脳内ストーリーより。
という感じで怪しいくらいにはまってしまう Cookie Clicker ですが、いい加減マウスが壊れそうになってきたので、自動でクリックしてくれるグリモンスクリプトを書いてみました。(ようやく本題)
画面左に表示されるクッキーだけでなく、稀に出現するボーナスアイテム: 金のクッキーも自動でクリックしてくれます。
注意
このスクリプトによって Cookie Clicker のゲームバランスを壊したとしても、当方は一切責任を負いません。
ご自身で心ゆくまで手作りクッキーを焼いた上で、自己責任のもとご利用ください。
このスクリプトによって Cookie Clicker のゲームバランスを壊したとしても、当方は一切責任を負いません。
ご自身で心ゆくまで手作りクッキーを焼いた上で、自己責任のもとご利用ください。
Cookie Clicker からクリックをとったらただの Cookie ですからね…。
Greasemonkeyとは
Greasemonkey は WEB ページ上で自作の JavaScript を実行するための firefox アドオンです。スクリプトを自分で書けるというあまりの拡張性の高さから、昔からいろいろなページをごにょごにょするために利用されてきました。JavaScript 自体はグリモンスクリプトをインストールした firefox 上で動作するので、サーバー側の WEB ページを書き換えるというようなことはできません。
しかし WEB ブラウザ上でできることは普通にできる(画面内に表示されているメールアドレスをどこかのサーバーに送る等)ので、怪しいスクリプトはインストールしないように気をつけてください。
また、インストールしたグリモンスクリプトは動作させる URL を指定できるので、Cookie Clicker のページでだけこのスクリプトを実行させる、というような設定ができます。すごく便利です。
グリモンスクリプトのインストール
まずはこちらから Greasemonkey をインストールします。インストール後はブラウザを再起動してください。
次に以下のリンクから Greasemonkey スクリプトをインストールします。
Pushy Grandma
※ 2014/04/26 ver0.3 を公開しました。
※ 2013/09/18 ver0.23 を公開しました。
最後に Cookie Clicker のページを開き、Pushy Grandma を有効にします。
Greasemonkey をインストールすると、ブラウザ左上か、ステータスバーにおサルのアイコンが表示されるようになります。このアイコン右端の三角ボタンをクリックするとメニューが表示されますので、Pushy Grandma を選び、チェック状態(有効化)してください。
その後 Cookie Clicker のページを再読み込みすれば、チョコレートの波の中にクッキーをむさぼるおばあちゃんが表示されます。
ソースコード
グリモンスクリプトの中身は pushyGrandma.user.js を開いてもらえばわかりますが、ソースコードも載せておきたいと思います。(ver0.1 時点でのソースコードになります)// ==UserScript== // @name Pushy Grandma // @namespace PushyGrandma // @description Automatically click normal and golden cookies. // @include http://orteil.dashnet.org/cookieclicker/ // @require http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js // @version ver 0.2 // ==/UserScript== $(document).ready(function(){ var interval = 10; var clickCookie = function() { // click cookie. $("#bigCookie").trigger("click"); // click golden cookie. var goldenCookie = $("#goldenCookie"); if (goldenCookie.css("display") == "block") { goldenCookie.trigger("click"); } setTimeout(clickCookie, interval); } // Append grandma. var grandma = document.createElement("img"); var divGame = document.getElementById("sectionLeft"); divGame.insertBefore(grandma, divGame.firstChild); var jGrandma = $(grandma); jGrandma.attr("id", "grandma"); jGrandma.attr("src", "http://chocolapod.sakura.ne.jp/pushyGrandma/pushyGrandma.gif"); jGrandma.css({ "z-index": "300", "position": "absolute", "left": "80", "bottom": "0" }); setTimeout(clickCookie, interval); });機能としては、一定間隔毎にクッキーをクリックするのと、ゴールデンクッキーが表示されていればそれもクリックするというだけです。
クリック処理は 10 ミリ秒というかなり短い間隔で走らせています。
変数 interval の値を書き換えることで好きな時間間隔に変更することができます。
ただし、4 ミリ秒以下にすると Cookie Clicker の仕様として無視されるので、注意してください。
なお、このスクリプトでのクリック処理と Cursor アイテムでの自動クリックは、なんとなく競合していそうな気配です(自動クリック→スクリプトでのクリックでも、 4 ミリ秒の無効判定がされていそうな感じ)。きちんと確認はしていませんが…。
そしてソースコードと製作時間の半分くらいはこのおばあちゃんを表示するために費やしているという…。
なんかモンスターっぽくしようと思っていろいろいじってたら髪の毛逆立ちまくりな感じに!!
留意事項
スクリプトでクッキーをクリックしまくっても、サーバー負荷の点では問題ありません。少なくとも Cookie Clicker ver.1.036 の時点では、クッキーのクリック処理ではサーバーへの HTTP リクエストは投げていないためです。(それどころかデータのセーブでさえ Javascript で orteil.dashnet.org ドメインの Cookie に値を直接書き込んでいるだけで、サーバーとは通信していませんでした。)
最後に、スクリプトの無効化は有効化の時と同じく、グリモンのメニューから Pushy Grandma をクリックし、チェックをはずす事で無効化できます。
それでは、あなたのクッキー作りと利き腕に平穏のありますように…。
WEB 技術 コメント (2) 2013/09/17 12:30:35