Configuration
Aetix Computer uses 8 separate configuration files in shared/config/. This page documents every setting.
config.lua • config_factions.lua • config_computers.lua • config_dispatch.lua • config_charges.lua • config_vehicles.lua • config_flags.lua • config_warrants.lua
config.lua
Main configuration file containing general settings, NUI behavior, controls, unit systems, and hospital locations.
Config = {}
Config.Debug = false -- Enable debug prints in console
Config.Locale = 'en' -- Language file (locales/)
Config.UseTarget = true -- Use ox_target for computer interaction
-- NUI (Frontend) Settings
Config.NUI = {
closeKey = 'Escape', -- Key to close the MDT
openVolume = 0.3, -- Startup sound volume (0.0 - 1.0)
closeVolume = 0.2, -- Close sound volume
enableSounds = true, -- Enable/disable all NUI sounds
maxSearchResults = 50, -- Max results per search query
}
-- Controls
Config.Controls = {
openKey = 'F5', -- Keybind to open MDT (when near computer)
}
-- Unit System
Config.UnitSystem = {
speed = 'mph', -- 'mph' or 'kmh'
distance = 'mi', -- 'mi' or 'km'
}
-- Hospitals (for auto-dispatch on player death)
Config.Hospitals = {
{ name = 'Pillbox Hill Medical Center', coords = vector3(311.2, -590.1, 43.3) },
{ name = 'Mount Zonah Medical Center', coords = vector3(-449.7, -340.5, 34.5) },
{ name = 'Central Los Santos Medical', coords = vector3(356.1, -596.6, 28.8) },
{ name = 'St. Fiacre Hospital', coords = vector3(1839.6, 3672.9, 34.3) },
{ name = 'Sandy Shores Medical Center', coords = vector3(1839.6, 3672.9, 34.3) },
{ name = 'Paleto Bay Medical Center', coords = vector3(-247.8, 6331.5, 32.4) },
}
| Setting | Type | Default | Description |
|---|---|---|---|
| Config.Debug | boolean | false | Enable debug prints in server/client console |
| Config.Locale | string | 'en' | Language file to use from locales/ folder |
| Config.UseTarget | boolean | true | Use ox_target for computer interaction |
| Config.NUI.closeKey | string | 'Escape' | Keyboard key to close the MDT UI |
| Config.NUI.openVolume | number | 0.3 | Volume of the MDT open sound (0.0 - 1.0) |
| Config.NUI.closeVolume | number | 0.2 | Volume of the MDT close sound |
| Config.NUI.enableSounds | boolean | true | Toggle all NUI sounds on/off |
| Config.NUI.maxSearchResults | number | 50 | Maximum results returned per search |
| Config.UnitSystem.speed | string | 'mph' | 'mph' or 'kmh' for speed display |
| Config.UnitSystem.distance | string | 'mi' | 'mi' or 'km' for distance display |
| Config.Hospitals | table[] | 6 entries | Hospital locations for auto-dispatch on player death |
config_factions.lua
Defines all factions (agencies), their associated jobs, role hierarchy, module access, and per-role permissions.
Config.Factions = {
{
id = 'lspd',
label = 'Los Santos Police Department',
agency = 'LSPD',
jobs = { 'police' },
modules = {
'dashboard', 'dispatch', 'persons', 'vehicles',
'warrants', 'bolos', 'reports', 'citations',
'gangintel', 'messages', 'incidents', 'units'
},
roles = {
{ id = 'PATROL', label = 'Patrol', grades = { 0, 1, 2, 3, 4, 5, 6 } },
{ id = 'DETECTIVE', label = 'Detective', grades = { 7, 8, 9, 10, 11 } },
{ id = 'COMMAND', label = 'Command', grades = { 12, 13, 14, 15 } },
},
permissions = {
PATROL = {
canSearch = true,
canViewProfiles = true,
canAddNotes = true,
canCreateBolo = true,
canCreateReport = false,
canManageWarrants = false,
canFlagPerson = false,
canFlagVehicle = true,
canApproveReport = false,
canManageGangs = false,
canManageUnits = false,
canViewAllCalls = true,
canIssueCitations = true,
canSendMessages = true,
canViewIncidents = true,
canManageSMT = false,
},
DETECTIVE = {
canSearch = true,
canViewProfiles = true,
canAddNotes = true,
canCreateBolo = true,
canCreateReport = true,
canManageWarrants = true,
canFlagPerson = true,
canFlagVehicle = true,
canApproveReport = false,
canManageGangs = true,
canManageUnits = false,
canViewAllCalls = true,
canIssueCitations = true,
canSendMessages = true,
canViewIncidents = true,
canManageSMT = true,
},
COMMAND = {
canSearch = true,
canViewProfiles = true,
canAddNotes = true,
canCreateBolo = true,
canCreateReport = true,
canManageWarrants = true,
canFlagPerson = true,
canFlagVehicle = true,
canApproveReport = true,
canManageGangs = true,
canManageUnits = true,
canViewAllCalls = true,
canIssueCitations = true,
canSendMessages = true,
canViewIncidents = true,
canManageSMT = true,
},
},
},
-- Additional factions: bcso, sasp, sasd, sahp, doc, safd
-- See full config file for complete list
}
Available Factions (Default)
| ID | Agency | Jobs | Modules |
|---|---|---|---|
| lspd | LSPD | police | All 12 modules |
| bcso | BCSO | bcso | All 12 modules |
| sasp | SASP | sasp | All 12 modules |
| sasd | SASD | sasd | All 12 modules |
| sahp | SAHP | sahp | All 12 modules |
| doc | DOC | doc | dashboard, dispatch, persons, vehicles, bolos, messages, units |
| safd | SAFD | ambulance | dashboard, dispatch, persons, vehicles, messages, units |
config_computers.lua
Defines the physical computer locations in the world where officers can interact to open the MDT.
Config.Computers = {
-- Each entry defines a computer location:
{
coords = vector3(441.79, -982.05, 30.69),
heading = 356.0,
model = 'prop_laptop_01a', -- Prop model (optional)
radius = 1.5, -- Interaction radius
jobs = { 'police' }, -- Which jobs can use this computer
label = 'LSPD MDT Terminal', -- Label shown on ox_target
},
-- Add more computer locations as needed
}
| Property | Type | Required | Description |
|---|---|---|---|
| coords | vector3 | Yes | World position of the computer |
| heading | number | No | Entity heading (rotation) |
| model | string | No | Prop model name to spawn |
| radius | number | No | Interaction radius (default: 1.5) |
| jobs | table | Yes | Array of job names that can use this terminal |
| label | string | No | Label shown on the target interaction |
config_dispatch.lua
Dispatch codes, AI mode, sound settings, and blip configuration for the CAD/Dispatch system.
Config.Dispatch = {
-- AI Dispatch Mode
aiDispatch = {
enabled = false, -- Enable AI-generated dispatch calls
interval = 120, -- Seconds between AI dispatch cycles
maxActiveCalls = 10, -- Max concurrent AI calls
},
-- Sound Settings
sounds = {
newCall = 'dispatch_new', -- Sound for new call
priority = 'dispatch_urgent', -- Sound for priority calls
volume = 0.5, -- Sound volume (0.0 - 1.0)
},
-- Blip Settings
blips = {
enabled = true, -- Show dispatch blips on map
duration = 60, -- Blip duration in seconds (0 = permanent)
defaultColor = 1, -- Default blip color (red)
defaultAlpha = 200, -- Default blip alpha (0-255)
},
-- Dispatch Codes (30 codes)
codes = {
{ code = '10-10', label = 'Fight In Progress', priority = 2, blip = 58 },
{ code = '10-11', label = 'Dog Case', priority = 1, blip = 442 },
{ code = '10-13', label = 'Officer Needs Assistance', priority = 3, blip = 526 },
{ code = '10-14', label = 'Prowler Report', priority = 1, blip = 58 },
{ code = '10-15', label = 'Civil Disturbance', priority = 2, blip = 58 },
{ code = '10-16', label = 'Domestic Problem', priority = 2, blip = 40 },
{ code = '10-17', label = 'Meet Complainant', priority = 1, blip = 280 },
{ code = '10-20', label = 'Location', priority = 1, blip = 1 },
{ code = '10-21', label = 'Phone Call', priority = 1, blip = 1 },
{ code = '10-25', label = 'Report To Location', priority = 1, blip = 1 },
{ code = '10-26', label = 'Detaining Suspect', priority = 2, blip = 58 },
{ code = '10-29', label = 'Check For Wanted', priority = 2, blip = 58 },
{ code = '10-31', label = 'Crime In Progress', priority = 3, blip = 58 },
{ code = '10-32', label = 'Person With Gun', priority = 3, blip = 119 },
{ code = '10-33', label = 'Emergency', priority = 3, blip = 526 },
{ code = '10-35', label = 'Major Crime Alert', priority = 3, blip = 58 },
{ code = '10-40', label = 'Silent Run', priority = 2, blip = 1 },
{ code = '10-47', label = 'Emergency Road Repairs', priority = 1, blip = 1 },
{ code = '10-50', label = 'Traffic Accident', priority = 2, blip = 326 },
{ code = '10-51', label = 'Tow Truck Needed', priority = 1, blip = 68 },
{ code = '10-52', label = 'Ambulance Needed', priority = 3, blip = 153 },
{ code = '10-53', label = 'Road Blocked', priority = 1, blip = 1 },
{ code = '10-54', label = 'Livestock On Highway', priority = 1, blip = 1 },
{ code = '10-55', label = 'Intoxicated Driver', priority = 2, blip = 326 },
{ code = '10-56', label = 'Intoxicated Pedestrian', priority = 1, blip = 58 },
{ code = '10-57', label = 'Hit And Run', priority = 2, blip = 326 },
{ code = '10-80', label = 'Pursuit In Progress', priority = 3, blip = 326 },
{ code = '10-90', label = 'Bank Alarm', priority = 3, blip = 500 },
{ code = '10-99', label = 'Officer Needs Help', priority = 3, blip = 526 },
{ code = '11-99', label = 'Officer Down', priority = 3, blip = 526 },
},
}
config_charges.lua
Penal code definitions used in the Citations module. Organized into 8 categories with 73 total charges.
Config.Charges = {
['TITLE 1 - OFFENSES AGAINST PERSONS'] = {
{ id = 101, title = 'Simple Assault', type = 'Misdemeanor', fine = 500, time = 5 },
{ id = 102, title = 'Aggravated Assault', type = 'Felony', fine = 2500, time = 15 },
{ id = 103, title = 'Assault with Deadly Weapon', type = 'Felony', fine = 5000, time = 25 },
{ id = 104, title = 'Battery', type = 'Misdemeanor', fine = 750, time = 7 },
{ id = 105, title = 'Domestic Battery', type = 'Misdemeanor', fine = 1000, time = 10 },
{ id = 106, title = 'Manslaughter', type = 'Felony', fine = 10000, time = 40 },
{ id = 107, title = 'Attempted Murder', type = 'Felony', fine = 15000, time = 50 },
{ id = 108, title = 'First Degree Murder', type = 'Felony', fine = 25000, time = 75 },
{ id = 109, title = 'Second Degree Murder', type = 'Felony', fine = 20000, time = 60 },
{ id = 110, title = 'Kidnapping', type = 'Felony', fine = 7500, time = 30 },
{ id = 111, title = 'Hostage Taking', type = 'Felony', fine = 10000, time = 35 },
{ id = 112, title = 'Unlawful Imprisonment', type = 'Felony', fine = 3000, time = 15 },
{ id = 113, title = 'Torture', type = 'Felony', fine = 15000, time = 50 },
{ id = 114, title = 'Criminal Threats', type = 'Misdemeanor', fine = 750, time = 5 },
},
['TITLE 2 - OFFENSES AGAINST PROPERTY'] = {
{ id = 201, title = 'Petty Theft', type = 'Infraction', fine = 250, time = 0 },
-- ... (12 charges)
},
-- TITLE 3 through TITLE 8...
-- See full config for all 73 charges
}
Charge Categories
| Category | Count | Types |
|---|---|---|
| TITLE 1 - Offenses Against Persons | 14 | Misdemeanor, Felony |
| TITLE 2 - Offenses Against Property | 12 | Infraction, Misdemeanor, Felony |
| TITLE 3 - Offenses Against Public Order | 8 | Infraction, Misdemeanor, Felony |
| TITLE 4 - Offenses Against Justice | 9 | Misdemeanor, Felony |
| TITLE 5 - Traffic Offenses | 10 | Infraction, Misdemeanor, Felony |
| TITLE 6 - Weapons Offenses | 8 | Misdemeanor, Felony |
| TITLE 7 - Drug Offenses | 7 | Infraction, Misdemeanor, Felony |
| TITLE 8 - Government Offenses | 5 | Misdemeanor, Felony |
Charge Properties
| Property | Type | Description |
|---|---|---|
| id | number | Unique charge identifier (e.g., 101, 201) |
| title | string | Name of the charge |
| type | string | 'Infraction', 'Misdemeanor', or 'Felony' |
| fine | number | Fine amount in dollars |
| time | number | Jail time in months (0 = no jail) |
config_vehicles.lua
Vehicle MDT settings including keybind, allowed jobs, and vehicle class names.
Config.VehicleMDT = {
enabled = true,
key = 'F6', -- Keybind for vehicle-mounted MDT
allowedJobs = {
'police', 'bcso', 'sasp', 'sasd', 'sahp'
},
vehicleClasses = {
[18] = 'Emergency', -- Emergency vehicles
[15] = 'Helicopter', -- Helicopters
[16] = 'Plane', -- Planes
[19] = 'Military', -- Military
[14] = 'Boat', -- Boats
},
}
config_flags.lua
Defines person flags that can be attached to citizen profiles. Officers use these to mark individuals with important warnings or statuses.
Config.PersonFlags = {
{ id = 'wanted', label = 'Wanted', color = '#ef4444' },
{ id = 'armed_dangerous', label = 'Armed & Dangerous', color = '#dc2626' },
{ id = 'flight_risk', label = 'Flight Risk', color = '#f97316' },
{ id = 'mental_health', label = 'Mental Health', color = '#eab308' },
{ id = 'gang_member', label = 'Gang Member', color = '#a855f7' },
{ id = 'felon', label = 'Felon', color = '#ec4899' },
{ id = 'parole', label = 'On Parole', color = '#f59e0b' },
{ id = 'probation', label = 'On Probation', color = '#f59e0b' },
{ id = 'sex_offender', label = 'Sex Offender', color = '#dc2626' },
{ id = 'informant', label = 'Confidential Informant',color = '#3b82f6' },
}
| Property | Type | Description |
|---|---|---|
| id | string | Unique flag identifier (used in database) |
| label | string | Display name shown in the MDT |
| color | string | Hex color for the flag badge in the UI |
config_warrants.lua
Warrant type definitions and judge approval workflow settings.
Config.Warrants = {
requireJudgeApproval = true, -- Require judge approval for warrants
judgeApprovalRoles = { 'COMMAND' }, -- Roles that can act as judge
types = {
{ id = 'arrest', label = 'Arrest Warrant', icon = 'handcuffs', requiresApproval = true },
{ id = 'search', label = 'Search Warrant', icon = 'magnifying-glass', requiresApproval = true },
{ id = 'bench', label = 'Bench Warrant', icon = 'gavel', requiresApproval = false },
{ id = 'wiretap', label = 'Wiretap Warrant', icon = 'phone', requiresApproval = true },
{ id = 'seizure', label = 'Seizure Warrant', icon = 'box-archive', requiresApproval = true },
},
}
| Setting | Type | Description |
|---|---|---|
| requireJudgeApproval | boolean | Global toggle for the judge approval system |
| judgeApprovalRoles | table | Which roles can approve warrants (default: COMMAND) |
| types[].id | string | Unique warrant type identifier |
| types[].label | string | Display name of the warrant type |
| types[].icon | string | Font Awesome icon name (without fa- prefix) |
| types[].requiresApproval | boolean | Whether this type needs judge approval before becoming active |