Electus LogoElectus Documentation

Electus Admin Available Files

Browse the Electus Admin source files and configuration by folder.

config/config.lua
Config = {}

Config.Framework = "auto" -- "auto", "esx", "qb" or "qbx"
Config.Inventory = "auto" -- "auto", "esx", "ox_inventory", "qs-inventory", "core_inventory", "qb-inventory", "codem_inventory"
Config.InventoryPath = "nui://ox_inventory/web/images/"
Config.Garage = "auto" -- "auto", "esx_garage", "qb-garages", "jg-advancedgarages", "cd_garage", "op-garages"
Config.Locale = "en"
Config.Debug = false

Config.Theme = {
	defaultMode = "dark",
	variables = {
		-- Colors use Shadcn's HSL channel format without wrapping them in hsl().
		light = {
			background = "0 0% 100%",
			foreground = "0 0% 3.9%",
			card = "0 0% 100%",
			["card-foreground"] = "0 0% 3.9%",
			popover = "0 0% 100%",
			["popover-foreground"] = "0 0% 3.9%",
			primary = "0 0% 9%",
			["primary-foreground"] = "0 0% 98%",
			secondary = "0 0% 96.1%",
			["secondary-foreground"] = "0 0% 9%",
			muted = "0 0% 96.1%",
			["muted-foreground"] = "0 0% 45.1%",
			accent = "0 0% 96.1%",
			["accent-foreground"] = "0 0% 9%",
			destructive = "0 84.2% 60.2%",
			["destructive-foreground"] = "0 0% 98%",
			border = "0 0% 89.8%",
			input = "0 0% 89.8%",
			ring = "0 0% 3.9%",
			["chart-1"] = "224.15 92.28% 50.19%",
			["chart-2"] = "140.38 50.5% 47.54%",
			["chart-3"] = "0 46.35% 52.69%",
			["chart-4"] = "253.58 74.19% 55.29%",
			["chart-5"] = "61.13 55.54% 58.47%",
			radius = "1.25rem",
		},
		dark = {
			background = "0 0% 3.5%",
			foreground = "0 0% 98%",
			card = "0 0% 5.25%",
			["card-foreground"] = "0 0% 98%",
			popover = "0 0% 5%",
			["popover-foreground"] = "0 0% 98%",
			primary = "210.57 63.44% 48.95%",
			["primary-foreground"] = "203.77 0% 100%",
			secondary = "0 0% 10.5%",
			["secondary-foreground"] = "0 0% 98%",
			muted = "0 0% 14.9%",
			["muted-foreground"] = "0 0% 66%",
			accent = "0 0% 14%",
			["accent-foreground"] = "0 0% 98%",
			destructive = "0 62.8% 30.6%",
			["destructive-foreground"] = "0 0% 98%",
			border = "0 0% 16%",
			input = "0 0% 16%",
			ring = "0 0% 83.1%",
			["chart-1"] = "224.15 92.28% 50.19%",
			["chart-2"] = "140.38 50.5% 47.54%",
			["chart-3"] = "0 46.35% 52.69%",
			["chart-4"] = "253.58 74.19% 55.29%",
			["chart-5"] = "61.13 55.54% 58.47%",
			radius = "1.25rem",
		},
	},
}

Config.KeyActions = { -- if you change KeyActions the Key must also be avaliable in Keys table.
	cancel = "BACKSPACE",
}

-- Choose either web_baseUrl or DNS; both modes cannot be used at the same time.
-- web_baseUrl requires Qbox Dashboard's Nucleus or a similar reverse proxy to be set up.
-- Example server.cfg entry: set web_baseUrl "your-server-name.server.qbox.re"
Config.UseWebBaseUrl = false

Config.DNS = { -- only used when UseWebBaseUrl is false; requires HTTPS NOT HTTP
	port = 3010, -- INTERNAL port (runs on localhost and needs reverse proxy or cloudflare tunnel to your domain)
	protocol = "https", -- do not change from "https"
	host = "yourdomain.com", -- your domainname
}

Config.MenuCommand = "adminmenu" -- command to open the menu
Config.NoClipCommand = "noclip" -- command for registered admins to toggle noclip
Config.ServerIp = "127.0.0.1" -- your server ip
Config.ServerPort = 30120 -- your server port

Config.Statistics = {
	jobs = { -- what jobs to track
		"police",
		"ambulance",
		"mechanic",
		"taxi",
	},
	items = { -- what weapons to track
		"weapon_pistol",
		"weapon_combatpistol",
		"weapon_assaultrifle",
	},
}

Config.HideIpFromMenu = false -- whether to hide the IP address from the admin menu

Config.LiveMapTrail = {
	points = 60, -- maximum stored trail points per selected player
	updateInterval = 10, -- seconds between trail point captures
}

Config.Zones = {
	maxPoints = 64,
	maxRadius = 5000.0,
	maxSpeed = 300, -- KM/H
	enforceInterval = 150, -- milliseconds between zone position checks
	keepOutDistance = 3.0, -- distance beyond the polygon edge when ejecting a player
}

Config.MapConfiguration = {
	image = { 16384, 24576 },
	topLeft = { -4140, 8400 }, -- game coordinates for the top-left map pixel
	bottomRight = { 4860, -5100 }, -- game coordinates for the bottom-right map pixel
	tileServer = "https://assets.loaf-scripts.com/map-tiles/gtav/main/{layer}/{z}/{x}/{y}.jpg",
}

Config.GiveVehicle = {
	DefaultGarage = nil, -- optional fallback garage when no garage is selected
	DefaultType = "car",
}

Config.AdminLogs = {
	adminLogs = true, -- whether to use logs inside the log tab
	internalLogs = true, -- whether to log admin actions
	maxPageSize = 100,
	undoWindowSeconds = 120, -- how long reversible actions can be undone

	-- electus_admin exposes AdminLog/Log plus ox_lib-compatible logger() and fmdsdk-compatible LogMessage() exports.
	compatibility = {
		ox_lib = true,
		fmdsdk = true,
		fmsdk = true,
	},
}

Config.Reports = {
	maxReportTitleLength = 80,
	maxReportMessageLength = 1500,
	maxEvidenceBytes = 3000000,
	responseTimeWarningMinutes = 5,
	responseTimeCriticalMinutes = 10,
	categories = {
		"cheating",
		"bug",
		"exploiting",
		"vdm",
		"rdm",
		"fail-rp",
		"powergaming",
		"staff application",
		"other",
	},
	statuses = {
		"open",
		"pending",
		"closed",
	},
	cannedReplies = {
		{
			label = "On my way",
			message = "Thanks for the report. I am on my way to you now.",
		},
		{
			label = "Need more information",
			message = "Can you share a little more detail and attach any evidence you have?",
		},
		{
			label = "Reviewing evidence",
			message = "I am reviewing the available evidence and will update you shortly.",
		},
		{
			label = "Issue resolved",
			message = "This issue has been resolved. Thank you for reporting it.",
		},
	},
	resolutionReasons = {
		"resolved",
		"no response",
		"insufficient evidence",
		"duplicate",
		"invalid report",
		"player offline",
	},
}