Drug Sell System
Configuration
Configuration
Configuration is split across 5 files in config/ — all unencrypted and freely editable.
| File | Owns |
|---|---|
config/main.lua |
Framework, commands, debug, interaction, zone toggle |
config/drugs.lua |
Drug catalog (item, price, addiction, demand) |
config/customers.lua |
Customer AI: spawn rate, behavior weights, ped models |
config/police.lua |
Cop dispatch chance, alert text, integrations |
config/trapphone.lua |
lb-phone app config (icon, theme, allowed jobs) |
main.lua — global flags
Config.Framework = 'qbx' -- 'qbx' | 'qb' | 'esx'
Config.Locale = 'es' -- 'es' | 'en'
Config.Debug = false -- console debug spam
Config.Notification = {
Type = 'ox', -- 'ox' | 'qbcore' | 'okok' | 'mythic' | 'custom'
}
Config.Interaction = {
UseTarget = true, -- true: ox_target | false: drawtext+E
Distance = 2.5, -- drawtext distance (UseTarget=false only)
}
Config.Commands = {
Start = 'venderdrogas', -- player command to start selling
Stop = 'pararventa', -- player command to stop
}
Config.AdminCommands = {
CreateZone = 'creardrugzone', -- opens zone creator
ToggleZone = 'toggledrugzone', -- /toggledrugzone <id>
}
Config.DefaultCreator = 'map' -- 'map' (Leaflet) | 'freecam' (in-world)
Config.RestrictToZones = true -- false = sell anywhere
Config.AdditionalScripts = {
op_Gangs = false, -- OP-Crime/OP-Gangs turf integration
}
drugs.lua — drug catalog
Each drug entry describes ONE saleable substance:
Config.Drugs['weed'] = {
label = 'Marihuana',
item = 'weed_bag', -- must match ox_inventory item name
basePrice = 50, -- base $ per sale (before negotiation)
addictionPerSale = 0.02, -- 0-1, how much customer addiction increases
weight = 1.0, -- demand multiplier (relative to other drugs)
}
customers.lua — customer AI
Config.SpawnIntervalMs = 30000 -- min ms between customer spawns per zone
Config.MaxConcurrent = 3 -- max active customers per zone
Config.SpawnRadius = { min = 15, max = 40 } -- spawn distance from dealer
Config.Behaviors = {
friendly = { weight = 70 }, -- pays + leaves
robber = { weight = 15 }, -- attempts rob if dealer is alone
snitch = { weight = 15 }, -- calls cops via dispatch
}
Config.PedModels = { 'a_m_y_business_01', 'a_m_y_stbla_01', ... }
Behavior weights are relative — they don't need to sum to 100.
police.lua — dispatch
Config.PoliceJobs = { 'police', 'sheriff', 'bcso' }
Config.SnitchAlertText = 'Posible venta de drogas reportada'
Config.SnitchUseDispatch = true -- true: ps-dispatch / pma-dispatch / qb-dispatch
Config.DispatchResource = 'ps-dispatch' -- which dispatch to use
trapphone.lua — lb-phone app
Config.Phone = {
AppName = 'Trap',
AppIcon = 'icon.png', -- in html/trapphone/
AccentColor = '#16a34a',
AllowedJobs = nil, -- nil = anyone; or { 'unemployed', 'cannabis' }
}
See TRAPPHONE-GUIDE.md in the resource folder for the full app feature list.
