> For the complete documentation index, see [llms.txt](https://grp-development.gitbook.io/solid-scripts/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://grp-development.gitbook.io/solid-scripts/resources/solid-multichar/configuration.md).

# Configuration

Every setting in config.lua, and the language file.

{% hint style="info" %}
The places, and what the characters do in each one, have their own page: [Places](https://grp-development.gitbook.io/solid-scripts/resources/solid-multichar/places).
{% endhint %}

#### General

| Setting              | Default                  | What it does                                                                |
| -------------------- | ------------------------ | --------------------------------------------------------------------------- |
| `Config.Debug`       | `false`                  | Extra logs in F8 and the server console                                     |
| `Config.Locale`      | `'en'`                   | Language file from the `locales` folder                                     |
| `Config.AllowDelete` | `true`                   | Players can delete their own characters, they type the full name to confirm |
| `Config.NameLength`  | `{ Min = 2, Max = 20 }`  | Allowed length of first and last names                                      |
| `Config.Age`         | `{ Min = 18, Max = 90 }` | Allowed age for the date of birth                                           |

#### Branding

| Setting                   | Default      | What it does                                                    |
| ------------------------- | ------------ | --------------------------------------------------------------- |
| `Config.Branding.Name`    | `'SOLID'`    | Big name in the intro and the footer, put your server name here |
| `Config.Branding.Tagline` | `'SCRIPTS'`  | Small word next to the name, for example `ROLEPLAY`             |
| `Config.Branding.Logo`    | `'logo.png'` | A file inside `html/` or a full https link                      |

To use your own logo, replace `html/logo.png`.

#### Character slots

| Setting                         | Default                     | What it does                                                        |
| ------------------------------- | --------------------------- | ------------------------------------------------------------------- |
| `Config.Slots.Default`          | `4`                         | Slots every player gets                                             |
| `Config.Slots.Max`              | `5`                         | Most slots anyone can have, never more than 5                       |
| `Config.Slots.Licenses`         | empty                       | More slots for one player, by license                               |
| `Config.Slots.Aces`             | empty                       | More slots by ace permission, the highest match wins                |
| `Config.Slots.JobBonus.Enabled` | `false`                     | Extra slots when any of the player's characters has one of the jobs |
| `Config.Slots.JobBonus.Amount`  | `1`                         | How many extra slots                                                |
| `Config.Slots.JobBonus.Jobs`    | `{ 'police', 'ambulance' }` | Jobs that unlock the bonus                                          |

{% code title="config.lua" %}

```lua
Licenses = {
    ['license:1234567890abcdef1234567890abcdef12345678'] = 5,
},
Aces = {
    ['solidmultichar.slots.5'] = 5,
},
```

{% endcode %}

#### Starter items

`Config.StarterItems` is given once to every new character: `phone`, `id_card` and `driver_license`, one of each. The ID card and driver license get the character's name and date of birth.

#### Commands

| Setting                           | Default        | What it does                                                                        |
| --------------------------------- | -------------- | ----------------------------------------------------------------------------------- |
| `Config.Commands.Logout`          | `'logout'`     | Staff command that sends a player back to character selection, `false` turns it off |
| `Config.Commands.DeleteCharacter` | `'deletechar'` | Staff command that deletes a character, `false` turns it off                        |

#### New characters

| Setting                                 | Default             | What it does                                                                                                         |
| --------------------------------------- | ------------------- | -------------------------------------------------------------------------------------------------------------------- |
| `Config.NewCharacter.Appearance`        | `'lobby'`           | Where new characters make their look, see below                                                                      |
| `Config.NewCharacter.RequireLook`       | `true`              | `'lobby'` only: characters without a saved look finish it before they can enter the city                             |
| `Config.NewCharacter.StarterApartments` | `false`             | New characters pick a starter apartment when `qb-apartments` hands them out, and the apartment script opens the look |
| `Config.NewCharacter.SpawnSelector`     | `false`             | New characters pick where to spawn in SOLID Spawn or `qb-spawn`. `false` = they appear at `Spawn`                    |
| `Config.NewCharacter.Spawn`             | LSIA arrivals doors | Where new characters appear without a spawn selector                                                                 |
| `Config.NewCharacter.Arrival`           | `false`             | Name of the first stop shown on the new character card, `false` = the area name of `Spawn`                           |

| `Appearance` | What happens                                                      |
| ------------ | ----------------------------------------------------------------- |
| `'lobby'`    | The look is made on the centre spot of the place, before entering |
| `'spawn'`    | Your clothing script opens right after the character spawns       |
| `false`      | No look step, your own script handles it                          |

The look opens your clothing script through `solid-bridge`: illenium-appearance, fivem-appearance or qb-clothing.

#### Existing characters

| Setting                                   | Default | What it does                                                                                                                            |
| ----------------------------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `Config.ExistingCharacters.SpawnSelector` | `true`  | Existing characters pick where to spawn in SOLID Spawn, `qb-spawn` or `qb-apartments`. `false` = straight back to where they logged out |

{% hint style="info" %}
With SOLID Spawn started, the spawn selector is [SOLID Spawn](https://grp-development.gitbook.io/solid-scripts/resources/solid-spawn). Without it, `qb-spawn` is used, and without that the character goes back to their last location.
{% endhint %}

#### Lobby

| Setting                     | Default                      | What it does                                                                               |
| --------------------------- | ---------------------------- | ------------------------------------------------------------------------------------------ |
| `Config.Lobby.DefaultScene` | `'penthouse'`                | Place for players who have not picked one, falls back to the first place that can load     |
| `Config.Lobby.Tour`         | `true`                       | The intro visits every character before showing everyone, `false` = establishing shot only |
| `Config.Lobby.PlaceMs`      | `2600`                       | Establishing shot at the start of the intro                                                |
| `Config.Lobby.CharacterMs`  | `2400`                       | Time on each character in the intro                                                        |
| `Config.Lobby.SingleMs`     | `4200`                       | Intro time when the player has only one character                                          |
| `Config.Lobby.OutroMs`      | `1400`                       | Glide from the last character to everyone                                                  |
| `Config.Lobby.ShortIntroMs` | `2200`                       | Establishing shot after switching place or coming back                                     |
| `Config.Lobby.FocusMs`      | `1600`                       | Camera glide from one character to another                                                 |
| `Config.Lobby.Frame`        | `0.50`                       | Where the chosen character stands on screen, `0.5` is the middle, lower moves them left    |
| `Config.Lobby.FadeOthers`   | `true`                       | Characters standing behind the chosen one fade out until you go back to everyone           |
| `Config.Lobby.RimLight`     | `{ 128, 73, 252, 2.4, 2.2 }` | Violet back light on the chosen character: red, green, blue, range, strength               |

All times are in milliseconds.

#### Activities

`Config.Activities` is what the characters do while they wait. Each place hands them out in its own order, and **Change pose** cycles through all of them.

* **16 built in:** `phone_call`, `phone_text`, `photo`, `coffee`, `smoke`, `binoculars`, `map`, `beer`, `arms_crossed`, `clipboard`, `camera`, `think`, `guard`, `lounge`, `idle`, `idle_team`
* **Each one:** a `name`, a `label`, and a `male` and `female` animation (`dict`, `clip`), with an optional `prop` held on a `bone`

`Config.Gestures.ready` is the small nod a character gives on the way into the city.

#### Language

Every text is in `locales/en.json`. To translate, copy it to a new file such as `locales/de.json`, translate the texts and set `Config.Locale = 'de'`. Anything you leave out stays in English.
