prp-nicotine

Zeen-style nicotine pouches for FiveM. Open cans for pouches, consume for stress relief. Copy-paste ready item definitions for ox_inventory, qb-inventory, and qs-inventory.

Zeen Spearmint Can

Spearmint Can

Zeen Mint Can

Mint Can

Zeen Wintergreen Can

Wintergreen Can

What's in the Package

Highlights

Open cans for pouches — Use a Zeen can to receive pouches (configurable yield, default 15).

Consume pouches — Play chewing animation, trigger screen effect, reduce stress (when framework supports it).

Three flavors — Spearmint, Mint, Wintergreen. Each has a can and pouch item.

Multi-inventory — ox_inventory, qb-inventory, qs-inventory. Use the tabs below for copy-paste ready definitions.

Multi-framework — QBX, QBCore, ESX, standalone. Stress relief requires framework; standalone = visual effects only.

Installation

  1. Place prp-nicotine in your resources folder (e.g. resources/[prp]/prp-nicotine).
  2. Add to server.cfg after dependencies:
    ensure ox_lib
    ensure ox_inventory   # or qb-inventory / qs-inventory
    ensure qbx_core   # or qb-core / es_extended
    ensure prp-nicotine
  3. Copy item definitions using the tabbed definitions below (ox_inventory, qb-inventory, or qs-inventory).
  4. Copy images from prp-nicotine/images/ to your inventory's image folder:
    • zeen_spearmint_can.png, zeen_spearmint_pouch.png
    • zeen_mint_can.png, zeen_mint_pouch.png
    • zeen_wintergreen_can.png, zeen_wintergreen_pouch.png
    (ox_inventory: ox_inventory/web/images/; qb-inventory/qs-inventory: your shared images path.)
  5. Add cans to your shop (see Configuring Shops).

Item Definitions

Choose your inventory system below and copy the complete definitions.

Navigate to ox_inventory/data/items.lua and add the following to the return table:

['zeen_spearmint_can'] = {
    label = 'Zeen Spearmint Can',
    weight = 100,
    stack = true,
    close = true,
    consume = 0,
    client = {
        image = 'zeen_spearmint_can.png',
        event = 'nicotine:useCan',
    },
},
['zeen_spearmint_pouch'] = {
    label = 'Zeen Spearmint Pouch',
    weight = 5,
    stack = true,
    close = true,
    consume = 0,
    client = {
        image = 'zeen_spearmint_pouch.png',
        event = 'nicotine:usePouch',
    },
},
['zeen_mint_can'] = {
    label = 'Zeen Mint Can',
    weight = 100,
    stack = true,
    close = true,
    consume = 0,
    client = {
        image = 'zeen_mint_can.png',
        event = 'nicotine:useCan',
    },
},
['zeen_mint_pouch'] = {
    label = 'Zeen Mint Pouch',
    weight = 5,
    stack = true,
    close = true,
    consume = 0,
    client = {
        image = 'zeen_mint_pouch.png',
        event = 'nicotine:usePouch',
    },
},
['zeen_wintergreen_can'] = {
    label = 'Zeen Wintergreen Can',
    weight = 100,
    stack = true,
    close = true,
    consume = 0,
    client = {
        image = 'zeen_wintergreen_can.png',
        event = 'nicotine:useCan',
    },
},
['zeen_wintergreen_pouch'] = {
    label = 'Zeen Wintergreen Pouch',
    weight = 5,
    stack = true,
    close = true,
    consume = 0,
    client = {
        image = 'zeen_wintergreen_pouch.png',
        event = 'nicotine:usePouch',
    },
},

