Файл конфигурации сервера
#########################

Все настройки игрового сервера производятся в файле ``server_config.toml``,
который обычно располагается в корне папки игрового сервера.

.. note::
  Здесь перечисленны не все имеющиеся настройки. Более полную информацию
  можно получить почитав исходные файлы:
  
  - `Content.Shared/CCVar/CCVars.cs <https://github.com/space-wizards/space-station-14/blob/master/Content.Shared/CCVar/CCVars.cs>`_
  - `RobustToolbox/Robust.Shared/CVars.cs <https://github.com/space-wizards/RobustToolbox/blob/master/Robust.Shared/CVars.cs>`_


Кратко про формат TOML
**********************

Формат конфигурационных файлов TOML очень строг к формату значений полей.

- строки (string) записываются в двойных кавычках (``"value"``)
- целые числа (int) записываются как обычно (``10``, ``270``)
- числа с плавающей точкой (float) записываются с обязательным указанием дробной части (``0.0``, ``10.31``)
- булевы значения (bool) имеют только два формата: ``true`` и ``false``


Секции
******

log
===

.. list-table::
  :header-rows: 1

  * - Параметр
    - Тип
    - Описание
  * - enabled
    - boolean
    - ``true`` для включения журналирования
  * - path
    - string
    - путь к папке для хранения логов
  * - format
    - string
    - формат именования файлов логов

net
===

.. list-table::
  :header-rows: 1

  * - Параметр
    - Тип
    - Описание
  * - port
    - int
    - сетевой порт, на котором будет работать сервер
  * - bindto
    - string
    - | IP сетевого интерфейса, с которого сервер будет доступен.
      | Если не указан, сервер будет доступен со всех имеющихся сетевых интерфейсов

game
====

.. list-table::
  :header-rows: 1

  * - Параметр
    - Тип
    - Описание
  * - hostname
    - string
    - название сервера. Отображается в лаунчере
  * - maxplayers
    - int
    - | максимальное количество игроков.
      | Больше этого числа сервер не впустит **никого**.
      | Рекомендуется устанавливать значение больше, чем ``soft_max_players``,
      | что бы игровая администрация могла попасть на сервер
  * - soft_max_players
    - int
    - максимальное количество игроков. Отображается в лаунчере
  * - desc
    - string
    - описание сервера. Отображается в лаунчере
  * - lobbyenabled
    - boolean
    - | ``true`` - подключившиеся игроки появляются в лобби.
      | ``false`` - подключившиеся игроки появляются сразу на карте с ролью Пассажир
  * - lobbyduration
    - int
    - время в секундах, сколько продолжиться ожидание игроков в лобби перед запуском раунда
  * - disallowlatejoins
    - boolean
    - ``true`` чтобы запретить игрокам подключаться к начатому раунду (только как призраки)
  * - maxcharacterslots
    - int
    - сколько у игрока может быть персонажей
  * - role_timers
    - boolean
    - ``true`` чтобы выбор роли зависил от отыгранного времени на сервере

hub
===

.. list-table::
  :header-rows: 1

  * - Параметр
    - Тип
    - Описание
  * - advertise
    - boolean
    - ``true`` для отображения сервера в общем списке серверов
  * - server_url
    - string
    - адрес подключения к серверу. Начинается с ``ss14://``

auth
====

.. list-table::
  :header-rows: 1

  * - Параметр
    - Тип
    - Описание
  * - mode
    - int
    - | режим авторизации:
      | ``0`` - не обязательно
      | ``1`` - обязательно
      | ``2`` - не требуется

database
========

.. list-table::
  :header-rows: 1

  * - Параметр
    - Тип
    - Описание
  * - engine
    - string
    - | Реализация базы данных.
      | Поддерживаются значения: ``sqlite`` и ``postgres``
  * - sqlite_dbpath
    - string
    - | Только при ``engine = "sqlite"``.
      | Путь к файлу базы данных.
  * - pg_host
    - string
    - | Только при ``engine = "postgres"``.
      | Адрес базы данных.
  * - pg_port
    - int
    - | Только при ``engine = "postgres"``.
      | Порт базы данных.
  * - pg_database
    - string
    - | Только при ``engine = "postgres"``.
      | Название базы.
  * - pg_username
    - string
    - | Только при ``engine = "postgres"``.
      | Логин к базе данных.
  * - pg_password
    - string
    - | Только при ``engine = "postgres"``.
      | Пароль к базе данных.

admin
=====

.. list-table::
  :header-rows: 1

  * - Параметр
    - Тип
    - Описание
  * - announce_login
    - boolean
    - информировать о входе в игру игроков
  * - announce_logout
    - boolean
    - информировать о выходе из игры игроков

ooc
===

