ぺんちゃん日記

食と歴史と IT と。 Web の旅人ぺんじろうが好奇心赴くままに彷徨います 。

ゲーム画面の色を吸い取ってゲームの状態を判定する【AutoHotkey】。

f:id:yasushiito:20190403184928p:plain

もう一段高いプレーをしたい。

前回のハックでマウスをクリックしないで千年戦争アイギスをプレイすることに成功しました。
やはりゲーマーというもの、少しでも上手にプレイしたいもので、ここ一番の時にもっと素早くスキルをファイヤーさせたいものです。
魔神のレベル15をクリアできれば充分じゃないかと思わないでもないですが、 Auto HOT key のスキル上達も兼ねているので真剣に考えてみたいと思います。

判定材料探す。

問題の一つはスキルを使用するユニットを選ぶためのクリックに時間を要すること。
クリックを連打するとユニットのステータスが表示/非表示を繰り返してしまうので表示された瞬間をプレイヤーが確認できなければなりません。
今はそれを防止するために一度クリックしたらマウスポインタを動かすまでは再度クリックしないように仕掛けてあります。
そこで画面の一部を監視して、ステータス表示中の雰囲気があればクリックを止めることで連打してもステータスとボタンが非表示にならないようにできないか検討してみます。
Auto HOT Key はスクリーン上の RGB コードを取得する機能PixelGetColorも備わっています。
ステータス表示の左側で撤退ボタンが表示されていますが、こいつの青色が特徴的なので利用してみたいです。
f:id:yasushiito:20190616100009p:plain

ゲーム画面の色を確認するにはカラーピッカーを使います。
カラーピッカーで検索すればスクリーン上の色を取り出すアプリケーションがいくつか見つかると思うので、お好みのものをダウンロードして使ってください。
ダウンロードやインストールが面倒な人は prtscn キーでスクリーンショットを撮影してペイントツールに貼り付けてカラーコードを確かめてください。

f:id:yasushiito:20190616095927p:plain
ペイントにクリップボードから貼り付けたら。
f:id:yasushiito:20190616095952p:plain
スポイトを選んで。
f:id:yasushiito:20190616100009p:plain
色を吸い取りたい場所でマウスをクリック。
f:id:yasushiito:20190616100032p:plain
色の編集から。
f:id:yasushiito:20190616100049p:plain
カラーパレットを開けば R と G と B つまり赤緑青のカラーコードを取れます。

こうやって採取した RGB コードが画面の左下の方に見つかるかどうかでステータスの表示を判定します。
もちろんボタンの青色の部分の座標を採取します。
たまたまこれに近い青色を使ったユニットがあると判定ミスする可能性もあるので、2箇所ほど色を吸い取って判定することにします。
RGB コードの取り出しは次のページを参考にすると良いでしょう。

hail2u.net

キーボードを押せる人はこのスクリプトでカラーコードを取るといいかもしれませんね。

ところが。

ここまで素材を用意したところで発覚したことがあります。
手がかりにしようと考えていた撤退ボタンがグラデーションがかけられていることに気がつきました。
これでは XY 座標が1ピクセルでもずれるだけでも RGB コードが変化するので素直に判定できません。
RGB コードを R と G と B の三つに分解して、誤差も含めて判定するように仕掛けても良いのですが、若干の不安がつきまといます。
よく似た画像を探すImageSearch関数を使った方がスマートな気がしてきました。
こちらなら関数に誤差を含めて探せます。

ahkwiki.net

ahkwiki.net