ジャンル不定の日記です。

「かんぱに☆ガールズ」のマクロ

先日の記事で書いた、ブラウザゲーム「かんぱに☆ガールズ」のマクロですが、
その後も改良を続けて、ちょっと設定すれば環境変化に対応できる感じになったんで配布しときます。
使いたい方いたらどうぞ。
X11::GUITestでマウス操作を行うのでLinux用(X用)ですが、X11::GUITestをWin32::GuiTestに置き換えればWindowsでも使えるかも。

まだ改良とか続けていくと思います。
自動カンカンとか素材売却ができればいいんだが・・・誤操作が怖いw


配布物

内容: ブラウザゲーム「かんぱに☆ガールズ」で迷宮とクエストを残食料に応じて自動巡回する。
対象: Linux用(X用)
必要コマンド: perl , import(ImageMagick)
必要モジュール: X11::GUITest , Imager

注意事項: 自動でマウス移動とクリックが発生するプログラムです。

ダウンロード



更新履歴
[2016.11.17]
長いことアップしてませんでしたが新しいのアップしました、初期座標の自動調整機能がついてます。
初期状態で早送りになったので早送りは操作しないようになりました。
[2015.10.17]
キャラクターストーリーの自動選択に対応した。
[2015.10.14]
キャプチャファイルの作成場所を変更できるようにした。tmpfs等のramdisk使うべき。
[2015.10.12]
フォント依存と思われ、環境によって判別に成功しない箇所があったので修正。
[2015.10.09]
アップデートで再度クエスト自動選択が実装されたので対応しました。
[2015.10.02]
アップデートに対応して、クエスト選択処理を変更しました。前回と別の章のクエストは受注できなくなりました。
不具合対応で元に戻っているため、不具合対応に対応した臨時版を配信中。
[2015.10.01]
あのコがやる気全開なので、自動カンカン機能を実装した。
[2015.09.30]
早送りが失敗し難くなったはず。(早送りボタンは1クリックで2回反応する場合がある模様。バグ?)
クリック後にカーソルを元の位置に戻すようにした。
[2015.09.29]
不完全一致の判定処理を追加し、社長室と残食料の判定に誤差を許容するようにした。



判定用画像について

画像判定は縦横1pxのTIFF形式画像と、importコマンドで作成した特定位置1pxのTIFF形式スクリーンキャプチャの一致で判定します。
基本的に完全一致で判定しますが、一部の処理で誤差を許容します。
判定待ち処理で1000ループ以内に一致しない場合はアプリ終了となります。

添付画像
ファイル名
座標
用途備考
#00B0B2.tif
クエスト結果の文字色
残食料判定クエスト結果の文字はフォント依存で座標がずれる気配なので、クエスト結果の判定に使うのは辞めました。
#A09698.tif
クエストページ(迷宮選択中)の章選択の矢印(174,172)
クエストページ状態判定
#BBC726.tif
施設ページ左上の社長室に戻るボタン(82,6)
施設ページ判定アニメーションで変色します。
#D0D0D0.tif
早送りボタンの色
早送りImagerのバージョン?によって色情報の取得に誤りが生じる気配なので、置き換える必要があるかも。
早送りボタンが押されていない状態時の座標936,445で色が#D0D0D0の位置です。
#E75145.tif
ルート選択出現中の金箱(693,531)
ルート選択出現判定
#F3E7D5.tif
クエストページ(迷宮非選択中)の章選択の矢印(174,172)クエストページ状態判定
#FDFDFD.tif
選択肢ボタンの文字
未使用
#FFFFFF.tif
装備開発及びクエスト受注ボタンの文字色
装備開発・クエスト受注
キャラスト.tif
キャラクターストーリーページの82,149
未使用
クエスト.tif
クエストページの106,161
未使用
クエスト結果.tifクエスト結果画面の右下矢印(933,579)クエスト結果画面の判定アニメーションで変色します。
施設.tif
施設ページの209,445未使用
社長室.tif
社長室ページの291,305
社長室のクエストボタン判定アニメーションでタイミングにより微妙に変色します。
背景と合成されていると思われるので、社屋Lvが20以外の場合は置き換える必要があるかもしれません。
座標はアプリ左上が0,0です。



