Более детальная настройка core.cfg

Kruzya

Здравствуй, юность в сапогах
Меценат
Сообщения
10,713
Реакции
8,862
Попробую более детально разобрать, что такое core.cfg, какие он имеет настройки и так далее.
И так,
  1. Файл располагается в %sm_basepath%/configs/core.cfg.
    %sm_basepath% - значение одноимённой консольной переменной, которая содержит в себе путь к SourceMod. Обычно её изменяют, когда из одной папки с SRCDS необходимо запускать несколько разных серверов по набору плагинов и конфигов, но сейчас не об этом.
    Полный путь к файлу, если необходимо, может быть переопределен. Для этого введена очередная консольная переменная, которая должна изменяться исключительно из параметров запуска, как и sm_basepath - sm_corecfgfile.
  2. Файл ведётся в формате Valve KeyValues, и SourceMod допускает наличие только обычных записей в нём типа "ключ-значение".
    Ни о каких секциях внутри него и речи идти не может, кроме корневой Core.
  3. Файл загружается строго один раз - при запуске SourceMod, т.е. при запуске сервера.
    1592198640886.pngВо время первоначальной настройки, ясное дело, может понадобиться очень часто перезагружать файл. Такой возможности - нет, но SourceMod предоставляет возможность изменять на лету прочитанные параметры через консоль сервера/RCON. Для этого вводится подкоманда config с параметрами <key> [value].
    Т.е., если Вам необходимо выключить логгирование после запуска - Вы можете просто выполнить sm config Logging off, и оно будет отключено сразу же. Но SourceMod кеширует значения некоторых своих собственных параметров, потому какие-то опции могут быть изменены не сразу, а только на следующей карте.
    Если Вам нужно просто просмотреть значение параметра - новое значение опускаете.
    Если значение не может быть применено (не ожидаемое или параметра вовсе нет в самом конфиге) - SourceMod прямо так и напишет.
    Всё вышенаписанное применимо как к параметрам самого SourceMod, так и к параметрам сторонних расширений.
Имеющиеся параметры "из коробки":
НаименованиеОписаниеСтандартное значениеВладелец
AutoUpdateURLURL-адрес, на который апдейтер будет стучаться за свежей геймдатой. Полезно переопределять, если Вы модифицируете геймдату под себя.

Конечная точка, куда будет обращаться сервер, должна поддерживать полностью протокол обновления геймдаты SourceMod. Чуть позже будет выложен примитив реализации такого веб-сервиса.
http://www.sourcemod.net/update/Апдейтер геймдаты (extensions/updater.ext)
ForceRestartAfterUpdateРегилуерт необходимость в "насильном" перезапуске сервера после обновления геймдаты.

yes, если необходимо. Любое иное значение - не перезапускать.
noАпдейтер геймдаты (extensions/updater.ext)
DisableAutoUpdateПозволяет выключить механизм обновления геймдаты.

yes, если обновления не требуются. В этом случае не запускается даже само расширение автоматически.
Любое иное значение - выполнять процесс обновления каждый запуск сервера.
noЯдро SourceMod
FollowCSGOServerGuidelinesРегулирует наличие "превентивной" защиты от нарушения правил для игровых серверов CS:GO. Защищает Ваш токен от возможного бана из-за нарушения правил.yesЕдинственный параметр, который принадлежит сразу двум составным компонентам:
  • Ядро SourceMod
  • Расширение SDKTools; доступно только в CS:GO (extensions/sdktools.ext.2.csgo)
ServerLangЯзык, выбираемый сервером по-умолчанию в любом случае, и использующийся в консоли SRCDS.

Обратите внимание, что на выбранном языке должны быть доступны все фразы, которые только используются/есть, иначе возможно получение ошибок об полном отсутствии фразы.
enЯдро SourceMod; модуль мультиязычности
LoggingРегулирует необходимость ведения логов. Допускаются значения только on и offonЯдро SourceMod; модуль логов
LogModeРежим ведения логов. Допустимые режимы:
  • daily. Лог ведётся за весь день. Если сервер перезапускается - он открывает тот же лог, что и в прошлый раз.
  • map. Лог ведётся за одну итерацию карты. Помимо даты, в имени лога используется порядковый номер карты с момента запуска сервера. Если сервер перезапускается - он снова откроет самый первый лог.
  • game. SourceMod пишет все записи в логи самого движка/игры. Не забудьте убедиться, что стандартная система логгирования включена (log on).
