Configuration
Every lation weed setting with its default and limits, as edited in game under /weedadmin > Config, plus the files you still edit by hand.
lation weed has no config.lua. Every gameplay setting lives in the database (the lation_weed_config table, one row per section) and is edited in game under /weedadmin > Config, where a change applies to the server and every player the moment it saves. The editor itself is covered on the admin panel page.
On the first start, each section is written from shared/defaults.lua. After that, editing that file changes nothing on your server except what a reset to default puts back.
The sections below follow the editor's cards, and the tables follow the groups inside each section. The first column is the option's name in the editor. The key is its path inside the section, as an export and GetRuntimeConfig have it. Options marked restart apply after restart lation_weed; there are four.
A few things are still files: config/icons.lua, config/animations.lua and locales/en.json. See files at the end.
Setup
General
| Option | Key | Default | Notes |
|---|---|---|---|
| Debug mode | debug | Off | Prints debug lines in the server console and F8. It costs a lot of resource time, so keep it off in production. With it on, placing a pot prints the ground hash under it in F8. |
| Plant overlay | dui | On | The status panel over plants within 1.7 m. See plant status. |
| Overlays at once | duiMaxVisible | 0 | 0 to 100. Only the closest this many plants show a panel; 0 shows every plant in range. |
| Remove abandoned plants after | cleanup | 7 days | restart. 0 to 365. Plants not updated in this many days, such as a grown plant nobody harvests, are deleted 10 seconds after the resource starts. 0 never removes one. |
| Version check | version | On | restart. Prints a line in the server console when an update is out |
Integrations
| Option | Key | Default | Choices |
|---|---|---|---|
| Interaction system | interact | auto | restart. auto, ox_target, qb-target, interact, custom |
| Text UI | textui | auto | auto, lation_ui, ox_lib, jg-textui, okokTextUI, qbcore, custom |
| Notification system | notify | ox_lib | lation_ui, ox_lib, esx, qb, okok, sd-notify, wasabi_notify, custom |
| Progress bar | progress | ox_lib | lation_ui, ox_lib, qbcore, custom |
| Minigame | minigame | ox_lib | lation_ui, ox_lib, custom |
| Context menu | menu | ox_lib | lation_ui, ox_lib, custom |
| Dialogs | dialogs | ox_lib | lation_ui, ox_lib, custom |
auto for the interaction system uses the first of ox_target, qb-target and interact that is running. auto for Text UI, which shows the placement controls, checks lation_ui, ox_lib, jg-textui, okokTextUI, then qb-core. The minigame is the skill check of lab raids, and the dialogs are the quantity prompts and confirmations. custom does nothing until you write the call yourself in client/utils/ui.lua or client/utils/interact.lua, which ship open.
Police
| Option | Key | Default | Notes |
|---|---|---|---|
| Police jobs | police | police, sheriff | Up to 20 jobs. They raid labs with the police raid settings and count toward the police tables can require. On Qbox and QBCore only players on duty count. |
Items
| Option | Key | Default | Notes |
|---|---|---|---|
| Plant pot item | items.plant_pot | ls_plant_pot | The usable item that starts placing a pot, and the one a harvest can give back. A new name works when it saves, and the old one stops working. |
| Water item | items.water | ls_watering_can | Waters a plant |
| Plant revive item | items.plant_revive | ls_plant_revive | Revives a dying plant |
Item metadata
All off by default. Items with metadata turned on must be unique or non-stacking in your inventory (unique = true or stack = false).
| Option | Key | When on |
|---|---|---|
| Water carries metadata | metadata.water | Watering cans carry durability, and one bought at the supply shop starts at 100. Watering adds as much water as the can has left, up to full, and takes that much off the can. Without it, one can fills the plant and is used up. |
| Fertilizer carries metadata | metadata.fertilizer | Fertilizers carry durability the same way |
| Plant revive carries metadata | metadata.plant_revive | Plant revives carry durability the same way |
| Buds carry metadata | metadata.buds | Harvested buds get a purity equal to the plant's health at harvest |
| Joints carry metadata | metadata.joints | Rolled joints keep the purity of the buds they were made from |
| Bags carry metadata | metadata.bagged | Bags keep the purity of the buds they were made from |
The durability field is durability on ox_inventory and jaksam_inventory, durabilityPercent on tgiann-inventory, and quality on the others.
Pot models
| Option | Key | Default | Notes |
|---|---|---|---|
| Stage 1 model | stages.1 | bzzz_growing_freepot_a | The empty pot every plant starts as |
| Stage 2 model | stages.2 | bzzz_growing_freepot_b | The pot with soil, before a seed goes in |
Both are shared by every strain, which set stages 3 to 8 themselves. The editor marks them with a warning: a new model changes every plant already at that stage.
Placement controls
| Option | Key | Default | Notes |
|---|---|---|---|
| Placement speed | controls.speed | 0.015 | 0.001 to 1. How far the pot or table moves each frame in freeform mode |
| Placement distance | controls.maxDistance | 7.5 m | 1 to 50. How far the pot or table can move from where you started. The server only accepts a pot within 5 m of the player, so keep this at 5 or less if you want every spot the preview allows to work. |
| Disabled controls | controls.disable | 30, 31, 44, 22 | Up to 20 GTA control IDs turned off while placing |
Each key has a GTA control ID (control) and the label shown in the controls panel (keybind):
| Action | Key | Control | Label |
|---|---|---|---|
| Move forward | controls.forward | 32 | W |
| Move backward | controls.backward | 33 | S |
| Move left | controls.left | 34 | A |
| Move right | controls.right | 35 | D |
| Rotate left | controls.rotateL | 44 | Q |
| Rotate right | controls.rotateR | 38 | E |
| Switch mode | controls.toggleMode | 29 | B |
| Confirm | controls.confirm | 22 | SPACE |
| Cancel | controls.cancel | 73 | X |
Colors
| Option | Key | Default | Notes |
|---|---|---|---|
| Green | colors.green | #10b981 | Healthy, go-ahead states in menus and the placement controls |
| Yellow | colors.yellow | #ffdb16 | Warnings and middling values in menus |
| Red | colors.red | #ef4444 | Dangers, cancel actions and failing values in menus and the placement controls |
Growth
Growth engine
| Option | Key | Default | Notes |
|---|---|---|---|
| Tick interval | interval | 3000 ms | 100 to 60,000. Time between growth ticks |
| Groups | groups | 15 | 1 to 100. Plants are split into this many groups and each tick updates one, so every plant updates once every interval x groups: 45 seconds by default. |
Both apply the moment they save. A plant's update works out its growth from the time since its last one, so these change how often plants update, not how long a strain takes to grow, and plants keep their progress. The editor marks both with a warning: leave them alone unless support asks you to change them.
Plant health
| Option | Key | Default | Notes |
|---|---|---|---|
| Fertilizer re-apply level | reapplyFertilizer | 20% | 0 to 100. Fertilizer can only go on when the plant's fertilizer is at or below this, so players can't swap from a growth fertilizer to a yield one right before harvest. 100 allows it any time. |
| Death timer | deathTimer | 30 min | 0 to 10,080. How long a plant can stay at 0% health before it is destroyed. 0 turns plant death off. |
| Revive health | reviveHealth | 25% | 1 to 100. Health a plant revive gives back: a plant at 0% comes back at 25% |
New plants
What a new pot starts with.
| Option | Key | Default | Notes |
|---|---|---|---|
| Starting stage | default.stage | 1 | 1 (an empty pot) or 2 (a pot with soil already in it) |
| Starting growth | default.growth | 0% | |
| Starting health | default.health | 100% | 1 to 100 |
| Starting water | default.water | 20% | |
| Starting fertilizer | default.fertilizer | 20% | |
| Default fertilizer | default.fertilizerType | ls_basic_fertilizer | The fertilizer a plant takes when its seed goes in. Removing this fertilizer asks for another to take its place. |
Planting
Where and how players can put pots down, and what a harvest gives back.
Placement
| Option | Key | Default | Notes |
|---|---|---|---|
| Plants per player | max | 12 | 1 to 200. The most plants one player can own at once. Plants put down by lab workers don't count. |
| Starting placement mode | defaultMode | Grid (grid) | Or Free-form (freeform). Players switch with B. |
| Grid cell size | gridSize | 1.25 m | 0.5 to 10 |
| Minimum spacing | minDistance | 0 m | 0 to 50. The least distance between two plants; 0 allows them side by side. |
| Collision check | collision | On | Keeps pots out of walls, bushes, trees and other objects |
Ground check
| Option | Key | Default | Notes |
|---|---|---|---|
| Ground check | soil.enable | On | Pots go down only on the ground materials below |
| Allowed ground materials | soil.types | 17 hashes (below) | The ground material hashes pots may go on |
The default hashes:
[2409420175, 3008270349, 3833216577, 223086562, 1333033863, 4170197704, 3594309083, 2461440131, 1109728704, 2352068586, 1144315879, 581794674, 2128369009, -461750719, -1286696947, -1885547121, -1907520769]To find a ground's hash, turn on Debug mode and place a pot there: F8 prints it.
Zones
| Option | Key | Default | Notes |
|---|---|---|---|
| Blocked zones | blacklist | None | Up to 50 zones, each a center and a radius, where players can't use a pot |
| Only plant in zones | whitelist.enable | Off | When on, players can only use a pot inside one of the planting zones. With none, nothing can be planted anywhere. |
| Planting zones | whitelist.zones | None | Up to 50. Where planting is allowed while Only plant in zones is on |
The zones are checked against where the player stands when they use the pot.
Plant blips
| Option | Key | Default | Notes |
|---|---|---|---|
| Map blip | blips.enabled | On | A map blip on each plant, for its owner only |
| Blip sprite | blips.sprite | 469 | 1 to 957 |
| Blip color | blips.color | 2 | 0 to 85 |
| Blip scale | blips.scale | 0.8 | 0.1 to 5 |
| Blip label | blips.label | Weed Plant |
Harvest
| Option | Key | Default | Notes |
|---|---|---|---|
| Pot return chance | harvest.potReturnChance | 0% | The chance a player gets their plant pot back on harvest |
| Worker pot return chance | harvest.workerPotReturnChance | 0% | The chance a pot goes back into the lab stash when a botanist harvests |
Seed return for players
| Option | Key | Default | Notes |
|---|---|---|---|
| Return seeds to players | harvest.seedReturn.player.enable | Off | Gives the player seeds of the harvested strain |
| Minimum health | harvest.seedReturn.player.minHealth | 80% | Seeds only come back from a plant at or above this health |
| Return chance | harvest.seedReturn.player.chance | 100% | The chance once the health condition is met |
| Fewest seeds | harvest.seedReturn.player.min | 1 | 1 to 50 |
| Most seeds | harvest.seedReturn.player.max | 2 | 1 to 50 |
Seed return for workers, harvest.seedReturn.worker, has the same five options and defaults for botanist harvests (Return seeds to workers first). Those seeds go into the lab stash.
Strains
| Option | Key | Default | Notes |
|---|---|---|---|
| Strains | entries | The six default strains | Up to 50 |
In the editor the strains are one list: add, reorder and remove them, and open one for its settings. In an export and in GetRuntimeConfig, each strain sits under its key, such as og_kush, and order holds the list's order. Every strain setting is on the strains page.
Soils and fertilizers
Soils and fertilizers are separate sections with the same fields: one list each (entries), up to 50. Each entry's key is its item name.
| Option | Key | Notes |
|---|---|---|
| Name | label | Shown in the menu where players pick one |
| Description | description | The line under it, up to 120 characters |
| Image | image | Image used in menus |
| Icon | icon | Icon used in menus and on the plant overlay |
| Show modifiers | displayModifiers | Shows the bonuses in that menu. On by default. |
| Growth bonus | modifiers.growth | 0 to 100. Percent faster growth while this soil or fertilizer is on the plant. Applies from each plant's next update. |
| Yield bonus | modifiers.yield | 0 to 100. Percent more buds at harvest |
| Soil | Growth | Yield |
|---|---|---|
ls_basic_soil | 0 | 0 |
ls_enhanced_soil | 10 | 0 |
ls_premium_soil | 0 | 10 |
| Fertilizer | Growth | Yield |
|---|---|---|
ls_basic_fertilizer | 0 | 0 |
ls_enhanced_fertilizer | 15 | 0 |
ls_premium_fertilizer | 0 | 15 |
Keep the first soil and the first fertilizer in each list at 0 growth and 0 yield. When a plant's fertilizer runs out, it falls back to the first fertilizer in the list.
See strains for how the bonuses are applied, and the admin panel for removing one that plants use.
Dealer
A seed dealer who moves between spots. Players buy seeds from them.
General
| Option | Key | Default | Notes |
|---|---|---|---|
| Seed dealer | enable | On | Off takes the dealer away within seconds; on brings him back. |
| Ped model | model | a_m_m_og_boss_01 | |
| Payment | account | cash | cash, bank, or an item such as black_money |
| Stays for | available | 60 min | 1 to 1,440. How long the dealer stays at a spot |
| Returns after | respawn | 90 min | 1 to 1,440. How long until they turn up again after leaving |
| Dealers at once | spawnCount | 1 | 1 to 20, each at a different spot |
| Jobs without the blip | ignoredJobs | None | Up to 20. Players with these jobs don't see the dealer blip; a job change shows or hides it at once. |
Seeds for sale
The stock (inventory) is a list keyed by strain, up to 50. Stock is how many seeds one player can buy each time the dealer turns up, and it starts over when they move. Stock by level (stockByLevel) raises it for higher levels, using the highest row at or below the player's level, up to 20 rows.
| Strain | Price | Required level | Stock | Stock by level |
|---|---|---|---|---|
og_kush | 250 | 1 | 5 | 2: 7, 3: 9, 4: 11, 5: 13, 6: 15 |
banana_kush | 500 | 2 | 5 | 3: 7, 4: 9, 5: 11, 6: 13 |
blue_dream | 750 | 3 | 5 | 4: 7, 5: 9, 6: 11 |
purple_haze | 1000 | 4 | 5 | 5: 7, 6: 9 |
orange_crush | 1250 | 5 | 5 | 6: 7 |
cosmic_kush | 1500 | 6 | 5 | None |
Locations
| Option | Key | Default | Notes |
|---|---|---|---|
| Locations | locations | 18 spots | Up to 50, each with a heading. The dealer avoids the last spots used when they can. |
Map blip
| Option | Key | Default |
|---|---|---|
| Map blip | blip.enable | On |
| Blip sprite | blip.sprite | 140 |
| Blip color | blip.color | 2 |
| Blip scale | blip.scale | 0.8 |
| Blip label | blip.label | Seed Dealer |
Shop
A supply shop vendor who sells tools, soils, fertilizers, papers, baggies and the table.
| Option | Key | Default | Notes |
|---|---|---|---|
| Supply shop | enable | On | |
| Ped model | model | a_m_y_beach_02 | |
| Payment | account | cash | cash or bank |
| Opening hours | hours.enable | Off | Limits the shop to in-game opening hours. Outside them the vendor isn't there; the blip stays. |
| Opens at | hours.open | 8 | 0 to 23 |
| Closes at | hours.close | 20 | 0 to 23. An overnight window such as 22 to 6 works. |
| Locations | locations | -1173.35, -1571.64, 3.66, 186.75 | Where the vendor stands, up to 50 |
The shop blip (blip.enable on, blip.sprite 140, blip.color 2, blip.scale 0.8, blip.label Smoke on the Water) has the same options as the dealer's.
Items for sale
The stock (inventory) is a list, up to 50. Each entry has an Item (item), a Name (label), a Price (price), a Required level (level), a Stock (stock), an Image (image) shown on hover and an Icon (icon, a Font Awesome name). Stock is the most one player can buy until the resource restarts, up to 10,000; 0 is unlimited. Every default item is level 1 with unlimited stock.
| Key | Item | Price |
|---|---|---|
water | ls_watering_can | 50 |
basic_fertilizer | ls_basic_fertilizer | 75 |
enhanced_fertilizer | ls_enhanced_fertilizer | 150 |
premium_fertilizer | ls_premium_fertilizer | 250 |
basic_soil | ls_basic_soil | 50 |
enhanced_soil | ls_enhanced_soil | 100 |
premium_soil | ls_premium_soil | 175 |
plant_pot | ls_plant_pot | 25 |
plant_revive | ls_plant_revive | 150 |
rolling_paper | ls_rolling_paper | 10 |
empty_baggy | ls_empty_baggy | 10 |
weed_table | ls_weed_table | 5000 |
Farms
Wild plots where players search plants for seeds: one list (entries), up to 20. One farm ships, mount_chiliad_farm.
| Option | Key | Default | Notes |
|---|---|---|---|
| Enabled | enabled | On | Turns the farm off without deleting it |
| Required level | level | 1 | The level a player needs to search |
| Spot cooldown | cooldown | 45 s | 5 to 3,600. How long before the same plant can be searched again. Each plant has its own timer. |
| Nothing chance | nothing | 15% | 0 to 100. The chance a search finds nothing, rolled before the seed loot |
| Spawn props | spawn | Off | Puts a prop at each plant spot while a player is in the zone |
| Prop model | model | prop_weed_01 | Used when Spawn props is on |
| Zone center | center | 2225.805, 5576.971, 53.857 | The middle of the zone and the blip |
| Zone radius | size | 15 m | 1 to 500 |
| Search spots | coords | 19 spots | Up to 100. The plants players can search |
| Map blip | blip.* | On, sprite 469, color 2, scale 0.8, label Weed Farm |
A farm added in the editor starts with a nothing chance of 20%, its blip off and no seed loot.
Seed loot
When a search finds something, one strain is picked at random from the entries (seeds) at or below the player's level, weighted by Weight, and the player gets between Fewest seeds and Most seeds of it. With no entries, a farm finds nothing.
| Strain | Weight (chance) | Fewest (min) | Most (max) | Required level (level) |
|---|---|---|---|---|
og_kush | 60 | 1 | 4 | 1 |
banana_kush | 40 | 1 | 3 | 2 |
blue_dream | 30 | 1 | 2 | 3 |
purple_haze | 20 | 1 | 2 | 4 |
orange_crush | 15 | 1 | 2 | 5 |
cosmic_kush | 10 | 1 | 1 | 6 |
Labs
How labs are sold, stored, staffed and raided. How players use them is on the labs page.
General
| Option | Key | Default | Notes |
|---|---|---|---|
| Labs per player | maxPerPlayer | 1 | 1 to 10 |
| Revoke idle labs after | cleanup | 45 days | restart. 0 to 365. Days without activity before a lab goes back on sale: the price isn't refunded, the wallet goes back to the owner and the stash is emptied. Checked 10 seconds after the resource starts. 0 turns it off. |
| Sell refund | sellRefundPct | 0.5 | The share of the price paid that selling refunds, 0 to 1. The editor shows it as a percent (50%). |
| Marketplace view | shopMode | Map (map) | Or List (list): how the marketplace opens |
Accounts
| Option | Key | Default | Notes |
|---|---|---|---|
| Purchase account | accounts.purchase | bank | What players pay for a lab with |
| Sale account | accounts.sell | bank | Where the owner is paid when a lab is sold or closed: the refund and what is left in its wallet |
| Deposit account | accounts.deposit | bank | Where deposits into the lab wallet come from |
| Withdrawal account | accounts.withdraw | bank | Where wallet withdrawals go |
Every account takes bank, cash or an item such as black_money.
Map blips
| Option | Key | Default | Notes |
|---|---|---|---|
| Map blips | blips.enabled | On | A blip on the labs you own |
| Blip sprite, color, scale and label | blips.sprite, blips.color, blips.scale, blips.label | 499, 2, 0.8, Weed Lab |
Storage
| Option | Key | Default | Notes |
|---|---|---|---|
| Base stash slots | baseStashSlots | 10 | 1 to 500. Slots every lab stash starts with |
| Base stash weight | baseStashWeight | 50000 | Weight every lab stash starts with, in grams (50 kg) |
The storage tiers, storageTiers, are bought in order from inside the lab, paid from the lab wallet. Each adds to the one before. In the editor they read Bronze: added slots, Bronze: added weight, Bronze: price, and so on.
| Tier | Key | + Slots (addSlots) | + Weight (addWeight, g) | Price (price) |
|---|---|---|---|---|
| Bronze | storageTiers.bronze | 10 | 25000 | 5000 |
| Silver | storageTiers.silver | 20 | 50000 | 15000 |
| Gold | storageTiers.gold | 40 | 100000 | 40000 |
A change to the stash sizes applies to every lab stash when it saves.
Workers
| Option | Key | Default | Notes |
|---|---|---|---|
| Workers | workers.enable | On | Lets owners hire workers. Off hides the Workers tab. |
| Pay cycle | workers.wageInterval | 48 min | 1 to 10,080. Real minutes between wages |
| Water threshold | workers.waterThreshold | 20% | Botanists water plants below this |
| Fertilizer threshold | workers.fertThreshold | 20% | Botanists fertilize plants below this |
| Worker pace | workers.workerAnimMultiplier | 2 | 0.1 to 10. Multiplies how long each job takes a worker. 1 is a player's speed, 2 is half speed. |
| Botanist hire cost | workers.botanist.hireCost | 5000 | Paid once from the lab wallet |
| Botanist wage | workers.botanist.dailyCost | 250 | Paid from the lab wallet each pay cycle |
| Botanist ped | workers.botanist.pedModel | a_m_m_farmer_01 | |
| Packager hire cost | workers.packager.hireCost | 5000 | |
| Packager wage | workers.packager.dailyCost | 250 | |
| Packager ped | workers.packager.pedModel | a_m_m_farmer_01 | |
| Rolling paper item | workers.packager.rollingPaper | ls_rolling_paper | What a packager uses per joint |
| Empty baggy item | workers.packager.emptyBaggy | ls_empty_baggy | What a packager uses per bag |
| Buds per joint | workers.packager.budsPerJoint | 1 | 1 to 100 |
| Buds per bag | workers.packager.budsPerBag | 1 | 1 to 100 |
A lab holds up to 10 botanists and 4 packagers; those limits aren't settings.
Raids
| Option | Key | Default | Notes |
|---|---|---|---|
| Raids | raids.enable | On | Locked labs can be broken into |
| Players may raid | raids.allowPlayers | On | Civilians can raid |
| Owner must be online | raids.playersRequireOwnerOnline | Off | Civilians can only raid while the owner is online. Police aren't affected. |
| Police may raid | raids.allowPolice | On | Police (the police jobs under Setup) can raid |
| Retry cooldown | raids.cooldownMinutes | 15 min | 0 to 1,440. After a failed attempt, how long before the same player can try the same lab again; 0 is none. Cleared by a restart. |
| Notify the owner | raids.notifyOwner | On | Tells the owner in game when a break-in succeeds. The onLabRaidBreached hook runs either way. |
Raids by players and Raids by police have the same options side by side, under raids.players and raids.police:
| Option | Key | Players | Police | Notes |
|---|---|---|---|---|
| Players need an item, Police need an item | requireItem | On | On | The item must be in the inventory to start |
| Players' item, Police item | item | lockpick | police_stormram | |
| Consume the item | consumeItem | attempt | attempt | When the item is used up: never, attempt (on a failed attempt) or success |
| Skillcheck rounds | skillcheck.rounds | 3 x medium | 3 x medium | Up to 5 rounds, each easy, medium or hard. With none, one medium round is played. |
| Skillcheck keys | skillcheck.inputs | w, a, s, d | w, a, s, d | Single letters or digits; one is picked for each round. Empty uses W, A, S and D. |
Lab locations
The labs (entries) are a list, up to 50, each keyed by a lowercase key:
| Field | Key | Notes |
|---|---|---|
| Name | label | The name in the marketplace and at the entrance |
| Entrance | x, y, z, w | Where the entrance is, and its heading |
| Price | price | |
| Required level | level | The level a player needs to buy it |
| Image | image | The marketplace picture; nui:// and https:// paths work |
| Purchase prompt | purchaseInteraction | Shows Purchase at the entrance. On by default. |
| Marketplace listing | marketplaceListing | Lists the lab in the marketplace and lets players buy it there. On by default. |
Turn both off to sell a lab only through your own script with the purchaseLab export, which ignores both.
| Key | Name | Price |
|---|---|---|
la_mesa_1 | La Mesa | 150000 |
mission_row_1 | Mission Row | 125000 |
la_puerta_1 | La Puerta | 115000 |
downtown_vinewood_1 | Downtown Vinewood | 175000 |
morning_wood_1 | Morning Wood | 215000 |
great_chaparral_1 | Great Chaparral | 105000 |
grand_senora_desert_1 | Grand Senora Desert | 129000 |
zancudo_river_1 | Zancudo River | 95000 |
grapeseed_1 | Grapeseed | 92500 |
paleto_bay_1 | Paleto Bay | 85200 |
Every default lab is level 1, with both switches on and a picture in config/labs/. Removing a lab someone owns asks you to confirm; see deleting things that are in use.
Tables
Portable tables players put down to roll joints and bag weed.
| Option | Key | Default | Notes |
|---|---|---|---|
| Portable tables | enable | On | Players can put tables down with the table item |
| Table item | item | ls_weed_table | The item that places and picks up a table. A new name works when it saves, and the old one stops working. |
| Prop model | model | bkr_prop_weed_table_01a | Placed tables change to a new model when it saves |
| Owner only | locked | Off | Only the owner can pick up their table |
| Tables per player | limit | 1 | 1 to 20. The most tables one player can have out |
| Required level | level | 1 | The level a player needs to put down or use a table |
| Solid table | collisions | On | The table blocks movement; off, players walk through it |
| Allow rolling | allow.rolling | On | |
| Allow bagging | allow.bagging | On | |
| Require police | requirements.police.enable | Off | A table can only go down while enough police are on duty |
| Police required | requirements.police.count | 3 | 0 to 50 |
| Blocked zones | restricted | None | Up to 50 zones, each a center and a radius, where tables can't go |
Per-strain recipes
Each strain has an entry under buds with rolling and bagging values. The same values apply at the packaging stations inside labs. A strain with no entry can't be rolled or bagged.
| Option | Key | Default (rolling and bagging) | Notes |
|---|---|---|---|
| Enabled | enabled | On | Shows the strain in the rolling and bagging menus |
| Buds per joint, Buds per bag | remove_bud | 1 | 1 to 100. Buds used per action |
| Rolling item, Bagging item | remove_item.rolling.item, remove_item.bagging.item | ls_rolling_paper, ls_empty_baggy | The item used up with the buds |
| Rolling items per joint, Bagging items per bag | remove_item.rolling.quantity, remove_item.bagging.quantity | 1 | 1 to 100 |
| Joints per roll, Bags per fill | add_item | 1 | 1 to 100. Joints or bags given per action |
| Rolling duration, Bagging duration | duration | 2500 ms | 500 to 60,000. Per action |
| Rolls per session, Bags per session | max_actions | 15 | 1 to 100. The most actions in one go |
Joints
Each strain's joint has its own entry (entries), keyed by strain. A strain with no entry, or with Usable off, has no joint that can be smoked. The defaults are the same for all six.
| Option | Key | Default | Notes |
|---|---|---|---|
| Usable | usable | On | Players can smoke the joint from their inventory. Applies when it saves. |
| Required level | level | 1 | The level a player needs to smoke it |
| Smoke time | duration | 10000 ms | 500 to 60,000 |
The effects apply when the player finishes smoking. Several can be on at once, each with its own switch.
| Effect | Key | Default | Notes |
|---|---|---|---|
| Heal | effects.health | On, Health restored (amount) 50 | 0 to 200 |
| Relieve stress | effects.stress | On, Stress removed (amount) 50 | Passed to the joint hook, which relieves stress through your HUD. See hooks. |
| Armor | effects.armor | On, Armor added (amount) 20, Armor cap (max) 100 | Adds armor up to the cap |
| Speed boost | effects.speed | Off, Speed multiplier (multiplier) 1.49, Boost duration (duration) 30000 ms | Faster sprinting. The multiplier is 1 to 1.49. |
| Screen effect | effects.screen | On, Timecycle modifier (effect) stoned_monkeys, Effect duration (duration) 30000 ms | |
| Walk style | effects.walk | On, Movement clipset (clipset) move_m@drunk@a, Walk duration (duration) 30000 ms | |
| Camera shake | effects.shake | On, Shake name (name) DRUNK_SHAKE, Intensity (intensity) 2.0, Shake duration (duration) 30000 ms | Intensity 0 to 10 |
Experience
| Option | Key | Default | Notes |
|---|---|---|---|
| Level ladder | levels | 0, 2500, 10000, 20000, 50000, 100000 | The total XP for each level, up to 50 levels. Level 1 is always 0. Saving it moves every player to the level their XP reaches, and those moved up are told. |
| Farm search | rewards.plants_searched | 5 | XP for finding seeds at a farm |
| Harvest | rewards.plants_grown | 50 | XP for a harvest |
| Per bud | rewards.bud_produced | 5 | XP for each bud a harvest gives |
| Per joint | rewards.joints_rolled | 3 | XP for each joint a player rolls |
| Per bag | rewards.weed_bagged | 3 | XP for each bag a player packs |
Each reward is multiplied by the XP multiplier of the strain it comes from (see strains). Set a reward to 0 to turn it off; the player's lifetime counts still go up. Lab workers earn nobody XP.
Logging
| Option | Key | Default | Notes |
|---|---|---|---|
| Logging service | service | None (none) | Or Fivemanage (fivemanage, needs fmsdk running) or Discord (discord) |
| Screenshots | screenshots | Off | Adds a screenshot to each log. Fivemanage only. |
| Webhook name | discord.name | Weed | The webhook's display name |
| Webhook URL | discord.link | Empty | Your Discord webhook. Once set, the panel only shows that a value is set. |
| Avatar image | discord.image | https://i.imgur.com/ILTkWBh.png | The webhook's avatar |
| Footer image | discord.footer | https://i.imgur.com/ILTkWBh.png | The footer icon |
Set the webhook in the admin panel, never in shared/defaults.lua. The panel keeps it on the server: the logging settings are never sent to players.
Each event is a switch under events, all off by default.
| Event | Key | Logged when |
|---|---|---|
| Plant placed | new_plant | A player puts a pot down |
| Soil applied | soil_applied | A player adds soil to a pot |
| Seed planted | seed_applied | A player plants a seed |
| Plant watered | plant_watered | A player waters a plant |
| Plant fertilized | plant_fed | A player fertilizes a plant |
| Plant revived | plant_revived | A player revives a plant |
| Plant harvested | plant_harvested | A player harvests a plant |
| Plant destroyed | plant_deleted | A player destroys a plant |
| Joints rolled | weed_rolled | A player finishes rolling joints, or a packager rolls one |
| Weed bagged | weed_bagged | A player finishes bagging weed, or a packager bags one |
| Seeds bought | seed_purchased | A player buys seeds from the dealer |
| Supplies bought | shop_purchased | A player buys from the supply shop |
| Farm searched | farms_searched | A player finds seeds at a farm |
| Lab bought | lab_purchased | A player buys a lab |
| Lab sold | lab_sold | A player sells a lab, with the refund and the wallet paid out |
| Lab raided | lab_raided | A player or police officer breaks into a lab |
| Worker hired | worker_hired | A player hires a lab worker |
| Worker fired | worker_fired | A player fires a lab worker |
| Configuration changed | config_edited | An admin changes the configuration (one entry per visit to a section, up to 20 changes listed) or imports one |
Language
Every string is in locales/<code>.json, and English is the only file that ships. Copy locales/en.json to a new file such as locales/de.json, translate the values, and pick it with a replicated convar so clients read it too:
setr lation:locale "de"If the file for the chosen language is missing, English is used.
Files
These ship open. A change to the animations, icons or strings applies after restart lation_weed.
shared/defaults.lua
The shipped defaults: what each section is written from on the first start, what fills in an option a newer version adds, and what a reset in the admin panel puts back. Only the server reads it. Editing it doesn't change a server that already has its settings.
config/animations.lua
The animation, prop and length of each action. Lab workers use the same lengths, multiplied by Worker pace.
| Key | Used for | Length (ms) |
|---|---|---|
applySoil | Adding soil | 5000 |
applySeed | Planting a seed | 1400 |
applyWater | Watering | 5000 |
applyFertilizer | Fertilizing | 5000 |
revivePlant | Reviving | 4000 |
destroyPlant | Destroying | 4000 |
harvestPlant | Harvesting | 25000 |
abortPlanting | Giving up on a pot, picking up a table | 1400 |
searchFarm | Searching a farm plant. The server also uses it to check how long a search took. | 6000 |
purchaseSeeds | Buying from the dealer or the shop | 3000 |
placePot | A botanist putting a pot down | 1400 |
packageProduct | Rolling and bagging. Each strain's own duration under Tables replaces it. | 2500 |
useJoint | Smoking. The joint's own smoke time replaces it. | 10000 |
labRaid | Breaking into a lab | None (it plays during the skill check) |
config/icons.lua
The Font Awesome icons and colors of the prompts, notifications, placement controls, menus and /weedstats.
locales/en.json
Every string players and admins read, the admin panel and the lab panels included. See language.
Still stuck? Ask in our Discord: the people who write the scripts answer.
Last updated
Strains
The six default lation weed strains, every strain setting, how growth, yield and XP are worked out, and how to add, edit or remove a strain.
Developers
The lation weed server and client exports, the events it fires and its server and client hooks, with signatures, return shapes and Lua examples.