Zyke ResourcesDocumentation

Config

Explanations for all config values.

General Information

Additional Settings
If there is a feature within the script that you can't find in the script's config, there is a chance that the configuration lies within zyke-lib.

Keymapping
When stated to utilize keymapping, the key can be changed in your GTA / FiveM keybinds.

Keys
All available keys can be found here.

Prop Models
All prop models can be found here.

Ped Models
All ped models can be found here.

Blip Settings
All blip settings can be found here.

#Settings

All basic settings.

#debug

Enables extra logging, usually to track down issues.

Example:

lua
debug = false

#hud

Enables internal hud for all actions, this can be switched off if you want more server uniformity. This is only recommended to switch off if you know what you are doing.

Events:
Sync Item Data
Stop Using Item
Start Inhaling
Stop Inhaling

Example:

lua
hud = true

#lighterItem

Simply the lighter item that is required to light your cigarettes, joints, cigars and bong.

Example:

lua
lighterItem = "lighter"

#maxInhale

The max length you can hold you breath for, in seconds. Minimum required value is 0.1. It is recommended to keep this around 2.5-4.0.

Example:

lua
maxInhale = 3.0

#cancelBenefitsOnMaxHit

When you inhale for the entire duration, you still start coughing. If this option is set to true, all the effects that are usually applied will be removed.

Note that the visual effects are unchanged by this value.

Example:

lua
cancelBenefitsOnMaxHit = true

#firstTimeUseDisclaimer

When you use a smokeable item for the first time, a popup will appear displaying all the default keybinds. This will only appear once, and when closed down it is saved on the client. You can reset this by running /reset_disclaimer, or when you reinstall your game.

All keys used in the resource can be changed in your FiveM keybind settings, constantly displaying them on the selected keys on screen was a design choice we didn't think would fit.

You can also disable this disclaimer by setting the value to false, however, it is very much recommended to keep it as true to avoid any confusion.

Example:

lua
firstTimeUseDisclaimer = true

#keys

The default keys for all actions. These are all configurable in your FiveM keybind settings.

Example:

lua
keys = {
    ["hit"] = "E",
    ["switchPlacement"] = "H",
    ["cancel"] = "X",
    ["transferItem"] = "J",
},

#passiveSmoke

Configurable values for the passive smoke particles that appear for different types of smokeables.

Example:

lua
passiveSmoke = {
    joint = 0.03,
    cigarette = 0.03,
    cigar = 0.05,
},

#exhaleSmoke

Configurable values for the exhale smoke particles that appears for different types of smokeables.

Example:

lua
exhaleSmoke = {
    joint = 0.17,
    cigarette = 0.15,
    cigar = 0.18,
    bong = 0.3,
    vape = 0.25,
},

#decay

When joints, cigarettes or cigars are lit, there is a decay that takes place every second. It is a small amount that gets removed from the total amount to simulate the passive burning.

Example:

lua
decay = {
    joint = 0.1,
    cigarette = 0.1,
    cigar = 0.2,
},

#useMultiplier

This configuration allows you to change the base amount that will be used. A value of 1.0 is the default, and allows for 100 seconds of inhaling. Modifying this multiplier will change how everything for that drug is calculated.

All values will be multiplied by the useMultplier, this allows you to configure the smoking length as you please, whilst also having predictible effects.

Please see our examples below. The overall takeaway is that values are multiplied by the useMultiplier.

Multiplier : 1.0

  • 100 seconds of inhaling.
  • With an effect set as 60.0, you will receive 0.6 of said effect per second.


Multiplier : 2.0

  • 50 seconds of inhaling.
  • With an effect set as 60.0, you will receive 1.2 of said effect per second.


Multiplier : 0.5

  • 200 seconds of inhaling.
  • With an effect set as 60.0, you will receive 0.3 of said effect per second.


Multiplier : 0.1

  • 1000 seconds of inhaling.
  • With an effect set as 60.0, you will receive 0.06 of said effect per second.


Example:

lua
useMultiplier = {
    joint = 1.4,
    cigarette = 1.6,
    cigar = 1.3,
    bong = 1.0,
    vape = 0.4,
},

#propPosition

Various settings for the positions of the props spawning. It is important to modify these values when adding or changing the props to ensure that props are correctly aligned.

If you are using the script as is, there is no need to care for these values.

#particles

Various settings for particles.

Example:

lua
particles = {
    dict = "core",
    name = "exp_grd_bzgas_smoke",
    offsets = {
        ["p_amb_joint_01"] = {x = -0.11, y = 0.0, z = 0.0},
        ["ng_proc_cigarette01a"] = {x = -0.07, y = 0.0, z = 0.0},
        ["prop_cigar_03"] = {x = -0.01, y = 0.0, z = 0.0},
    }
},

#particles.color

Default rgba color for the smoke particles. This will be overriden by item-specific configurations.

Example:

