RSS2.0

Cookie Clicker で自動クリックする Greasemonkey スクリプトを書いてみた

『気づいたら朝になっていた』『腱鞘炎患者製造機』と一部で人気のブラウザゲーム Cookie Clicker をはじめてみました。

cookieClicker00.png
このゲームの目的はただひたすらにクッキーを作ることです。
画面左の大きなチョコチップクッキーをクリックすることで、おいしそうなクッキーが1枚手に入ります。
作ったクッキーとひきかえにアイテムを買うことでクッキーの生産効率がアップし、さらに多くのクッキーを作れるようになります。
クッキーを何個作ったら何かが起こるとか、そういうのはありません。(PS3 的な実績はありますが。)本当にそれだけ。

……なぜそうまでして人はクッキーを作り続けるのか……。
……このクッキーにいったいどれだけの意味があるというのか……。
しかしあなたに悩むための時間はありません。
「おい新入りィ!!手が止まってんぞォッ!!」
どこからか親方の声が聞こえてきます。
そう、考える暇があるのなら、ひたすらクッキーをクリックし続けるのです。
この宇宙をクッキーで埋め尽くすために……。

―――以上クッキー中毒者の脳内ストーリーより。


という感じで怪しいくらいにはまってしまう Cookie Clicker ですが、いい加減マウスが壊れそうになってきたので、自動でクリックしてくれるグリモンスクリプトを書いてみました。(ようやく本題)
画面左に表示されるクッキーだけでなく、稀に出現するボーナスアイテム: 金のクッキーも自動でクリックしてくれます。

注意
このスクリプトによって Cookie Clicker のゲームバランスを壊したとしても、当方は一切責任を負いません。
ご自身で心ゆくまで手作りクッキーを焼いた上で、自己責任のもとご利用ください。


Cookie Clicker からクリックをとったらただの Cookie ですからね…。

ただ、クリックで作れるクッキーの数は、自動生産されるクッキーのだいたい 3 % くらいのようなので、クリックを自動でまわしても極端に有利になるということもなさそうです。1 秒間に 33 回クリックしてやっと自動生産量と同じになる感じ。


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 を選び、チェック状態(有効化)してください。
cookieClicker01.png
その後 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 ミリ秒の無効判定がされていそうな感じ)。きちんと確認はしていませんが…。

cookieMonster.gif
そしてソースコードと製作時間の半分くらいはこのおばあちゃんを表示するために費やしているという…。
なんかモンスターっぽくしようと思っていろいろいじってたら髪の毛逆立ちまくりな感じに!!

留意事項

スクリプトでクッキーをクリックしまくっても、サーバー負荷の点では問題ありません。
少なくとも Cookie Clicker ver.1.036 の時点では、クッキーのクリック処理ではサーバーへの HTTP リクエストは投げていないためです。(それどころかデータのセーブでさえ Javascript で orteil.dashnet.org ドメインの Cookie に値を直接書き込んでいるだけで、サーバーとは通信していませんでした。)

最後に、スクリプトの無効化は有効化の時と同じく、グリモンのメニューから Pushy Grandma をクリックし、チェックをはずす事で無効化できます。

それでは、あなたのクッキー作りと利き腕に平穏のありますように…。
  WEB 技術  コメント (2)  2013/09/17 12:30:35


公開範囲:
2013/09/22 15:14:36   ゲストさん (210.231.61.114) 公開範囲: すべて, 承認済み
これってレッドクッキーもクリックしちゃいますか?
2013/09/24 08:06:38   momokan 公開範囲: すべて, 承認済み
はい。レッドクッキーもクリックします。

レッドクッキーをクリックしたくない場合は Grandmapocalypse を発生させないほうが効率がよいと思うので、
One mind を購入しないで怒り状態にさせないか、Elder Covenant を購入して永遠に鎮めてあげてください。
プロフィール HN: ももかん
ゲーム作ったり雑談書いたり・・・していた時期が私にもありました。
カレンダー
<<2019, 11>>
272829303112
3456789
10111213141516
17181920212223
24252627282930