RE:NODE

Руководства13 мин чтения

Плагины AMX Mod X для серверов CS 1.6

Как ставить плагины AMX Mod X на сервер Counter-Strike 1.6: plugins.ini, модули, компиляция .sma, SQL-админы, популярные плагины и ошибки загрузки.

0 прочтений

Плагин AMX Mod X для Counter-Strike 1.6 - это скомпилированный файл .amxx. Чтобы установить его, скопируйте файл в cstrike/addons/amxmodx/plugins/, добавьте его имя отдельной строкой в cstrike/addons/amxmodx/configs/plugins.ini, включите в modules.ini нужные ему модули и смените карту. Это весь механизм. Хорошим или плохим сервер 1.6 делает то, какие плагины вы выбрали, как мало их у вас работает и можете ли вы понять, почему один из них не загрузился, - лог AMX Mod X говорит это одной строкой, а большинство людей его никогда не открывает. В этом руководстве - файлы плагинов, стандартные плагины, которые стоит оставить, популярные сторонние плагины, компиляция из исходников, админы в файле или базе данных и ошибки, которые вы реально увидите.

Файлы, которые управляют плагинами#

AMX Mod X загружается через Metamod, а его собственная конфигурация лежит в cstrike/addons/amxmodx/. Если вы ещё не собрали этот стек, ReHLDS, Metamod и изменение liblist.gam описаны в статье руководство по серверу Counter-Strike 1.6. Если meta list показывает, что AMX Mod X работает, то для плагинов важны вот эти файлы:

ФайлНазначение
configs/plugins.iniКакие плагины загружаются и в каком порядке
configs/plugins-*.iniДополнительные списки плагинов, загружаются после основного
configs/maps/plugins-<map>.iniПлагины, которые загружаются только на одной карте
configs/modules.iniМодули для загрузки, когда автозагрузки недостаточно
configs/amxx.cfgОсновные cvars, выполняются при старте каждой карты
configs/users.iniАдмины, если не используется SQL
configs/sql.cfgНастройки базы данных для SQL-админов и SQL-плагинов
plugins/Сами файлы .amxx
logs/Ежедневные логи и error_*.log для ошибок плагинов
scripting/Исходники .sma, include-файлы и компилятор

plugins.ini читается сверху вниз, и порядок иногда важен: плагин, регистрирующий команду, которую использует и другой плагин, выигрывает или проигрывает в зависимости от того, какой загрузился первым. Точка с запятой комментирует строку - так плагин отключают, не удаляя его.

configs/plugins.ini (abridged)
; Admin base - exactly one of theseadmin.amxx            ; admins from users.ini;admin_sql.amxx       ; admins from a database; Basicadmincmd.amxx         ; amx_kick, amx_ban, amx_map and the restadminhelp.amxx        ; amx_helpadminslots.amxx       ; reserved slotsmultilingual.amxx     ; per-player language; Menusmenufront.amxx        ; amxmodmenuplmenu.amxx           ; player menus: kick, ban, slap, teammapsmenu.amxx         ; map and vote menus; Chat and votesadminchat.amxx        ; amx_say, amx_chat, amx_psayantiflood.amxx        ; chat flood protectionadminvote.amxx        ; amx_votemap, amx_votekick, amx_voteban; Mapsnextmap.amxx          ; "nextmap" in chatmapchooser.amxx       ; end-of-map votetimeleft.amxx         ; "timeleft" in chat; Counter-Strikestatsx.amxx           ; /rank, /top15, round stats (needs csx);restmenu.amxx        ; weapon restrictions; Third-party plugins below this lineresetscore.amxx

Стандартный список немного отличается в AMX Mod X 1.8.2, 1.9 и 1.10, но структура та же. Сторонние плагины идут в самый низ, под комментарием, чтобы после обновления AMX Mod X - которое может заменить стандартный plugins.ini - их было легко вернуть обратно.

Плагины для отдельных карт и дополнительные списки

