2020年12月23日水曜日

マクロを行う方法を調べる

かつてとあるブラウザゲームでわけもわからずお世話になっていたUWSC。

これを使ってマクロを作ることが可能…ということで、紆余曲折ありながらとうとう以下のように入力し、コナステのあるページにおいて自動クリックを達成した。

マクロの何たるかはイメージがついていたが、その作り方など全然知らなかったのでそこそこ苦戦した。

id = GETID("コナステ および他 3 ページ - 個人 - Microsoft​ Edge")

Hnd = GETCTLHND(id, "Chrome_WidgetWin_1")

MOUSEORG(Hnd, 2)

while true

BTN(LEFT,CLICK,1097,215)

sleep(5.0)

wend

これを基本として、ビンゴバルーンの最適解を自動で配置するマクロを作りたいのである。

とりあえず、idでなんかURLみたいなものを取得して、それを文字列変数としてidというラベル付きのものに代入して、Hndのところでそのidをまた呼び出して、その右はウィンドウの種類らしく、MOUSEORGというものはマウス座標を相対化しているらしい…。


…で、MOUSEORGの第1引数はどうやら、マウスの座標の決め方を表しているらしい。

hndという関数で指定したウィンドウの左上を座標(0,0)としようとしていそうな気がする。


がしかし、これを別タブにすると起動しなかった。その理由はidを取得すると、

"コナステ - 個人 - Microsoft​ Edge"

と書かれていたため、どうやらタブを分けることによってidが変更されていたことによるらしい。

ウィンドウに関する相対座標ということは、そのウィンドウがどこにいても適切な位置をクリックしてくれると思う。

while true とwendとかは聞いたことのないものだが、

これはたぶんデフォルトでなんかの判定がtrueで、それは当然falseにならないからいわばループ文ではないかと思う。

wendというのはおそらくwhile endの略であろう。

BTN関数は、第1引数がどのボタンを使うか、第2引数がどのような操作を行うか、第3引数と第4引数は座標をしていると思われる。この座標ははたして絶対か相対か…?

sleepは、おそらくウディタでよくみたウェイトの関数と同義とみた。

ただ、引数の中の値はどうもフレーム値ではなく、秒っぽい。


そういうわけで、我初のマクロへの挑戦であったが、なんとなくおおまかな雰囲気は取得した。これをどこまで理想の形に持っていけるか楽しみである。

ゆくゆくは非アクティブ時でもバルーンの状況を見ながら入力して、その理論期待値と実際の期待値を画像認識でもして比較してその結果をエクセルに自動保存し、これを長期間行って理論値との乖離を見たりすることで機械の意図的な操作の有無を見る…などができるのではないかと期待している。

しかし今日初めてマクロ作成を行ったので、おそらく様々な問題に直面することは間違いないだろう…。しかし中のプログラムは表現手法さえ知ってしまえばあとはこちらの工夫次第でなんとかなるだろう…と楽観視している。

当たり前だが、コナステにはオートリベット機能があり、配置おまかせ機能も存在するが、そんなものは信用していない。我独自に得た最適解データを当然使用するに決まっている。

まあできればの話だが…。

悲しい

 確かにチェーンボンバーの配列や配当を記録し、ついでに番号もしっかりと記入できるプログラムの性能が高まってうまく作れたのは良いが…。 この前スーパーJP4500とダイレクトJP10000が立て続けにきてクレジットが15000になって有頂天になっていたがKMPが100%から動かない...