設定

macro.plの上の方に設定項目があります。

$LEFTと$TOPは環境に合わせて設定する必要があります。
章の表示位置に合わせて@QUESTを設定する必要があります。
装備開発を行うには所有レシピに合わせて@MAKE_WOOD等を設定する必要があります。

初期座標の自動調整機能つけたので$LEFTと$TOPはコメントアウトしてください。
指定されている場合は指定座標になりますので、自動でうまく行かない場合は設定してください。
デスクトップ全体の上端から590px以内の位置にゲーム画面が存在しない場合は確実に自動調整に失敗します。

変数名
説明
$LEFT
デスクトップ左端を0とした場合のアプリ左端位置。(px)
$TOPデスクトップ上端を0とした場合のアプリ上端位置。(px)
$CAP
キャプチャ画像のファイル名。頻繁に作成されるのでtmpfs等のRAMディスク上にすべきです。
$WAIT_S
短ウエイト(秒)。主に、クリック後のアプリ処理待ち用
$WAIT_L
長ウエイト(秒)。通信待ち用に用意したが、現在未使用
$WAIT_I画像判定等のループ中で使用するウエイト(秒)。
$WAIT_F
早送りクリック後の判定待ちウエイト(秒)。短いと早送り失敗する可能性があります。
$DIFF_ROOM
社長室判定の許容誤差。
社長室のクエストボタンを判定しますが、透過と思われる上にアニメーションで変色するので誤差を許容します。
社長室の判定に失敗する場合は値を大きくすれば解決するかもしれません。
$DIFF_BAR
食料・資材の残量判定の許容誤差。
バーは透過色で、背景及び秘書と合成されているため誤差を許容します。
残料の判定が正常にできない場合は値を大きくすれば解決するかもしれません。
$DIFF_ROUTE
ルート選択ボタンの判定用誤差。
大きすぎる場合も判定に失敗します。
$DIFF_RESULT
クエスト結果画面の判定の許容誤差。
$DIFF_FACILITY
施設ページの判定。
$MAKE
0=装備開発なし
1=装備開発あり
2=装備開発テスト(レシピ選択をして終了)
$MAKE_MIN
装備開発を行う最低資材量
単位は資材バーの判定範囲に対するpxで、110が最大値です。
@MAKE_WOOD
木材が多い場合に開発される装備。
@MAKE_WOOD,@MAKE_STONE,@MAKE_IRON,@MAKE_TEST
のパラメータは全て同じで、
@MAKE_WOOD=(メッセージ,装備種別,職番号,レシピ番号);
装備種別: 武器=0,防具=1,アクセ=2
職番号: 左から(ファイター=0,マジシャン=7)
レシピ番号: アイテム一覧のうち、1段目が0で5段目が4、2ページ目の1段目は5

同一でもいいので、@MAKE_WOOD,@MAKE_STONE,@MAKE_IRONの全てが設定されていないと開発しません。
クエスト巡回により新レシピを入手するとレシピ番号が変わる可能性があるので注意してください。
@MAKE_STONE
石材が多い場合に開発される装備。
@MAKE_IRON
鉄が多い場合に開発される装備。
@MAKE_TEST
装備開発テストに選択されるレシピ
@QUEST
食料がある場合はこの設定に応じたクエストが受注されます。(食料がない場合は迷宮行き)

@QUEST=(クエストID,章順位,章内順位)
@QUEST=(クエストID,職順位,職内順位)
クエストIDは1文字目が、M=メインクエスト、C=キャラクターストーリー、L=夢幻の迷宮

メインクエストの場合
章順位は、部内の章が最大5個表示されますが、1段目が0で5段目が4
章内順位は、章別のクエストが最大8個表示されますが、1段目が0で8段目が7

キャラクターストーリーの場合
職順位は、ファイターが0でマジシャンが7です。(表示順)
職内順位は、職別表示にして1段目が08段目が7。2ページ目の1段目は8。
$LABY
迷宮のルート。
変更する場合は対応処理ルーチンを作成する必要があります。
クエストIDとなるので、1文字目がLの必要があります。



