> For the complete documentation index, see [llms.txt](https://daddy-studios.gitbook.io/daddy-studios-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://daddy-studios.gitbook.io/daddy-studios-docs/scripts/daddy-gps/configuration-and-logic.md).

# Configuration & Logic

Daddy GPS is designed to be highly flexible. Everything you will want to change lives in `shared/config.lua`, and the server and client logic that talks to your framework is open (`client/cl_editable.lua` and `server/sv_editable.lua`).

***

### ⚙️ Main Configuration

`shared/config.lua` is the central hub for customizing the GPS experience.

| Option                       | Default                             | What it does                                                                                                       |
| ---------------------------- | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| `Config.Debug`               | `false`                             | Prints debug information to the console.                                                                           |
| `Config.Locale`              | your language                       | Default language: `en`, `tr`, `de`, `fr`, `es`, `it`, `nl`, `pt`. Players can change it in the app.                |
| `Config.ItemName`            | `'gps'`                             | Item players need to open the GPS.                                                                                 |
| `Config.RequireItem`         | `true`                              | Require the item. Set to `false` to let anyone with the right job use the GPS.                                     |
| `Config.RequireRealJob`      | `true`                              | Only players with a job from `Config.AllowedJobs` can use the GPS.                                                 |
| `Config.WaterDamage.Enabled` | `true`                              | Enable the `H2O_FATAL` glitch system.                                                                              |
| `Config.Callsign`            | `Min = 1, Max = 99999`              | Range of the numeric callsign.                                                                                     |
| `Config.ChannelMode`         | `'department'`                      | `'department'`: every department has its own channel. `'global'`: one channel for everyone.                        |
| `Config.SelfBlip.Default`    | `false`                             | Show the player's own blip by default. Players can toggle it in the app.                                           |
| `Config.Keybind`             | `Enabled = true, DefaultKey = 'F9'` | Key that opens and closes the GPS. Players can rebind it in the game settings. Set `Enabled = false` to remove it. |

#### Opening the GPS

* **Keybind:** `F9` by default (`Config.Keybind`).
* **Item:** using the GPS item opens it (see the [Installation Guide](/daddy-studios-docs/scripts/daddy-gps/installation-guide.md)).
* **Command:** `/gps` works only when `Config.RequireItem` is `false`.

***

### 🏢 Departments & Jobs

Add any number of departments (LSPD, BCSO, SAHP, EMS and more) and map your server's jobs to them.

```lua
Config.Departments = {
    myunit = {
        label = 'UNIT',              -- short name on the button
        text = 'My Custom Unit',     -- full name in the header
        color = 3,                   -- blip color ID of the game
        hex = '#3b82f6',             -- UI accent color
        enabled = true,
    },
}

Config.AllowedJobs = {
    ['mycustomjob'] = 'myunit',      -- job name = department key
}
```

The value of every entry in `Config.AllowedJobs` must match a key of `Config.Departments`. A department with `enabled = false` is hidden in the UI.

***

### 🗺️ Blip Appearance

* `Config.BlipSizes`: blip scale per state (`OnFoot`, `Vehicle`, `Bike`, `Helicopter`, `Plane`, `Boat`, `Overlay`, `Chase`).
* `Config.DefaultSprites`: sprite IDs per vehicle type.
* `Config.BlipCategory`: the category in the map legend, `nil` to disable.
* `Config.LerpTickMs`, `Config.LerpAlpha`, `Config.CoordEpsilon`: smoothness of the blip movement. A lower tick is smoother but uses a little more client CPU.

***

### 🔓 Open Logic (Editable Files)

We believe in full control. The following files are **not encrypted**:

#### `client/cl_editable.lua`

* `Editable.HasItem(item)`: how the client checks for the GPS item.
* `Editable.IsAllowedJob()` and `Editable.GetPlayerJob()`: how the client reads the job.
* `Editable.Notify(msg, type)`: how notifications are shown.

#### `server/sv_editable.lua`

* `Editable.HasItem(src, item)`: the server-side item check.
* `Editable.GetPlayerJob(src)`: how the server reads the job of a player.
* `Editable.Notify(src, msg, type)`: notifications sent by the server.

Use them to plug in a custom inventory, a custom job system or your own notify script.

***

### 🌍 Localization (Multi-Language)

Daddy GPS comes pre-translated into **8 languages**. Edit the strings or add your own in the `locales/` folder:

* English, Turkish, German, French, Spanish, Italian, Dutch and Portuguese.

{% hint style="info" %}
**No Encryption:** Our configuration, editable and locale files are 100% open. This lets you adapt the script to your specific framework and inventory.
{% endhint %}


---

# 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://daddy-studios.gitbook.io/daddy-studios-docs/scripts/daddy-gps/configuration-and-logic.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.
