> For the complete documentation index, see [llms.txt](https://docs.0resmon.org/0resmon/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.0resmon.org/0resmon/0resmon-1/s4-resources/s4-crosslab/configuration.md).

# Configuration

All settings live in `config.lua`. The file is well-commented, but here's the full breakdown so you know exactly what each option does.

## General

```lua
Config.Locale = 'en'
```

Language for all UI text and chat messages. Supported values: `'en'`, `'tr'`. Adding a new language is as simple as creating a new file under `locales/` and registering it.

```lua
Config.OpenKey = 'F5'
```

Default keyboard binding for the crosshair menu. Players can rebind this in their FiveM key settings — this is just the initial default.

```lua
Config.MenuCommand = 'crosshair'
```

The chat command that opens the menu. Change this if it conflicts with something else on your server.

## Default Crosshair

```lua
Config.DefaultCrosshair = {
    crosshairEnabled  = true,
    crosshairStyle    = 4,
    size              = 3,
    thickness         = 1,
    gap               = -3,
    fixedGap          = -25,
    csColor           = 1,
    colorR            = 46,
    colorG            = 250,
    colorB            = 46,
    alpha             = 200,
    useAlpha          = true,
    dotEnabled        = false,
    tStyleEnabled     = false,
    outlineEnabled    = false,
    outlineThickness  = 1,
}
```

These values kick in when a player joins for the first time and has no saved data yet. Once they save their own settings, this is ignored for that player.

The parameter names match CS2's console variables, so if you already have a crosshair you like, you can read the values from your CS2 config directly.

## Visibility

```lua
Config.HideInVehicle  = false
Config.HideWhenDead   = true
Config.HideInCutscene = true
```

Pretty self-explanatory. The crosshair hides automatically in the listed conditions if the flag is `true`.

## Save Behavior

```lua
Config.AutoSaveOnClose = true
```

When `true`, the crosshair is saved automatically when the player closes the menu without clicking Save. If you want them to explicitly click the Save button every time, set this to `false`.

## Training

```lua
Config.EnableTraining = true
```

Completely disables the training system if set to `false`. The text UI, commands, and NUI panel are all skipped.

```lua
Config.TrainingCommand    = "aimtrain"
Config.ExitTrainingCommand = "aimexit"
```

Chat commands for entering and exiting the training area. You can also enter by pressing **E** when standing near the area.

```lua
Config.TrainingCoordinates = vector4(2421.7571, 13053.7695, 28.1916, 296.1206)
```

The center of the training zone. The text UI appears when a player gets within `Config.TrainingEntryRadius` of this point.

```lua
Config.TrainingEntryRadius = 5.0
Config.TrainingBlockRadius = 30.0
Config.TrainingBucketBase  = 1000
```

* `TrainingEntryRadius` — how close a player needs to be to see the "Enter Training" prompt
* `TrainingBlockRadius` — if a player is already inside this radius, the enter command is blocked (prevents them from teleporting back in while already there)
* `TrainingBucketBase` — each player gets their own routing bucket calculated as `TrainingBucketBase + playerId`, which keeps training sessions isolated from each other and from the main world

## Misc

```lua
Config.DisableWantedLevel = true
```

Continuously suppresses the player's wanted level. Useful if your server doesn't have a global wanted level system and you don't want occasional 1-star pops.

```lua
Config.EnableDebugCommands = false
```

Registers `/testtints` and `/cleartints` — developer commands used when working on new training props. Leave this `false` on a live server.

## Temporary Weapon

```lua
Config.TemporaryWeapon = {
    mode = "auto",
    ...
}
```

Controls how weapons are given and removed during training sessions. The `"auto"` mode detects whether you're running `ox_inventory` or `qb-core` and handles it accordingly.

| Mode             | Behavior                                                     |
| ---------------- | ------------------------------------------------------------ |
| `"auto"`         | Auto-detects ox\_inventory → qb-core → native fallback       |
| `"native"`       | Uses GTA natives only, no framework sync                     |
| `"ox_inventory"` | Forces ox\_inventory integration                             |
| `"qb-inventory"` | Forces QBCore integration                                    |
| `"custom"`       | Use your own give/remove functions defined in the same block |

If `mode = "custom"`, fill in the `give` and `remove` functions at the bottom of `Config.TemporaryWeapon`.


---

# 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.0resmon.org/0resmon/0resmon-1/s4-resources/s4-crosslab/configuration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
