【Windows】動きが勝手に変わった

やめてほしいんですけどそういうのw

 

中の人ももうどうなっているのかわからん可能性が高いけど。

 

 

 

 

俺は実機じゃなくてエミュレータ(BlueStacks:以下ブルスタ)を使ってゲームをやっている。

スマホでゲームなんて絶対無理。

字小さくて読めないよw

 

ブルスタ(Androidエミュレータ全般に言えるけど)の利点として、

  • 大きい画面が使える
  • ゲームパッドが使える
  • 簡単なマクロ(スクリプト)を組める
  • 複数インスタンスを同時に動かせる

がある。

 

もう無敵やん と思われるかもしれないけど、タッチパネルじゃないディスプレイだと

同時タップができない。

タッチパネルのディスプレイでちゃんと動くのかは知らないけど。

主要操作がマルチタップ前提だったら実機でやるしかないw

 

あと、向きをスワイプで決めるタイプの操作はパッドでは(ほぼ)無理。

もちろんマウスを使えばできるけど、カーソルの移動という操作が必用なので結構厳しい。

 

それでもやっぱりスクリプトが強力。

これ無しでは一気にテンションが下がる。

一連の操作を登録しておけば、キー1つで色々回収したりするのを自動化できる。

ブルスタはスワイプの動きが昔からおかしい。

指で触る座標と離す座標を指定するんだけど、毎回スクロール量が変わる。

大抵足りなくてちょこっとしかスクロールしない。

 

そこで俺は気づく。

 

決まった時間のイベント時に決まった動きをして 全部自動にできることがあるじゃない。

残念ながらブルスタのスクリプトには現在時刻の概念が無い。

 

だが我に策あり。

 

Windowsのタスクスケジューラで指定時刻にAutoHotkeyのバッチ(*)を実行。

AutoHotkeyからブルスタでキーを押させる(押したことにする)。

あとはブルスタのスクリプトでもりもり進める。

(*) ウィンドウ無し&常駐しないで処理が終わったら勝手に終了するものを便宜上そう呼んでおく。

 

 

 

 

BlueStacksスクリプト

 

まずブルスタでスクリプトを組む。

ゲームで処理が重くなってもスクリプトは無視してガンガン進むので

wait はちょっと余裕を持って設定する。

 

記述はこんな感じ。

tap 34.4693 81.2314
wait 100
tap 59.8193 80.8146
wait 100
tap 67.7108 78.4566

tap にはX座標、Y座標(のそれぞれ左上からの割合)を指定する。

wait は待ち時間。この例だと0.1秒なので結構攻めてるw

スクリプト編集画面はゲーム上の操作ができないので、座標を決めてエディタに記載したら保存して

画面上でタップして進めてから またスクリプト編集画面に入って という苦行を繰り返す必要がある。

ここが最高にイケてなくてハイパー面倒。

公式の使用方法ページがあるけど、表の枠線が表示されてなくて非常にわかりづらい。

正直英語のページの方がわかるw

 

という風に作ったスクリプトをキーボードのキーに割り当てる。

俺は自動実行用として使用頻度の低いキーに割り当ててる。(- ^ \ @ [ ; : ] , . / あたりで)

 

 

AutoHotkey

 

続いて大好きなAutoHotkey。

 

ウィンドウを指定してキーを送るだけ・・・なんだけどクセがある。

 

まず

WinGet, aPid, PID, "※ブルスタのインスタンス名※"

を実行するとaPidにプロセスIDが入る。

if (aPid != "") {
    WinActivate, ahk_pid %aPid%
    WinWaitActive, ahk_pid %aPid%
  ControlSend, ahk_parent, \, ahk_pid %aPid%
    Sleep, 200
}
WinActivateで指定ウィンドウをアクティブにする。

なんでか知らんけどアクティブにしないと操作できなかった。

ControlSendで\を押せ と指定している。

200msはオマジナイ。

AutoHotkeyは所々Sleepを入れてあげないと意図した動きにならないことがあるのでw

 

最後に

ExitApp

を入れる

あとは適当な名前を付けて適当な場所に保存する(雑

 

 

 

 

タスクスケジューラ

 

タスクを作成して、トリガーに起動したい時間を指定。

操作にAutoHotkeyのスクリプトを指定する。

 

細かい条件とか指定できるけど、まぁ必用そうなのを適当に(雑

 

 

 

これら一式で時間起動のスクリプトが完成する。

 

・・・のだがスクリーンセーバーが動いていると実行されないのだ。

 

解除した後に慌てて実行するのが いとをかし。

いや、それじゃ意味が無いんだ。

 

タスクスケジューラの条件に「タスクを実行するためにスリープを解除する」ってのがあるんだけど

全然関係なかった。

実行されない。

完全拒否。

 

 

スクリーンセーバーキャンセラー

 

仕方なくAutoHotkeyでアプリを作る。

スクリーンセーバーキャンセラー(SSC)と命名。

 

シンプルな見た目

シンプルな見た目

 

シンプルすぎて、ウィンドウの移動がしづらいw

 

チェックボックスをONにするとスクリーンセーバーが起動しなくなる。

 

原理は、50秒に1回

MouseMove, %nXpos%, %nYpos%

nXpos、nYposの値を少しずつ変えてマウスカーソルを動かしているw

 

原始的だけど効果は抜群だった

 

 

 

朝起きてディスプレイをONにすると、めっちゃスクリーンセーバ動いてるんですが。

 

 

そしてここまでが前振りである。

 

 

上記の状態でマウスを動かしてスクリーンセーバーを解除したら、

その後はSSCが効いていてスクリーンセーバーは起動しない。

どういう動きだよ理解できないw

今まで上手くいっていたのに、何故効かなくなったんだ・・・。

Windows Updateで動きが変わったんだろうけど、中の人の意図した変更じゃない気がする。

 

 

美しくないからスクリーン セーバーの設定のウィンドウを開きっぱにするのはダメだ。

何か対策を考えねば。

 

カテゴリー: Game, PC, ソフトウェア, 技術的 タグ: , , , ,  [パーマリンク]

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です