G.A.SG.A.S Docs
G.A.S Docs / Other

Dispensary — GreenLeaf Wellness

A licensed medical cannabis dispensary with a storefront NUI styled as a full desktop browser window — med-card gating, live shelf stock, a staffed job with payroll, wholesale supply runs, and a business till.

Version v1.0.0Framework QboxUpdated July 2026 $24.99 Get it on the store →

Licensed medical cannabis dispensary at the Smoke on the Water storefront (Vespucci Beach boardwalk). The storefront NUI renders as a full desktop browser window with the dispensary's website (greenleafwellness.com/shop) inside — traffic lights, address bar and all.

Flow (same as real life)

  1. Visit Los Santos City Hall front desk → buy the **Medical Marijuana Card** ($100 + city tax). This sets metadata.licences.weed via rr-cityhall (license key fauna_permit).
  2. Walk to the GreenLeaf counter (green chevron = licensed, amber = browse only) → press [E].
  3. Browse the site, fill the cart, Place Order. No card → checkout is blocked with a "visit City Hall" notice (browsing still allowed).
  4. Payment: bank first, cash fallback. 10% cannabis excise tax forwards to the city treasury (rr-citybank) when running.

Server-side hardening

  • Cart is re-priced from Config.Catalog on the server; client totals ignored.
  • License re-checked server-side at checkout.
  • CanCarryItem verified per line before charging; per-source checkout lock.
  • Every sale logged to rr_dispensary_sales (auto-created).

Items (ox_inventory)

disp_ogkush, disp_bluedream, disp_gelato, disp_purplehaze, disp_joint, disp_gummies, disp_brownie, disp_vape, disp_shatter, disp_cbd_oil, disp_case — appended to ox_inventory/data/items.lua (marked RE-APPLY block). Stress/hunger applied natively by ox_inventory. Product icons: rr-dispensary/html/images/*.svg (storefront) + ox_inventory/web/images/disp_*.png (inventory — RE-APPLY on update).

Dispensary job & supply chain

Job dispensary (qbx_core shared/jobs.lua, RE-APPLY): Budtender → Senior Budtender → Assistant Manager → Manager → Owner (boss). Payroll is automatic via gas-timeclock once clocked in.

  • Shelf stock IS the back-room stash (dispensary_storage, job-locked). Checkout removes sold product from it; the storefront shows live stock badges ("12 in stock" / "Only 4 left" / "Out of stock").
  • Staff room (Config.StaffRoom, ox_target): Clock In/Out · Back-Room Storage · Unpack Cases · Business Till.
  • Licensed distributor (Config.Facility — Pacific Growers Collective, Grapeseed): on-duty staff order wholesale disp_cases (10 units, 40% of retail, paid from the till), optionally grab a delivery van, haul cases back (6kg each — you'll want the van), and unpack at the staff room.
  • Till (rr_dispensary_business): customer sale revenue (pre-tax) accrues here and funds wholesale orders. Anyone can deposit; only the Owner withdraws. Wholesale orders logged to rr_dispensary_orders.
  • Auto-restock fallback (Config.AutoRestock, default ON): tops every product up to 15 units hourly so the shop works with no staff hired. Turn off once the job is staffed.

Commands

  • /dispensary — open the store (must be within 15m of the counter)
  • /dispcoords — print + copy a vec4 to relocate Config.Location / Config.StaffRoom
  • /dispsupplycoords — print + copy a vec4 to relocate Config.Facility

Notes

  • [custom] is auto-ensured; no server.cfg change needed.
  • The browser-window look is an intentional user-requested exception to the CEO dashboard standard — do not "fix" it to the CEO shell.
Last updated August 10, 2026