> For the complete documentation index, see [llms.txt](https://fantasy-scripts.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://fantasy-scripts.gitbook.io/docs/pause-menu-or-custom-map-+-settings/configuration-file.md).

# Configuration File

```lua
Config = {}

-- Language. The text lives in locales/<code>.lua: en, de, fr, es, pt, it, nl, pl,
-- ru, tr, ar, zh-cn, zh-tw, ja, ko. Anything a language does not translate is
-- shown in English. To add your own, copy locales/en.lua, translate it, and add
-- the file to fxmanifest.lua.
Config.Locale = 'en'

-- Name shown at the top of the quick menu and in the exit question.
Config.Brand = 'Fantasy Scripts'

Config.ExitMessage = 'You left the server. See you soon!'

-- ════════════════════════════════════════════════════════════════════════
--  Colours
-- ════════════════════════════════════════════════════════════════════════
-- Hex colours, '#RRGGBB' (or short '#RGB'). Change them and restart the
-- resource. Lighter and darker shades (hover states, borders, the waypoint's
-- light and dark versions) are worked out automatically from these.
-- A value that is not a valid hex colour falls back to the default.
Config.Colors = {
    accent     = '#1EC8FF', -- main colour: selected rows, sliders, buttons, highlights
    accentText = '#00131C', -- text and icons drawn ON the main colour (keep it dark for light colours)
    panel      = '#0A161E', -- background of the settings rows and panels (transparency is added for you)
    text       = '#FFFFFF', -- main text colour
    danger     = '#FF6B6B', -- warnings and "are you sure" actions
    route      = '#1EC8FF', -- GPS route and waypoint on the pause map and radar
}

-- ════════════════════════════════════════════════════════════════════════
--  Radar
-- ════════════════════════════════════════════════════════════════════════
-- The small radar only draws fs-ui's map at a zoomed-out radar level; at GTA's
-- default zoom it draws GTA's road shapes, which fs-ui hides, so the radar
-- looks grey. fs-ui keeps the radar at this zoom. Higher = further out.
-- Set to false only if your HUD already sets the radar zoom itself.
Config.RadarZoom = 1100

-- The map picture used by the pause map and the radar.
-- After changing this, restart the server: fs-ui puts the right map files in stream/ by itself.
-- To load them in that same restart, fs-ui restarts itself once, which FiveM only allows with
-- this line in server.cfg:
--     add_ace resource.fs-ui command.restart allow
-- Without it, the new map is used from the server restart after that one.
-- Players see the new map the next time they join.
Config.Map = {
    style = 'dusk',     -- 'dusk', 'light' or 'dark'
    postcodes = true,   -- false = the same map without postcode numbers
}

-- Defaults for a player who has never opened Settings. Saved per player in client KVP.
Config.Defaults = {
    uiScale = 100,        -- % of the 1080p design size
    radioVolume = 60,     -- pma-voice, only used when pma-voice is running
    callVolume = 60,
}

-- The Key Bindings tab lists these commands with the key each player has bound.
-- Players rebind them in GTA's own settings (FiveM section), opened from the tab.
-- Put your own server's commands here.
Config.Keybinds = {
    { category = 'General', items = {
        { command = 'toggleChat', label = 'Toggle chat' },
        { command = 'interact', label = 'Interact' },
        { command = 'cancelprogress', label = 'Cancel action' },
    } },
    { category = 'Voice', items = {
        { command = '+radiotalk', label = 'Talk over radio' },
        { command = 'cycleproximity', label = 'Voice proximity' },
    } },
    { category = 'Movement', items = {
        { command = '+crouch', label = 'Crouch' },
        { command = '+crawl', label = 'Crawl' },
        { command = '+handsup', label = 'Hands up' },
        { command = 'pointing', label = 'Point' },
        { command = '+ragdoll', label = 'Ragdoll' },
    } },
    { category = 'Vehicle', items = {
        { command = 'engine', label = 'Toggle engine' },
        { command = '+toggleSeatbelt', label = 'Seatbelt' },
        { command = 'hud_cruisecontrol', label = 'Cruise control' },
        { command = '+signalLeft', label = 'Left indicator' },
        { command = '+signalRight', label = 'Right indicator' },
        { command = '+signalHazard', label = 'Hazard lights' },
    } },
    { category = 'Emotes', items = {
        { command = 'emoteui', label = 'Emote menu' },
        { command = 'emotecancel', label = 'Cancel emote' },
    } },
}

-- Pause map legend (LOCATIONS list). Names, colours and icons are the real
-- blips GTA lists; these only sort them under headings. A blip joins the first
-- category whose icon matches (GTA radar sprite name) or whose word appears in
-- its name, lower case. Anything unmatched goes under `fallback`.
Config.Legend = {
    pollMs = 100,
    -- GTA briefly empties the legend while refreshing it; keep the last list this long.
    emptyHoldMs = 1500,
    -- The list is kept (also between sessions) and shown the moment the map opens, then
    -- updated in the background. While GTA keeps changing it (police blips move every
    -- ~200 ms) it is read again at most this often, so the list stays quick to use.
    refreshMs = 1500,
    cache = true,
    -- Locations a player turns off in the list reset when they relog, like GTA's
    -- own map. true = remember them between sessions.
    rememberHidden = false,
    -- While the mouse is on the list, the page draws the pointer. true hides GTA's own
    -- pointer meanwhile, so the map never shows two of them.
    hideGameCursor = true,
    you = L('legend_you'),
    fallback = L('legend_other'),
    categories = {
        { label = 'GOVERNMENT', icons = { 'radar_police_station', 'radar_hospital' },
          words = { 'police', 'sheriff', 'ranger', 'hospital', 'medical', 'pillbox', 'city hall', 'court', 'dmv', 'jail', 'prison', 'fire' } },
        { label = 'JOBS', words = { 'job', 'depot', 'garbage', 'farm', 'butcher', 'shipping', 'mechanic', 'taxi', 'truck', 'mining', 'lumber', 'fishing', 'delivery', 'recycl' } },
        { label = 'VEHICLES', icons = { 'radar_garage', 'radar_car_mod_shop', 'radar_car_wash' },
          words = { 'garage', 'impound', 'dealer', 'rental', 'fuel', 'gas station', 'car wash', 'customs' } },
        { label = 'SHOPS', icons = { 'radar_clothes_store', 'radar_barber', 'radar_tattoo', 'radar_gun_shop' },
          words = { 'store', 'shop', '24/7', 'ltd', 'liquor', 'clothing', 'barber', 'tattoo', 'ammu', 'pawn', 'market' } },
        { label = 'SERVICES', words = { 'bank', 'atm', 'apartment', 'motel', 'house', 'property' } },
    },
}

-- ════════════════════════════════════════════════════════════════════════
--  Your HUD
-- ════════════════════════════════════════════════════════════════════════
-- Hide your own HUD while fs-ui is on screen, so the map and the menus are clean.
-- Fill in the resource name and the names it gives its exports; leave `resource`
-- empty to do nothing. Events can be used instead of (or as well as) exports.
--
-- Example for codem-supreme-hud:
--     resource = 'codem-supreme-hud', hide = 'HideHud', show = 'ShowHud', isHidden = 'IsHudHidden',
-- Example with events instead:
--     hideEvent = 'codem-hud:client:HideHud', showEvent = 'codem-hud:client:ShowHud',
Config.Hud = {
    onPauseMenu = true, -- the pause menu and the map
    onMenu = true,      -- fs-ui's quick menu and settings

    resource = '',      -- the HUD's resource name, e.g. 'codem-supreme-hud'
    hide = 'HideHud',   -- export that hides it
    show = 'ShowHud',   -- export that shows it again
    -- Export that answers whether the HUD is already hidden (true / false). When the
    -- player hid it themselves, fs-ui leaves it hidden afterwards. Leave empty to skip.
    isHidden = 'IsHudHidden',

    hideEvent = '',     -- client event that hides it, e.g. 'codem-hud:client:HideHud'
    showEvent = '',     -- client event that shows it again
}

-- LEGAL INFORMATION in the quick menu. Replace with your own text.
Config.Legal = {
    { title = 'Server rules', body = 'Add your server rules here in config.lua (Config.Legal).' },
    { title = 'Privacy', body = 'Explain what player data the server stores and why.' },
}

```


---

# 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://fantasy-scripts.gitbook.io/docs/pause-menu-or-custom-map-+-settings/configuration-file.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.