Любой файл с именем configs/plugins-<something>.ini загружается после plugins.ini, и это аккуратный способ держать группу плагинов вместе: plugins-zombie.ini для мода, plugins-community.ini для ваших собственных добавлений. Списки для отдельных карт в configs/maps/ загружают плагин только на этой карте - так сервер запускает плагин ножевой арены на картах 35hp_ и больше нигде. Некоторые версии AMX Mod X также принимают в той же папке файл по префиксу карты, например plugins-de.ini; прежде чем полагаться на совпадение по префиксу, проверьте документацию своей версии.

Модули: то, что упускают#

Плагины вызывают функции, которые находятся в модулях - скомпилированных библиотеках в addons/amxmodx/modules/. Стандартные модули - fun, engine, fakemeta, hamsandwich, cstrike, csx, sqlite и mysql. AMX Mod X 1.8 и новее автоматически загружает модули, которые плагин объявляет как нужные, поэтому modules.ini обычно остаётся таким, как поставляется. Если плагину нужен модуль, которого в папке нет вовсе, плагин не загружается, и лог об этом сообщает.

На современных серверах стоит упомянуть один сторонний модуль. ReAPI - модуль AMX Mod X, который открывает плагинам хуки ReHLDS и ReGameDLL. Многие новые плагины - и большинство написанных для нынешних публичных серверов - требуют его, потому что хуки в игру через ReGameDLL быстрее и надёжнее, чем патчинг через fakemeta. Если на странице плагина написано «requires ReAPI», установите в modules/ сборку модуля, которая соответствует вашим версиям ReHLDS и ReGameDLL, и проверьте через amxx modules, что он загрузился.

code
amxx versionamxx modulesamxx pluginsmeta list

Выполняйте эти четыре команды в консоли сервера после любого изменения. amxx plugins перечисляет все плагины с их статусом - running, paused, bad load или stopped, - а amxx modules показывает, какие модули загрузились. У плагина со статусом bad load причина записана в logs/.

Админы: users.ini или база данных#

Админы подробно, с полной таблицей флагов, разобраны в руководстве по серверу CS 1.6. Если коротко: по одному админу на строку в configs/users.ini, идентификация по SteamID с флагами аккаунта ce, флаги доступа подбираются для каждого человека, а amx_reloadadmins применяет изменения без перезапуска.

configs/users.ini
; identity          password  access flags      account flags"STEAM_0:1:123456"  ""        "abcdefghijklmnopqrstu" "ce""STEAM_0:0:987654"  ""        "bcdefiju"        "ce"

Флаги админов и иммунитет работают одинаково во всех админ-системах Source и GoldSrc - общая модель описана в статье флаги админов и иммунитет в SourceMod, если у вас есть и более новые игры.

Если серверов больше одного или команда часто меняется, храните админов в базе данных. Закомментируйте admin.amxx, раскомментируйте admin_sql.amxx, включите модуль mysql, если он не загружается автоматически, и заполните sql.cfg:

configs/sql.cfg
amx_sql_host "db.example.net"amx_sql_user "amxx"amx_sql_pass "a-long-random-password"amx_sql_db "amxx"amx_sql_table "admins"amx_sql_type "mysql"

При первом запуске с рабочим подключением admin_sql создаёт свою таблицу админов. После этого все серверы, направленные на одну базу данных, делят один список админов. Игровой тариф на RE:NODE включает один слот базы данных со сгенерированными хостом, пользователем и паролем; SQL-плагины AMX Mod X ожидают MySQL-совместимый сервер, поэтому проверьте движок слота в панели, прежде чем подключать их.

Основные cvars в amxx.cfg#

configs/amxx.cfg выполняется при старте каждой карты. Несколько его cvars меняют поведение всех админ-плагинов:

