Configuration · origen_ilegalv2
All user-facing settings live in config/. The files are unescrow'd — edit them freely.
General (config/general.lua)
Config.Debug = false -- print extra console output for troubleshooting
Config.Language = 'en' -- 'en' | 'es'Gangs (config/gangs.lua)
Controls global gang limits, the shared bank, the XP/level system, the CAD item, and the default rank hierarchy.
Config.Gang = {
MaxMembers = 20, -- max members per gang
MaxGangs = 50, -- max concurrent gangs on the server
Bank = {
Enable = true,
StartMoney = 0,
MaxMoney = 10000000,
},
LevelSystem = {
Enable = true,
ExpPerLevel = 1000, -- used only with 'flat' formula
},
CAD = {
ItemName = 'ilegal_cad',
Price = 500, -- cost per additional CAD unit
PayAccount = 'cash', -- 'cash' | 'bank'
},
}Default rank permissions
When a gang is created, four ranks are automatically seeded: Leader, Co-Leader, Member, Recruit. The full permission list per rank is defined under Config.Gang.DefaultRanks. Available permission flags:
| Permission | What it allows |
|---|---|
invite | Invite new members |
kick | Kick members |
promote / demote | Change member rank |
manage_bank | Full bank management |
withdraw / deposit | Bank transactions |
access_stash | Shared gang stash |
access_personal_stash | Personal stash inside the gang UI |
access_garage | Gang vehicle garage |
access_clothing | Gang clothing room |
manage_stash | Create / remove stashes |
manage_vehicles | Add / remove gang vehicles |
manage_ranks | Edit rank names and permissions |
manage_locations | Set HQ and map locations |
view_logs | See gang activity log |
disband | Disband the gang |
quick_search | F6 quick-search nearby players |
quick_handcuff | F6 handcuff shortcut |
quick_vehicle | F6 call gang vehicle |
quick_radio | F6 open radio tab |
Labs (config/labs.lua)
Config.Labs = {
Bucket = { Base = 42000 }, -- routing bucket base (base + lab_id per lab)
Interactions = {
EntryDistance = 2.0,
ExitDistance = 2.0,
LaptopDistance = 2.0,
},
RaidPoliceJobs = {
['police'] = true,
['sheriff'] = true,
},
}Lab types
Each lab type maps to a unique interior. Available types out of the box:
| Key | Label |
|---|---|
weed | Weed Lab |
coke | Coke Lab |
meth | Meth Lab |
bunker | Bunker |
counterfeit | Counterfeit Cash |
Interior spawn and laptop coordinates are defined per type in Config.LabTypes.
Crafting (config/crafting.lua)
The crafting module has two independent level/XP ladders: Player Level and Gang Level.
Config.Crafting = {
PlayerLevel = {
Formula = 'linear', -- 'flat' | 'linear' | 'exponential'
BaseXP = 500,
IncrementPerLevel = 250, -- only for 'linear'
Multiplier = 1.5, -- only for 'exponential'
},
GangLevel = {
Formula = 'linear',
BaseXP = 1000,
IncrementPerLevel = 500,
Multiplier = 1.6,
},
}Formula examples (PlayerLevel defaults)
| Level up | XP required |
|---|---|
| 1 → 2 | 750 |
| 5 → 6 | 1 750 |
| 9 → 10 | 2 750 |
Territories (config/territories.lua)
See the Territories page for a full breakdown of the presence system, reputation decay, passive income, and capture rules.
Drug Sales (config/drug_sales.lua)
See the Drug Sales page for NPC customer behavior, price configuration, blacklisted zones, and animations.
Radio (config/radio.lua)
Config.Radio = {
ItemName = 'radio', -- item required to use gang radio
Frequencies = { -- channel names shown in the F6 radio tab
"Frequency 1",
"Frequency 2",
-- up to any number of channels
},
Voice = {
Enabled = true,
Resource = 'pma-voice',
TalkKey = 'LMENU',
MuteToggleKey = 'R',
UseAnimation = true,
DefaultAnim = 1,
},
}Logs (config_sv_logs.lua)
This file is server-only — it is never exposed to the client. It is safe to place real webhook URLs here.
Each event has its own Discord webhook. Leave any entry as "" to silently skip that event. Set Enabled = false to disable the whole system at once.
BridgeConfig.Logs = {
Enabled = true,
-- Embed appearance
Username = "Origen Ilegal | Logs",
AvatarUrl = "", -- image URL for the webhook avatar (optional)
DefaultColor = 0x2F3136, -- default embed color
Footer = "Origen Network • %s",
Webhooks = {
-- BASIC — system operational events
["basic.stash_opened"] = "",
["basic.armory_opened"] = "",
["basic.garage_opened"] = "",
["basic.wardrobe_opened"] = "",
["basic.personal_stash_opened"] = "",
-- USER — player actions inside the gang
["user.gang_created"] = "",
["user.territory_assigned"] = "",
["user.member_joined"] = "",
["user.member_kicked"] = "",
["user.member_promoted"] = "",
["user.member_demoted"] = "",
["user.member_rank_changed"] = "",
["user.money_deposit"] = "",
["user.money_withdraw"] = "",
["user.location_set"] = "",
["user.location_removed"] = "",
["user.rank_created"] = "",
["user.rank_updated"] = "",
["user.rank_deleted"] = "",
["user.rank_migrated"] = "",
["user.vehicle_purchased"] = "",
["user.vehicle_taken_out"] = "",
["user.vehicle_stored"] = "",
["user.vehicle_deleted"] = "",
["user.vehicle_recovered"] = "",
["user.cad_purchased"] = "",
["user.quick_action"] = "",
["user.store_buy"] = "",
["user.store_sell"] = "",
["user.craft_claim"] = "",
["user.lab_cycle_complete"] = "",
["user.lab_buy_storage"] = "",
["user.lab_buy_table"] = "",
["user.lab_buy_upgrade"] = "",
-- ADMIN — server administrator actions
["admin.create_gang"] = "",
["admin.update_gang"] = "",
["admin.delete_gang"] = "",
["admin.set_gang_money"] = "",
["admin.set_gang_level"] = "",
["admin.set_gang_points"] = "",
["admin.set_gang_status"] = "",
["admin.update_gang_config"] = "",
["admin.apply_sanction"] = "",
["admin.remove_sanction"] = "",
["admin.extend_sanction"] = "",
["admin.grant_create_perm"] = "",
["admin.revoke_create_perm"] = "",
["admin.add_member"] = "",
["admin.remove_member"] = "",
["admin.create_announcement"] = "",
["admin.delete_announcement"] = "",
-- ... (stores, labs, crafting, territories — see the file for the full list)
},
}| Category | Prefix | Description |
|---|---|---|
| Basic | basic.* | System operational events (stashes, garages, wardrobe) |
| User | user.* | Player actions inside the gang panel |
| Admin | admin.* | Server administrator actions from the admin panel |
Admin Access (config/admin.lua)
Controls which players can open the admin panel and run admin commands.
Config.AdminAccess.Enabled = false -- true = use rank system below; false = bridge-only (original behaviour)
Config.AdminAccess.UseBridgeFallback = true -- if no rank matches, fall back to IsFrameworkAdminWhen Enabled = true the resource evaluates, in order:
- ACE permissions —
Config.AdminAccess.AcePermissions(applies to all frameworks) - Framework ranks —
Config.AdminAccess.Ranks[framework] - Bridge fallback —
IsFrameworkAdmin(only ifUseBridgeFallback = true)
Framework ranks
Config.AdminAccess.Ranks = {
['qb-core'] = { 'admin', 'mod', 'god' },
['qbx_core'] = { 'admin', 'mod', 'god' },
['esx'] = { 'admin', 'mod', 'superadmin' },
}| Framework | Check method |
|---|---|
qb-core | QBCore.Functions.HasPermission(source, perm) |
qbx_core | IsPlayerAceAllowed(source, perm) |
esx | xPlayer.getGroup() string comparison |
ACE permissions
Config.AdminAccess.AcePermissions = {
'group.admin',
-- 'origen_ilegal.admin',
}Any player allowed the listed ACE node is granted admin access regardless of framework. Useful for server.cfg ace assignments.
To add custom logic (Discord roles, database flags, ox_lib groups) without editing core files, override CustomAdminAccess.HasAccess in custom/server/admin_permissions.lua. See the Custom page for details.
Robbery Requests (config/robbery_request.lua)
Controls the robbery request module — the handshake system between the gang panel and origen_police.
Config.RobberyRequest.Enabled = true -- enable/disable the entire module
Config.RobberyRequest.Permission = 'request_robbery'
Config.RobberyRequest.Anonymous = true
Config.RobberyRequest.PendingExpireMinutes = 5
Config.RobberyRequest.ApprovedExpireMinutes = 15| Key | Type | Description |
|---|---|---|
Enabled | boolean | Toggle the module. The tab hides if origen_police is not started regardless of this value. |
Permission | string | Rank permission required to submit and cancel requests. Leaders always have it. |
Anonymous | boolean | If true, the police panel sees "Anonymous" instead of the real gang name and requester. |
PendingExpireMinutes | number | Minutes before a pending request auto-expires. 0 = no expiry. |
ApprovedExpireMinutes | number | Minutes before an approved request auto-expires if the robbery is not started. 0 = no expiry. |
Each robbery type is defined in Config.RobberyRequest.Requests. See the full breakdown on the Robbery Requests page.
Commands (config/commands.lua)
| Command | Default name | Configurable | Restricted |
|---|---|---|---|
| Open gang panel | /gangorg | Yes | No |
| Create a gang | /creategang | Yes | No |
| Open admin panel | /gangadmin | No | Yes — admin access required |
The names of /gangorg and /creategang are fully configurable in config/commands.lua. /gangadmin is hardcoded and always uses that name — access is gated server-side using the rules defined in config/admin.lua.
Config.Commands = {
Gang = {
name = 'gangorg', -- rename freely
help = 'commands.gang.help',
restricted = false,
},
CreateGang = {
name = 'creategang', -- rename freely
help = 'commands.creategang.help',
restricted = false,
},
}/gangadmin bypasses Config.Commands entirely — it is registered directly in client/admin.lua and validated against config/admin.lua on the server side.