Docs

kyoEmpireBuilder

Labs and production

Everything on this page is in config/config_labs.lua.

Interiors

Labs use GTA Online interiors. Every lab is a separate instance (routing bucket), so two labs that use the same interior never see each other.

KeyInterior
methMeth lab
cokeCocaine lockup
weedWeed farm
counterfeitCounterfeit cash factory
documentsDocument forgery office
bunkerBunker
acidAcid lab (game build 2802)
warehouse_small, warehouse_medium, warehouse_largeWarehouses
clubhouse_1, clubhouse_2Biker clubhouses
vehicle_warehouseVehicle warehouse
nightclubNightclub (game build 1290)
facilityFacility (game build 1290)

Each interior defines its exit, panel (laptop), storage and work stations, and the entity sets loaded for each upgrade level.

Tip: positions can be fine-tuned in game without touching the file: Admin panel > Interiors > Visit, stand where a point should be and press its button. The new positions are saved in the database and apply to every lab using that interior.

Lab types

meth = {
    label = 'Meth Lab', icon = 'flask', interior = 'meth', mode = 'production',
    price = 1800000,
    product = { item = 'meth_bag', amount = 10 },
    cycle = 600, supplies = 10,
    capacity = { product = 400, supplies = 200 },
    ingredients = { chemicals = 5, pseudoephedrine = 10 },
    supplyPrice = 900,
    station = { duration = 15, boost = 90, cooldown = 120 },
    heat = 0.12,
    sale = { min = 380, max = 460 },
},
FieldMeaning
interiorKey of Config.Interiors
modeproduction (makes items), laundering (turns dirty money into clean) or hq (no production)
priceDefault price when a lab of this type is put on sale
productItem produced and amount per cycle
cycleSeconds per production cycle, before upgrades
suppliesSupplies used per cycle
capacityBase storage for product and supplies
ingredientsItems that can be dropped in, and how many supplies each unit adds
supplyPricePrice of one supply unit bought from the lab panel (paid from the treasury)
stationActive work: seconds of work, production seconds gained, cooldown in seconds
heatHeat per unit produced (0–100 scale)
salePrice per unit in sale missions (dirty money)

Included types

TypeProductInterior
methmeth_bagmeth
cokecoke_bagcoke
weedweed_bagweed
counterfeitcounterfeit_cashcounterfeit
documentsfake_iddocuments
weaponsweapon_partsbunker
acidacid_tabacid
launderingclean moneywarehouse_small
hqnoneadmin’s choice

Laundering

laundering = {
    label = 'Money Laundering', icon = 'refresh', interior = 'warehouse_small', mode = 'laundering',
    price = 1200000,
    laundering = { perCycle = 25000, cycle = 300, fee = 0.20, capacity = 500000, payoutCurrency = 'bank' },
    station = { duration = 12, boost = 60, cooldown = 120 },
    heat = 0.00002, -- per dollar laundered
},

Members deposit dirty money. Every cycle seconds up to perCycle is washed, minus fee, and can be collected in payoutCurrency.

Headquarters

hq = {
    label = 'Headquarters', icon = 'home', interior = 'clubhouse_1', mode = 'hq',
    price = 1000000,
    interiors = { 'clubhouse_1', 'clubhouse_2', 'bunker', 'warehouse_large', 'facility', 'nightclub', 'vehicle_warehouse' },
},

A headquarters produces nothing. It is a private place for the organization, where the boss or an admin can place a stash, wardrobe or panel. Admins pick the interior from the list.

Upgrades

Each lab has four upgrades, paid from the treasury. Prices are multiplied by the lab type price / 1,000,000, so expensive labs cost more to upgrade.

UpgradeEffect
equipmentProduction speed: the cycle time is divided by the value. Also raises base quality
staffAmount produced per cycle is multiplied by the value
securityHeat generated is multiplied by the value
capacityStorage capacity is multiplied by the value
equipment = {
    label = 'Equipment', visualFrom = 1,
    levels = {
        { price = 0,       value = 1.00 },
        { price = 350000,  value = 1.20 },
        { price = 700000,  value = 1.40 },
        { price = 1200000, value = 1.65 },
    },
},

Upgrades also change the interior props (entity sets), so members can see the lab improve.

Production

Config.Production = {
    Tick = 60,                -- seconds between production updates on the server
    OfflineProduction = true, -- labs keep producing while nobody is online (calculated on restart)
}

Each cycle consumes supplies and adds product, until the storage is full or the supplies run out.

Work tables

Working a table (station) takes duration seconds with its animation, adds boost seconds of production instantly, and then has a cooldown.

Quality

Config.Quality = {
    Enabled = true,
    BasePerEquipment = { 45, 55, 65, 75 }, -- base quality for equipment level 0, 1, 2, 3
    PerStationWork = 4,                    -- added each time a table is worked
    MaxAboveBase = 25,                     -- work can't push it more than this above the base
    DecayPerHour = 3,                      -- falls back towards the base
    PriceAt0 = 0.75,
    PriceAt100 = 1.30,
}

Quality goes from 0 to 100. It starts from the equipment level and goes up when members work the tables. It only affects the price of sale missions: from ×0.75 at quality 0 to ×1.30 at quality 100.

Lab shop

Config.LabShop = {
    Purchasable = true,     -- false = only admins assign labs
    Currency = 'dirty',
    PayFromTreasury = true, -- true = paid from the treasury, false = from the boss' pocket
    NPC = {
        model = 'g_m_m_armboss_01',
        coords = vector4(1240.45, -3168.20, 7.10, 270.0),
        scenario = 'WORLD_HUMAN_SMOKING',
        blip = { enabled = true, sprite = 473, color = 2, scale = 0.75, label = 'Real Estate (Underground)' },
    },
    FromPanel = true,       -- labs can also be bought from the organization panel
    SellBackRatio = 0.5,    -- part of the price returned when a lab is sold
}

Only labs an admin has put for sale appear in the shop. Admins choose the price and the location when they create the lab.

Supply missions

Config.SupplyMissions = {
    Cooldown = 900,               -- seconds per lab
    Reward = 60,                  -- supplies delivered (capped to capacity)
    VehicleSpawnDistance = 300.0, -- the vehicle is created when you get this close (max 400)
    BlipDelay = 30,               -- seconds before the criminal blip shows to rivals
    ThiefReward = 25000,          -- dirty money for a rival who steals the van and takes it to a thief drop point
    Types = { ... },              -- mission types, vehicles and pickup locations
}

The members go to the pickup, take the vehicle and drive it back to the lab’s vehicle point. Rivals see the vehicle after BlipDelay seconds and can steal it.