CvarОбычное значениеЧто делает
amx_mode10 выключено, 1 обычный режим, 2 кикает всех, кого нет в списке админов
amx_password_field"_pw"Поле setinfo клиента, в котором передаётся пароль админа
amx_default_access""Флаги для игроков не из users.ini; оставьте пустым
amx_show_activity2Объявлять действия админов с их именем
amx_reservation0 или 1Слоты, оставленные свободными для админов с флагом b
amx_vote_ratio0.02Доля голосов, нужная для принятия голосования
amx_vote_time10Сколько секунд длится голосование
amx_votekick_ratio0.40Доля, нужная для кика голосованием
amx_voteban_ratio0.40Доля, нужная для бана голосованием
amx_extendmap_max90Максимальная длительность продлённой карты, в минутах
amx_extendmap_step15Сколько минут добавляет одно продление

Значения по умолчанию слегка различаются между версиями AMX Mod X, а поставляемый amxx.cfg описывает каждое в комментарии. Прочитайте его один раз - он короткий.

Популярные плагины и их цена#

Каталог плагинов для 1.6 огромен и копился двадцать лет. Большинству серверов нужно совсем немного. Вот давние и широко используемые варианты, сгруппированные по задачам:

ПлагинРешаетПримечания
AMXBansБаны с историей, веб-интерфейсом, общие для нескольких серверовНужна MySQL-совместимая база данных и веб-хостинг для панели
Advanced BansБаны на время, хранятся локально или в SQL, без веб-панелиПроще, чем AMXBans
Galileo или DeagsmapmanagerЛучшие голосования за карту, номинации, rock the voteЗаменяет стандартный mapchooser.amxx
Reset Score/rs обнуляет собственный счёт игрокаКрошечный, на публичных серверах его ждут все
High ping kickerУбирает игроков, которые слишком долго держат высокий пингЗадайте щедрый лимит и время на исправление
AFK managerПереводит в зрители или кикает бездействующих игроковВажнее всего на заполненных серверах
CSDMDeathmatch с возрождениями и меню оружияМодуль плюс плагины; у ReGameDLL есть свои варианты
GunGameРежим с прогрессией оружияПревращает сервер в другую игру
Zombie PlagueМод с заражением зомбиПолноценный мод со своим набором плагинов и моделями
Deathrun managerКарты deathrun с одним игроком на ловушкахНужны карты deathrun

Когда вы заменяете стандартный плагин - Galileo вместо mapchooser.amxx, продвинутую систему банов вместо команд бана, - закомментируйте стандартный. Два плагина, регистрирующие одно и то же голосование или одну и ту же команду, - самая частая причина жалоб «голосование прошло дважды» или «моя команда ничего не делает».

Системы банов

Стандартный amx_ban пишет баны в собственный список банов движка, banned.cfg, через writeid. Это работает, игроки этого не видят, и истории нет: нельзя узнать, кто кого забанил, когда и за что, а список у каждого сервера свой. Для сервера с двумя админами, которые общаются друг с другом, этого хватает. Этого перестаёт хватать, как только у вас появляется команда, потому что первый спор о бане превращается в перепалку без всяких записей.

AMXBans переносит баны в базу данных с записью админа, причины, срока и карты и добавляет веб-интерфейс, где игроки могут найти свой бан, а команда - снять его. Цена - настройка базы данных и небольшого PHP-сайта для интерфейса, и здесь пригодится веб-хостинг, если его некуда ещё поставить. Advanced Bans - золотая середина: баны на время с причинами, в файле или SQL, без веб-панели. Выберите одну систему банов и уберите остальные; если два плагина ведут свои списки банов, игрок, забаненный в одном, желанный гость в другом.

Управление картами

