Team Fortress 2: установка плагинов на сервер
Ванильный TF2-сервер быстро упирается в потолок: нет ни нормальной админки с логами банов, ни рандомайзера критов под настроение, ни магазина, ни защиты от читеров толковее штатного VAC. Всё это — не «моды» в смысле переделки игры, а плагины, которые живут поверх фреймворка SourceMod, а тот, в свою очередь, стоит на MetaMod:Source. Здесь пошагово: что и куда класть, как добавлять сами плагины и на какие грабли чаще всего наступают именно на TF2, а не абстрактно на Source-играх.
Содержание
Что такое MetaMod:Source и SourceMod и почему для TF2 нужны оба
MetaMod:Source (MM:S) — это низкоуровневая прослойка, которая встраивается в сам движок Source и даёт другим модулям доступ к его хукам (событиям игры, вызовам функций). Сам по себе MetaMod ничего не делает — это просто «розетка», в которую втыкаются надстройки.
SourceMod (SM) — это одна из таких надстроек, самая популярная: полноценный фреймворк для плагинов на языке SourcePawn, с системой прав администраторов, консольными командами, готовыми API для работы с игроками, картами, событиями. Именно в SourceMod устанавливаются плагины, которые вы качаете с alliedmods.net и других площадок.
Порядок принципиален: сначала ставится MetaMod:Source, и только поверх него — SourceMod, потому что SourceMod технически тоже является MetaMod-плагином. Без MetaMod SourceMod просто не подключится к серверу.
Важная оговорка для тех, кто параллельно администрирует и Counter-Strike 2: TF2 всё ещё работает на классическом Source (не Source 2), поэтому здесь используется «полный» SourceMod с многолетней экосистемой плагинов. На CS2 ситуация другая — там отдельный форк MetaMod для Source 2 с урезанным набором возможностей, и плагины между играми не переносятся.
Подготовка: что скачать и куда
Оба фреймворка распространяются как snapshot-сборки под конкретную ОС сервера (Linux или Windows) и берутся с официальных страниц:
- MetaMod:Source — metamodsource.net, раздел Downloads
- SourceMod — sourcemod.net, раздел Downloads
Важно: обе сборки нужно брать под одну и ту же ОС, на которой реально крутится ваш процесс srcds — сборка под Linux на Windows-сервере просто не запустится, и наоборот.
Перед распаковкой сервер стоит остановить — накатывать файлы поверх работающего процесса не стоит, часть библиотек может быть залочена:
sudo systemctl stop tf2server
(имя юнита — то, что вы задали при настройке автозапуска; если сервер поднят через screen/tmux без systemd, просто остановите процесс командой quit в консоли).
Поднять сервер Team Fortress 2 за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверУстановка MetaMod:Source и SourceMod в папку tf/
Оба архива распаковываются в один и тот же каталог — корневую папку конкретной игры внутри установки сервера, то есть tf/, а не в корень сервера целиком (там, где srcds_run или srcds_linux).
sudo su - tf2server
cd /home/tf2server/tf2/tf
wget -O mmsource.tar.gz "ССЫЛКА_СО_СТРАНИЦЫ_METAMODSOURCE_NET_ПОД_ВАШУ_ОС"
tar -xzvf mmsource.tar.gz
rm mmsource.tar.gz
После распаковки появится папка addons/metamod/ и файл addons/metamod.vdf — именно этот vdf-файл сообщает движку, что нужно подгрузить MetaMod при старте. Если файла нет (в некоторых сборках он не создаётся автоматически), создайте tf/addons/metamod.vdf вручную с содержимым:
"Plugin"
{
"file" "addons/metamod/bin/server"
}
Дальше туда же, в tf/, распаковываем SourceMod — архив сам аккуратно доложит файлы в существующую структуру addons/, ничего не перезаписывая критично:
wget -O sourcemod.tar.gz "ССЫЛКА_СО_СТРАНИЦЫ_SOURCEMOD_NET_ПОД_ВАШУ_ОС"
tar -xzvf sourcemod.tar.gz
rm sourcemod.tar.gz
Появится папка addons/sourcemod/ с подпапками plugins/, configs/, scripting/, data/, logs/, translations/.
Запускаем сервер обратно и проверяем прямо в консоли (или через RCON — команды из подключения по RCON работают точно так же):
meta version
sm version
Обе команды должны вывести номер версии без ошибок «unknown command». Если meta version не распознаётся — MetaMod не подгрузился (проверьте vdf-файл и путь распаковки), если sm version не работает при рабочем meta version — проблема уже в самом SourceMod поверх исправного MetaMod.
Добавляем плагины в папку plugins
Готовые скомпилированные плагины (файлы с расширением .smx) кладутся в:
tf/addons/sourcemod/plugins/
scp moj_plugin.smx tf2server@ВАШ_IP:/home/tf2server/tf2/tf/addons/sourcemod/plugins/
Если сервер уже запущен, SourceMod подхватывает новый .smx автоматически в течение нескольких секунд (можно ускорить командой sm plugins refresh в консоли). Если файл лёг до старта — плагин загрузится вместе с остальными при запуске.
Многие плагины распространяются не одним .smx, а целым архивом, где вместе с плагином лежат:
- сам
.smx— вplugins/ - исходник
.sp(опционально, для тех, кто будет пересобирать под себя) — вscripting/ - готовый конфиг или
.cfg-файл — вcfg/sourcemod/ - переводы — в
translations/
Распаковывайте такой архив целиком в tf/, соблюдая структуру папок из архива — так все части плагина лягут туда, где их ожидает найти SourceMod.
Если у вас есть только исходник .sp без готового .smx, компилировать нужно тем же компилятором, что идёт в комплекте SourceMod — spcomp, лежит в tf/addons/sourcemod/scripting/:
cd tf/addons/sourcemod/scripting
./spcomp moj_plugin.sp -o ../plugins/moj_plugin.smx
Компилировать чужим/устаревшим spcomp от другой версии SourceMod не стоит — синтаксис SourcePawn между мажорными версиями расходится, и то, что собралось на старом компиляторе, не факт что заработает на новом рантайме, и наоборот.
Проверка результата — команда в консоли:
sm plugins list
Плагин со статусом Running загружен и работает. Управление без перезапуска сервера:
sm plugins load moj_plugin
sm plugins unload moj_plugin
sm plugins reload moj_plugin
sm plugins reload — самая частая команда в работе: после правки конфига плагина или прав нужно применить изменения именно через reload, полный рестарт сервера ради этого не нужен и лишний раз дёргает игроков с сервера.
Синхронизация версий клиента и сервера
Плагины SourceMod исполняются полностью на сервере — клиенту TF2 сам SourceMod ставить не нужно, и в 99% случаев игрок вообще не замечает, что на сервере что-то стоит. Но есть три места, где версии и настройки клиента и сервера всё же должны сходиться.
sv_pure. Это встроенный в движок механизм, который проверяет, что у клиента загружены «чистые» игровые файлы (модели, текстуры, звуки), совпадающие с тем, что ожидает сервер. Большинство плагинов на игровую логику (админка, статистика, режимы) на это никак не влияют. Но если плагин добавляет кастомные модели, звуки или HUD-элементы, которые должны докачиваться клиенту — нужно либо ослаблять sv_pure через whitelist (sv_pure 1 с файлом-исключением, а не sv_pure 2), либо настраивать быструю раздачу файлов через sv_downloadurl, иначе часть игроков будет получать классическую ошибку рассинхрона контента при заходе.
Апдейты самой TF2. Valve иногда меняет внутренние структуры движка вместе с обновлением игры, и SourceMod ориентируется на них через так называемые gamedata-файлы (tf/addons/sourcemod/gamedata/). После крупного патча TF2 часть extensions (например, привязанные к конкретным офсетам функций) может перестать работать до выхода обновлённого gamedata от комьюнити AlliedModders — обычно это вопрос часов-дней, но держать это в голове стоит, особенно если апдейт TF2 вышел внезапно посреди недели, а у вас турнир на выходных.
Версия самого SourceMod/MetaMod. Снапшоты обновляются часто, и старая версия SourceMod иногда не грузит плагины, написанные под новый API (или наоборот — свежий SourceMod ругается на совсем древний плагин). Если после обновления фреймворка часть плагинов вдруг перестала загружаться — первое, что стоит проверить, это дату сборки плагина против даты вашего SourceMod.
Типичные ошибки и их решения
| Симптом | Вероятная причина | Что делать |
|---|---|---|
meta version — unknown command | MetaMod не подгрузился | Проверить tf/addons/metamod.vdf, распаковку строго в tf/, а не в корень srcds |
sm version работает, но плагины не в списке | Плагины лежат не в той папке | Убедиться, что .smx именно в tf/addons/sourcemod/plugins/, а не в scripting/ |
| Ошибка компиляции при запуске плагина | Плагин под другую версию SourceMod | Пересобрать актуальным spcomp из вашей же установки или взять свежую сборку .smx |
| Игроков выкидывает с ошибкой чистоты контента | Конфликт с sv_pure | Настроить whitelist-исключение или sv_downloadurl для кастомных файлов плагина |
| Плагин загружен, но у админов нет доступа | Не выданы флаги/SteamID в неверном формате | Проверить tf/addons/sourcemod/configs/admins_simple.ini, формат SteamID64 |
| После апдейта TF2 часть функций плагинов сломалась | Устаревший gamedata | Обновить файлы в tf/addons/sourcemod/gamedata/ до актуальной версии с alliedmods.net |
| Два плагина конфликтуют, сервер лагает или крашится | Оба плагина хукают одно и то же событие некорректно | Отключать по одному через sm plugins unload и искать виновника; подробный разбор — в статье про краши от плагинов и карт |
Если сервер пока не поднят вообще — начните с базовой установки TF2-сервера, а систему прав администраторов для загруженных плагинов удобно сразу разложить по группам, как описано в статье про настройку permissions-плагинов.
Поднять сервер Team Fortress 2 за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверЧастые вопросы
Обязательно ли ставить MetaMod отдельно, если качаю готовую сборку SourceMod?
Да, оба архива нужны и распаковываются оба — MetaMod:Source не входит в архив SourceMod, это два отдельных скачивания с двух разных сайтов, просто ставятся в одну и ту же папку tf/.
Можно ли ставить плагины без остановки сервера?
Да, добавление новых .smx в plugins/ на уже запущенном сервере штатно поддерживается и не требует рестарта — SourceMod подхватывает файл сам либо по команде sm plugins refresh.
Нужно ли игрокам что-то устанавливать для работы плагинов?
Обычно нет — вся логика плагина исполняется на сервере. Исключение — плагины с кастомным контентом (модели, звуки, HUD), тогда клиенту докачивается контент через sv_downloadurl, а сам SourceMod клиенту ставить не нужно никогда.
Где смотреть, что плагин ещё поддерживается и не заброшен?
На странице плагина на форуме AlliedModders обычно указана дата последнего обновления и совместимость с текущими сборками SourceMod — если плагин не трогали пару лет, а движок TF2 за это время обновлялся, стоит на всякий случай проверить логи после установки.
Плагины платные?
Подавляющее большинство плагинов для TF2 на AlliedModders распространяются бесплатно и с открытым исходником — платные встречаются редко, в основном как готовые крупные админ-панели или сложные игровые режимы под заказ.