MAATRIX GAMES / Блог / Установка SA-MP сервера с нуля

Установка SA-MP сервера с нуля

MAATRIX GAMES

Решил поднять свой RP-проект на SA-MP и уже минут двадцать листаешь форумы десятилетней давности в поисках рабочей ссылки на файлы сервера? Знакомая ситуация — сама платформа старая, но именно поэтому она до сих пор остаётся одним из самых дешёвых способов запустить GTA-RP без месяца разработки под FiveM. Пройдём путь от пустого VPS до сервера, который виден в игровом браузере и готов принимать первый RP-гейммод.

Где взять файлы сервера SA-MP

SA-MP — не Steam-приложение и не DLC к GTA San Andreas, а отдельный сторонний мод, который живёт своим архивом. Через steamcmd его не скачать — такого app id просто нет, а официальный сайт sa-mp.com периодически уходит в даунтайм, это давняя особенность проекта. Разработка ядра остановилась на версии 0.3.7 ещё в середине 2010-х, и с тех пор именно этот релиз остаётся стандартом де-факто для классических RP-серверов.

Для Linux нужен архив вида samp037svr. Внутри:

  • samp03svr — бинарник сервера;
  • samp-npc — бинарник для NPC-ботов;
  • server.cfg — конфиг, который будем настраивать ниже;
  • папки gamemodes/, filterscripts/, scriptfiles/, plugins/, npcmodes/.
mkdir -p ~/sampserver && cd ~/sampserver
wget https://files.sa-mp.com/samp037svr.tar.gz
tar -xvzf samp037svr.tar.gz
chmod +x samp03svr samp-npc

Если ссылка не отвечает — не редкость для этого хостинга, ищи актуальное зеркало 0.3.7-R1/R2 на форуме сообщества или в проверенных GitHub-архивах с контрольными суммами. Отдельно стоит знать про open.mp — активно развивающийся форк-преемник, совместимый с Pawn-гейммодами SA-MP, но без древних костылей вроде 32-битного бинарника. Для нового RP-проекта его стоит хотя бы рассмотреть, но этот гайд — про классический SA-MP, который всё ещё держит немалую часть старого RP-комьюнити.

Про сам процесс запуска на свежем 64-битном Linux, установку 32-битных библиотек совместимости и systemd-автозапуск подробно — в отдельном гайде как поднять сервер SA-MP. Здесь сфокусируемся именно на том, что нужно RP-проекту.

server.cfg для RP: hostname, gamemode0 и порт 7777

server.cfg — простой текстовый файл в корне сервера, без вложенности, читается построчно при старте:

nano ~/sampserver/server.cfg

Рабочий набор для старта RP-проекта:

echo Executing Server Config...
lanmode 0
rcon_password смени_на_сложный_пароль
maxplayers 100
port 7777
hostname [RU] Мой RP-проект | v1.0
gamemode0 lsrp 999999
filterscripts admin gates hud
announce 1
query 1
weburl vk.com/moya-gruppa
onfoot_rate 40
incar_rate 40
weapon_rate 40
stream_distance 300.0
stream_rate 1000
maxnpc 0
logtimeformat [%H:%M:%S]

Что здесь специфично именно для RP, а не для дэтматч-сервера:

  • hostname — то, что игрок видит в браузере серверов. Для RP сюда обычно пишут короткое название проекта и версию, без спецсимволов, которые ломают отображение в некоторых клиентских браузерах.
  • gamemode0 lsrp 999999 — имя .amx-файла гейммода (без расширения) и число рестартов. Для дэтматч-режима второе число обычно небольшое, а для постоянного RP-проекта ставят что-то вроде 999999, чтобы гейммод не перезапускался сам по себе и не сбрасывал состояние игроков на сервере.
  • maxplayers — для RP закладывают с запасом под пиковый онлайн, а не под средний: заявка на 100 слотов не значит, что сервер реально будет держать столько одновременно, но лимит должен быть выше текущей аудитории.
  • filterscripts — сюда через пробел добавляются RP-надстройки поверх основного гейммода: админ-панель, ворота (gates) фракционных баз, HUD. Они не сбрасываются при gmx (рестарте гейммода), в отличие от переменных самого гейммода.
  • rcon_password — для RP-сервера это не формальность: через rcon администраторы банят, кикают и рестартуют гейммод, а незащищённый rcon с дефолтным паролем находят ботом-сканером буквально за пару дней. Подробно про подключение и команды — в статье про RCON.

Поднять сервер SA-MP за пару минут

Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.

Создать сервер

Первый запуск samp03svr и проверка, что всё поднялось

Запускаем из директории сервера:

cd ~/sampserver
./samp03svr

Если появился баннер SA-MP и строка про загрузку гейммода — половина дела сделана. Сервер занимает терминал переднего плана, поэтому для постоянной работы нужен screen или tmux — иначе процесс умрёт при закрытии SSH-сессии:

screen -S rpserver
cd ~/sampserver && ./samp03svr

Отключиться без остановки — Ctrl+A, затем D, вернуться — screen -r rpserver. Про полноценный автозапуск через systemd, чтобы сервер сам поднимался после ребута VPS, — в статье про systemd, screen и tmux для игровых процессов.

Лог server_log.txt в корне сервера — первое место, куда стоит смотреть, если гейммод не грузится. Для RP-фреймворков там чаще всего видно одну из типовых причин: не найден .amx-файл (опечатка в gamemode0), не хватает плагина (MySQL, streamer) или ошибка в самом гейммоде при инициализации базы.

Устанавливаем RP-гейммод: компиляция .amx