Add items to qb-core/shared/items.lua (or your inventory's shared items) and CreateUseableItem in a server script:

-- Shared items (qb-core/shared/items.lua or qb-inventory/shared/items.lua)
['zeen_spearmint_can'] = { ['name'] = 'zeen_spearmint_can', ['label'] = 'Zeen Spearmint Can', ['weight'] = 100, ['type'] = 'item', ['image'] = 'zeen_spearmint_can.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['description'] = '' },
['zeen_spearmint_pouch'] = { ['name'] = 'zeen_spearmint_pouch', ['label'] = 'Zeen Spearmint Pouch', ['weight'] = 5, ['type'] = 'item', ['image'] = 'zeen_spearmint_pouch.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['description'] = '' },
['zeen_mint_can'] = { ['name'] = 'zeen_mint_can', ['label'] = 'Zeen Mint Can', ['weight'] = 100, ['type'] = 'item', ['image'] = 'zeen_mint_can.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['description'] = '' },
['zeen_mint_pouch'] = { ['name'] = 'zeen_mint_pouch', ['label'] = 'Zeen Mint Pouch', ['weight'] = 5, ['type'] = 'item', ['image'] = 'zeen_mint_pouch.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['description'] = '' },
['zeen_wintergreen_can'] = { ['name'] = 'zeen_wintergreen_can', ['label'] = 'Zeen Wintergreen Can', ['weight'] = 100, ['type'] = 'item', ['image'] = 'zeen_wintergreen_can.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['description'] = '' },
['zeen_wintergreen_pouch'] = { ['name'] = 'zeen_wintergreen_pouch', ['label'] = 'Zeen Wintergreen Pouch', ['weight'] = 5, ['type'] = 'item', ['image'] = 'zeen_wintergreen_pouch.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['description'] = '' },

-- Server: CreateUseableItem (e.g. in prp-nicotine/server.lua or a bridge)
QBCore.Functions.CreateUseableItem('zeen_spearmint_can', function(source, item) TriggerClientEvent('nicotine:useCan', source, item) end)
QBCore.Functions.CreateUseableItem('zeen_spearmint_pouch', function(source, item) TriggerClientEvent('nicotine:usePouch', source, item) end)
QBCore.Functions.CreateUseableItem('zeen_mint_can', function(source, item) TriggerClientEvent('nicotine:useCan', source, item) end)
QBCore.Functions.CreateUseableItem('zeen_mint_pouch', function(source, item) TriggerClientEvent('nicotine:usePouch', source, item) end)
QBCore.Functions.CreateUseableItem('zeen_wintergreen_can', function(source, item) TriggerClientEvent('nicotine:useCan', source, item) end)
QBCore.Functions.CreateUseableItem('zeen_wintergreen_pouch', function(source, item) TriggerClientEvent('nicotine:usePouch', source, item) end)

Add items to your qs-inventory shared config and register useable items on the server:

-- Shared items (qs-inventory/config.lua or shared items)
['zeen_spearmint_can'] = { ['name'] = 'zeen_spearmint_can', ['label'] = 'Zeen Spearmint Can', ['weight'] = 100, ['type'] = 'item', ['image'] = 'zeen_spearmint_can.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['description'] = '' },
['zeen_spearmint_pouch'] = { ['name'] = 'zeen_spearmint_pouch', ['label'] = 'Zeen Spearmint Pouch', ['weight'] = 5, ['type'] = 'item', ['image'] = 'zeen_spearmint_pouch.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['description'] = '' },
['zeen_mint_can'] = { ['name'] = 'zeen_mint_can', ['label'] = 'Zeen Mint Can', ['weight'] = 100, ['type'] = 'item', ['image'] = 'zeen_mint_can.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['description'] = '' },
['zeen_mint_pouch'] = { ['name'] = 'zeen_mint_pouch', ['label'] = 'Zeen Mint Pouch', ['weight'] = 5, ['type'] = 'item', ['image'] = 'zeen_mint_pouch.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['description'] = '' },
['zeen_wintergreen_can'] = { ['name'] = 'zeen_wintergreen_can', ['label'] = 'Zeen Wintergreen Can', ['weight'] = 100, ['type'] = 'item', ['image'] = 'zeen_wintergreen_can.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['description'] = '' },
['zeen_wintergreen_pouch'] = { ['name'] = 'zeen_wintergreen_pouch', ['label'] = 'Zeen Wintergreen Pouch', ['weight'] = 5, ['type'] = 'item', ['image'] = 'zeen_wintergreen_pouch.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['description'] = '' },

-- Server: CreateUseableItem (prp-nicotine handles this when using qb-inventory/qs-inventory bridge)
QBCore.Functions.CreateUseableItem('zeen_spearmint_can', function(source, item) TriggerClientEvent('nicotine:useCan', source, item) end)
QBCore.Functions.CreateUseableItem('zeen_spearmint_pouch', function(source, item) TriggerClientEvent('nicotine:usePouch', source, item) end)
QBCore.Functions.CreateUseableItem('zeen_mint_can', function(source, item) TriggerClientEvent('nicotine:useCan', source, item) end)
QBCore.Functions.CreateUseableItem('zeen_mint_pouch', function(source, item) TriggerClientEvent('nicotine:usePouch', source, item) end)
QBCore.Functions.CreateUseableItem('zeen_wintergreen_can', function(source, item) TriggerClientEvent('nicotine:useCan', source, item) end)
QBCore.Functions.CreateUseableItem('zeen_wintergreen_pouch', function(source, item) TriggerClientEvent('nicotine:usePouch', source, item) end)

Copy images from prp-nicotine/images/ to your inventory's image folder.

Configuring Shops

With prp-shops

Add the can items to your shop item lists:

['zeen_spearmint_can'] = 40,
['zeen_mint_can'] = 40,
['zeen_wintergreen_can'] = 40,

With ox_inventory shops

Add to ox_inventory/data/shops.lua with desired prices.

With qb-shops

Add the Zeen can items to your shop configuration.

Configuration

Edit config.lua:

OptionDefaultDescription
PouchesPerCan15Pouches given when opening a can
EnableStressReductiontrueEnable stress relief (requires framework)
StressReduction.min1Min stress reduction
StressReduction.max5Max stress reduction
CooldownMs3000Cooldown between uses (ms)
ScreenEffect'DeadlineNeon'GTA screen effect name
EffectDuration10000Effect duration (ms)
Animation{ dict, name, duration }Chewing animation

Compatibility

FrameworkInventoryStressStatus
QBXox_inventory, qb-inventory, qs-inventoryYes (statebags)Full
QBCoreox_inventory, qb-inventory, qs-inventoryYes (hud:client:UpdateStress)Full
ESXox_inventoryYes (esx_status)Full
Standaloneox_inventoryNoVisual effects only

Flavors

Troubleshooting