lua
color = {190, 190, 190, 1.0}

#particles.offsets

Particle offsets for the different props, deciding where the particles spawn. Make sure to configure all props you add. Note that this does not count for vapes or bongs.

#effects

Various settings for the effects.

The effects work in a queue. This means that if you have smoked different substances, you will experience them all, for however long you consumed the smokeable for.

Example:

lua
effects = {
    maxDuration = 600,
    minAmount = 100.0,
    multiplier = 7.5,
    decay = 1.0,
},

#effects.maxDuration

The total and max duration for your effects. Note that this combined all your queued effects to determine if you can add more.

Example:

lua
maxDuration = 600

#effects.minAmount

The minimum total amount of seconds you need queued for your effects to start playing. This amount is recommended to be rather high to prevent instant highs that fade if you're not constantly smoking. It also ensures that you consume a good amount of product before a high can be felt.

Example:

lua
minAmount = 100.0

#effects.multiplier

Multiplier for the screen effect time based on the amount you used, can be configured to your server's needs but overall serves as a way to better display the high felt when smoking, not when you consume an unreal amount of the product.

Example:

lua
multiplier = 7.5

#effects.decay

If you stop smoking, we want to slowly remove the product from your system. Every 5 seconds, the decay is removed from your effect time. This approach ensures that you won't get hit with a high when you consume a very small amount of product once significant time has passed.

Example:

lua
decay = 1.0

#vapeExtras

Various extra settings specifically for vapes.

Example:

lua
vapeExtras = {
    batteryItem = "vape_battery",
    batteryDrain = 0.12,
    items = {
        ["vape_flavour_capsule"] = {
            color = "rainbow",
            effects = {...}
        }
    }
},

#vapeExtras.batteryItem

The item used to refill the battery in your vape.

Example:

lua
batteryItem = "vape_battery"

#vapeExtras.batteryDrain

The battery drained per second when inhaling.

Example:

lua
batteryDrain = 0.12

#vapeExtras.items

Available flavour packs for the vape. Each flavour allows for a different effect when consumed.

Each flavour has access to the same effect properties as any of the cigarettes, joints and cigars.

Example:

lua
items = {
    ["vape_flavour_capsule"] = {
        color = "rainbow",
        effects = {...}
    }
}

#bongExtras

Various extra settings specifically for bongs.

Example:

lua
bongExtras = {
    waterItem = "bong_water",
    waterDrain = 0.5,
    items = {
        ["weed_nugget"] = {
            effects = {...}
        }
    }
},

#bongExtras.waterItem

The item used to refill the water in your bong.

Example:

lua
waterItem = "bong_water"

#bongExtras.waterDrain

The water drained per second when inhaling.

Example:

lua
waterDrain = 0.5

#bongExtras.items

Available products to fill the bong with and smoke. Each product allows for a different effect when consumed.

Each product has access to the same effect properties as any of the cigarettes, joints and cigars.

Example:

lua
items = {
    ["weed_nugget"] = {
        effects = {...}
    }
}

#sound

Various sound files for different actions. Make sure that you have all of these files in your zyke_sounds resource.

Example:

lua
sound = {
    ["exhale"] = {
        name = "exhale.wav",
        volume = 0.2,
        distance = 2.0,
    },
    ["inhale"] = {
        name = "inhale.wav",
        volume = 0.05,
        distance = 2.0,
    },
    ...
}

#sounds.name

The file sound name that will be played.

Example:

lua
name = "exhale.wav"

#sounds.volume

The max volume that can be played. This volume is affected by the distance to the source.

Example:

lua
volume = 0.2

#sounds.distance

The max distance you can hear the sounds playing.

Example:

lua
distance = 2.0

#packs

Usable packs containing cigarettes, joints or cigars. Create these based on your needs, when given by any means our resource makes sure the required data exists for them item. Drag the pack to ues, and you will receive the item configured to be given.

Example:

lua
packs = {
    ["cigarette_pack"] = {
        itemToGive = "cigarette",
        amount = 20,
    },
    -- Feel free to add more types of packs below
}

#packs[x].itemToGive

The item to give when the pack is used.

Example:

lua
itemToGive = "cigarette"

#packs[x].amount

The initial amount for the pack, will be subtracted when the pack is used.

Example:

lua
amount = 20

#itemDataIndicators

Various styling properties you can change to easily personalize the design of the UI.

Example:

lua
itemDataIndicators = {
    color = "var(--blue)",
    animation = {
        ["finished"] = {
            opacity = 1,
            bottom = "0.5rem",
        },
        ["exit"] = {
            opacity = 0,
            bottom = "-2rem",
        }
    },
    style = {
        transform = "translateX(calc(-50% - 17rem))",
    }
},

#Cigarettes

Available cigarettes to smoke.

Example:

lua
Config.Cigarettes = {
    ["joint"] = {
        type = "joint",
        prop = "p_amb_joint_01",
        color = {0, 255, 0, 1.0},
        effects = {...}
    },
    ...
}

#Cigarettes[x].type

The type of cigarette.

Available types: joint, cigarette & cigar

Example:

lua
type = "joint"

#Cigarettes[x].prop

The prop for your cigarette.

Example:

lua
prop = "p_amb_joint_01"

#Cigarettes[x].color

item-specific coloring for the smoke particles. This overrides the default coloring when smoking this item, also applies to idle particles.

This has to be rgba or the string "rainbow".

Example (Rainbow color):

lua
color = "rainbow"


Example (Static color):

lua
color = {0, 255, 0, 1.0}

#Cigarettes[x].effects

Various effects available to apply after inhaling. All these effects are applied based on the amount used, see useMultiplier for more information.

Example:

lua
effects = {
    health = 50.0,
    armor = 25.0,
    screenEffect = "BikerFilter",
    clientFunc = function(value, item, metadata)
        -- print("Total amount has been removed:", value)
        -- print("Used item", item)
    end,
    serverFunc = function(value, item, metadata)
        -- print("Total amount has been removed:", value)
        -- print("Used item", item)
    end
}

#Cigarettes[x].effects.health

The total health you will gain when consuming an entire product.

Example:

lua
health = 50.0

#Cigarettes[x].effects.armor

The total armor you will gain when consuming an entire product.

Example:

lua
armor = 25.0

#Cigarettes[x].effects.stress

The total stress you will gain when consuming an entire product. If you want to lose stress, put this as a negative value.

Example:

lua
stress = -100.0

#Cigarettes[x].effects.stamina

The total stamina you will gain when consuming an entire product.

This value has to be quite high since you lose stamina fast. If you are quick & have good timings for your inhales, you can constantly run if the value is ~3100.0, this may depend on your gym / stamina script on your server.

Example:

lua
stamina = 2500.0

#Cigarettes[x].effects.food

The total food you will gain when consuming an entire product. If you want to lose food, put this as a negative value.

This effect requires you to have zyke_status installed.

Example:

lua
food = 100.0

#Cigarettes[x].effects.water

The total water you will gain when consuming an entire product. If you want to lose water, put this as a negative value.

This effect requires you to have zyke_status installed.

Example:

lua
water = 100.0

#Cigarettes[x].effects.screenEffect

The screen effect that will be played if you reach the minimum amount, more information can be found here. You can find more effects here.

Example:

lua
screenEffect = "BikerFilter"

#Cigarettes[x].effects.walkEffect

The walkeffect that will be played if you reach the minimum amount, more information can be found here.

Example:

lua
walkEffect = "move_m@drunk@verydrunk"

#Cigarettes[x].effects.multiplier

This is an item-specific multiplier that can simulate a specific potency for the smokeable. There is a type-specific multiplier found here that will be overriden.

Example:

lua
multiplier = 5.0

#Cigarettes[x].effects.clientFunc

A client function that is ran after inhaling, providing you with the amount used and the current item, or current flavour/product, that was used.

This can be used to incorporate other status systems creating external effects.

Example:

lua
---@param value number
---@param item string
---@param metadata table
clientFunc = function(value, item, metadata)
    -- print("Total amount has been removed:", value)
    -- print("Used item", item)
end,

#Cigarettes[x].effects.serverFunc

A server function that is ran after inhaling, providing you with the player id that triggered the function, the amount used and the current item, or current flavour/product, that was used.

This can be used to incorporate other status systems creating external effects.

Example:

lua
---@param playerId integer
---@param value number
---@param item string
---@param metadata table
serverFunc = function(playerId, value, item, metadata)
    -- print("Server function triggered by", playerId)
    -- print("Total amount has been removed:", value)
    -- print("Used item", item)
end,

#Refillables

Various items and props for bongs and vapes.

Example:

lua
Config.Refillables = {
    ["bong"] = {
        type = "bong",
        prop = "prop_bong_01",
    },
    ["vape"] = {
        type = "vape",
        prop = "ba_prop_battle_vape_01",
    },
    ... Add more items with different props
}

#LighterProps

Customize the lighter prop model and it's attachment properties, allowing a range of lighters to all fit perfectly with some adjustments.

Example:

lua
Config.LighterProps = {
    ["lighter"] = {
        model = "p_cs_lighter_01",

        ["hand"] = {
            ["bong"] = {
                bone = 64016,
                offset = {x = 0.01, y = -0.03, z = -0.02},
                rotation = {x = -50.0, y = 50.0, z = -50.0},
            },
            ...
        },

        ["mouth"] = {
            ["cigarette"] = {
                bone = 64016,
                offset = {x = 0.0, y = -0.03, z = -0.02},
                rotation = {x = -50.0, y = 50.0, z = -50.0},
            },
            ...
        }
    },
    -- Add other lighter props here
}