Zones
The zone system is the core of Core Gangs. Zones are map territories that organizations can capture, defend, and profit from. Each zone has a type that determines what it does — generate drugs, process materials, sell product, or serve as a gang house.
Zone Editor
Use /zoneeditor in-game to open the visual zone editor. This launches a freecam mode where you can create and configure zones directly on the map — no config editing needed.
TIP
Zones created through the editor are saved to the database automatically. You can also pre-define zone types in config that appear as templates in the editor.
Zone Type Templates
The editor uses templates defined in Config.ZoneTypeTemplates. Each template pre-configures what items a zone generates, processes, or sells:
lua
ZoneTypeTemplates = {
['weed_generation'] = {
Title = 'Weed Farm',
Type = 'generation',
Time = 60000,
GenerationItems = {
{ itemName = 'weed_baggy', itemAmount = 1 },
{ itemName = 'weed_ogkush', itemAmount = 1 },
{ itemName = 'weed_purplehaze', itemAmount = 1 },
},
},
['cocaine_processing'] = {
Title = 'Cocaine Lab',
Type = 'processing',
Time = 60000,
ProcessingItems = {
{
ProcessingFromItem = 'coca_leaf',
ProcessingFromItemAmount = 10,
ProcessingToItem = 'cokebaggy',
ProcessingToItemAmount = 1
},
},
},
['drug_sales'] = {
Title = 'Drug Sales Point',
Type = 'sales',
Time = 60000,
SalesItems = {
{ SaleItem = 'cokebaggy', SaleAmount = 10, SalePriceForAmount = 100 },
{ SaleItem = 'meth', SaleAmount = 5, SalePriceForAmount = 150 },
},
},
}Available template types include:
| Template | Type | What it does |
|---|---|---|
weed_generation | generation | Produces weed variants every 60s |
oxy_generation | generation | Produces oxy every 90s |
meth_generation | generation | Produces meth every 120s |
xtc_generation | generation | Produces ecstasy every 100s |
cocaine_processing | processing | Coca leaf → Cocaine → Bricks |
crack_processing | processing | Cocaine → Crack |
drug_sales | sales | Sells all drug types for currency |
Zone Types
Generation
Auto-produces items over time into a zone storage. Weed farms, meth labs, oxy labs — set a timer and items appear.
Processing
Converts raw materials from storage into finished products. Coca leaves become cocaine, cocaine becomes bricks.
Sales
Sells items from storage in exchange for special currency. The final step in the drug pipeline.
Field
Grow and harvest plants. Multiple growth stages, owner bonuses, and drug-boosted yields.
House
Gang house with secure storage. Can be captured via war or assigned by admin.
Continental
Safe zone where killing is prohibited. Includes a shop for special currency. Not capturable.
Generation Zones
Produce items automatically on a timer and deposit them into storage:
lua
[6740] = {
Title = 'WEED HARVEST',
Type = 'generation',
Storages = {
['generation-storage01'] = {
InventoryType = 'stash',
Coords = vector3(-1148.14, -1451.23, 4.53 - 0.98),
Prop = 'prop_weed_tub_01',
Rotation = 33.3160,
slot = 50,
maxWeight = 2500000,
OnlyOwnerCanAccessStorage = false,
},
},
GenerationItems = {
{ itemName = 'weed_skunk', itemAmount = 1 },
{ itemName = 'weed_purplehaze', itemAmount = 1 },
},
Time = 60000, -- ms between generation cycles
},Processing Zones
Convert raw items in storage into finished products:
lua
[5725] = {
Title = 'COCAINE PROCESSING',
Type = 'processing',
Storages = { ... },
ProcessingItems = {
{
ProcessingFromItem = 'coca_leaf',
ProcessingFromItemAmount = 10,
ProcessingToItem = 'cokebaggy',
ProcessingToItemAmount = 1
},
{
ProcessingFromItem = 'cokebaggy',
ProcessingFromItemAmount = 10,
ProcessingToItem = 'coke_small_brick',
ProcessingToItemAmount = 1
},
},
Time = 60000,
},Sales Zones
Sell items from storage in exchange for currency:
lua
[5164] = {
Title = 'COCAINE SALES',
Type = 'sales',
Storages = {
['sales-storage01'] = {
InventoryType = 'stash',
Coords = vector3(-798.56, 884.49, 203.60 - (2 * 0.98)),
Rotation = 287.79,
Npc = 's_m_y_dealer_01',
animDict = 'amb@code_human_in_bus_passenger_idles@male@sit@base',
animName = 'base',
slot = 50,
maxWeight = 2500000,
},
},
SalesItems = {
{ SaleItem = 'cokebaggy', SaleAmount = 10, SalePriceForAmount = 100 },
{ SaleItem = 'coke_small_brick', SaleAmount = 1, SalePriceForAmount = 100 },
},
Time = 60000,
},Field Zones
Fields grow plants that players can harvest. Plants go through 3 growth stages — small, medium, and large — and yield items based on how grown they are. Minimum 20% growth required to pick.
Growth
- Plants take 10 minutes to fully grow (configurable)
- Owner members get 1.2x faster growth
- Non-owners grow at normal speed
- Consuming drugs boosts yield — oxy gives 1.8x (see Consumables)
Picking Privileges
Who picks the plants determines where the harvest goes:
Gang Member
Full harvest + 1.5x owner bonus. Everything goes straight to your inventory. Your field, your product.
Non-Member / Rival Gang
Only 40% of the yield. The other 60% goes to the owning gang's zone storage automatically. The gang gets an alert with your location.
STEALING FROM A GANG'S FIELD
Anyone can pick from a gang-owned field — rival gangs, random civilians, doesn't matter. But they'll only walk away with 40% of the harvest. The owning gang gets the 60% majority deposited straight into their zone storage, plus a location ping on the thief. Risky move.
lua
-- Field settings in config
FieldGrowthTime = 600, -- seconds to full growth (10 min)
FieldOwnerGrowthBoost = 1.2, -- 20% faster growth for zone owners
FieldNonOwnerGrowthBoost = 1.0, -- normal speed for non-owners
OwnerPickBonus = 1.5, -- 1.5x yield for gang members
OwnerPickSplit = 0.6, -- 60% of non-member picks go to gang storage
AlertOnEnemyPick = true, -- ping gang when someone steals from their fieldINFO
Plants only spawn on valid grass surfaces. The server generates initial plants and the client filters out any that land on invalid ground (concrete, water, etc).
House Zones
Gang houses provide secure storage. Configured in Config.HouseZones:
lua
HouseZoneCapture = true,
HouseZones = {
[7067] = {
Title = 'BALLAS GANG HOUSE',
Type = 'house',
Storages = {
['house-storage01'] = {
InventoryType = 'stash',
Coords = vector3(115.59, -1952.19, 20.75 - 0.98),
Prop = 'prop_weed_tub_01',
Rotation = 49.17,
slot = 50,
maxWeight = 2500000,
}
},
NPCModels = { 'csb_ballasog', 'g_f_y_ballas_01' },
NPCWeapons = { 'weapon_pistol', 'weapon_microsmg' },
},
},INFO
Set HouseZoneCapture = false to prevent wars on house zones — they'll need to be assigned via the setZoneToOrg export instead.
Continental Zones
Safe zones where killing is prohibited. They include a shop that sells items for special currency.
lua
Continentals = {
[8025] = {
Title = 'CONTINENTAL AREA',
Type = 'continental',
ShopNPCs = {
['s_m_y_devinsec_01'] = {
Coords = vector3(1196.96, -3253.45, 7.10 - 0.98),
Rotation = 88.46,
}
},
Shop = {
['items'] = {
['lockpick'] = 10,
['armor'] = 50,
},
['weapons'] = {
['weapon_smg'] = 200,
['weapon_pistol'] = 100,
}
},
ShopOpenHours = {00, 11}, -- false = 24/7
},
},Killing in a continental zone automatically sets a bounty on the killer:
lua
KillInContinentalZoneSetBounty = true,
BountyPriceSetOnContinentalKill = 200,Zone Protection & Buffer Zones
Every zone has a protection level that creates a ring of buffer zones around it. The higher the protection, the more buffer zones surround the core territory.
lua
DefaultProtectionValue = 3,
ProtectionValuePrice = 100, -- price per level
MaxProtectionLevel = 5,Buffer zones act as a perimeter — they're "multiplier" type zones that extend the controlled area. The shape of the buffer ring is configurable:
lua
CubeShape = false,
CircleShape = false,
DiamondShape = true, -- recommendedTIP
Higher protection = more buffer zones = larger controlled territory. Organizations pay currency to upgrade protection through the UI.
Zone Wars
Wars are how organizations fight for territory. An attacking org challenges the defenders for ownership of a zone.
How Wars Work
- An org member initiates a war on a zone they don't own
- Both sides earn points based on members present in the zone (+5 points/second/player)
- The defending org starts with a 500-point advantage (configurable)
- Street reputation further boosts the defender's advantage
- After the war timer ends, the org with the most points wins
- Winners get currency rewards and optional item drops
War Settings
lua
BaseZoneWarTime = 10, -- war duration (minutes)
PriceToStartWar = 0, -- currency cost to declare war
OwnedZoneAdvantage = 500, -- defender head start
WarScoreIncrease = 5, -- points per second per player
OrganizationCooldown = 5, -- minutes before org can war again
ZoneCooldown = 10, -- minutes before zone can be attacked again
CurrencyAward = 200, -- currency per winning member
MaximumOrganizationWars = 1, -- max concurrent wars (0 = unlimited)
CriminalOnlineRequiredToStartWar = 2,
OnlyOwnerOfOrganizationCanStartWar = false,
OrganizationMembersRequiredOnlineToAttackZone = 2,War Rewards
lua
Rewards = {
['bandage'] = 2, -- fixed amount
['lockpick'] = {0, 3}, -- random between 0-3
},Time Restrictions
Limit when wars can be started:
lua
TimeWhenWarCanStart = {
{ beginWar = {h = 21, m = 0}, endWar = {h = 24, m = 0} },
{ beginWar = {h = 0, m = 0}, endWar = {h = 2, m = 0} },
},War Walls
During active wars, visual walls appear around the zone boundaries. These can be toggled for performance:
lua
DisplayWarWall = true,
DisplayWallWarForEveryone = false, -- false = criminals only
DistanceToDisplayWall = 260.0,
EnableBackgroundWallEffect = true,
EnableSlidingTextWallEffect = true,
EnablePulseTextWallEffect = true,TIP
Disable the wall effects if players experience FPS drops during wars.
Storage Options
Every zone storage supports these fields:
| Field | Type | Description |
|---|---|---|
InventoryType | string | Inventory type (e.g., 'stash') |
Coords | vector3 | Position (subtract 0.98 for character height) |
Prop | string | GTA prop model for interaction (or use Npc for NPC model) |
Rotation | number | Heading of the prop/NPC |
slot | number | Inventory slot count |
maxWeight | number | Maximum weight capacity |
OnlyOwnerCanAccessStorage | boolean | Restrict to org owner only |
TIP
Storage names must be globally unique across all zones and house zones.
Unowned Zone Behavior
Control whether zones still function when no org owns them:
lua
EnableGenerationWhenZoneIsNotOwned = true,
EnableProcessingWhenZoneIsNotOwned = true,
EnableSellingWhenZoneIsNotOwned = true,Blacklisted Zones
Prevent specific zones from appearing on the map:
lua
BlackListedZones = {
[5083] = true,
[6352] = true,
},