dailyЯдро SourceMod; модуль логов
PublicChatTriggerИспользуемый префикс для запуска команд из чата. С этим префиксом, команды в чате будут отображаться введёнными у всех.!Ядро SourceMod; модуль чат-триггеров
SilentChatTriggerИспользуемый префикс для запуска команд из чата. С этим префиксом, команды в чате НЕ будут отображаться введёнными у всех, если команда действительно существует и если настройка SilentFailSuppress не включена./Ядро SourceMod; модуль чат-триггеров
SilentFailSuppressРегулирует скрытие неудачно введённых команд, если пользователь, запускавший команду, является администратором.noЯдро SourceMod; модуль чат-триггеров
MenuItemSoundЗвук, запускающийся при выборе элемента в меню.buttons/button14.wavЯдро SourceMod; модуль меню
MenuExitBackSoundЗвук, запускающийся при нажатии на кнопку "Назад" в меню.buttons/combine_button7.wavЯдро SourceMod; модуль меню
MenuExitSoundЗвук, запускающийся при нажатии на кнопку "Выход" в меню.buttons/combine_button7.wavЯдро SourceMod; модуль меню
BasePathБазовый путь к файлам SourceMod. Алиас sm_basepath. Не может быть изменён во время работы сервера, загружается и используется только при первом чтении конфига.Отсутствует. Стандартное значение этого параметра вычисляется во время запуска сервера.Ядро SourceMod
SlowScriptTimeoutМаксимальное время выполнения SourcePawn-кода за 1 вызов.
Суть в том, чтобы "защитить" сервер от зависания в случае неправильно/криво написанного кода. Если код будет выполняться очень долго - его исполнение будет прервано, соответствующая проблема будет зафиксирована в error-логах.
8Ядро SourceMod; значение передаётся в SourcePawn VM
DisableJITОтключает SourcePawn JIT. Не рекомендуется изменять. Возможно сильное проседание производительности (зависит от процессора и множества других факторов).noЯдро SourceMod; значение передаётся в SourcePawn VM
PassInfoVarНаименование сетевого выставляемого параметра (setinfo), в котором должен передаваться пароль от Администраторских прав, если он был задан.
Стандартное значение _password намеренно игнорируется SM в целях безопасности. Рекомендуется придумать уникальное значение, которое нигде публично афишироваться не будет (только после выдачи прав), поскольку все сетевые выставляемые параметры всегда передаются на сервер, и при желании, любой злоумышленник может угнать через SourceMod API Ваш пароль.
_passwordЯдро SourceMod; модуль взаимодействия с игроками
AllowClLanguageVarРазрешает использовать клиентскую консольную переменную cl_language при подключении игрока для выставления языка на сервере.

То, что именно делает этот параметр, зависит целиком от игры.
В TF2, CS:S, HL2DM и любых прочих старых играх - достаёт язык из сетевых параметров, которые передаются при подключении.
В CS:GO (новые игры) клиент перестал пропихивать свой язык в сетевых параметрах, а потому заставляет сервер сходить на клиент за языком (причина, по которой первое время у игрока может использоваться стандартный серверный язык).
onЯдро SourceMod; модуль взаимодействия с игроками
SteamAuthstringValidationРегулирует необходимость полной аутентификации клиента на сервере через Steam.yesЯдро SourceMod; модуль взаимодействия с игроками
BlockBadPluginsВключает встроенную защиту от "вредоносных" или "плохих" плагинов.
Защита самая наибанальнейшая - хеш-код исполняемого кода плагина.
yesЯдро SourceMod; модуль управления плагинами

© CrazyHackGUT aka Kruzya. Специально для HLMod.ru. При копировании на другие ресурсы, ссылка на оригинал ОБЯЗАТЕЛЬНА.
 
Последнее редактирование:

DENFER

Пишу плагины за два биг тести и картошку фри..
Сообщения
161
Реакции
155
Хорошая документация по конфигу ядра! Но, хотелось бы узнать, где располагаются реализации данных ключей, к примеру: SlowScriptTimeout и BlockBadPlugins и тд?
Еще хочу подметить, почему-то в вашей документации нет DebugSpew и MinidumpAccount, и лично у себя не наблюдаю DisableJIT и BasePath, конечно могу сослаться к тому, что в последнем SM их вынесли к дефолтным ключам - значение, которых не должно изменяться.
И еще небольшое замечание, мб это не так, но разве AllowClLanguageVar не должно иметь по умолчанию on, скорее всего у вас допущена опечатка.
 
Последнее редактирование:

Kruzya

Здравствуй, юность в сапогах
Меценат
Сообщения
10,713
Реакции
8,862
где располагаются реализации данных ключей, к примеру: SlowScriptTimeout и BlockBadPlugins
Самый железобетонный способ найти реализацию - вбить в поиске по Гитхабу SM название интересуемого параметра и внимательно изучить логику, связанную с настройкой.
Привожу ссылки по Вашим примерам:
Еще хочу подметить, почему-то в вашей документации нет DebugSpew
Не используется. Ничего не делает в последней версии SourceMod, потому его здесь нет.

А это вообще от стороннего расширения, которое называется Accelerator. Сам SourceMod никак с этим параметром не взаимодействует. Можете проверить тем же поиском:
1592314889352.png

лично у себя не наблюдаю DisableJIT и BasePath, конечно могу сослаться к тому, что в последнем SM их вынесли к дефолтным ключам - значение, которых не должно изменяться.
Нет, они есть и их можно изменять. Не все параметры, которые читает SourceMod, есть в дефолтном конфиге. Ровно как и MinidumpAccount. То, что они отсутствуют - не означает, что их нет/нельзя менять 🌚

И еще небольшое замечание, мб это не так, но разве AllowClLanguageVar не должно иметь по умолчанию on, скорее всего у вас допущенная опечатка.
Да, опечатка. Спасибо за замечание, исправил. 👍
 
Сверху