Configuration
config/ reference — timers, prices, police, logging, NPC zones.
🌐 Türkçe · Yapılandırma
All settings live in config/. Edit only these files without touching game
logic. Files are numbered by load order.
| File | Contents |
|---|---|
00_init.lua | Config table (no edits needed) |
01_cannabis.lua | Planting, growth, maintenance, harvest, minigame timings |
02_general.lua | Language, police alerts, logging, Discord, menu export |
03_plant_location.lua | Planting location rules, soil materials |
04_buyer_npcs.lua | Buyer NPC zones, dialogue, market, prices |
01 — Cannabis & growth
| Setting | Default | Description |
|---|---|---|
OnlyOwnerCanHarvestCannabis | true | Only planter can harvest (false = anyone) |
PlantCooldownSeconds | 30 | Cooldown between plantings (s) |
PlantStageSeconds | 1800 | Time per stage (30 min) |
HarvestReadyStage | 4 | Minimum stage to harvest |
RottenAfterStage | 8 | Above this stage = rotten product |
MaintenanceWindowSeconds | 1200 | 2→3 maintenance window (20 min) |
MaintenanceLightBonusSeconds | 720 | Grow light extends window (+12 min) |
MaintenancePesticideBonusSeconds | 900 | Pesticide extends window (+15 min) |
HarvestDoubleWhenLightAndPesticide | true | Light + pesticide → 2× yield |
HarvestPremiumGradeAChancePercent | 30 | Grade A bonus chance (% · 0 = off) |
HarvestMaxDistanceFromPlant | 4.0 | Harvest distance (m) |
CannabisStreamDistance | 250.0 | Prop + target visibility distance (perf.) |
HarvestMinigameHoldMs | 2800 | Harvest minigame hold (ms) |
Maintenance and special item names are under MaintenanceItems,
GrowthSensorItem, PlantPotItem, HarvestPremiumGradeAItem — full list:
Items.
02 — General
Language
Config.Illegal.Locale = 'en' -- 'tr' or 'en'Language scope (important)
Locale only translates notifications called through L(). NPC dialogue
lives in 04_buyer_npcs.lua (independent of locale), and NUI/HUD + minigame
text lives in the interface files. For an English server you must translate the
NPC text in the config yourself.
Police alert
Config.Illegal.PoliceAlert = {
enabled = true,
mode = 'export', -- 'export' | 'clientRelay' | 'serverEvent' | 'qbPoliceServer'
defaultMessage = 'Suspicious drug sale — civilian report',
dispatchResource = 'ps-dispatch',
dispatchExport = 'CustomAlert',
dispatchPassCoords = true,
}| Mode | What it does |
|---|---|
export | Calls your dispatch script's export (ps-dispatch, cd_dispatch…) |
clientRelay | Fires a client event (police side listens) |
serverEvent | Fires a server event |
qbPoliceServer | QBCore police job event |
Logging & Discord
Config.Illegal.Log = {
enabled = true,
providers = { 'console', 'discord' }, -- 'console' | 'discord' | 'export'
}
Config.Illegal.Discord = {
enabled = true,
webhook = 'https://discord.com/api/webhooks/...', -- your webhook
botName = 'liveIllegal',
}The export provider writes to external systems like qb-log
(Config.Illegal.Log.export).
03 — Planting location rules
Config.Illegal.PlantLocationChecks = {
blockInVehicle = true, -- no planting in a vehicle
blockInWater = true, -- no planting in water
blockInInterior = true, -- no planting indoors
blockInAir = true, -- no planting mid-air
blockOnRoad = false, -- planting on road (true = block)
requireSoilGround = false, -- true = soil list only
}PlantSoilMaterials lists the GTA ground materials where planting is allowed
(grass, soil, sand, gravel, mud, bushes…). Anything not listed = planting blocked.
04 — Buyer NPCs (black market)
Prices
Config.Illegal.BuyerNpcs.SellItems = {
cannabis = { label = 'Cannabis', marketPrice = 85 },
cannabis_grade_a = { label = 'Grade A', marketPrice = 220 },
cannabis_rotten = { label = 'Rotten', marketPrice = 12 },
}Market & quota
| Setting | Default | Description |
|---|---|---|
Market.payAccount | 'cash' | Payout account (cash / bank) |
Market.npcAcceptChance | 65 | Negotiation accept chance (%) |
Market.negotiateBanAfterFails | 3 | NPC bans you after this many fails |
saleQuotaMin / saleQuotaMax | 2 / 6 | Per-NPC buy amount per round |
saleQuotaResetHours | 6 | Quota refresh time (hours) |
EarlySellPoliceChance | 90 | "I'm selling" → police alert chance (%) |
InteractionDistance | 2.8 | NPC interaction distance (m) |
Add a new NPC
Add a table to Zones[1].spawnPoints:
{
pedId = 'unique_id', -- unique per NPC
model = 'a_m_y_hipster_01',
behavior = 'wander', -- 'wander' | 'drunk_wander'
dialog = { name = 'Name', role = 'Role' },
}Add a new zone
Config.Illegal.BuyerNpcs.Zones[#Config.Illegal.BuyerNpcs.Zones + 1] = {
id = 'buyer_docks',
center = vector3(0.0, 0.0, 0.0),
zoneRadius = 1000,
spawnPoints = {
{ pedId = 'docks_reis', model = 'g_m_y_lost_01', behavior = 'wander' },
},
}NPC text ships in Turkish
All dialogue (DefaultDialog, chatPool, saleQuotaLine, NPC name/role) is
in 04_buyer_npcs.lua and is not changed by Locale. Translate it there
for your language.