> For the complete documentation index, see [llms.txt](https://fantasy-scripts.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://fantasy-scripts.gitbook.io/docs/hud-v-system/installation.md).

# Installation

## Installation

### 1. Remove your old HUD

Stop and remove whatever HUD you were running, along with anything that draws only a speedometer, a seatbelt warning or a player list. Two HUDs draw over each other.

{% hint style="warning" %}
**qb-hud and ps-hud must go too.** fs-hud now keeps stress itself, and those two also answer every stress change, so with either one running every change would count twice. fs-hud warns you in the server console if it finds one.
{% endhint %}

### 2. Remove FiveM's own chat

fs-hud comes with its own NoPixel V style chat, which replaces FiveM's. Take this line out of your `server.cfg`:

```
ensure chat
```

Two chats would show every message twice; fs-hud warns you in the console if both are running.

{% hint style="info" %}
**Want to keep your own chat?** Leave `ensure chat` where it is and set `Config.Chat.enabled = false` in `config/config.lua`. The rest of the HUD works the same.
{% endhint %}

### 3. Start it after your framework

```
ensure es_extended
ensure fs-hud
```

Keep the folder name as `fs-hud`. Nothing has to start before it except your framework.

On ESX, hunger, thirst and stress come from **esx\_status**, so make sure it is running. fs-hud adds a stress status to it by itself.

### 4. Tell it about your server

Everything is in `config/config.lua`. Most of it has sensible defaults; these are the lines worth looking at before you go live.

```lua
Config.Framework = 'auto'   -- 'esx', 'qbcore', 'qbox', or work it out
Config.Units     = 'mph'    -- 'mph' or 'kmh'
Config.Scale     = 1.0      -- the size of the whole HUD
Config.Locale    = 'en'
```

`Config.Scale` moves everything together — chips, dial, badges and lettering — so you can suit it to your screen without one piece ending up out of proportion with the rest. It does not touch the map in the corner, which is GTA's own and is moved in the game's own measurements.

### 5. The chat

Press **T** and the chat opens in the bottom left. The health and armour slide out of its way, and slide back when it closes.

**Commands work with or without the slash.** `e dance` does the same as `/e dance`. The commands that match what you type show as you type it: **Tab** fills one in, the **arrow keys** move through the list and through what you sent before, **Esc** closes.

Everything is in `Config.Chat`:

```lua
Config.Chat = {
    enabled   = true,
    key       = 'T',
    plainText = 'ooc',   -- a message that is not a command: 'ooc', 'looc' or 'none'
    ...
}
```

#### The RP commands

| Command                      | What it does                                                                              |
| ---------------------------- | ----------------------------------------------------------------------------------------- |
| `/ooc`                       | Out of character, to everyone                                                             |
| `/looc`                      | Out of character, to people close by                                                      |
| `/me`                        | Something your character does (also floats over the head)                                 |
| `/do`                        | Describes the scene (also floats over the head)                                           |
| `/twt`                       | A Twitter post                                                                            |
| `/ad`                        | An advert, paid from the bank (`price`)                                                   |
| `/anon`                      | Anonymous to players — staff can still see who sent it                                    |
| `/news`                      | A Weazel News broadcast (news jobs only)                                                  |
| `/911` `/311`                | A call: becomes a dispatch call when fs-police runs, otherwise goes to the police and EMS |
| `/staff`                     | Staff chat                                                                                |
| `/announce`                  | An announcement to everyone (staff)                                                       |
| `/report`                    | A report to the staff                                                                     |
| `/pm` `/r`                   | Private message, and reply                                                                |
| `/roll` `/coin`              | Dice and a coin flip                                                                      |
| `/id` `/clear`               | Your ID, and clear your chat                                                              |
| `/pd` `/ems` `/mech` `/taxi` | Job chats, only that job reads them                                                       |

Every command can be turned off (`enabled = false`) or renamed (`name`) in `Config.Chat.commands`. Job chats are in `Config.Chat.jobChats`: add your own jobs there.

#### Staff

Staff are players in one of the groups in `Config.Chat.staff`, or anyone with this ace:

```
add_ace group.admin fs-hud.staff allow
```

{% hint style="info" %}
**qb-core has its own `/ooc` and `/me`.** If qb-core's versions run instead of fs-hud's, rename fs-hud's in `Config.Chat.commands`, or turn qb-core's off.
{% endhint %}

#### Your other scripts

Scripts that send chat messages or add command suggestions keep working with this chat, and so does anything that mutes or filters messages through FiveM's usual `chatMessage` event. Messages other scripts send with their own HTML styling show as plain text.

### 6. Stress

Stress works on its own; nothing to install.

* QBCore and Qbox scripts (robberies, lockpicking, smoking, the hospital) raise and lower it, and fs-hud answers them on the server.
* Players also build it up now and then while firing a gun or driving very fast. Police and medics never gain any.
* Over 80 the screen starts to swim.

All of it is in `Config.Stress`: which jobs are left out, the chances, the speed limits and the screen effect. If another script on your server already does something to the screen for stress, set `dizzy = false`.

### 7. The map in the corner

The map is GTA's radar, moved up to the corner and masked into a circle. The measurements in `Config.Minimap` are the game's own and they suit a 16:9 monitor.

On a wider screen the map can land outside the ring. There is no sum that reliably says by how much, so a player on one of those types:

```
/fshud:mapfit
```

Arrow keys move the map, Page Up and Page Down resize it, Shift moves faster and Ctrl moves finer, Enter saves. It is remembered for that screen, so they only do it once. On common widescreens the HUD starts them close to right already and most will never need it.

Turn the whole thing off with `Config.Minimap.fit = false`.

### 8. Keys

The HUD registers these so your players can rebind them in GTA's own settings (**Settings → Key Bindings → FiveM**).

| Key      | Does              |
| -------- | ----------------- |
| **T**    | Open the chat     |
| **B**    | Seatbelt          |
| **G**    | Engine on and off |
| **X**    | Cruise control    |
| **K**    | Vehicle menu      |
| **HOME** | Player list       |

The keys shown on the reminder strip are set in `Config.Hints`, and the key you name there is the key that gets registered. `/hud` puts the whole HUD away and brings it back.

### 9. Start the server

Nothing to import and no database. The HUD starts drawing as each player joins.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://fantasy-scripts.gitbook.io/docs/hud-v-system/installation.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
