> ## Documentation Index
> Fetch the complete documentation index at: https://rust-co.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Настройка

> Всё, что можно изменить в папке config, простыми словами.

Настройки лежат в трёх файлах папки `rco-steamline/config/`:

* `config.lua`: общие параметры, компании, поезда, котёл, клавиши, пассажиры, грузы, износ и поезда сервера;
* `offices.lua`: конторы железной дороги и мастерские;
* `supply.lua`: угольные кучи и водонапорные башни.

Откройте их любым текстовым редактором (подойдёт Блокнот, VS Code удобнее).

> [!TIP]
>
> Меняйте только то, что идёт после знака `=`. Оставляйте кавычки `'...'`, запятые и скобки точно как есть. После сохранения перезапустите сервер при закрытой игре.

## Основное

| Настройка | Что делает | По умолчанию |
| - | - | - |
| `Config.Locale` | Язык текстов на экране: `'en'` или `'pt-br'` | `'en'` |
| `Config.Framework` | Оставьте `'auto'`. Пишите `'rsg'` или `'vorp'`, только если на вашем сервере работают оба | `'auto'` |
| `Config.MoneyAccount` | Деньги, которыми платят игроки: `'cash'` (наличные RSG, доллары VORP) или `'gold'` (золото VORP). На RSG работает и `'bank'` | `'cash'` |
| `Config.DisableGameTrains` | Выключает случайные поезда самой игры, чтобы они никогда не врезались в поезда игроков | `true` |
| `Config.Command` | Админ-команда (смотрите [Администрирование](https://rust-co.mintlify.site/ru/rco-steamline/admin.md)) | `'steamline'` |
| `Config.MaxTrains` | Поездов игроков в мире одновременно, на весь сервер. Поезда сервера уходят, чтобы освободить им место | `6` |
| `Config.Debug` | Выводит дополнительные сообщения в консоли сервера и F8. Включайте только для поиска проблемы | `false` |

`Config.Volume` задаёт громкость собственных звуков ресурса, от `0` (выкл.) до `1`. Каждый затихает с расстоянием.

| Настройка | Звук | По умолчанию |
| - | - | - |
| `Shovel` | Угольная лопата, её слышат игроки рядом | `0.8` |
| `Injector` | Клапан и пение инжектора, в кабине | `0.7` |
| `Water` | Вода, падающая из рукава башни в тендер | `0.6` |
| `Repair` | Ремонтные работы у паровоза и на пути, слышны в пределах 6 м | `0.8` |

## Компании

Нет компании — нет поезда: каждый игрок, который хочет поезд, открывает компанию в конторе железной дороги, даже в одиночку. Роли управляют только компанией; любой в ней водит, бросает уголь и проверяет билеты.

| Настройка | Что делает | По умолчанию |
| - | - | - |
| `Config.Company.OpenPrice` | Платится из кармана за открытие компании | `20.0` |
| `Config.Company.MaxMembers` | Людей в одной компании, включая владельца | `20` |
| `Config.Company.MaxTrainsOut` | Поездов одной компании в мире одновременно | `2` |
| `Config.Company.InviteSeconds` | Сколько предложение работы ждёт ответа | `60` |
| `Config.Company.Commission` | % оплаты грузового контракта, который делят участники, носившие его груз. Владелец каждой компании может изменить его для своей компании в конторе | `10` |

## Износ и ремонт

Износ идёт от `0` (новое) до `100` (изношено) для колёс, тормозов и котла. Изношенные колёса замедляют поезд, изношенные тормоза хуже его останавливают, а изношенный котёл даёт меньше давления.

| Настройка | Что делает | По умолчанию |
| - | - | - |
| `WheelsPerKm` / `WheelsPerOverspeed` | Износ колёс за км пути / за секунду выше `OverspeedMph` | `0.4` / `0.05` |
| `BrakesPerKm` / `BrakesPerHardBrake` | Износ тормозов за км / за секунду резкого торможения (тормоз больше 70% на ходу) | `0.2` / `0.08` |
| `BoilerPerKm` / `BoilerPerLowWater` | Износ котла за км / за секунду с малым уровнем воды в котле при сильном огне | `0.2` / `0.01` |
| `BoilerPerHighPressure` | Износ котла за секунду при давлении у максимума | `0.005` |
| `HighPressure` | Доля максимального давления котла, которая считается «у максимума» | `0.9` |
| `OverspeedMph` | Выше этой скорости (миль/ч) колёса изнашиваются быстрее | `25` |
| `MaxLoss` | Доля скорости, торможения и давления, теряемая при износе 100 (`0.35` = 35%) | `0.35` |
| `Repair` | Полная цена каждой части, от износа 100 до новой: `wheels` $50, `brake` $30, `boiler` \$100. Меньше износ — дешевле. | |
| `PartsShare` | Бригада ремонтирует поезд сама и платит только эту долю той цены | `0.4` |

Все они внутри `Config.Wear`. Ремонт колёс с износом 50 стоит `50 × 50% × 0.4 = $10`. Смотрите [Обслуживание](https://rust-co.mintlify.site/ru/rco-steamline/maintenance.md).

## Поезда

| Настройка | Что делает | По умолчанию |
| - | - | - |
| `Config.GraceSeconds` | Поезд, рядом с которым нет никого из бригады, тормозит до остановки и через столько секунд убирается и ставится обратно в депо, откуда его вызвали | `300` |
| `Config.CrewRadius` | Метры: участник бригады ближе этого не даёт убрать поезд | `150.0` |
| `Config.SwitchRadius` | Метры: машинист переводит стрелку из кабины, когда она так близко, и только когда на ней нет другого поезда | `400.0` |

### Каталог

`Config.Trains` — то, что продаёт контора. Компания покупает паровоз один раз (он идёт с тендером), потом свои вагоны по одному (`Config.Cargo.Price`).

```lua theme={"dark"}
Config.Trains = {
    steamline = { label = 'Steamline', price = 1800.0,
        description = 'Engine and tender. Pulls the cars your company buys.' },
}
```

Меняйте `label`, `price` (платится из кассы компании) или `description`, которое показывается в каталоге. Оставьте имя `steamline`.

### Депо

`Config.Yards` — список станций, где вызывают поезда и ставят их в депо. Станция не из списка — не остановка: там нет билетов, пассажиров и грузов.

```lua theme={"dark"}
station_rho = { label = 'Rhodes', coords = vector3(1215.30, -1299.80, 75.58), heading = 31.18, radius = 150.0,
    call = vector4(1237.50, -1315.35, 76.90, 110.55) },
```

| Настройка | Что делает |
| - | - |
| имя перед `=` | Id станции (`station_rho`). Не меняйте его: это собственное имя станции на железной дороге |
| `label` | Название на экране депо |
| `coords` | Точка на пути самой станции, где создаётся поезд |
| `heading` | Необязательно: куда поезд смотрит там по умолчанию |
| `radius` | Метры: поезд нельзя вызвать, пока другой поезд ближе этого |
| `call` | Необязательно: где стоит игрок, чтобы вызвать поезд, если не у `coords`: `vector4(x, y, z, направление)` |
| `counter` | Необязательно, для станции без конторы: её билетная касса, куда идут вышедшие NPC, чтобы уйти |

### Киоски

`Config.Booths` ставит киоск Steamline каждой станции, где вызывают поезда и берут грузовые контракты: `[id станции] = vector4(x, y, z, направление стойки)`. Станция не из списка использует точку `call` своего депо.

## Котёл и кабина

Давление в psi, уголь в кг, вода в литрах, время в секундах. Все они внутри `Config.Boiler`.

| Настройка | Что делает | По умолчанию |
| - | - | - |
| `TenderCoalMax` / `FireboxCoalMax` | Сколько угля вмещает тендер / топка | `1500` / `150` |
| `TenderWaterMax` / `BoilerWaterMax` | Сколько воды вмещает тендер / котёл | `20000` / `4000` |
| `BurnRate` | кг угля, сжигаемых в секунду при полностью открытом огне и открытом регуляторе | `0.12` |
| `WaterPerPsi` | Литров, превращаемых в пар, на каждый израсходованный psi | `1.33` |
| `PressurePerKg` | Psi от каждого сожжённого кг угля: больше — давление растёт быстрее и лучше держится на ходу | `40.0` |
| `CoolRate` | Доля давления, теряемая каждую секунду, пока котёл остывает (`0.004` = 0.4%) | `0.004` |
| `InjectorRate` | Литров в секунду, которые инжектор перекачивает из тендера в котёл | `20` |
| `DamageRate` | Повреждение котла в секунду при малом уровне воды и сильном огне (`1.0` = разрушен) | `0.01` |
| `DryBoiler` | Котёл выкипает досуха при горящем огне: `'stop'` (поезд только останавливается) или `'explode'` | `'stop'` |
| `WreckClearSeconds` | С `'explode'`: через сколько секунд обломки убираются и отправляются в депо ближайшей мастерской | `60` |
| `SpeedMax` | м/с при полном давлении с лёгким поездом (`12` = 27 миль/ч). Тяжёлые поезда медленнее | `12.0` |
| `Start` | Что есть у поезда при первом вызове: уголь и вода в тендере и котле, давление и огонь. Следующие вызовы возвращают то, что было, когда его поставили в депо | |

Каждый вызов — тёплый старт: огонь горит и в котле есть давление, поэтому поезд может отправиться сразу.

| Настройка | Что делает | По умолчанию |
| - | - | - |
| `Config.ThrottleNotches` | Ступени регулятора | `8` |
| `Config.ShovelKg` | кг угля, которые одна лопата перекладывает из тендера в топку | `15` |
| `Config.ShovelSeconds` | Секунд между двумя бросками лопаты | `2.5` |

## Клавиши

Клавиши записываются кодом клавиши в игре, а не буквой. На [странице клавиш](https://rust-co.mintlify.site/ru/keys.md) есть код каждой. Некоторые клавиши общие намеренно: каждая подсказка показывается только там, где нет другой. Избегайте F (пешком это ещё и ближний бой, связывание и освобождение), цифровых клавиш (панель быстрого доступа) и стрелок.

| Настройка | Что делает | По умолчанию |
| - | - | - |
| `ThrottleUp` / `ThrottleDown` | Регулятор на одну ступень больше / меньше | **W** / **S** |
| `ReverserBack` / `ReverserFwd` | Реверс назад / вперёд, при стоящем поезде | **A** / **D** |
| `Brake` | Тормоз, удерживать | **Space** |
| `Emergency` | Экстренный тормоз | **X** |
| `Whistle` | Свисток | **H** |
| `Cruise` | Держит текущую скорость | **C** |
| `Injector` | Инжектор вкл. и выкл. | **R** |
| `FireUp` / `FireDown` | Огонь сильнее / слабее, в кабине | **U** / **L** |
| `Shovel` | Уголь из тендера в топку, в кабине | **B** |
| `MapCollapse` | Сворачивает карту кабины, повторно — показывает её | **Q** |
| `Switch` | Переводит следующую стрелку на другой выход | **Z** |
| `Interact` | Угольная куча, тендер, водонапорная башня, груз, рычаг стрелки, контора, ремонт, место в вагоне | **G** |
| `TakeControls` | У паровоза: сесть на место машиниста | **U** |
| `Fireman` | У паровоза: работать у топки; повторно — уйти | **J** |
| `Yard` | У киоска: экран депо | **J** |
| `Ticket` | Билетная касса (контора или перрон) | **L** |
| `Check` | Кондуктор: проверить билет пассажира | **G** |
| `Workers` | У сломанного рельса со служебным вагоном рядом: его рабочие чинят рельс | **J** |
| `Camera` | В кабине или сидя: следующая камера поезда | **V** |

Все они внутри `Config.Keys`.

## Уголь и вода

| Настройка | Что делает | По умолчанию |
| - | - | - |
| `Config.CoalPerTrip` | кг, которые каждый заход с лопатой от кучи добавляет в тендер | `75` |
| `Config.WaterRate` | Литров в секунду, пока рукав башни открыт | `150` |

Угольные кучи и водонапорные башни — в `config/supply.lua`, по одной на станцию с id станции, плюс башни вдоль линии:

```lua theme={"dark"}
Config.Supply.station_val = { -- Valentine
    coal = vector3(-161.99, 636.58, 112.67), water = vector3(-156.58, 642.53, 112.67), waterHeading = 53.4,
    hide = { { model = 'p_watertower_med_05', coords = vector3(-158.99, 644.32, 116.44) } } }
```

| Настройка | Что делает |
| - | - |
| `coal` | Где стоит угольная куча (игроки набирают здесь уголь и несут его к тендеру) |
| `coalHeading` | Необязательно: направление кучи, её сторона -Y к пути. Без него — `waterHeading` |
| `water` | Где стоит водонапорная башня, на земле, в 3.2 м от середины пути (её рукав достаёт до тендера) |
| `waterHeading` | Направление башни: её рукав поворачивается в сторону -Y башни, поэтому поверните эту сторону к пути |
| `hide` | Объекты игры, которые заменяют собственные пропы ресурса; они скрыты, пока наш проп рядом |
| `label` | Показываемое название, для башни вдали от станции |

Свободно меняйте, удаляйте или добавляйте записи. У башни вдоль линии есть только `water`.

## Конторы и мастерские

В `config/offices.lua` — конторы железной дороги: контора станции, где открывают компании и управляют ими; она же билетная касса станции.

```lua theme={"dark"}
{ label = 'Rhodes Station', station = 'station_rho', coords = vector3(1231.19, -1296.21, 76.90),
  cargoPoint = vector3(1221.020, -1299.076, 75.908), cargoHeading = 45.9 },
```

| Настройка | Что делает |
| - | - |
| `label` | Показываемое название |
| `station` | Депо (id из `Config.Yards`), от которого действуют билеты |
| `coords` | Где стоит стойка. Вышедшие NPC идут туда и уходят |
| `cargoPoint` | Где ждёт груз контракта, рядом с путём у перрона. У станции без него нет грузов |
| `cargoHeading` | Направление пути у грузовой площадки |
| `pileShift` | Необязательно: метры вдоль `cargoHeading` до штабеля сдачи (по умолчанию `6`; `0` = на грузовой площадке) |

`Config.Workshops` — список путей мастерских, где ремонтируют остановленный поезд компании: `label`, `coords` (середина) и `radius` (насколько близко, в метрах, должен быть поезд). Готовы Annesburg, Emerald, Flatneck и Heartland Oil Fields. Каждая станция тоже ремонтирует: поезд компании, остановленный в пределах `radius` её депо, получает такой же ремонт. Где станция и мастерская пересекаются, используется мастерская.

## Пассажиры

Деньги в \$, время в секундах, расстояния в метрах. Все они внутри `Config.Passenger`.

| Настройка | Что делает | По умолчанию |
| - | - | - |
| `TicketItem` | Предмет инвентаря для билета | `'rco_train_ticket'` |
| `TicketSeconds` | Сколько билет действует после покупки | `24 * 3600` |
| `BasePrice` / `PricePerKm` | Цена билета = `BasePrice + PricePerKm × km` по пути. Пассажиры-NPC платят столько же за проеханный отрезок | `0.10` / `0.40` |
| `MinMeters` | Нет билета на поездку короче этого | `300` |
| `ArrivalMinutes` | Уведомления о прибытии для поездов, которые меньше чем в стольких минутах | `10` |
| `NpcMaxOff` / `NpcMaxOn` | Не больше стольких пассажиров-NPC выходят / садятся на каждой остановке | `4` / `4` |
| `WaitMin` / `WaitMax` | NPC, ждущие на перроне прибывающий поезд компании | `2` / `6` |
| `StopSeconds` | Поезд должен простоять на станции столько, прежде чем NPC начнут двигаться | `1` |
| `WaitSeconds` | Ждущие NPC уходят через столько времени без остановки | `180` |

Поездка на 10 км стоит `0.10 + 0.40 × 10 = $4.10`.

## Грузы

Деньги в \$, время в секундах. Все они внутри `Config.Cargo`.

| Настройка | Что делает | По умолчанию |
| - | - | - |
| `MaxOwned` | Вагонов у одной компании | `12` |
| `Price` | Цена одного вагона, платится из кассы компании; продаётся только компании, у которой есть паровоз | пассажирский `900`, крытый (`closed`) `55`, платформа (`flatbed`) `110`, служебный `170` |
| `Contracts` | Контрактов на один вагон | платформа `2`, крытый `1` |
| `Types` | Что везут контракты: название и сколько штук `{ min, max }` просит один контракт | ящики `{ 6, 12 }` (целые стопки по 3), бочки `{ 4, 12 }`, брёвна `{ 8, 16 }` |
| `PerStation` | Контрактов в предложении в каждой конторе | `3` |
| `RefreshSeconds` | Предложения, которые никто не взял, заменяются через столько времени | `1800` |
| `MaxActive` | Контрактов у одного поезда одновременно | `3` |
| `PayBase` / `PayPerTonKm` | Оплата = `PayBase + PayPerTonKm × tons × km` по пути | `5.0` / `0.18` |
| `DeadlineBase` / `DeadlinePerKm` | Время на доставку после принятия: база + за км | `900` / `120` |
| `LatePay` | Доля, которая платится после срока | `0.5` |
| `ExpireGrace` | Секунд после срока, когда контракт отменяется и его груз исчезает | `600` |

## Обслуживание пути

Вдоль линий появляются точки ремонта. Компания, у которой рядом с такой точкой остановлен поезд, чинит её: это делают рабочие служебного вагона, если он есть в поезде, или игрок вручную инструментами из тендера.

| Настройка | Что делает | По умолчанию |
| - | - | - |
| `Config.Maintenance.Points` | Точек ремонта открыто одновременно на всей железной дороге | `6` |
| `Config.Maintenance.RemoteAt` | Метры от ближайшей станции: дальше поломка так же вероятна, как в любом месте; ближе — реже (на самой станции нет) | `1500.0` |
| `Config.Maintenance.Pay` | \$, которые платятся в кассу компании за каждый ремонт | `2.0` |

## Цены оформления

`Config.CustomPrices` — сколько стоит каждое изменение вида паровоза, платится из кассы компании. Снять деталь — бесплатно.

| Настройка | Изменение | По умолчанию |
| - | - | - |
| `tint` | Окраска паровоза | `8.0` |
| `tenderTint` | Окраска тендера | `5.0` |
| `front` | Цвет переда паровоза | `3.0` |
| `livery` | Ливрея паровоза | `12.0` |
| `tenderLivery` | Ливрея тендера | `8.0` |
| `star` | Звезда на дверце | `1.5` |
| `candles` | Пара латунных подсвечников рядом с прожектором | `3.0` |
| `toolbox` | Ящик для инструментов на тендере | `2.5` |

## Поезда сервера

Собственные поезда сервера ходят по расписанию, когда линия не нужна ни одному поезду игроков. Поезд существует в мире только рядом с игроками; вдали от всех его место вычисляется по расписанию. Он уступает линию поезду игроков, которому она нужна, и снимается, если слишком долго стоит.

| Настройка | Что делает | По умолчанию |
| - | - | - |
| `enabled` | `false` выключает поезда сервера | `true` |
| `Speed` | м/с на ходу (`12` = 27 миль/ч), для маршрута без своей скорости | `12.0` |
| `Dwell` | Секунд стоянки на каждой остановке, для маршрута без своей стоянки | `45` |
| `SpawnRadius` | Метры: игрок так близко к месту, куда его ставит расписание, вводит его в мир | `300.0` |
| `DespawnRadius` | Метры: если никого так близко нет, он уходит из мира (расписание идёт дальше) | `450.0` |
| `GraceSeconds` | Простоял столько вне станции: снимается и переставляется | `120` |
| `YieldSeconds` | После того как уступил линию (или был снят), он остаётся вне мира столько времени | `300` |
| `Fares` | Продаёт билеты в кассе как компания «Railroad» | `true` |
| `FareCompany` | Id компании, которая получает плату за проезд; `nil` = деньги никуда не идут | `nil` |

Все они внутри `Config.NpcTrain`. `Config.NpcRoutes` — список маршрутов: каждый — свой поезд со своим расписанием, от остановки до остановки и обратно.

```lua theme={"dark"}
{ name = 'Bayou Express', stops = { 'station_rho', 'station_nb' },
  train = 'steamline', cars = { 'passenger', 'passenger', 'caboose' }, speed = 14.0 },
```

| Настройка | Что делает |
| - | - |
| `name` | Название поезда, которое видят игроки |
| `stops` | Id депо по порядку (`Config.Yards`) |
| `train` | Id поезда из `Config.Trains` |
| `cars` | Его вагоны по порядку (`'passenger'`, `'closed'`, `'flatbed'`): до 3, плюс необязательный `'caboose'` последним |
| `speed` / `dwell` | Необязательно: м/с на ходу / секунд на каждой остановке |

Готовы четыре маршрута: Heartland Local (Valentine, Emerald, Rhodes), Lannahechee Line (Saint Denis, Annesburg), Bayou Express (Rhodes, Saint Denis) и Cumberland Line (Riggs, Wallace, Valentine). Маршрут, остановки которого путь не соединяет, пропускается, с предупреждением в консоли сервера.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.