> ## 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.

# Configuration

> Tout ce que vous pouvez changer dans le dossier config, expliqué simplement.

Les réglages sont dans trois fichiers de `rco-steamline/config/` :

* `config.lua` : les options générales, les compagnies, les trains, la chaudière, les touches, les passagers, le fret, l'usure et les trains du serveur ;
* `offices.lua` : les bureaux du chemin de fer et les ateliers ;
* `supply.lua` : les tas de charbon et les châteaux d'eau.

Ouvrez-les avec n'importe quel éditeur de texte (le Bloc-notes suffit, VS Code est plus agréable).

> [!TIP]
>
> Ne changez que ce qui vient après le signe `=`. Gardez les guillemets `'...'`, les virgules et les accolades exactement comme ils sont. Après avoir enregistré, redémarrez le serveur jeu fermé.

## L'essentiel

| Réglage | Ce qu'il fait | Par défaut |
| - | - | - |
| `Config.Locale` | Langue des textes à l'écran : `'en'` ou `'pt-br'` | `'en'` |
| `Config.Framework` | Laissez `'auto'`. N'écrivez `'rsg'` ou `'vorp'` que si votre serveur fait tourner les deux | `'auto'` |
| `Config.MoneyAccount` | L'argent avec lequel les joueurs paient : `'cash'` (argent liquide sur RSG, dollars sur VORP) ou `'gold'` (or sur VORP). Sur RSG, `'bank'` fonctionne aussi | `'cash'` |
| `Config.DisableGameTrains` | Désactive les trains aléatoires du jeu, pour qu'ils ne heurtent jamais les trains des joueurs | `true` |
| `Config.Command` | La commande admin (voir [Admin](https://rust-co.mintlify.site/fr/rco-steamline/admin.md)) | `'steamline'` |
| `Config.MaxTrains` | Trains de joueurs dans le monde en même temps, sur tout le serveur. Les trains du serveur se retirent pour leur faire de la place | `6` |
| `Config.Debug` | Affiche des messages en plus dans les consoles du serveur et F8. Ne l'activez que pour trouver un problème | `false` |

`Config.Volume` règle les sons propres à la ressource, de `0` (coupé) à `1`. Chacun s'atténue avec la distance.

| Réglage | Le son | Par défaut |
| - | - | - |
| `Shovel` | La pelle à charbon, entendue par les joueurs proches | `0.8` |
| `Injector` | La valve et le chant de l'injecteur, dans la cabine | `0.7` |
| `Water` | L'eau qui tombe du bec d'un château d'eau dans le tender | `0.6` |
| `Repair` | Le travail de réparation à la locomotive et sur la voie, entendu à moins de 6 m | `0.8` |

## Compagnies

Pas de compagnie, pas de train : chaque joueur qui veut un train ouvre une compagnie dans un bureau du chemin de fer, même seul. Les rôles ne contrôlent que la compagnie ; n'importe qui dedans conduit, pellette le charbon et contrôle les billets.

| Réglage | Ce qu'il fait | Par défaut |
| - | - | - |
| `Config.Company.OpenPrice` | Payé de sa poche pour ouvrir une compagnie | `20.0` |
| `Config.Company.MaxMembers` | Personnes dans une compagnie, propriétaire compris | `20` |
| `Config.Company.MaxTrainsOut` | Trains qu'une compagnie peut avoir dans le monde en même temps | `2` |
| `Config.Company.InviteSeconds` | Combien de temps une offre d'emploi attend une réponse | `60` |
| `Config.Company.Commission` | % de la paie d'un contrat de fret partagé entre les membres qui l'ont porté. Le propriétaire de chaque compagnie peut le changer pour sa compagnie au bureau | `10` |

## Usure et réparations

L'usure va de `0` (neuf) à `100` (hors d'usage) pour les roues, les freins et la chaudière. Des roues usées rendent le train plus lent, des freins usés l'arrêtent moins bien et une chaudière usée fait moins de pression.

| Réglage | Ce qu'il fait | Par défaut |
| - | - | - |
| `WheelsPerKm` / `WheelsPerOverspeed` | Usure des roues par km parcouru / par seconde au-dessus de `OverspeedMph` | `0.4` / `0.05` |
| `BrakesPerKm` / `BrakesPerHardBrake` | Usure des freins par km / par seconde de freinage fort (frein à plus de 70 % en roulant) | `0.2` / `0.08` |
| `BoilerPerKm` / `BoilerPerLowWater` | Usure de la chaudière par km / par seconde avec peu d'eau dans la chaudière sous un feu fort | `0.2` / `0.01` |
| `BoilerPerHighPressure` | Usure de la chaudière par seconde avec la pression au maximum | `0.005` |
| `HighPressure` | La part de la pression maximale de la chaudière qui compte comme « le maximum » | `0.9` |
| `OverspeedMph` | Au-dessus de cette vitesse (mph), les roues s'usent plus vite | `25` |
| `MaxLoss` | La part de vitesse, de freinage et de pression perdue à 100 d'usure (`0.35` = 35 %) | `0.35` |
| `Repair` | Le prix complet de chaque partie, de 100 d'usure à neuf : `wheels` 50 $, `brake` 30 $, `boiler` 100 \$. Moins d'usure coûte moins. | |
| `PartsShare` | L'équipe répare le train elle-même et ne paie que cette part de ce prix | `0.4` |

Ils sont tous dans `Config.Wear`. Des roues à 50 d'usure coûtent `50 × 50% × 0.4 = $10` à réparer. Voir [Entretien](https://rust-co.mintlify.site/fr/rco-steamline/maintenance.md).

## Trains

| Réglage | Ce qu'il fait | Par défaut |
| - | - | - |
| `Config.GraceSeconds` | Un train sans membre d'équipe à proximité freine jusqu'à l'arrêt et il est retiré au bout de ce nombre de secondes, garé de nouveau au dépôt d'où il a été appelé | `300` |
| `Config.CrewRadius` | Mètres : un membre d'équipe plus proche que ça garde le train en vie | `150.0` |
| `Config.SwitchRadius` | Mètres : le conducteur manœuvre un aiguillage depuis la cabine quand il est aussi proche, et seulement quand aucun autre train n'est dessus | `400.0` |

### Le catalogue

`Config.Trains` est ce que vend le bureau. Une compagnie achète la locomotive une fois (elle vient avec son tender), puis ses wagons un par un (`Config.Cargo.Price`).

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

Changez le `label`, le `price` (payé avec la caisse de la compagnie) ou la `description` affichée dans le catalogue. Gardez le nom `steamline`.

### Les dépôts

`Config.Yards` liste les gares où les trains sont appelés et garés. Une gare absente de la liste n'est pas un arrêt : ni billets, ni passagers, ni fret.

```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) },
```

| Réglage | Ce qu'il fait |
| - | - |
| le nom avant le `=` | L'id de la gare (`station_rho`). Gardez-le : c'est le nom que le chemin de fer donne lui-même à cette gare |
| `label` | Le nom affiché sur l'écran du dépôt |
| `coords` | Un point sur la voie même de la gare, où le train est créé |
| `heading` | Facultatif : le sens dans lequel le train y est tourné par défaut |
| `radius` | Mètres : aucun train ne peut être appelé tant qu'un autre train est plus proche que ça |
| `call` | Facultatif : là où le joueur se tient pour appeler un train, quand ce n'est pas à `coords` : `vector4(x, y, z, heading)` |
| `counter` | Facultatif, pour une gare sans bureau : son guichet, où les PNJ qui descendent vont avant de partir |

### Les kiosques

`Config.Booths` place le kiosque Steamline de chaque gare, où l'on appelle les trains et où l'on prend les contrats de fret : `[station id] = vector4(x, y, z, heading of the counter)`. Une gare absente de la liste utilise le point `call` de son dépôt.

## Chaudière et cabine

Pression en psi, charbon en kg, eau en litres, temps en secondes. Ils sont tous dans `Config.Boiler`.

| Réglage | Ce qu'il fait | Par défaut |
| - | - | - |
| `TenderCoalMax` / `FireboxCoalMax` | Charbon que contient le tender / le foyer | `1500` / `150` |
| `TenderWaterMax` / `BoilerWaterMax` | Eau que contient le tender / la chaudière | `20000` / `4000` |
| `BurnRate` | kg de charbon brûlés par seconde avec le feu au maximum et le régulateur ouvert | `0.12` |
| `WaterPerPsi` | Litres changés en vapeur par psi utilisé | `1.33` |
| `PressurePerKg` | Psi produits par chaque kg de charbon brûlé : plus haut, la pression monte plus vite et il en reste plus en marche | `40.0` |
| `CoolRate` | Part de la pression perdue chaque seconde quand la chaudière refroidit (`0.004` = 0,4 %) | `0.004` |
| `InjectorRate` | Litres par seconde que l'injecteur fait passer du tender à la chaudière | `20` |
| `DamageRate` | Dégâts de la chaudière par seconde avec peu d'eau sous un feu fort (`1.0` = détruite) | `0.01` |
| `DryBoiler` | La chaudière se vide avec le feu allumé : `'stop'` (le train s'arrête seulement) ou `'explode'` | `'stop'` |
| `WreckClearSeconds` | Avec `'explode'` : secondes avant que l'épave soit dégagée et envoyée au dépôt de l'atelier le plus proche | `60` |
| `SpeedMax` | m/s à pleine pression avec un train léger (`12` = 27 mph). Les trains plus lourds sont plus lents | `12.0` |
| `Start` | Ce qu'a un train la première fois qu'il est appelé : charbon et eau dans le tender et la chaudière, la pression et le feu. Les appels suivants ramènent ce qu'il avait quand il a été garé | |

Chaque appel est un départ à chaud : le feu est allumé et la chaudière a de la pression, le train peut donc partir aussitôt.

| Réglage | Ce qu'il fait | Par défaut |
| - | - | - |
| `Config.ThrottleNotches` | Crans du régulateur | `8` |
| `Config.ShovelKg` | kg de charbon qu'une pelletée fait passer du tender au foyer | `15` |
| `Config.ShovelSeconds` | Secondes entre deux pelletées | `2.5` |

## Touches

Les touches s'écrivent avec le code de la touche dans le jeu, pas avec la lettre. La [page des touches](https://rust-co.mintlify.site/fr/keys.md) donne le code de chacune. Certaines touches sont partagées exprès : chaque indication n'apparaît que là où l'autre n'apparaît pas. Évitez F (à pied, c'est aussi le corps à corps, ligoter et libérer), les touches de chiffres (barre de raccourcis) et les flèches.

| Réglage | Ce qu'il fait | Par défaut |
| - | - | - |
| `ThrottleUp` / `ThrottleDown` | Régulateur d'un cran plus / moins | **W** / **S** |
| `ReverserBack` / `ReverserFwd` | Inverseur en arrière / en avant, train à l'arrêt | **A** / **D** |
| `Brake` | Frein, maintenir | **Space** |
| `Emergency` | Frein d'urgence | **X** |
| `Whistle` | Sifflet | **H** |
| `Cruise` | Maintient la vitesse actuelle | **C** |
| `Injector` | Injecteur ouvert et fermé | **R** |
| `FireUp` / `FireDown` | Feu plus fort / plus faible, dans la cabine | **U** / **L** |
| `Shovel` | Charbon du tender au foyer, dans la cabine | **B** |
| `MapCollapse` | Replie la carte de la cabine ; à nouveau pour l'afficher | **Q** |
| `Switch` | Manœuvre le prochain aiguillage vers son autre sortie | **Z** |
| `Interact` | Tas de charbon, tender, château d'eau, cargaison, levier d'aiguillage, bureau, réparation, place assise | **G** |
| `TakeControls` | Près de la locomotive : s'asseoir à la place du conducteur | **U** |
| `Fireman` | Près de la locomotive : s'occuper du feu ; à nouveau pour partir | **J** |
| `Yard` | Au kiosque : l'écran du dépôt | **J** |
| `Ticket` | Le guichet (bureau ou quai) | **L** |
| `Check` | Contrôleur : contrôler le billet d'un passager | **G** |
| `Workers` | À un rail cassé avec un fourgon de queue à proximité : ses ouvriers le réparent | **J** |
| `Camera` | Dans la cabine ou assis : la caméra de train suivante | **V** |

Elles sont toutes dans `Config.Keys`.

## Charbon et eau

| Réglage | Ce qu'il fait | Par défaut |
| - | - | - |
| `Config.CoalPerTrip` | kg que chaque aller avec la pelle depuis le tas ajoute au tender | `75` |
| `Config.WaterRate` | Litres par seconde pendant que le bec d'un château d'eau est ouvert | `150` |

Les tas de charbon et les châteaux d'eau sont dans `config/supply.lua`, un par gare avec l'id de la gare, plus des châteaux d'eau le long de la ligne :

```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) } } }
```

| Réglage | Ce qu'il fait |
| - | - |
| `coal` | Là où se trouve le tas de charbon (les joueurs pellettent ici, puis vont jusqu'au tender) |
| `coalHeading` | Facultatif : l'orientation du tas, son côté -Y vers la voie. Sans lui, `waterHeading` |
| `water` | Là où se trouve le château d'eau, au sol, à 3,2 m du milieu de la voie (son bec atteint le tender) |
| `waterHeading` | L'orientation du château d'eau : son bec pivote vers le côté -Y du château d'eau, tournez donc ce côté vers la voie |
| `hide` | Les objets du jeu que remplacent les props de la ressource, cachés tant que le nôtre est proche |
| `label` | Le nom affiché, pour un château d'eau loin d'une gare |

Modifiez, supprimez ou ajoutez des entrées librement. Un château d'eau le long de la ligne n'a que `water`.

## Bureaux et ateliers

`config/offices.lua` contient les bureaux du chemin de fer : le bureau de la gare où les compagnies s'ouvrent et se gèrent, qui est aussi son guichet.

```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 },
```

| Réglage | Ce qu'il fait |
| - | - |
| `label` | Le nom affiché |
| `station` | Le dépôt (un id de `Config.Yards`) d'où partent les billets |
| `coords` | Là où se trouve le comptoir. Les PNJ qui descendent y vont avant de partir |
| `cargoPoint` | Là où attend le fret d'un contrat, à côté de la voie du quai. Une gare sans lui n'a pas de fret |
| `cargoHeading` | L'orientation de la voie au point de chargement |
| `pileShift` | Facultatif : mètres le long de `cargoHeading` jusqu'au tas de livraison (par défaut `6` ; `0` = sur le point de chargement) |

`Config.Workshops` liste les voies d'atelier, où un train de compagnie arrêté est réparé : `label`, `coords` (le milieu) et `radius` (à quelle distance, en mètres, le train doit être). Annesburg, Emerald, Flatneck et Heartland Oil Fields sont prêts. Chaque gare répare aussi : un train de compagnie arrêté dans le `radius` de son dépôt reçoit la même réparation. Là où une gare et un atelier se chevauchent, c'est l'atelier qui sert.

## Passagers

Argent en \$, temps en secondes, distances en mètres. Ils sont tous dans `Config.Passenger`.

| Réglage | Ce qu'il fait | Par défaut |
| - | - | - |
| `TicketItem` | L'objet d'inventaire du billet | `'rco_train_ticket'` |
| `TicketSeconds` | Combien de temps un billet est valable après l'achat | `24 * 3600` |
| `BasePrice` / `PricePerKm` | Prix du billet = `BasePrice + PricePerKm × km` le long de la voie. Les passagers PNJ paient la même chose pour la portion parcourue | `0.10` / `0.40` |
| `MinMeters` | Pas de billet pour un trajet plus court que ça | `300` |
| `ArrivalMinutes` | Avis d'arrivée pour les trains à moins de ce nombre de minutes | `10` |
| `NpcMaxOff` / `NpcMaxOn` | Au plus ce nombre de passagers PNJ descendent / montent à chaque arrêt | `4` / `4` |
| `WaitMin` / `WaitMax` | PNJ qui attendent sur le quai un train de compagnie qui arrive | `2` / `6` |
| `StopSeconds` | Le train doit rester ce temps à l'arrêt dans une gare avant que les PNJ bougent | `1` |
| `WaitSeconds` | Les PNJ qui attendent abandonnent après ce temps sans arrêt | `180` |

Un trajet de 10 km coûte `0.10 + 0.40 × 10 = $4.10`.

## Fret

Argent en \$, temps en secondes. Ils sont tous dans `Config.Cargo`.

| Réglage | Ce qu'il fait | Par défaut |
| - | - | - |
| `MaxOwned` | Wagons qu'une compagnie peut posséder | `12` |
| `Price` | Le prix d'un wagon, payé avec la caisse de la compagnie ; vendu seulement à une compagnie qui possède une locomotive | passagers `900`, wagon couvert (`closed`) `55`, wagon plat (`flatbed`) `110`, fourgon de queue `170` |
| `Contracts` | Contrats qu'un wagon transporte | wagon plat `2`, wagon couvert `1` |
| `Types` | Ce que transportent les contrats : le nom, et combien de pièces `{ min, max }` un contrat demande | caisses `{ 6, 12 }` (piles entières de 3), tonneaux `{ 4, 12 }`, rondins `{ 8, 16 }` |
| `PerStation` | Contrats proposés à chaque bureau | `3` |
| `RefreshSeconds` | Les offres que personne n'a prises sont remplacées après ce temps | `1800` |
| `MaxActive` | Contrats qu'un train peut avoir en même temps | `3` |
| `PayBase` / `PayPerTonKm` | Paie = `PayBase + PayPerTonKm × tons × km` le long de la voie | `5.0` / `0.18` |
| `DeadlineBase` / `DeadlinePerKm` | Temps pour livrer après l'acceptation : base + par km | `900` / `120` |
| `LatePay` | La part payée quand le délai est dépassé | `0.5` |
| `ExpireGrace` | Secondes après le délai au bout desquelles le contrat est annulé et ses pièces disparaissent | `600` |

## Entretien de la voie

Des points de réparation apparaissent le long des lignes. Une compagnie qui a un train arrêté près de l'un d'eux le répare : les ouvriers du fourgon de queue le font quand le train a un fourgon de queue, ou le joueur le fait à la main avec les outils du tender.

| Réglage | Ce qu'il fait | Par défaut |
| - | - | - |
| `Config.Maintenance.Points` | Points de réparation ouverts en même temps sur tout le chemin de fer | `6` |
| `Config.Maintenance.RemoteAt` | Mètres depuis la gare la plus proche : à partir de là, une cassure est aussi probable que n'importe où ; plus près, elle devient plus rare (aucune dans la gare elle-même) | `1500.0` |
| `Config.Maintenance.Pay` | \$ payés à la caisse de la compagnie pour chaque réparation | `2.0` |

## Prix de personnalisation

`Config.CustomPrices` est ce que coûte chaque changement d'apparence de la locomotive, payé avec la caisse de la compagnie. Retirer une pièce est gratuit.

| Réglage | Le changement | Par défaut |
| - | - | - |
| `tint` | Peinture de la locomotive | `8.0` |
| `tenderTint` | Peinture du tender | `5.0` |
| `front` | Couleur de l'avant de la locomotive | `3.0` |
| `livery` | Livrée de la locomotive | `12.0` |
| `tenderLivery` | Livrée du tender | `8.0` |
| `star` | Étoile de porte | `1.5` |
| `candles` | Paire de chandeliers en laiton à côté du phare | `3.0` |
| `toolbox` | Boîte à outils sur le tender | `2.5` |

## Trains du serveur

Les trains du serveur suivent un horaire quand aucun train de joueur n'a besoin de la ligne. Un train n'existe dans le monde que près des joueurs ; loin de tout le monde, sa position est calculée à partir de l'horaire. Il cède la ligne à un train de joueur qui en a besoin, et il est retiré s'il reste immobile trop longtemps.

| Réglage | Ce qu'il fait | Par défaut |
| - | - | - |
| `enabled` | `false` désactive les trains du serveur | `true` |
| `Speed` | m/s en route (`12` = 27 mph), pour un itinéraire sans sa propre vitesse | `12.0` |
| `Dwell` | Secondes passées à chaque arrêt, pour un itinéraire sans son propre temps d'arrêt | `45` |
| `SpawnRadius` | Mètres : un joueur aussi proche de l'endroit où l'horaire le place le fait entrer dans le monde | `300.0` |
| `DespawnRadius` | Mètres : sans personne aussi proche, il quitte le monde (l'horaire continue) | `450.0` |
| `GraceSeconds` | Immobile loin d'une gare pendant ce temps : retiré et remis en place | `120` |
| `YieldSeconds` | Après avoir cédé la ligne (ou avoir été retiré), il reste hors du monde pendant ce temps | `300` |
| `Fares` | Vend des billets au guichet, sous le nom de compagnie « Railroad » | `true` |
| `FareCompany` | L'id d'une compagnie qui reçoit l'argent des billets ; `nil` = l'argent ne va nulle part | `nil` |

Ils sont tous dans `Config.NpcTrain`. `Config.NpcRoutes` liste les itinéraires : chacun est son propre train avec son propre horaire, d'arrêt en arrêt, aller et retour.

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

| Réglage | Ce qu'il fait |
| - | - |
| `name` | Le nom du train, montré aux joueurs |
| `stops` | Ids de dépôts dans l'ordre (`Config.Yards`) |
| `train` | Un id de train de `Config.Trains` |
| `cars` | Ses wagons dans l'ordre (`'passenger'`, `'closed'`, `'flatbed'`) : jusqu'à 3, plus un `'caboose'` facultatif en dernier |
| `speed` / `dwell` | Facultatif : m/s en route / secondes à chaque arrêt |

Quatre itinéraires sont prêts : Heartland Local (Valentine, Emerald, Rhodes), Lannahechee Line (Saint Denis, Annesburg), Bayou Express (Rhodes, Saint Denis) et Cumberland Line (Riggs, Wallace, Valentine). Un itinéraire dont la voie ne relie pas les arrêts est écarté, avec un avertissement dans la console du serveur.


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