Everything lives in config/main.lua. Change only what you need — this page is the short reference.
Setup#
| Option | Default | What it does |
|---|---|---|
debug | 4 | Console output. Use 1 on a live server (errors only). |
checkVersion | true | Warns on startup if a newer release exists. |
General#
| Option | Default | What it does |
|---|---|---|
locale | 'en' | UI language — see Locales |
currency | 'USD' | Currency for cash and bank in the header |
currencyFormat | 'en-US' | Number formatting (e.g. tr-TR, de-DE) |
Pause (pause)#
| Option | Default | What it does |
|---|---|---|
serverName | '0Resmon Roleplay' | Shown next to the logo |
showBranding | false | Show the logo and server name on the pause, settings, stats, and 3D map screens |
Portrait camera (pause.portrait)#
| Option | Default | What it does |
|---|---|---|
distance | 2.55 | Metres in front of the ped |
height | 0.55 | Camera height |
lookZ | 0.35 | Where the camera looks (height on the ped) |
fov | 38.0 | Field of view |
blendInMs | 900 | Gameplay → portrait blend (ms) |
blendOutMs | 750 | Portrait → gameplay blend (ms) |
followMove | 0.45 | How far the ped can move before the camera re-frames |
followBlendMs | 700 | Re-frame blend (ms) |
Hooks#
Run your own client code when the menu opens or closes — for example, to hide your HUD:
onPauseOpened = function()
exports['my-hud']:setVisible(false)
end,
onPauseClosed = function()
exports['my-hud']:setVisible(true)
end,
Hooks run on the client. If your code throws an error, the menu can get stuck — keep them simple.
3D map (threeDMap)#
| Option | Default | What it does |
|---|---|---|
enabled | true | Enable the 3D map. Also needed for blips that use Show on 2D Map. |
autoDB | true | Create the blip tables if missing |
drawDistance | 2500.0 | Blips farther than this from the camera aren't drawn |
interval | 50 | How often blip positions update on screen (ms) |
createCooldown | 30000 | Wait (ms) before a player can create another blip |
maxMarkers | 16 | Max blips one player can own |
shareCooldown | 30000 | Wait (ms) between share requests |
playerCreator | true | Let players create personal blips |
adminCreator | true | Let admins create global blips |
adminAce | '0r-pausemenu.globalblips' | ACE that grants global blip access |
Categories (threeDMap.categories)#
Fixed blips that every player sees in the 3D map legend. They're not stored in the database and can't be deleted in-game.
categories = {
{
id = 'services',
label = 'ui.map3d.services.label',
blips = {
{ label = 'ui.map3d.services.shop', sprite = 59, color = 69, coords = vec3(25.7, -1347.3, 29.49) },
{ label = 'Police Station', sprite = 60, color = 29, coords = vec3(441.2, -982.1, 30.7), showOn2d = true },
},
},
},
| Field | Required | What it does |
|---|---|---|
id | Yes | Unique category id |
label | Yes | Category name — a locale key or plain text |
blips[].label | Yes | Blip name — a locale key or plain text |
blips[].sprite | Yes | GTA blip sprite id |
blips[].coords | Yes | vec3 position |
blips[].color | No | GTA blip colour 0–85 (default 3) |
blips[].showOn2d | No | Also add it to the regular map and minimap |
blips[].scale | No | 2D blip size (default 0.8) |
blips[].shortRange | No | Only show on the minimap when nearby (default true) |
Blips with the same label and sprite in a category are stacked into one legend row.
For blips with showOn2d = true, use plain text labels. Locale keys show up as raw text (like ui.map3d.services.shop) on the regular GTA map.
Camera (camera)#
Controls the 3D map camera.
| Option | Default | What it does |
|---|---|---|
startAt | 150.0 | Metres above the player when the map opens |
minHeight | 150.0 | Lowest camera height (world Z) |
maxHeight | 675.0 | Highest camera height (world Z) |
minHeightAboveGround | 50.0 | Minimum distance above the ground |
fov | 72.5 | Field of view |
transitionMs | 800 | Opening rise duration (ms) |
panSpeed | 0.185 | Pan speed |
rotateSpeed | 0.075 | Rotate speed |
zoomStep | 24.0 | Metres per wheel tick |
moveLerp | 8.0 | Movement smoothing |
pitch | -60.0 | Default look angle |
minPitch | 75.0 | Highest look angle (looking up) |
maxPitch | -75.0 | Lowest look angle (looking down) |
infoInterval | 500 | Zone and street refresh (ms) |
focusInterval | 1000 | World streaming refresh under the camera (ms) |
fadeMs | 250 | Screen fade duration (ms) |
flyDistanceScale | 0.5 | Fly duration per metre travelled |
minFlyMs | 500.0 | Minimum fly duration (ms) |
lookDownMs | 750 | Top-view tilt duration (ms) |
blendMs | 750 | Blend back to gameplay on close (ms) |
hideOtherPlayers | true | Hide other players while the map is open |
hidePeds | true | Hide peds (including NPCs) |
hideVehicles | true | Hide vehicles (yours stays visible) |
hideRefreshMs | 200 | How often hidden peds and vehicles are rescanned (ms) |
Don't swap minPitch and maxPitch. The names look backwards, but swapping them locks the camera looking at the sky. To stop players from looking up at the sky, lower minPitch instead (for example -10.0).
If the camera clips into high terrain like Mount Chiliad, raise maxHeight.
Locales#
Translation files are JSON in the locales/ folder. Included: en, tr.
To add a language:
- Copy
locales/en.jsontolocales/<code>.json(for examplede.json). - Translate the values. Don't change the keys.
- Set
ui.localeNameto the language name (it's shown in Preferences). - Set
locale = '<code>'inconfig/main.lua.
Missing keys fall back to English.