> For the complete documentation index, see [llms.txt](https://wiki.qfdevelopers.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.qfdevelopers.com/scripts/editor-12/configuration.md).

# Configuration

## Languages

You can set the language of the script in the configuration file.

* `en`: English
* `fr`: French
* `pl`: Polish
* `de`: German
* `es`: Spanish

<figure><img src="/files/ig9o7wm8oX8fWWbPFHXs" alt=""><figcaption></figcaption></figure>

## Production Mode

Defines the mode in which the script operates, intended for general or production use:

* `Production`: If `true`, enables recommended settings optimized for live/production servers.\
  This is the suggested option for most users, especially non-technical ones.

<figure><img src="/files/h3ZS62Vg6E0BWGEVWcxI" alt=""><figcaption></figcaption></figure>

## Menu Command

Defines the command and keybind used to open the notification settings menu:

* `MenuCommand.Enabled`: If `true`, enables the settings menu for players.
* `MenuCommand.Name`: Name of the command used to open the menu (e.g., `/notifysettings`).
* `MenuCommand.Key`: Keybind to open the menu (e.g., `'F9'`). Set to `false` to disable the keybind.

<figure><img src="/files/Ethtgzp2tNmVOJ3CqsAe" alt=""><figcaption></figcaption></figure>

## Reset Command

Defines the command used to reset notification settings to default values:

* `ResetCommand.Enabled`: If `true`, enables the reset command for players.
* `ResetCommand.Name`: Name of the command used to reset settings (e.g., `/qf_resetnotify`).

<figure><img src="/files/Xyb27nOKJrq6T9u9wzNz" alt=""><figcaption></figcaption></figure>

## Debug Commands

Enables a set of debug/test commands used during development. **Do not use in production!**

* `DebugCommands.Enabled`: If `true`, allows access to testing commands for notifications and UI elements:\
  • `/notify_error`\
  • `/notify_success`\
  • `/notify_info`\
  • `/notify_warning`\
  • `/progress`\
  • `/textui`

> 🔒 Recommended to disable (`false`) or set `Config.Production = true` on live servers.

<figure><img src="/files/a88FyKNWZCScDPB97DX5" alt=""><figcaption></figcaption></figure>

## Advanced

Defines advanced internal settings for stability and protection:

* `Advanced.SafeguardsEnabled`: If `true`, enables internal safety checks to prevent potential issues or misuse during script execution. Recommended to keep enabled.

<figure><img src="/files/geGaD94oJ1krWCzsIQSx" alt=""><figcaption></figcaption></figure>

## Other settings

Handles conditional logic based on configuration settings:

* When `Config.Production` is set to `true`:\
  • `DebugCommands.Enabled` is automatically disabled.\
  • `Advanced.SafeguardsEnabled` is enforced for stability.
* If either `MenuCommand.Enabled` or `MenuCommand.Key` is set:\
  • Registers a keybind for opening the notification settings menu using `RegisterKeyMapping`.\
  • This allows players to access the menu via a keyboard shortcut (e.g., `F9`).

<figure><img src="/files/hcDMzYG5qqdjuPCgjXi5" alt=""><figcaption></figcaption></figure>

## Compatibility - ox\_lib

Replace function lib.notify with this from the screenshot.

<figure><img src="/files/x9dyV2YXfO7aUVwW1ULC" alt=""><figcaption></figcaption></figure>

## Exports - Client-side

These native exports allow client-side scripts to trigger notifications, progress bars, and text UI prompts safely and efficiently.\
All exports include **type and length validation** when `Config.Advanced.SafeguardsEnabled = true`.

***

**📢 `exports('notify', function(data) {...})`**

Displays a styled notification.

```lua
exports.qf_notify:notify({
    type = 'success',          -- string: 'success', 'info', 'error', 'warning'
    title = 'Notification',    -- string: max 100 characters
    description = 'You did it!', -- string: max 300 characters
    timeout = 5000             -- number: duration in milliseconds
})
```

**Validation:**

* Ensures proper types (`string` / `number`)
* Title max: 100 characters
* Description max: 300 characters

***

**⏳ `exports('progress', function(data) {...})`**

Displays a timed progress bar with optional callback.

```lua
exports.qf_notify:progress({
    time = 5000,               -- number: duration in milliseconds (max 60000)
    text = 'Processing...',    -- string
    callback = function()
        print("Progress finished")
    end,
    force = false              -- (optional) bypass running progress
})
```

**Validation:**

* Ensures `callback` is a valid `function`
* Time must be ≤ 60000 ms
* Only one progress bar can run at a time unless `force = true`

***

**💬 `exports('textui', function(data) {...})`**

Displays a temporary key-based text prompt on screen.

```lua
exports.qf_notify:textui({
    key = 'E',                        -- string: key shown in UI
    title = 'Interact',              -- string: max 100 characters
    description = 'Press E to use',  -- string: max 300 characters
    state = true                     -- boolean: true = show, false = hide
})
```

**Validation:**

* Type safety on all fields
* Character limits for title and description

***

> 🛡️ When `Config.Advanced.SafeguardsEnabled = true`, each export performs strict validation to prevent script errors or abuse.\
> ✅ Use these exports to create unified and modern UI feedback in any of your client-side systems.

## Triggers - Client-side & Server-side

#### 🧩 Server → Client Events

**🔔 `qf_notify/showNotification`**

Displays a standard notification using the provided `data`.

```lua
TriggerClientEvent('qf_notify/showNotification', source, {
    type = 'success',
    title = 'Success',
    description = 'Action completed successfully!',
    timeout = 5000
})
```

* Delegates to: `exports.qf_notify:notify(data)`
* See: `exports.qf_notify:notify(...)`

***

**⏳ `qf_notify/showProgressBar`**

Displays a progress bar with optional callback (client-side only).

```lua
TriggerClientEvent('qf_notify/showProgressBar', source, {
    time = 7000,
    text = 'Processing...'
})
```

* Delegates to: `exports.qf_notify:progress(data)`

***

**💬 `qf_notify/showTextUI`**

Displays a temporary text UI element above the minimap or at the screen edge.

```lua
TriggerClientEvent('qf_notify/showTextUI', source, {
    state = true,
    key = 'E',
    title = 'Talk to the NPC',
    description = 'Press E to interact.'
})
```

* Delegates to: `exports.qf_notify:textui(data)`

> 📌 These events can be triggered from both client and server, making integration with other scripts easy and flexible.

#### 🧩 Client → Client Events (local usage)

These events allow you to trigger notifications, progress bars, and text UI directly from another **client-side script**.

***

**🔔 `qf_notify/showNotification`**

Displays a notification with the given data:

```lua
TriggerEvent('qf_notify/showNotification', {
    type = 'info',
    title = 'Info',
    description = 'This is a local test notification.',
    timeout = 4000
})
```

* Internally calls: `exports.qf_notify:notify(data)`
* Supported types: `success`, `info`, `error`, `warning`

***

**⏳ `qf_notify/showProgressBar`**

Displays a progress bar:

```lua
TriggerEvent('qf_notify/showProgressBar', {
    time = 5000,
    text = 'Cleaning up area...'
})
```

* Internally calls: `exports.qf_notify:progress(data)`
* Does **not** support callback when triggered via event (only via export)

***

**💬 `qf_notify/showTextUI`**

Displays a key-based UI prompt:

```lua
TriggerEvent('qf_notify/showTextUI', {
    state = true,
    key = 'E',
    title = 'Open Locker',
    description = 'Press E to open your locker.'
})
```

* Internally calls: `exports.qf_notify:textui(data)`

***

> ✅ Use these events when triggering `qf_notify` features **locally from another client-side script**, without the need to go through the server.


---

# 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, and the optional `goal` query parameter:

```
GET https://wiki.qfdevelopers.com/scripts/editor-12/configuration.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