Стандартный mapchooser.amxx в конце карты запускает голосование по configs/maps.ini или по циклу карт, если этот файл пуст. В нём нет номинаций, нет rock-the-vote и нет памяти о недавно сыгранных картах, поэтому каждый вечер побеждают одни и те же три карты. Galileo и Deagsmapmanager добавляют номинации, «rtv» в чате, список исключения недавних карт и более удобные меню голосования. Любой из них стоит поставить на публичный сервер, где больше нескольких карт, и обоим нужно отключить стандартный mapchooser.amxx и обычно nextmap.amxx - в их документации сказано, какие именно. Держите список карт в соответствии с тем, что реально лежит на сервере и на вашем хостинге FastDL, иначе голосование предложит карту, которую половина игроков затем будет качать со скоростью 20 КБ/с.

Полноценные моды вроде Zombie Plague, GunGame и CSDM меняют весь сервер. Запускайте их на отдельном сервере, а не как переключатель на публичном; их игроки - другая публика, а плагины мода рассчитывают на то, что работают одни.

Компиляция плагинов из исходников#

Половина полезных плагинов для 1.6 распространяется как исходник .sma, и скомпилировать их легко, если знать, где компилятор. AMX Mod X поставляет amxxpc в scripting/, а стандартные include-файлы - в scripting/include/.

bash
$ cd cstrike/addons/amxmodx/scripting$ ./amxxpc resetscore.sma -o../plugins/resetscore.amxx

В Windows это amxxpc.exe с теми же аргументами. Если плагину нужен сторонний include - плагинам ReAPI нужен reapi.inc и сопутствующие файлы, - положите эти файлы в scripting/include/ перед компиляцией. Компилятор сообщает об отсутствующих include и синтаксических ошибках с номером строки.

Компилируйте той же версией AMX Mod X, что работает на сервере, или более старой. Плагин, скомпилированный компилятором 1.10, может использовать natives, которых нет на сервере 1.8.2, и не загрузится с ошибкой об отсутствующем native. На хостинге с панелью, где нет shell, компилируйте на своей машине соответствующим пакетом AMX Mod X и загружайте файл .amxx через файловый менеджер или SFTP - оба способа описаны в статье SFTP и файловый менеджер.

Разобранный пример: публичный сервер на 24 слота#

Чтобы сделать всё сказанное конкретным, вот набор плагинов, который на самом деле нужен типичному классическому публичному серверу - карты de_ и cs_, 24 слота, несколько админов-добровольцев, - и почему в нём каждая строка.

  1. Стандартная база. admin.amxx, admincmd.amxx, adminhelp.amxx, plmenu.amxx, menufront.amxx, adminchat.amxx, antiflood.amxx, multilingual.amxx. Это админ-инструменты, которых ждёт каждый член команды, и они почти ничего не стоят.
  2. Голосования. adminvote.amxx для кика голосованием с разумными долями. Возможность для игроков убрать читера, пока ни одного админа нет онлайн, стоит того; задайте amx_votekick_ratio достаточно высоким, чтобы трое друзей не могли выгнать незнакомца.
  3. Карты. Galileo или Deagsmapmanager вместо mapchooser.amxx, плюс timeleft.amxx. Голосование за карту - функция, которую игроки замечают больше всего.
  4. Статистика. statsx.amxx для /rank и /top15. Игрокам нравится, и он лёгкий.
  5. Баны. Advanced Bans или AMXBans, если серверов больше одного или админов больше нескольких.
  6. Удобство. Reset Score и AFK manager. Заполненный сервер с тремя бездействующими игроками - это сервер, который теряет людей у входа.
  7. Поначалу больше ничего. Поработайте так неделю, затем добавляйте по одному плагину, когда кто-то просит что-то конкретное.

Это около пятнадцати плагинов, и сервер на 24 слота с ними спокойно работает на одном ядре, укладываясь заметно меньше чем в гигабайт памяти. Соблазн - добавить звуковые паки, шапки, следы, дополнительные HUD-сообщения и пять видов цветного чата. Каждое из этого - загрузка для каждого нового игрока, немного больше работы в игровом потоке и ещё одна вещь, которая сломается при обновлении. Серверы, которые годами сохраняют свою аудиторию, обычно самые скучные.

