Jobs Scripts
ds-advancedweed



Requirements
- QBCore / Qbox / ESX
- OneSync Infinity
- Server v7290 or newer
- oxmysql

Overview
# ds-advancedweed
Advanced weed growing, full gene-pair genetics/breeding, NPC + player dealing, and
self-consumption for **QBCore**, **Qbox** and **ESX**, with a custom HTML/NUI menu
(no ox_lib/qb-menu dependency).
## Features
- Place grow pots, drying racks and DNA tables as owned, persistent world props.
- Plant seeds/clones, water/feed them, watch them move through seedling → vegetative →
flowering → ready over real time (rate driven by the strain's genetics), then harvest.
- **Full Mendelian gene-pair genetics**: every strain has real allele pairs per trait
(THC, CBD, yield, growth speed, resilience, bud color, smell). Breed two seeds at a
DNA table to cross every gene pair (with a small mutation chance) into a brand new
named hybrid. Or pay to attempt a targeted gene edit on a single seed (risk of failure
or destroying the seed).
- Dry wet buds on a drying rack, then sell or smoke the cured bud.
- Sell to configurable NPC dealers (price = base $/g × rarity × quality × market swing)
or directly to other players via a proximity deal-offer flow with an atomic,
scam-proof handoff.
- Smoke buds/joints for a THC/quality-scaled screen + movement effect, with a rolling
tolerance system so chain-smoking gives diminishing returns.
- Runs on QBCore, Qbox or ESX (auto-detected), and on ox_inventory or qb-inventory
(auto-detected) with a documented fallback mode for plain legacy ESX inventory.
## Requirements
- `oxmysql`
- One of: `qb-core`, `qbx_core` (Qbox), or `es_extended` (ESX legacy/latest)
- Recommended: `ox_inventory` — see "Inventory modes" below for why
## Installation
1. Drop this folder into your `resources` directory as `ds-advancedweed`.
2. Add `ensure ds-advancedweed` to your `server.cfg`, **after** your framework,
`oxmysql`, and your inventory resource.
3. Register the items:
- **ox_inventory**: copy `install/ox_inventory_items.txt` into `ox_inventory/data/items.lua`.
- **qb-inventory,Any Inventory Thats Match qb-inventory Style EX: ps-inventory (no ox_inventory)**: copy `install/qb_item.lua` into `qb-core/shared/items.lua`.
- **plain ESX (no ox_inventory)**: run `install/esx_item.sql` against your database.
4. The database tables are created automatically on first start
(see `install/ds_advancedweeed.sql` if you'd rather run it manually).
5. Start the server. Watch the console for `[ds-advancedweed]` lines confirming the
detected framework and inventory mode.
6. Give yourself a starter seed to test: `/weed_giveseed OG Kush` (admin-only, see
`Config.AdminAce` / `Config.AdminGroups`). `/weed_liststrains` lists the seed bank.
## Inventory modes
`Config.Inventory = 'auto'` picks, in order:
1. **ox_inventory** — if present, regardless of framework. This is the only inventory
with real per-item metadata on top of ESX, so it's the recommended setup everywhere.
2. **qb-inventory** (QBCore/Qbox only) — native per-slot `info` table metadata.
3. **esx-basic** — plain legacy ESX inventory has no per-item metadata at all. In this
mode hybrid breeding/genetics still run and are stored server-side, but sellable/
smokable buds collapse into four fixed quality-tier items (`Config.BasicTierItems`)
instead of carrying a strain name/genetics on the item. Seeds/clones/DNA-table
breeding are unavailable in this mode. Install `ox_inventory` if you want full
genetics on ESX — it works fine alongside ESX's job/money systems.
## Configuration
Everything tunable lives in `config/config.lua` (items, growing rates, dealer
locations/pricing, player-trade distance, consumption/tolerance, optional dispatch
integration) and `config/strains.lua` (seed-bank starter strains and their hand-authored
genetics). The genetics model itself (trait ranges, gene-pair counts, mutation chance,
rarity thresholds, gene-edit cost/risk) is in `Config.Genetics` inside `config/config.lua`.
`Config.Items`' generic seed/clone/wet-bud/bud names are only used for bred/edited
hybrids. Each seed-bank strain in `config/strains.lua` (via its `slug` field) instead
gets its own dedicated item (e.g. `weed_seed_og_kush`) — see `shared/strain_items.lua`,
and paste the extra entries from `install/ox_inventory_items.txt` / `install/qb_item.lua`
alongside the base items.
`Config.Placement.models` uses generic prop hashes as placeholders for the pot/drying
rack/DNA table — swap these for your own props/models.
`Config.Dispatch.enabled` is `false` by default; flip it on and pick `Config.Dispatch.type`
(`qs-dispatch` / `ps-dispatch` / `cd_dispatch` / generic `event`) if you want dealer sales
to have a chance of alerting police.
## Notes / known limitations
- All interactions use a lightweight built-in proximity `[E]` prompt — no ox_target/
qb-target dependency. If two interactables are very close together (e.g. a dealer
right next to a player's pot) the hint prompt can flicker between them; keep dealer
spawns away from placeable spots.


