5: Luaでキープレス自動化

概要

CheatEngineでは、Luaというプログラミング言語を使って、チートコードを書ける。
突き詰めれば結構色々できそうだが、今の所自分はクリックやキープレスなどを自動化するぐらいの簡易的な処理を書く用途でしか使ってない(ドキュメントはHelp > Lua Documentationにある)。
今回は、CheatEngineのLuaを使ってキープレス自動化する事を目標にやっていきます。
Unityで作ったゲームを対象にやっていき、ゲームのサンプルはココからダウンロードできる。

Luaで数秒間隔でキープレス

このゲームでは、以下画像にある剣を取り、4キーで装備した後、Nキーを押すと浮上する技が使えるようになってる。 これを単純に三回繰り返す自動化スクリプトを書く。

まずは、CheatEngineを立ち上げ、Table > Show Cheat Table Lua ScriptでLuaを書くエディタみたいなのを立ち上げましょう。 (今回は実は、CheatEngineをゲームにアタッチしてなくても大丈夫です)
基本的に、エディタの下にあるExecute scriptというボタンを押すと実行されます。 しかし、このボタンを押した後、一回ゲームの方をクリックしてフォーカスしてからじゃないとキープレスの処理を書いても反応しません。 それなので、まずはゲームの画面をクリックするコードを書きたいわけですが、例えば下図のような画面の時、画像の赤い部分の場所をクリックしたいと思っても座標がわかりません。 Luaではprint(getMousePos())でマウスポインターの座標を取得できます。 ただ、実行する際はExecute scriptボタンを押す必要があり、その際に一瞬でこれが実行されるため、座標を取得したい場所にExecute scriptボタンを持ってきてから実行しましょう。 これでクリックすべき座標がわかったので、Lua実行時にゲーム画面をクリックしてフォーカスする処理を以下のように書きます。
setMousePos(537,632)
mouse_event(MOUSEEVENTF_LEFTDOWN)
sleep(20)
mouse_event(MOUSEEVENTF_LEFTUP)
これで、下準備は終わりです。

後は、Nキーを数秒間隔で数回押せるよう以下のように付け足すだけで、キープレスの自動化が完成します。
setMousePos(537,632)
mouse_event(MOUSEEVENTF_LEFTDOWN)
sleep(20)
mouse_event(MOUSEEVENTF_LEFTUP)

for i=1,3,1 do
	keyDown(VK_N)
	sleep(10000)
	keyUp(VK_N)
end