Храните копию рабочей папки addons/amxmodx/configs и список плагинов где-нибудь вне сервера. На RE:NODE ручной backup перед каждым изменением - одна кнопка, и его можно заблокировать, чтобы ротация его не удалила; почему стоит попробовать восстановить backup до того, как он понадобится, объясняет статья backup, который действительно восстанавливается.

Отладка и производительность#

Когда плагин ведёт себя странно, допишите debug после его имени в plugins.ini и смените карту:

ini
resetscore.amxx debug

После этого ошибки выполнения будут содержать номер строки и стек вызовов в logs/error_<date>.log. Когда закончите, уберите debug - он замедляет плагин.

Движок 1.6 однопоточный, и плагины AMX Mod X работают в этом потоке. Плагин, который запускает повторяющуюся задачу каждую десятую долю секунды или перебирает все сущности в каждом кадре, - прямой налог на время кадра сервера. Загруженный публичный сервер на 32 слота с тридцатью плагинами может работать заметно хуже, чем тот же сервер с десятью. Способ найти медленный плагин непримечателен: ставьте плагины на паузу по одному через amxx pause <name>, пока сервер заполнен, или закомментируйте половину сторонних плагинов и сравните. Жалобы на пинг после нового плагина редко связаны с сетью.

Решение проблем#

`bad load` в `amxx plugins`. Откройте самый свежий файл в logs/. «Module/Library not found» означает отсутствующий модуль - часто ReAPI или csx. «Function not present» или «native not found» означает, что плагину нужна более новая версия AMX Mod X или модуль, которого у вас нет.

Плагин загружается, но его команда ничего не делает. Другой плагин зарегистрировал ту же команду раньше, или у игрока нет флага, которого требует команда. Проверьте amxx cmds на повторные регистрации.

После перезапуска у админов нет прав. admin.amxx и admin_sql.amxx оба закомментированы, оба включены, или SQL-подключение не удалось и плагин откатился в никуда. Активной должна быть ровно одна админ-база.

Голосование за карту появляется дважды. Два плагина карт. Закомментируйте mapchooser.amxx, если используете замену.

После обновления всё перестало загружаться. Бинарники Metamod или AMX Mod X были заменены, или liblist.gam сбросился. meta list покажет, какого слоя не хватает. Привычка к откату описана в статье что делать, когда обновление мода всё сломало.

Плагин работает в Windows, но не в Linux. Регистр в имени файла. Linux считает ResetScore.amxx и resetscore.amxx разными файлами; в plugins.ini имя должно совпадать точно.

FAQ#

Куда класть плагины AMX Mod X на сервере CS 1.6?

Файл .amxx кладётся в cstrike/addons/amxmodx/plugins/, а его имя пишется отдельной строкой в cstrike/addons/amxmodx/configs/plugins.ini. Смените карту или перезапустите сервер, затем проверьте amxx plugins в консоли.

Можно ли использовать файлы .sma напрямую?

Нет. Сервер загружает только скомпилированные файлы .amxx. Скомпилируйте .sma через amxxpc из папки scripting/ той же версии AMX Mod X, что работает на сервере, и загрузите результат.

Сколько плагинов - это слишком много?

Фиксированного числа нет, но каждый плагин работает в единственном игровом потоке сервера. Двадцать хорошо написанных плагинов - нормально; пять плохо написанных - нет. Оставляйте только то, чем пользуются игроки, и замеряйте после каждого добавления.

Нужен ли мне ReAPI?

Только если его требует плагин, но многие современные плагины требуют. Если ваш сервер работает на ReHLDS и ReGameDLL - а современный сервер 1.6 должен, - ReAPI естественное дополнение, и его загрузка почти ничего не стоит.

Можно ли сделать общих админов для нескольких серверов?

Да. Используйте admin_sql.amxx и направьте все серверы на одну базу данных в sql.cfg. AMXBans так же работает для банов.


Комментарии

Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.

0/2000