# Configuration

This page explains how to configure the **Enyo immigration checkpoint simulator job** to fit your FiveM server.<br>

#### Job Restriction (Optional)

```lua
Config.useJobCheck = false
Config.RequiredJob = 'police'
```

* If `useJobCheck` is `true`, only players with the specified job can start the mission.
* Job name **must match exactly** your framework job name.

***

#### Shift Limitation

```lua
Config.useLimitedShifts = false
Config.shiftsPerDay = 3
```

* Limits how many shifts a player can complete per server session.
* Useful for economy balancing.

***

#### Debug Mode

```lua
Config.debug = false
```

* Enables extra console logs.
* Recommended to enable during setup or troubleshooting.

***

#### Language Selection

```lua
Config.language = English
```

Supported languages:

* Arabic
* Chinese
* German
* English
* Spanish
* French

> ⚠️ Do **not** use quotes. Use the variable name directly.

***

### Job Start Method

Controls how players begin the immigration job.

```lua
Config.JobStartMethod = "STANDALONE"
```

#### Available Methods

| Method       | Description                      |
| ------------ | -------------------------------- |
| `STANDALONE` | Walk to a marker and press **E** |
| `command`    | Use a chat command               |
| `oxtarget`   | Use **ox\_target** interaction   |
| `qbtarget`   | Use **qb-target** interaction    |

***

#### Start Command

```lua
Config.JobStartCommand = "startimmigrationduty"
```

Only used when `JobStartMethod = "command"`.

***

### Gameplay & Rewards

#### Animations

```lua
Config.HandoverAnim = {dict = "mp_common", name = "givetake1_a"}
```

Animation used when documents are passed.

***

#### Camera Settings

```lua
Config.CameraFOV = 71.0
```

Controls camera zoom during the inspection minigame.

***

#### Shift Duration

```lua
Config.ShiftDuration = 300
```

Length of one shift (in seconds).

***

#### Rewards & Penalties

```lua
Config.RewardAmount = 500
Config.PenaltyAmount = 500
```

* Correct decision → reward
* Incorrect decision → penalty

***

#### Bribe System

```lua
Config.BribeChance = 0.1
Config.BribeAmount = 5000
Config.FineAmount = 10000
Config.FineChance = 0.5
```

| Setting       | Description                          |
| ------------- | ------------------------------------ |
| `BribeChance` | Chance an applicant attempts a bribe |
| `BribeAmount` | Offered bribe money                  |
| `FineChance`  | Chance of being caught               |
| `FineAmount`  | Fine if caught                       |

***

#### Wanted Applicants

```lua
Config.WantedChance = 0.15
```

Chance that an applicant is secretly wanted.

***

### Models & Props

Defines the in-game models used.

```lua
Config.CopModel = "csb_cop"
Config.PassportModel = `prop_passport_01`
Config.IDCardModel = `prop_cs_r_business_card`
Config.BribeMoneyModel = `prop_cash_case_02`
```

Additional props:

* Rules folder
* Geography book
* Desk radio

***

#### Radio Stream

```lua
Config.radioStream = 'https://fallout.fm:8444/falloutfm1.ogg'
```

Live radio played during shifts.

***

### Locations & Positions

All important coordinates are defined in one place.

```lua
Config.Positions = { ... }
```

Includes:

* Job start marker
* NPC spawn & exit points
* Camera position & rotation
* Desk prop locations
* Cop spawn position

> Uses `vector3` and `vector4` formats.

***

### Document Types

Defines all visa and permit types applicants can have.

```lua
Config.DocumentTypes = {
    {id = "tourist_visa", name = "Tourist Visa", purpose = "Tourism"}
}
```

Each document can include:

* Purpose
* Minimum / maximum stay duration

You may **add new types**, but keep the structure intact.

***

### Immigration Rules System

Rules determine **when an applicant must be denied**.

```lua
Config.Rules = { ... }
```

#### Rule Structure

Each rule contains:

* `id` – Unique identifier
* `name` – Display name
* `description()` – Shown to player
* `check(applicant)` – Lua logic

⚠️ Editing rule logic requires Lua knowledge.

***

### Name Generator

Used to generate realistic NPC names.

#### First Names

```lua
Config.FirstNames = {
    Male = {...},
    Female = {...}
}
```

#### Last Names

```lua
Config.LastNames = {...}
```

You can freely add or remove names.

***

### Ped Models

```lua
Config.PedModels = {
    {model = "a_m_m_business_01", photo = "images/peds/a_m_m_business_01.png"}
}
```

Each entry contains:

* Ped model name
* Image path used in UI

Supports:

* Male / Female
* Young / Adult / Older NPCs

***

### Countries & Geography Database

```lua
Config.Countries = { ... }
```

Each country defines:

* Cities
* Population
* Currency
* Geography
* Capital
* Language

Used for:

* Passport validation
* Geography checks
* Currency restrictions
* Rule enforcement


---

# Agent Instructions: 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://enyo-scripts.gitbook.io/documentations/fivem-scripts/immigration-checkpoint-simulator/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.
