Cheat EngineでLuaを使ってみよう!
Cheat EngineでLuaを実行するには以下の4パターンあります。
- Auto Assemblerスクリプト内で{$lua}と記述する。これとは違う方法でluaCallもあります。
-
Memory View -> Tools -> Lua Engine
純粋にLuaを実行し、テストしたい場合に使用します。 -
Table -> Show Cheat Table Lua Script
ここにLuaを記述するとCTに関連付けられ、CTを開いたときに実行されるようになります。 -
C:\Program Files\Cheat Engine 7.2\autorun
autorunフォルダに.luaファイルを置くとCheat Engine起動時に実行されます。 ネット上からダウンロードした拡張機能はこのフォルダに入れましょう。
1番が主力になります。Auto Assemblerで実装しにくいものはLuaに切り替ると良いです。
特定のキーを押している間だけ値を固定する
使用ゲームはAsssault Cubeで、キーボードのLを押している間だけ弾数が30で固定されます。
{$lua} if syntaxcheck then return end [ENABLE] t = createTimer() t.Interval = 10 t.OnTimer = function() if isKeyPressed(VK_L) then writeInteger('[ac_client.exe+0010F4F4]+148',30) end end [DISABLE] t.destroy()
参考動画
Luaスクリプトの解説
[MAIN]セクション
{$lua}はAAスクリプト内でluaを記述する際に必要な宣言
Auto Assemblerに戻すには{$asm}と記述する
2行目は構文チェックを無効化している
[ENABLE]セクション
createTimerでTimerクラスのインスタンスを生成
Intervalには指定された関数を何ミリ秒ごとに実行するかを、
OnTimerには実行する関数を代入する
function()
if isKeyPressed(VK_L) then
writeInteger('["ac_client.exe"+0010F4F4]+148',30)
end
end
上記の関数が10ミリ秒ごとに繰り返し実行される
isKeyPressedはgetAsyncKeyStateのluaバージョン
指定されたキーが押されている場合はtrueが返される
trueならwriteIntegerで指定されたアドレスに値を書き込む
VK_Lは仮想キー。Microsoftのサイトで調べ、自分の好みのキーを指定できる
[DISABLE]セクション
スクリプトをオフにしたときにdestroyメソッドを呼び出し、インスタンスをメモリから削除
自動でアタッチ
PROCESS_NAME = 'Game.exe' local autoAttachTimer = nil local autoAttachTimerInterval = 100 local autoAttachTimerTicks = 0 local autoAttachTimerTickMax = 5000 local function autoAttachTimer_tick(timer) if getProcessIDFromProcessName(PROCESS_NAME) ~= nil then timer.destroy() openProcess(PROCESS_NAME) elseif autoAttachTimerTickMax > 0 and autoAttachTimerTicks >= autoAttachTimerTickMax then timer.destroy() end autoAttachTimerTicks = autoAttachTimerTicks + 1 end autoAttachTimer = createTimer(MainForm) autoAttachTimer.Interval = autoAttachTimerInterval autoAttachTimer.OnTimer = autoAttachTimer_tick
Table -> Show Cheat Table Lua Scriptを開き、上記のLuaスクリプトを貼り付ける。
'Game.exe'をアタッチしたいプロセス名に書き換えれば完成!
CTを開くとスクリプトが実行され、自動でアタッチされるようになります。
CTに関連付けされているLuaスクリプトを自動で実行するかどうかは、
Edit -> Settings -> General Settingsから変更できます。
CE Luaのドキュメントについて
Cheat Engine LuaのドキュメントはメニューバーのHelpにあります。
Web版はこちらから
どんな関数があるのか、関数の返り値、引数は何かを確認できるのですが、
そのままだとsyntax highlightが適用されないため読みづらいです。
これの解決策として、メニューバーのTableからShow Cheat Table Lua Scriptを開き、 そこに先ほどのドキュメントをコピペすると読みやすくなります。
目的の関数の仕様を調べたいときは、Ctrl + Rを押してから検索すると確認できます。
CE Luaのドキュメント(日本語版)
上記サイトの日本語化ファイルをダウンロードすると、日本語化されたCE Luaのドキュメントが同封されています。感謝!
※Ver 6.8.2時点での翻訳なので、情報が古くなっています。GitHubにある最新のドキュメント(英語)と併用して不足分を補填すると良いです。
ブレークポイントの設定方法
例えば2行目でプログラムをブレークさせたい場合は赤矢印のあたりを左クリックするとブレークポイントを設定できます。設定できましたらExecuteをクリックして実行してみましょう。
狙い通り2行目でブレークし、画像の赤枠部分にアイコンが出現しました。
左から Continue, Single Step, Stop になっています。
Continue -> プログラムを走らせる
Single Step -> 1行だけコードを実行する
Stop -> プログラムを停止する
Luaのコードを読む時、わからない箇所でブレークさせて変数の中身をprint関数で表示すれば理解できるようになってきます!