MoonLoader и Lua-скрипты для GTA: San Andreas

Справочный материал о том, на чём пишутся скрипты для GTA: San Andreas и SA:MP – от MoonLoader до ImGui-интерфейсов.

Автор: Опубликовано: Обновлено: 2 мин чтения

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).
  • В сетевых экспериментах: синхронизация игроков, собственные протоколы, мультиплеер.
  • В утилитах для разработчиков: отладка, визуализация координат, редакторы.

С чего начать

  1. Установите чистую GTA: San Andreas (версия 1.0 US), ASI Loader и MoonLoader.
  2. Разберитесь с базовым синтаксисом Lua 5.1.
  3. Читайте документацию и разделы по Lua на BLAST.HK: там собрана основная база знаний сообщества.
  4. Начните с маленького скрипта (команда в чате, бинд клавиши), потом добавьте интерфейс на ImGui.

Частые вопросы

Что такое MoonLoader?

MoonLoader – загрузчик Lua-скриптов для GTA: San Andreas, распространяемый сообществом BLAST.HK. Он подключается к игре как ASI-плагин и позволяет писать модификации на Lua вместо CLEO-скриптов.

Чем Lua-скрипты лучше CLEO?

Lua – полноценный язык программирования: таблицы, функции, модули, работа со строками и файлами, FFI для вызова нативного кода. Код на Lua проще читать, отлаживать и поддерживать, чем низкоуровневые опкоды CLEO.

Работают ли Lua-скрипты на SA:MP-серверах?

Да. MoonLoader-скрипты работают в клиенте игры, в том числе при игре на SA:MP-серверах. При этом всегда нужно соблюдать правила конкретного сервера – многие проекты запрещают скрипты, дающие игровое преимущество.