Configuration

Current configuration map and defaults for oxide-meth.

Every setting in oxide-meth, file by file. Open the files with any text editor, change the values, then restart the resource (restart oxide-meth in the server console or txAdmin).

Config files:

FileWhat's in it
shared/config.luaGeneral settings, fumes, gas mask, animations, cooking, drying, breaking, bagging
shared/config/items.luaWhich item names each stage uses
shared/config/additives.luaAdditives, named variants, purity rules
shared/config/equipment.luaThe placeable meth table and crystallizer
shared/config/progression.luaXP rewards and level thresholds
shared/config/usage.luaWhat happens when players use bagged meth

shared/config.lua

General

SettingDefaultWhat it does
Config.DebugfalsePrints extra information to the server console. Leave off unless you're troubleshooting.
Config.RequireOwnershiptrueOnly the player who placed equipment (or a drying tray) can pick it up or collect from it. Set false to let anyone interact.
Config.SpawnDistance100.0How close (in game units) a player must be before placed equipment appears for them.
Config.SafeZones{}Areas where equipment can't be placed. Each zone is a list of map points forming a shape (e.g. around a hospital). Ships empty.

Fume effects (Config.FumeEffects)

Controls the screen blur players get from cooking without a gas mask.

SettingDefaultWhat it does
lingerDuration120000How long the effect lingers after the cook, in milliseconds (default 2 minutes)
maxStrength0.6How strong the blur can get (0–1)
rampUpRate0.008How quickly the blur builds while cooking
maskedFadeRate0.02How quickly the blur fades if the player puts on a gas mask mid-cook

Gas mask (Config.GasMask)

SettingDefaultWhat it does
item'gas_mask'The inventory item name
componentId1Which clothing slot the mask uses (1 is the face/mask slot)
drawable175Which mask model to show — change this if your clothing pack uses different numbers
texture0The mask's color/texture variation
animput-on animationThe animation played when toggling the mask (1.2 seconds by default)

Placement animations (Config.Anims)

The crouch-and-place animation used when placing or picking up equipment. You normally won't need to touch these.

Cooking (Config.Cooking)

The interesting numbers for game balance:

SettingDefaultWhat it does
cookDuration20000Length of the temperature phase, in milliseconds
cookStartTemp30.0Temperature when the cook starts (°C)
cookHeatRate0.13How fast the temperature climbs on its own, per frame. Higher = harder cook.
cookCoolAmount15.0How much pressing the correct key cools the pot (°C)
cookOverheatPenalty3.0How much pressing a wrong key heats the pot (°C)
cookKeyChangeInterval4000How often the flashing key changes, in milliseconds
cookColdThreshold15.0Below this temperature the batch starts stalling (°C)
cookColdMaxMs5000How long the pot can stay that cold before the batch is ruined (milliseconds)
cookKeysE, Q, R, G, X, HThe pool of keys the minigame picks from
pourSpeed / pourTiltMax3.0 / 120.0How pouring feels (speed and how far the bottle tilts)
dropSnapDistance / lerpDuration0.5 / 600How dragging objects in the scene feels

The batch explodes if the temperature reaches 100°C — that ceiling is fixed.

The rest of Config.Cooking (camera positions, prop groups, fire/smoke effects) controls how the cooking scene looks and rarely needs changing.

Drying (Config.Drying)

SettingDefaultWhat it does
dryingTime300Seconds for a tray to crystallize (default 5 minutes)
equipment.modelbkr_prop_meth_chiller_01aThe prop shown in the drying scene
trays.stacksPerColumn9Tray slots per rack. Two racks, so the default capacity is 18.

Heads-up: the placed crystallizer prop is set separately in shared/config/equipment.lua (and ships as tr_prop_meth_chiller_01a). If you change one model, you may want to change the other to match.

Breaking (Config.Breaking)

SettingDefaultWhat it does
shardsMin3Fewest shards a tray can give
shardsMax6Most shards a tray can give
shardModelprop_oxide_crystal_methThe shard prop shown on the table

Variants can adjust their own per-tray shard cap with shardsModifier in shared/config/additives.lua.

Bagging (Config.Bagging)

SettingDefaultWhat it does
shardsPerBag3Shards needed per bag
shardWeightMin / shardWeightMax0.3 / 1.0The random weight range of each shard (grams)
targetWeight1.0The scale's target (grams)
minSealWeight0.8The lightest a bag can be and still seal (grams)
dropSnapDistance / lerpDuration0.3 / 400How dragging shards feels

shared/config/items.lua

The item names each stage consumes and produces. If you rename an item here, remember to register the new name in your inventory too.

