MoonLoader и Lua-скрипты для GTA: San Andreas
Справочный материал о том, на чём пишутся скрипты для GTA: San Andreas и SA:MP – от MoonLoader до ImGui-интерфейсов.
MoonLoader – загрузчик скриптов на Lua для GTA: San Andreas. Он появился в русскоязычном моддинг-сообществе BLAST.HK и со временем стал основным инструментом для клиентских модификаций: на нём пишут и небольшие биндеры, и сложные системы с собственным интерфейсом. На MoonLoader сделаны и многие мои проекты.
Как это устроено
MoonLoader ставится в папку игры как ASI-плагин (через ASI Loader) и при запуске GTA: San Andreas загружает Lua-скрипты из папки moonloader. Каждый скрипт работает в своей сопрограмме (корутине), поэтому может «ждать» (wait), не блокируя игру.
Минимальный скрипт выглядит так:
script_name("hello")
script_author("Pakulichev")
function main()
while not isSampAvailable() do wait(100) end
sampAddChatMessage("Скрипт загружен", 0xF5A524)
while true do
wait(0)
-- игровой цикл: проверка клавиш, отрисовка, логика
end
end
Основные компоненты экосистемы
| Компонент | Назначение |
|---|---|
| MoonLoader | Загрузчик Lua-скриптов и API для работы с игрой |
| LuaJIT | Быстрая реализация Lua 5.1 с FFI – доступ к памяти игры и нативным функциям |
| SAMPFUNCS | Плагин, расширяющий возможности работы с клиентом SA:MP |
| SAMP.Lua | Библиотека для работы с событиями и пакетами SA:MP из Lua |
| mimgui / imgui | Привязки Dear ImGui для создания оконных интерфейсов внутри игры |
| CLEO | Классическая библиотека скриптов на опкодах – предшественник Lua-подхода |
Lua против CLEO
CLEO-скрипты были первым массовым способом модифицировать GTA: San Andreas, но пишутся они на опкодах и плохо масштабируются. В Lua есть:
- нормальные структуры данных (таблицы), функции и модули;
- работа с файлами, JSON, INI-конфигами и сетью;
- FFI для вызова функций игры и чтения памяти;
- удобная отладка и логирование.
На Lua можно строить большие проекты, вплоть до собственного мультиплеера вроде SL:MP.
Где применяются Lua-скрипты
- На ролевых серверах SA:MP: помощники для фракций, биндеры, автоматизация рутинных действий. Пример – Police Tools для полицейских фракций Advance RP.
- В интерфейсах: окна, меню и редакторы на Dear ImGui (см. ImGUI Editor).
- В сетевых экспериментах: синхронизация игроков, собственные протоколы, мультиплеер.
- В утилитах для разработчиков: отладка, визуализация координат, редакторы.
С чего начать
- Установите чистую GTA: San Andreas (версия 1.0 US), ASI Loader и MoonLoader.
- Разберитесь с базовым синтаксисом Lua 5.1.
- Читайте документацию и разделы по Lua на BLAST.HK: там собрана основная база знаний сообщества.
- Начните с маленького скрипта (команда в чате, бинд клавиши), потом добавьте интерфейс на ImGui.
Частые вопросы
Что такое MoonLoader?
MoonLoader – загрузчик Lua-скриптов для GTA: San Andreas, распространяемый сообществом BLAST.HK. Он подключается к игре как ASI-плагин и позволяет писать модификации на Lua вместо CLEO-скриптов.
Чем Lua-скрипты лучше CLEO?
Lua – полноценный язык программирования: таблицы, функции, модули, работа со строками и файлами, FFI для вызова нативного кода. Код на Lua проще читать, отлаживать и поддерживать, чем низкоуровневые опкоды CLEO.
Работают ли Lua-скрипты на SA:MP-серверах?
Да. MoonLoader-скрипты работают в клиенте игры, в том числе при игре на SA:MP-серверах. При этом всегда нужно соблюдать правила конкретного сервера – многие проекты запрещают скрипты, дающие игровое преимущество.