Логика RP-сервера пишется на языке Pawn и компилируется в байт-код .amx. Готовые RP-фреймворки под SA-MP искать стоит на форуме сообщества и в открытых GitHub-репозиториях — за годы жизни платформы накопилось множество наследников старого Los Santos RPG разного качества и активности разработки. Перед тем как ставить чужой гейммод в прод, стоит хотя бы бегло прочитать код: часть старых RP-скриптов содержит уязвимости SQL-инъекций через необработанный пользовательский ввод — это известная болячка экосистемы.

Компилятор pawncc идёт в комплекте сервера:

chmod +x pawno/pawncc
cd gamemodes
../pawno/pawncc lsrp.pwn

На выходе рядом с .pwn появится lsrp.amx — это имя и прописывается в gamemode0 lsrp 999999. Если компиляция падает с ошибками про неизвестные функции — почти всегда не хватает инклюда: базовый a_samp.inc уже есть, но RP-фреймворки завязаны на дополнительные .inc в pawno/include/:

Инклюд/плагинДля чего в RP
sscanf2Парсинг команд и диалогов — почти обязателен для любого RP-гейммода
streamerДинамическая подгрузка объектов, чекпоинтов, 3D-текста — фракционные метки, интерьеры
MySQL (R41+)Хранение аккаунтов, инвентаря, экономики — переживает рестарт гейммода
y_ini / diniФайловое хранение как более простая альтернатива MySQL для небольших проектов
ZCMDБолее быстрая и гибкая система команд по сравнению со встроенным OnPlayerCommandText

Без MySQL или y_ini любые данные игрока (деньги, инвентарь, лицензии) живут только в оперативной памяти и обнуляются при каждом gmx — для RP-проекта это критично, поэтому выбор хранилища данных стоит сделать до того, как на сервер придут первые игроки, а не после первой потери прогресса.

Плагины и filterscripts: собираем RP-надстройку

Бинарные плагины (.so для Linux) кладутся в папку plugins/ и подключаются одноимённой строкой в server.cfg:

plugins mysql.so streamer.so sscanf.so

Порядок в строке обычно не критичен, но сам плагин должен быть собран под ту же архитектуру, что и samp03svr (32-бит) — плагин под 64-бит просто не загрузится, и в логе будет ошибка о несовместимости при старте.

Filterscripts — это скрипты, которые работают поверх основного гейммода и не завязаны на его код напрямую: админ-система, ворота баз, HUD, система дверей. Компилируются так же через pawncc, кладутся в filterscripts/, а их имена (без .amx) перечисляются в строке filterscripts конфига через пробел — как в примере server.cfg выше. Такое разделение удобно на старте: можно взять чужой открытый гейммод как основу и добавить свои filterscripts, не трогая ядро.

Подключение через SA-MP клиент

Со стороны игрока для подключения нужен установленный GTA: San Andreas (розничная или Steam-версия — сам SA-MP патчит игру на лету) и клиент SA-MP поверх него. После установки клиента подключение к своему серверу — по IP и порту:

  • через встроенный браузер серверов SA-MP-клиента — «Избранное» → «Добавить по IP» → твой_ip:7777;
  • напрямую по ссылке вида samp://твой_ip:7777, если она открыта в браузере или ярлыке.

Чтобы сервер вообще появился в общем списке серверов клиента, в server.cfg должны быть включены announce 1 и query 1 — без них внешние списки и мониторинги не увидят онлайн, даже если сервер физически работает и на него можно зайти напрямую по IP. Проверить, что порт реально слушается на VPS:

ss -tulnp | grep 7777

Если строки нет — сервер либо не стартовал (смотри server_log.txt), либо порт закрыт firewall'ом; про открытие портов подробно — в статье про порты и firewall для игрового сервера. После первого успешного захода стоит сразу зайти под rcon (клавиша F8 в игре открывает консоль) и проверить, что rcon_password из конфига реально работает — это твой единственный способ администрировать сервер без физического доступа к консоли samp03svr.

Если сомневаешься, что SA-MP — правильная база именно для твоего проекта, а не архаичный выбор, — сравнение с FiveM и RAGE:MP по комьюнити и требованиям к разработке есть в статье SA-MP, FiveM или RAGE:MP — что выбрать для RP-сервера.

Поднять сервер SA-MP за пару минут

Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.

Создать сервер

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

Обязательно ли ставить MySQL, или на старте хватит файлового хранения?

Для теста и небольшого закрытого проекта y_ini/dini достаточно — это проще в настройке. Но при росте онлайна и усложнении экономики почти все живые RP-проекты переходят на MySQL: он надёжнее держит параллельную запись и не создаёт десятки тысяч мелких файлов на диске.

Почему в браузере серверов клиента не виден мой сервер, хотя я захожу по IP напрямую?

Проверь announce 1 и query 1 в server.cfg, а также что порт 7777 (и UDP, и TCP) открыт на firewall VPS. Прямое подключение по IP работает даже без анонса — список серверов и сама доступность сервера это разные вещи.

Можно ли взять готовый открытый RP-гейммод и просто перекомпилировать без правок?

Технически да, но перед этим стоит хотя бы бегло прочитать код на предмет SQL-инъекций и не менять rcon_password и пароли админ-аккаунтов, которые могли остаться в тестовых данных от автора скрипта.

Нужно ли игрокам ставить именно версию GTA: San Andreas 1.0?

SA-MP исторически завязан на конкретные версии игры, и с розничной или Steam-версией иногда бывают нюансы совместимости патчей — если игроки массово не могут подключиться, это первое, что стоит проверить.

Что делать, если после gmx (рестарта гейммода) слетают данные игроков?

Это штатное поведение SA-MP — рестарт полностью перезагружает скрипт. Всё, что должно переживать рестарт, обязано храниться во внешнем хранилище — MySQL или файлах через y_ini, а не в переменных гейммода.