Скриптовой язык в Cheat Engine в основном позволяет создавать и внедрять в игру ассемблерный код на ходу, и выгружать его из игры восстанавливая оригинальный код.
Окно скриптинга может быть открыто через окно отладчика, или сочетанием клавиш Ctrl+A в этом окне:
aa3d2169-17ba-46a0-8283-610eeac9bb0d-изображение.png
После открытия вы увидите следующее окно:
dc90933e-a171-435d-8681-fc97e5aa4bde-изображение.png
В нём можно написать скрипт и нажать кнопку Execute что позволит выполнить скрипт. Что бы добавить скрипт в таблицу и сохранить его, вам сначала нужно добавить в него определённые команды, а именно две команды обозначающие разделы, которые будут выполняться при включении и выключении скрипта [ENABLE] [DISABLE]:
18a14491-4909-4895-b017-9a3a8e5b33e0-изображение.png
Эти команды обозначают правила для включения и выключения скрипта. После их добавления можно добавить скрипт в таблицу с помощью контекстного меню:
e2ab9f5a-ac29-458f-9db2-7d45305ec53b-изображение.png
Если всё сделано верно, скрипт появится в таблице и окно редактора можно закрыть:
3549713b-31a9-4a37-a1e6-9651812135a0-изображение.png
Теперь вы можете снова открыть редактор, но уже для конкретно этого скрипта в таблице. Для этого дважды кликните по нему в графе Value, или откройте редактор через контекстное меню:
8dfbfc3d-4265-41c7-b5c8-6f3a7e013269-изображение.png
Откроется редактор для конкретно этого скрипта, вы можете сохранить изменённый скрипт нажав кнопочку OK:
7ab76f83-bde0-4213-b5b1-28cbcca1d222-изображение.png
Основные команды которые могут пригодиться:
Запись данных по адресу, необходимо указывать размерность:
//db - byte //dw - word //dd - dword //dq - qword (Адрес): db/dw/dd/dq(размерность) (число) //Пример, записать по адресу 0087745A подряд 12 байт, сначала 0, дальше 5, потом 7. 0087745A: dd 0 5 7 //Пример, записать по адресу метки label подряд 4 байта 1, 7, 10, 2 label: db 1 7 A 2Каждая метка обозначает после себя регион памяти все метки в котором будут относиться к ней, если они уже не определены в другом месте, или не являются настоящим адресом.
//По адресу 0087745A располагается метка label, метка label нигде не определена, //значит она определяется и обозначается как место в скрипте после добавления. //Таким образом в данном примере label идёт в зоне 0087745A, сразу после него и указывает на тоже самое место, //то есть далее использовать label будет тоже самое что указать 0087745A: 0087745A: label: dd 0 //В следующем примере, указано что после 0087745A выделено 4 байта со значением 0, //зарезервировано командой dd 0, получается, метка будет указывать на следующие 4 байта после первых идущих в 0087745A: 0087745A: dd 0 label: dd 0Метка может быть зарегистрирована в текущем скрипте, или даже объявлена глобально для использования из других скриптов.
label(lack) зарегистрировать метку lack для текущего скрипта.
registersymbol(lack) зарегистрировать метку lack глобально.
unregistersymbol(lack) снять регистрацию с метки lack, обычно используется в секции [DISABLE].
Пример скрипта, который записывает при включении по адресу 0087745A число float 4 байта 5, а при выключении int32 0:
6a28906b-91b1-4705-8723-eb71d17e7f3a-изображение.png
С помощью скрипта вы можете легко выделить память и записать в неё значения. Выделяется память с помощью команды alloc(newmem, 1000), эта команда выделяет новую память как минимум размером 1000 и создаёт для неё метку newmem, которая аналогична адресу выделенной памяти.
Пример скрипта в котором выделяется новая память и в неё записывается значение, после выключения скрипта память освобождается командой dealloc(newmem):
0587b40e-a7b4-48ce-82f9-d96514d6d49c-изображение.png
Мы можем зарегистрировать newmem что бы получить возможность добавить эту метку как адрес в таблицу и увидеть значение:
b11f6e64-bb52-40f6-a153-d2eed90574af-изображение.png
Добавьте адрес newmem в таблицу, нажав на кнопку Add Address Manually:
8f3006e6-3215-494d-b885-53061d0a6d72-изображение.png
b027a2c5-e3cf-489f-b746-2308e7aca1c3-изображение.png
Включите скрипт нажав на квадратик слева от него, если всё сделано верно вы увидите значение записанное в память, не забудьте что Cheat Engine должен быть подключён к какому то процессу:
a191fe28-9104-466d-9804-ff62d53e3ea8-изображение.png
Значение float, измените его тип дважды кликнув на 4 Bytes в столбике Type что бы оно отображалось корректно:
c9687ac4-c521-46f7-89d8-caf560d90eae-изображение.png
Более продвинутые команды и примеры скриптов рассмотрены в следующих статьях.