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

> Что такое MoonLoader, как работают Lua-скрипты для GTA: San Andreas и SA:MP, чем они отличаются от CLEO, какие библиотеки используются и с чего начать разработку.

- URL: https://pakulichev.com/wiki/moonloader-lua-gta-sa
- Author: Pakulichev (https://pakulichev.com/)
- Language: ru
- Updated: 2026-10-15
- Whole site for LLMs: https://pakulichev.com/llms.txt (index), https://pakulichev.com/llms-full.txt (full text)

**MoonLoader** – загрузчик скриптов на **Lua** для GTA: San Andreas. Он появился в русскоязычном моддинг-сообществе [BLAST.HK](https://www.blast.hk/) и со временем стал основным инструментом для клиентских модификаций: на нём пишут и небольшие биндеры, и сложные системы с собственным интерфейсом. На MoonLoader сделаны и многие [мои проекты](https://pakulichev.com/projects).

## Как это устроено

MoonLoader ставится в папку игры как ASI-плагин (через ASI Loader) и при запуске GTA: San Andreas загружает Lua-скрипты из папки `moonloader`. Каждый скрипт работает в своей сопрограмме (корутине), поэтому может «ждать» (`wait`), не блокируя игру.

Минимальный скрипт выглядит так:

```lua
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](https://pakulichev.com/projects/sl-mp).

## Где применяются Lua-скрипты

- На ролевых серверах SA:MP: помощники для фракций, биндеры, автоматизация рутинных действий. Пример – [Police Tools](https://pakulichev.com/projects/police-tools) для полицейских фракций Advance RP.
- В интерфейсах: окна, меню и редакторы на Dear ImGui (см. [ImGUI Editor](https://pakulichev.com/projects/imgui-editor)).
- В сетевых экспериментах: синхронизация игроков, собственные протоколы, мультиплеер.
- В утилитах для разработчиков: отладка, визуализация координат, редакторы.

## С чего начать

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

## FAQ

### Что такое MoonLoader?

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

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

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

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

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