# Как установить MoonLoader и SAMPFUNCS

> Установка MoonLoader и SAMPFUNCS для GTA: San Andreas и SA:MP 0.3.7-R1: что нужно скачать, куда положить файлы, как устроена папка moonloader и как проверить установку по логу.

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

# Как установить MoonLoader и SAMPFUNCS

[MoonLoader](https://pakulichev.com/wiki/moonloader-lua-gta-sa) загружает Lua-скрипты в GTA: San Andreas, SAMPFUNCS добавляет функции для работы с клиентом SA:MP. Вместе они нужны почти любому скрипту для RP-серверов, в том числе моим [Police Tools](https://pakulichev.com/projects/police-tools) и [Police Tools Lite](https://pakulichev.com/projects/police-tools-lite). Ниже порядок установки и то, что проверить, если что-то не запустилось.

## Что понадобится

| Компонент | Зачем |
| --- | --- |
| GTA: San Andreas 1.0 US | исполняемый файл, под который написаны плагины |
| ASI Loader | загружает .asi-плагины при старте игры |
| MoonLoader | сам загрузчик Lua-скриптов |
| SA:MP 0.3.7-R1 | клиент, с которым совместим SAMPFUNCS |
| CLEO | библиотека, без которой SAMPFUNCS не запускается |
| SAMPFUNCS | функции SA:MP для Lua: чат, команды, игроки, диалоги |

Версия игры важнее всего остального. Плагины работают с памятью конкретного gta_sa.exe, и на версиях из Steam или других изданиях адреса не совпадут. Steam-версию сначала понижают до 1.0 US.

Мой [радар Speeder](https://pakulichev.com/projects/police-radar), например, писался под MoonLoader 0.26. Скачивать всё стоит с [BLAST.HK](https://www.blast.hk/): там выкладывают сами авторы MoonLoader и SAMPFUNCS. Сборки с файлообменников и «паки» с YouTube нередко содержат лишние .asi-файлы, и разбираться потом, какой из них мешает, дольше, чем поставить всё с нуля.

## Порядок установки

1. Сделайте копию папки игры. Если что-то пойдёт не так, проще вернуть копию, чем искать лишний файл.
2. Установите SA:MP 0.3.7-R1 в папку игры.
3. Положите ASI Loader в корень, рядом с gta_sa.exe. Во многих сборках он уже есть, второй ставить не нужно.
4. Распакуйте архив MoonLoader в корень игры. Появятся .asi-файл загрузчика и папка `moonloader`.
5. Установите CLEO, затем SAMPFUNCS. SAMPFUNCS тоже распаковывается в корень игры.
6. Запустите игру через SA:MP и зайдите на любой сервер.

Порядок CLEO → SAMPFUNCS важен: при запуске SAMPFUNCS ищет CLEO и без него не загрузится.

## Структура папки moonloader

После установки и первого запуска в корне игры будет примерно такое дерево:

```text
GTA San Andreas/
  gta_sa.exe
  moonloader/
    lib/
    config/
    moonloader.log
    my_script.lua
```

В `moonloader/` лежат сами скрипты: каждый файл .lua или .luac загружается при старте игры. В `moonloader/lib/` хранятся библиотеки, которые скрипты подключают через `require`: например, `inicfg`, `encoding`, `vkeys`, imgui. В `moonloader/config/` скрипты сохраняют свои настройки. Police Tools Lite, например, держит там бинды в `PToolsLite.list` и настройки в `PToolsLite.cfg`. Как работать с этой папкой из своего кода, разобрано в статье про [inicfg и CP1251](https://pakulichev.com/wiki/moonloader-config).

Удалить скрипт можно, просто убрав его файл из `moonloader/`. Конфиг в `config/` при этом останется, и при повторной установке скрипт подхватит старые настройки.

## Как проверить, что всё работает

Главный инструмент проверки – файл `moonloader.log` в папке `moonloader`. MoonLoader пишет в него при каждом запуске: какая версия загрузилась, какие скрипты найдены, какие из них упали и с какой ошибкой. Если лога нет совсем, MoonLoader не загрузился, и дело в ASI Loader или версии игры.

Самый быстрый тест – создать в `moonloader/` файл `test.lua`:

```lua
script_name("test")

function main()
  while not isSampAvailable() do wait(100) end
  sampAddChatMessage("MoonLoader и SAMPFUNCS работают", 0x33AA33)
end
```

Если после входа на сервер в чате появилась зелёная строка, работают обе части: MoonLoader исполнил скрипт, а SAMPFUNCS дал функцию `sampAddChatMessage`. Если строки нет, а в логе ошибка вида `attempt to call global ... (a nil value)` про функцию с префиксом samp, MoonLoader работает, а SAMPFUNCS нет. Русский текст вместо букв выводит «кракозябры», если файл сохранён в UTF-8; SA:MP ждёт CP1251.

## Частые проблемы

Игра вылетает при запуске. Почти всегда это версия gta_sa.exe или конфликт двух ASI Loader. Проверьте, что исполняемый файл именно 1.0 US, и что в корне нет двух загрузчиков с разными именами.

Лог пустой или не создаётся. Антивирус мог удалить или заблокировать .asi-файл: такие плагины встраиваются в чужой процесс, и эвристика на них реагирует. Добавьте папку игры в исключения, если доверяете источнику, и переустановите MoonLoader.

SAMPFUNCS не загружается. Проверьте версию клиента SA:MP: нужна 0.3.7-R1. Вторая причина – не установлен CLEO.

Скрипт есть в папке, но не работает. Откройте `moonloader.log` и найдите имя скрипта. Обычно там указана строка с ошибкой или имя библиотеки, которой не хватает в `moonloader/lib/`.

Перед установкой любого скрипта прочитайте правила своего сервера. Многие RP-проекты разрешают биндеры и помощники, но запрещают всё, что даёт игровое преимущество.

## FAQ

### Нужен ли SAMPFUNCS, если скрипт не работает с SA:MP?

Нет. MoonLoader запускается и в одиночной игре без SAMPFUNCS. Плагин нужен скриптам, которые вызывают функции sampSendChat, sampRegisterChatCommand и другие функции с префиксом samp.

### Куда класть скачанный скрипт?

Файл .lua или .luac кладётся прямо в папку moonloader в корне игры. Библиотеки, которые требует скрипт, идут в moonloader/lib, если автор не указал другое место.

### Почему скрипт работал, а после обновления SA:MP перестал?

SAMPFUNCS привязан к конкретной версии клиента SA:MP. Если клиент обновили до другой ревизии, плагин и зависящие от него скрипты не загрузятся, пока не вернуть подходящую версию клиента.
