Configuration

All config files are in the config/ directory.

File
Scope
Description

config.lua

Client + Server

Locale, commands, keybindings, map

server.lua

Server only

Bootstrap, spectate, TURN/ICE

player_actions.lua

Server only

Custom player action buttons

config.lua

Config = Config or {}

-- Locale: 'en', 'zh', etc.
Config.locale = 'en'

-- Debug logging
Config.debug = false

-- Keybinding configuration
-- Key values: '' = no default binding (players bind via Settings > Key Bindings)
-- Common keys: F1-F24, HOME, END, PAGEUP, PAGEDOWN, INSERT, DELETE, PAUSE
-- Full reference: https://docs.fivem.net/docs/game-references/input-mapper-parameter-ids/keyboard/

-- Admin panel
Config.toggleCommand  = 'eadmin'              -- Command name
Config.toggleKeyLabel = 'Toggle Admin Panel'  -- Key Bindings label
Config.toggleKey      = ''                    -- Default key
Config.toggleKeybind  = false                 -- Show in Settings > Key Bindings

-- Support panel
Config.supportCommand  = 'support'
Config.supportKeyLabel = 'Open Support Panel'
Config.supportKey      = ''
Config.supportKeybind  = false

-- NoClip
Config.noClipCommand   = 'noclip'
Config.noClipKeyLabel  = 'Toggle NoClip'
Config.noClipKey       = 'PAGEDOWN'
Config.noClipKeybind   = true

-- Map tile URL (empty = use local tiles)
-- e.g. 'https://cdn.example.com/eadmin-map'
-- Directory structure: tiles/{z}/{x}/{y}.png, satellite-tiles/{z}/{x}/{y}.png
Config.mapTileBaseUrl = ''

server.lua

Server-only, never sent to clients. Safe for secrets.

When enabled = false, spectate uses STUN-only (peer-to-peer). Set required = true to block spectate without TURN. For self-hosted TURN, add to customIceServers and keep Cloudflare disabled.

player_actions.lua

Hiding built-in actions

Custom actions

Each action needs: id, label, category, icon, execute(actorSrc, targetSrc, data).

Available data fields in execute():

  • data.citizenid - always present

  • data[dataKey] - user input values (if inputs configured)

  • Bridge.GetCharacterName(targetSrc) - character name

  • GetPrimaryIdentifier(targetSrc) - license2/license

Icons: any Lucidearrow-up-right name in kebab-case. Unrecognized names fall back to puzzle.

Input types

Actions can collect user input via input (single field) or inputs (multiple fields).

Type
Description
Extra fields

text

Text field

placeholder, required

number

Number slider

min, max, placeholder

textarea

Multi-line text

placeholder

select

Single select

options: {value, label}[]

multiselect

Multi select

options: {value, label}[]

Last updated