処理の流れ

  1. 社長室待ち。
  2. 資材があれば開発して社長室に戻る。
  3. 食料があればクエスト、無ければ迷宮を受注。
  4. 早送りを試みる。(5クリック以内に成功しなければ諦める)
  5. クエスト別選択ルーチンがあれば、それやる。
  6. クエスト結果待ち
  7. 社長室までクリック。(100クリック以内に社長室に到達しなければアプリ終了)

終了する場合は強制終了してください。

売却・解雇は行いません。
ゴールドが尽きたら迷宮に行けず終了します。
社員数が上限に達したらクエストを受注できずに終了します。
所持限界や素材不足等で装備開発ができない場合は社長室に戻ってクエストになります。
クエスト(迷宮)を挟まず連続で開発が行われることはありません。

早送りは初期状態で選択するようになったのでマクロでは操作しなくなりました。
2015.10.02のアップデートで章選択が省略となったため、前回と別の章のクエストは受注出来ません。
メインクエストを巡回する場合、実行前に手動で目的の章のクエスト(おなじしょうなら別のでもいい)を受注してください。
2015.10.09のアップデートでキャラクターストーリーが自動選択となったため、メインクエストを受注した後の状態でキャラクターストーリーの受注はできません。
キャラクターストーリーを巡回する場合、実行前に手動でキャラクターストーリー(別キャラでもいい)を受注してください。



実行方法

./macro.pl

./macro.pl l

./macro.pl h

./macro.pl q


オプション無しで実行すると食料半分程度でクエストと迷宮が分岐します。
lオプションだと食料少なめ。hオプションだと食料多め。
qオプションつきだと装備開発を行いません。
オプションは半角スペース区切りで複数指定できます。

macro.plの位置に移動してから実行してください。
別の位置で実行したいならシェルスクリプトとか用意してください。



内部関数
関数名
書式説明
TimerClick
&TimerClick(待ち時間,横座標,縦座標,メッセージ)待ち時間が1以上なら待つ。(カウントダウン表示)
メッセージがあれば表示する。
座標をクリック。
ImageClick
&ImageClick(判定画像,横座標,縦座標,メッセージ,横座標修正,縦座標修正)引数をImageWaitに投げて戻り待ち。
座標修正がなければ判定位置、あれば判定位置に加算された位置がクリックされる。
ImageWait
&ImageWait(判定画像,横座標,縦座標,メッセージ)メッセージがあれば表示する。
座標位置の1pxキャプチャを取得して判定画像と一致するまでループ。(1000ループでアプリ終了)
アニメーションによる瞬間的誤判定防止のために再判定して一致すれば戻る。
ImageCheck&ImageCheck(判定画像,横座標,縦座標)座標位置の1pxキャプチャを取得して判定画像と一致すれば真、不一致で偽が戻る。
BarCheck
&BarCheck(判定画像,横座標,縦座標,長さ,許容誤差)
座標位置から右方向に長さ分のキャプチャを取得し、判定画像と一致する位置までの長さを返します。
許容誤差を省略した場合は100となります。
DiffWait
&DiffWait(判定画像,横座標,縦座標,メッセージ,許容誤差)

ImageWaitと同じように一致するまでループしますが、誤差を許容します。
許容誤差を省略した場合は100となります。
DiffCheck&DiffCheck(判定画像,横座標,縦座標)座標位置の1pxキャプチャを取得して判定画像との誤差を返します。
誤差は、RGB各値(0-255)を減算した絶対値を加算した値となります。
完全な白と黒を比較した場合、誤差は765となります。
RouteSelect
&RouteSelect(メッセージ,クリック位置)
クエスト別選択ルーチンの作成に使う。
クリック位置は選択肢ボタンの縦方向中央を基点にした値で、
選択肢が2つの場合は、上ボタンが-25,下ボタンが+25
選択肢が3つの場合は、上ボタンが-50,下ボタンが+50,中ボタンが0
程度が適当


クエスト別選択ルーチン

選択肢のあるクエストでは作成する必要があります。
基本的に、RouteSelect関数を並べるだけで作れます。