SettingDefault
ingredientshydrogen_peroxide, ammonia, hydrochloric_acid, sodium_benzoate
cooking.outputliquid_meth_tray ×1
drying.inputdrying.outputliquid_meth_traycrystallized_meth_tray
breaking.inputcrystallized_meth_tray (up to maxTrays = 3 per session)
breaking.outputcrystal_meth (standard crystal; variants use their own shard items)
bagging.shardItem + bagging.bagItemcrystal_meth + baggy
bagging.outputmeth_baggy (standard crystal; variants use their own bag items)

shared/config/additives.lua

Additives (Config.Additives)

Each additive entry sets:

FieldWhat it does
labelThe name players see
type'pour' (liquid, poured in) or 'drag' (solid, dropped in)
requiredLevelMeth level needed to use it
heatRateModifierMultiplies how fast the pot heats (e.g. 1.3 = 30% faster, harder cook)
optimalRangeModifierShifts the 35–65°C sweet spot up or down (°C)
purityBonusAdded to (or subtracted from) the final purity score
model, offset, fx*How the additive looks in the scene

Shipped unlock levels: Pain Killer, Lax to the Max, Cannabis Leaf, and Cough Syrup at level 1 · Magnesium Oxide, Hazardous Waste, and Vanilla Unicorn Pills at level 3 · Adrenaline and Acetone at level 5 · Toluene at level 7.

Named variants (Config.Variants)

Each variant maps an additive combination (order doesn't matter) to a finished product:

FieldWhat it does
key / nameInternal id and display name
additivesThe recipe — which additives produce this variant
shardItem / bagItemThe item names for this variant's shards and bags
shardsModifierAdjusts the per-tray shard cap when breaking (e.g. Ice's -1 caps it at 5)
valueMultiplierA price multiplier you can read from your own selling scripts — oxide-meth stores it on the variant but doesn't sell anything itself

Config.DefaultVariant is what any unmatched recipe (or no additives) produces: standard Crystal with crystal_meth shards and meth_baggy bags at 1.0x value.

If you add a new variant, you must also register its shardItem and bagItem in your inventory.

Purity (Config.Purity)

SettingDefaultWhat it does
optimalTempMin / optimalTempMax35 / 65The temperature sweet spot that earns purity
maxAdditives2Maximum additives per cook

shared/config/equipment.lua

The two placeable items. Each entry sets the inventory item, the props that appear when placed, and the direction the player faces relative to it.

SettingDefault
meth_table.itemmeth_table
meth_crystallizer.itemmeth_crystallizer
meth_crystallizer.requiredLevel0 (no level requirement — raise it to gate the crystallizer behind progression)

shared/config/progression.lua

XP rewards

ActionXP
cook25
dry (collect a finished tray)10
breakMeth30
bag (per sealed bag)15

Levels

Ten levels with these total-XP thresholds:

0, 100, 300, 650, 1200, 2000, 3200, 5000, 7500, 11000

Purity penalties

How many points each level loses off every cook's purity score:

-30, -25, -20, -15, -10, -8, -5, -3, -1, 0

shared/config/usage.lua

Controls what happens when a player uses a bagged meth item.

Core settings (Config.Usage)

SettingDefaultWhat it does
cooldown120Seconds a player must wait after the effects end before using again
animdrink animation, 3 secondsThe animation played when using

Effect toggles (needsEffects)

Turn whole effect types on or off server-wide:

SettingDefault
armourtrue
healingtrue
staminatrue
stressRelieftrue (needs a framework with a stress system — QBCore and QBX have one, ESX does not)

Screen effects (screenEffects)

SettingDefaultWhat it does
timecycle'spectator5'The vivid-color screen filter while high
cameraShake'HAND_SHAKE'The camera shake style
fovBoost5.0How much the view widens during intensity surges
pulseInterval / pulseDuration8.0 / 1.5How often surges hit and how long they last (seconds)

Base effects (baseEffects)

The starting profile every variant builds on:

SettingDefaultWhat it does
duration90Effect length in seconds
intensity0.5Visual strength (0–1)
healRate / healTickInterval0 / 5Health gained per tick, and seconds between ticks
armourAmount0Armour granted on use
staminaRegenRate0.0Stamina regeneration while high
speedBoost0.0Sprint speed bonus (e.g. 0.15 = 15% faster)
cameraShakeAmplitude1.5How hard the camera shakes
stressRelief30Stress removed on use (on frameworks with a stress system)

Purity multipliers

The grade on the bag scales every number in the profile:

GradeMultiplier
Pure1.3
High1.1
Mid1.0
Low0.8
Dirty0.6

Per-variant profiles (variantEffects)

Each variant can override any base effect. For example, Blue Sky ships with a 150-second duration, healing, armour, and a speed boost, while Street Mix is 60 seconds of weak effects and heavy shake. Tune each variant's identity here.

Next Steps