.. list-table::
  :header-rows: 1

  * - Параметр
    - Тип
    - Описание
  * - enabled
    - boolean
    - ``true`` для включения чата OOC в раунде
  * - enabled_admin
    - boolean
    - включен ли чат OOC для администрации

vote
====

.. list-table::
  :header-rows: 1

  * - Параметр
    - Тип
    - Описание
  * - enabled
    - boolean
    - включить возможность проведения голосований
  * - restart_enabled
    - boolean
    - возможность проголосовать за перезапуск раунда
  * - restart_not_allowed_when_admin_online
    - boolean
    - отключить голосование за перезапуск раунда, если администрация в сети
  * - timerrestart
    - int
    - сколько секунд отводиться на голосование за перезапуск раунда
  * - preset_enabled
    - boolean
    - возможность проголосовать за определённый режим игры
  * - timerpreset
    - int
    - сколько секунд отводиться на голосование за определённый режим игры
  * - map_enabled
    - boolean
    - возможность проголосовать за определённую карту
  * - timermap
    - int
    - сколько секунд отводиться на голосование за карту
  * - timeralone
    - int
    - сколько секунд отводиться на голосование, если на карте один игрок

ban
===

.. list-table::
  :header-rows: 1

  * - Параметр
    - Тип
    - Описание
  * - hardware_ids
    - boolean
    - блокировка игрока по "железу"

shuttle
=======

.. list-table::
  :header-rows: 1

  * - Параметр
    - Тип
    - Описание
  * - cargo
    - boolean
    - включает/отключает у "карго" шаттлы
  * - emergency_enabled
    - boolean
    - автоматический вызов эвакуационного шаттла, когда раунд по времени скоро должен быть завершен
  * - auto_call_time
    - int
    - через сколько минут после начала раунда будет автоматически вызван эвакуационный шаттл
  * - auto_call_extension_time
    - int
    - через сколько минут после отзыва эвакуационного шаттла, шаттл будет автоматически выщван повторно
  * - emergency_early_launch_allowed
    - boolean
    - возможность отправить эвакуационный шаттл досрочно
  * - emergency_dock_time
    - float
    - сколько секунд даётся членам экипажа на эвакуацию

afk
===

.. list-table::
  :header-rows: 1

  * - Параметр
    - Тип
    - Описание
  * - time
    - float
    - через сколько секунд будет считаться, что игрок AFK

rules
=====

.. list-table::
  :header-rows: 1

  * - Параметр
    - Тип
    - Описание
  * - time
    - float
    - сколько секунд кнопка принятия правил будет не доступна

ghost
=====

.. list-table::
  :header-rows: 1

  * - Параметр
    - Тип
    - Описание
  * - role_time
    - int
    - сколько секунд кнопка подтверждения принятия роли у призрака будет недоступна

infolinks
=========

.. list-table::
  :header-rows: 1

  * - Параметр
    - Тип
    - Описание
  * - discord
    - string
    - ссылка на Дискорд сервера. Отображается в лаунчере
  * - forum
    - string
    - ссылка на Форум сервера. Отображается в лаунчере
  * - github
    - string
    - ссылка на Github сервера. Отображается в лаунчере
  * - website
    - string
    - ссылка на Сайт сервера. Отображается в лаунчере
  * - wiki
    - string
    - ссылка на Wiki сервера. Отображается в лаунчере
  * - patreon
    - string
    - ссылка на Patreon сервера. (Сейчас не отображается в лаунчере)
  * - bug_report
    - string
    - ссылка на страницу "баг репортов"

metrics
=======

.. list-table::
  :header-rows: 1

  * - Параметр
    - Тип
    - Описание
  * - enabled
    - boolean
    - включение метрик |Prometheus|
  * - host
    - string
    - IP адрес который |Prometheus| будет отслеживать
  * - port
    - int
    - порт который |Prometheus| будет отслеживать

loki
====

.. list-table::
  :header-rows: 1

  * - Параметр
    - Тип
    - Описание
  * - enabled
    - boolen
    - включение отправки логов в |Loki|
  * - name
    - string
    - наименование игрового сервера для |Loki|
  * - address
    - string
    - URL адрес сервера |Loki|

whitelist
=========

.. list-table::
  :header-rows: 1

  * - Параметр
    - Тип
    - Описание
  * - enabled
    - boolean
    - включение "белого списка"
  * - reason
    - string
    - строка, которая пишется игроку, который не находится в белом списке

.. -----------------------------------------------------------------------------

.. |Prometheus| raw:: html
  
  <a href="https://prometheus.io" target="_blank">Prometheus</a>

.. |Loki| raw:: html
  
  <a href="https://grafana.com/oss/loki/" target="_blank">Loki</a>
