> For the complete documentation index, see [llms.txt](https://documentation.rcore.cz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://documentation.rcore.cz/paid-resources/rcore_banners/configs/config.md).

# Config

This is the main configuration file for RCore Banners.

* Welcome to the main configuration file of RCore Banners.
* Path: `rcore_banners/configs/config.lua`

## General Settings

<details>

<summary>Debug</summary>

* **Type:** `boolean`
* **Default value:** `true`
* **Description:** Enables or disables overall debugging for `rcore_banners`.

```lua
Config = {
    Debug = true,
}
```

</details>

<details>

<summary>Locale</summary>

* **Type:** `string`
* **Default value:** `'en'`
* **Options:** `['en', 'cs', 'it', 'de']`
* **Description:** Sets the language for the system.

```lua
Config = {
    Locale = 'en',
}
```

</details>

<details>

<summary>Interact.Key</summary>

* **Type:** `string`
* **Default value:** `E`
* **Description:** The key used to place/remove banners and interact with billboards (when target isn't enabled).

```lua
Interact = {
    Key = 'E',
},
```

</details>

<details>

<summary>Commands</summary>

* **Type:** `table`
* **Description:** Names of the commands used to open the banner menu and remove a nearby poster.

```lua
Commands = {
    banners = 'banners',
    removeBanners = 'rbanner',
},
```

</details>

## Integrations / Framework settings

<details>

<summary>MysqlType</summary>

* **Type:** `enum`
* **Default value:** `nil` (auto-detected)
* **Options:** `[0 - oxmysql, 1 - ghmattimysql, 2 - mysql-async]`
* **Description:** Database connector used by `rcore_banners`. See [Database](/paid-resources/rcore_banners/integrations/database.md).

```lua
MysqlType = nil,
```

</details>

<details>

<summary>Notify</summary>

* **Type:** `enum`
* **Default value:** `Notify.RCORE`
* **Options:** `[ESX - es_extended, QB - qb-core, RCORE - rcore_banners, AUTO_DETECT]`
* **Description:** Notification system used by `rcore_banners`. See [Notify](/paid-resources/rcore_banners/integrations/notify.md).

```lua
Notify = Notify.RCORE,
```

</details>

<details>

<summary>Inventory</summary>

* **Type:** `enum`
* **Default value:** `Inventories.AUTO_DETECT`
* **Options:** `[OX - ox_inventory, ESX - es_extended, QB - qb-inventory, MF - mf-inventory, QS - qs-inventory, PS - ps-inventory, AUTO_DETECT]`
* **Description:** Inventory system used by `rcore_banners`. See [Inventory](/paid-resources/rcore_banners/integrations/inventory.md).

```lua
Inventory = Inventories.AUTO_DETECT,
```

</details>

<details>

<summary>Target</summary>

* **Type:** `boolean` + `enum`
* **Default value:** `EnableTargetInteract = false`, `Target = nil`
* **Options:** `[ox_target, qb-target]`
* **Description:** Enables target-based interaction for business work stations instead of the default `[E]` keypress. See [Interactions (Target)](/paid-resources/rcore_banners/integrations/interactions.md).

```lua
EnableTargetInteract = false, -- Enable target for business
Target = nil, -- ox_target | qb-target
```

</details>

<details>

<summary>Events</summary>

* **Type:** `table`
* **Description:** Framework event mappings - adjust these if you're using a renamed framework.

```lua
Events = {
    ['qb-openBossMenu'] = 'qb-bossmenu:client:OpenMenu',
    ['esx-openBossMenu'] = 'esx_society:openBossMenu',
    ['esx:playerLoaded'] = 'esx:playerLoaded',
    ['esx:setJob'] = 'esx:setJob',
    ['esx:playerLogout'] = 'esx:onPlayerLogout',
    ['QBCore:Client:OnPlayerLoaded'] = 'QBCore:Client:OnPlayerLoaded',
    ['QBCore:Client:OnJobUpdate'] = 'QBCore:Client:OnJobUpdate',
},
```

</details>

## UI Settings

<details>

<summary>UI_SETTINGS</summary>

* **Type:** `table`
* **Description:** Settings related to the banners app UI, including the minigame and app logo.

```lua
UI_SETTINGS = {
    MINIGAME_LINE_THICKNESS = 20, -- Thickness of the line
    MINIGAME_POINTS_PER_LEVEL = 15, -- How many points player needs to get to level up
    MINIGAME_MAX_LEVEL = 3, -- Max level for minigame

    APP_LOGO = 'logo.png', -- Can be found in client/ui/web/build/logo.png

    NEED_EDITOR_ITEM_STATE = Config.General.NEED_EDITOR_ITEM_STATE, -- Validate if user needs item for placing banners?
    NEED_EDITOR_ITEM_NAME = Config.General.Items.BANNER_PLACER, -- Which item is needed for placing banners?

    NEED_PRODUCTION_ITEM_STATE = Config.Business.Printers.ProductionItemNeed, -- What item does player need for production?
    NEED_PRODUCTION_ITEM_NAME = Config.Business.Printers.ProductionItem, -- Is item required for production of banners?
},
```

**How to change the UI logo:**

1. Use an image URL, or place your logo at `client/ui/web/build/logo.png`.
2. Set your logo path/URL in `UI_SETTINGS.APP_LOGO`.
3. Save `rcore_banners/configs/config.lua` and restart your server.

</details>

<details>

<summary>Menu</summary>

* **Type:** `table`
* **Description:** Screen position for each menu and its help keys. Options: `top-left`, `top-right`, `bottom-left`, `bottom-right`.

```lua
Menu = {
    JobSettings = {
        menuPosition = 'top-right',
        helpKeysPosition = 'bottom-right'
    },
    MINIGAME = {
        helpKeysPosition = 'bottom-left'
    },
    Production = {
        menuPosition = 'top-right'
    },
    Banners = {
        helpKeysPosition = 'top-right'
    },
    Billboards = {
        menuPosition = 'top-right'
    }
},
```

</details>

## Editor

<details>

<summary>Editor</summary>

* **Type:** `table`
* **Description:** Banner placement editor settings - scale limits, distance checks, and editor keybinds.

```lua
Editor = {
    MODIFIER_BANNER_SCALE = 1.0, -- Modifier scale value for banner itself.
    DEFAULT_BANNER_SCALE = 1.0, -- Default scale for the banner.

    MIN_BANNER_SCALE = 0.0, -- Min scale cannot -1 (negative)
    MAX_BANNER_SCALE = 3.0, -- Max banner scale, recommended to keep it as it is.

    CLOSEST_BANNER_CHECK = 2.5, -- Used for checking closest placed banner.
    CHECK_SURFACE_DIST = 8.0, -- Used when placing banners in world.
    CHECK_BILLBOARD_DIST = 30.0, -- Used when placing banners at billboard.

    KEYS = {
        ExitEditor = 'BACK',
        ExitEditorKeyName = 'Backspace',
        CreateBanner = 'E',
        CreateBannerKeyName = 'E',
        ScaleBannerUp = 'IOM_WHEEL_UP',
        ScaleBannerUpKeyName = 'WheelUp',
        ScaleBannerDown = 'IOM_WHEEL_DOWN',
        ScaleBannerDownKeyName = 'WheelDown',
    }
},
```

</details>

<details>

<summary>RemoveBannerDuration / PlaceBannerDuration</summary>

* **Type:** `number`
* **Default value:** `RemoveBannerDuration = 10000`, `PlaceBannerDuration = 1000`
* **Description:** How long (in ms) it takes to remove or place a banner.

```lua
RemoveBannerDuration = 10 * 1000,
PlaceBannerDuration = 1 * 1000,
```

</details>

<details>

<summary>Animations</summary>

* **Type:** `table`
* **Description:** Animations played while placing/removing a banner.

```lua
Animations = {
    REMOVE_BANNER = {
        dict = 'timetable@maid@cleaning_window@idle_a',
        name = 'idle_a'
    },
    PLACE_BANNER = {
        dict = 'anim@amb@nightclub@poster@',
        name = 'poster_placement'
    }
},
```

</details>

## LOD

<details>

<summary>LOD</summary>

* **Type:** `table`
* **Description:** Render distance and proximity checks for placed banners.

```lua
LOD = {
    AREA_DEBUG = true, -- Enable area debug for LOD
    RENDER_DISTANCE = 300.0, -- How far banners are rendered
    RENDER_DISTANCE_TOLERANCE = 150.0, -- How far banners are rendered
    CLOSE_TO_ANY_BANNER_CHECK = 2.5, -- How close player needs to be to any banner to be able to place new one
},
```

</details>

## MINIGAME

<details>

<summary>MINIGAME.COOLDOWN</summary>

* **Type:** `number`
* **Default value:** `5 * 60 * 1000` (5 minutes)
* **Description:** Cooldown before a printer can be restarted.

```lua
MINIGAME = {
    COOLDOWN = 5 * 60 * 1000,
},
```

</details>

## Experimental

<details>

<summary>Experimental.InitWait</summary>

* **Type:** `number`
* **Default value:** `1500`
* **Description:** Time (in ms) to wait for the NUI to be cached before initializing.

```lua
Experimental = {
    InitWait = 1500,
},
```

</details>
