529 lines
		
	
	
	
		
			20 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			529 lines
		
	
	
	
		
			20 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
-- Variables
 | 
						|
 | 
						|
local QBCore = exports['qb-core']:GetCoreObject()
 | 
						|
local alcoholCount = 0
 | 
						|
local healing, parachuteEquipped = false, false
 | 
						|
local currVest, currVestTexture = nil, nil
 | 
						|
 | 
						|
-- Functions
 | 
						|
RegisterNetEvent('QBCore:Client:UpdateObject', function()
 | 
						|
    QBCore = exports['qb-core']:GetCoreObject()
 | 
						|
end)
 | 
						|
 | 
						|
local function loadAnimDict(dict)
 | 
						|
    if HasAnimDictLoaded(dict) then return end
 | 
						|
    RequestAnimDict(dict)
 | 
						|
    while not HasAnimDictLoaded(dict) do
 | 
						|
        Wait(10)
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
local function equipParachuteAnim()
 | 
						|
    loadAnimDict('clothingshirt')
 | 
						|
    TaskPlayAnim(PlayerPedId(), 'clothingshirt', 'try_shirt_positive_d', 8.0, 1.0, -1, 49, 0, false, false, false)
 | 
						|
end
 | 
						|
 | 
						|
local function healOxy()
 | 
						|
    if healing then return end
 | 
						|
 | 
						|
    healing = true
 | 
						|
 | 
						|
    local count = 9
 | 
						|
    while count > 0 do
 | 
						|
        Wait(1000)
 | 
						|
        count -= 1
 | 
						|
        SetEntityHealth(PlayerPedId(), GetEntityHealth(PlayerPedId()) + 6)
 | 
						|
    end
 | 
						|
    healing = false
 | 
						|
end
 | 
						|
 | 
						|
local function trevorEffect()
 | 
						|
    StartScreenEffect('DrugsTrevorClownsFightIn', 3.0, 0)
 | 
						|
    Wait(3000)
 | 
						|
    StartScreenEffect('DrugsTrevorClownsFight', 3.0, 0)
 | 
						|
    Wait(3000)
 | 
						|
    StartScreenEffect('DrugsTrevorClownsFightOut', 3.0, 0)
 | 
						|
    StopScreenEffect('DrugsTrevorClownsFight')
 | 
						|
    StopScreenEffect('DrugsTrevorClownsFightIn')
 | 
						|
    StopScreenEffect('DrugsTrevorClownsFightOut')
 | 
						|
end
 | 
						|
 | 
						|
local function methBagEffect()
 | 
						|
    local startStamina = 8
 | 
						|
    trevorEffect()
 | 
						|
    SetRunSprintMultiplierForPlayer(PlayerId(), 1.49)
 | 
						|
    while startStamina > 0 do
 | 
						|
        Wait(1000)
 | 
						|
        if math.random(5, 100) < 10 then
 | 
						|
            RestorePlayerStamina(PlayerId(), 1.0)
 | 
						|
        end
 | 
						|
        startStamina = startStamina - 1
 | 
						|
        if math.random(5, 100) < 51 then
 | 
						|
            trevorEffect()
 | 
						|
        end
 | 
						|
    end
 | 
						|
    SetRunSprintMultiplierForPlayer(PlayerId(), 1.0)
 | 
						|
end
 | 
						|
 | 
						|
local function ecstasyEffect()
 | 
						|
    local startStamina = 30
 | 
						|
    SetFlash(0, 0, 500, 7000, 500)
 | 
						|
    while startStamina > 0 do
 | 
						|
        Wait(1000)
 | 
						|
        startStamina -= 1
 | 
						|
        RestorePlayerStamina(PlayerId(), 1.0)
 | 
						|
        if math.random(1, 100) < 51 then
 | 
						|
            SetFlash(0, 0, 500, 7000, 500)
 | 
						|
            ShakeGameplayCam('SMALL_EXPLOSION_SHAKE', 0.08)
 | 
						|
        end
 | 
						|
    end
 | 
						|
    if IsPedRunning(PlayerPedId()) then
 | 
						|
        SetPedToRagdoll(PlayerPedId(), math.random(1000, 3000), math.random(1000, 3000), 3, false, false, false)
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
local function alienEffect()
 | 
						|
    StartScreenEffect('DrugsMichaelAliensFightIn', 3.0, 0)
 | 
						|
    Wait(math.random(5000, 8000))
 | 
						|
    StartScreenEffect('DrugsMichaelAliensFight', 3.0, 0)
 | 
						|
    Wait(math.random(5000, 8000))
 | 
						|
    StartScreenEffect('DrugsMichaelAliensFightOut', 3.0, 0)
 | 
						|
    StopScreenEffect('DrugsMichaelAliensFightIn')
 | 
						|
    StopScreenEffect('DrugsMichaelAliensFight')
 | 
						|
    StopScreenEffect('DrugsMichaelAliensFightOut')
 | 
						|
end
 | 
						|
 | 
						|
local function crackBaggyEffect()
 | 
						|
    local startStamina = 8
 | 
						|
    local ped = PlayerPedId()
 | 
						|
    alienEffect()
 | 
						|
    SetRunSprintMultiplierForPlayer(PlayerId(), 1.3)
 | 
						|
    while startStamina > 0 do
 | 
						|
        Wait(1000)
 | 
						|
        if math.random(1, 100) < 10 then
 | 
						|
            RestorePlayerStamina(PlayerId(), 1.0)
 | 
						|
        end
 | 
						|
        startStamina -= 1
 | 
						|
        if math.random(1, 100) < 60 and IsPedRunning(ped) then
 | 
						|
            SetPedToRagdoll(ped, math.random(1000, 2000), math.random(1000, 2000), 3, false, false, false)
 | 
						|
        end
 | 
						|
        if math.random(1, 100) < 51 then
 | 
						|
            alienEffect()
 | 
						|
        end
 | 
						|
    end
 | 
						|
    if IsPedRunning(ped) then
 | 
						|
        SetPedToRagdoll(ped, math.random(1000, 3000), math.random(1000, 3000), 3, false, false, false)
 | 
						|
    end
 | 
						|
    SetRunSprintMultiplierForPlayer(PlayerId(), 1.0)
 | 
						|
end
 | 
						|
 | 
						|
local function cokeBaggyEffect()
 | 
						|
    local startStamina = 20
 | 
						|
    local ped = PlayerPedId()
 | 
						|
    alienEffect()
 | 
						|
    SetRunSprintMultiplierForPlayer(PlayerId(), 1.1)
 | 
						|
    while startStamina > 0 do
 | 
						|
        Wait(1000)
 | 
						|
        if math.random(1, 100) < 20 then
 | 
						|
            RestorePlayerStamina(PlayerId(), 1.0)
 | 
						|
        end
 | 
						|
        startStamina -= 1
 | 
						|
        if math.random(1, 100) < 10 and IsPedRunning(ped) then
 | 
						|
            SetPedToRagdoll(ped, math.random(1000, 3000), math.random(1000, 3000), 3, false, false, false)
 | 
						|
        end
 | 
						|
        if math.random(1, 300) < 10 then
 | 
						|
            alienEffect()
 | 
						|
            Wait(math.random(3000, 6000))
 | 
						|
        end
 | 
						|
    end
 | 
						|
    if IsPedRunning(ped) then
 | 
						|
        SetPedToRagdoll(ped, math.random(1000, 3000), math.random(1000, 3000), 3, false, false, false)
 | 
						|
    end
 | 
						|
    SetRunSprintMultiplierForPlayer(PlayerId(), 1.0)
 | 
						|
end
 | 
						|
 | 
						|
-- Events
 | 
						|
 | 
						|
RegisterNetEvent('consumables:client:Eat', function(itemName)
 | 
						|
    QBCore.Functions.Progressbar('eat_something', Lang:t('consumables.eat_progress'), 5000, false, true, {
 | 
						|
        disableMovement = false,
 | 
						|
        disableCarMovement = false,
 | 
						|
        disableMouse = false,
 | 
						|
        disableCombat = true
 | 
						|
    }, {
 | 
						|
        animDict = 'mp_player_inteat@burger',
 | 
						|
        anim = 'mp_player_int_eat_burger',
 | 
						|
        flags = 49
 | 
						|
    }, {
 | 
						|
        model = 'prop_cs_burger_01',
 | 
						|
        bone = 60309,
 | 
						|
        coords = vec3(0.0, 0.0, -0.02),
 | 
						|
        rotation = vec3(30, 0.0, 0.0),
 | 
						|
    }, {}, function() -- Done
 | 
						|
        TriggerEvent('qb-inventory:client:ItemBox', QBCore.Shared.Items[itemName], 'remove')
 | 
						|
        TriggerServerEvent('consumables:server:addHunger', QBCore.Functions.GetPlayerData().metadata.hunger + Config.Consumables.eat[itemName])
 | 
						|
        TriggerServerEvent('hud:server:RelieveStress', math.random(2, 4))
 | 
						|
    end)
 | 
						|
end)
 | 
						|
 | 
						|
RegisterNetEvent('consumables:client:Drink', function(itemName)
 | 
						|
    QBCore.Functions.Progressbar('drink_something', Lang:t('consumables.drink_progress'), 5000, false, true, {
 | 
						|
        disableMovement = false,
 | 
						|
        disableCarMovement = false,
 | 
						|
        disableMouse = false,
 | 
						|
        disableCombat = true
 | 
						|
    }, {
 | 
						|
        animDict = 'mp_player_intdrink',
 | 
						|
        anim = 'loop_bottle',
 | 
						|
        flags = 49
 | 
						|
    }, {
 | 
						|
        model = 'vw_prop_casino_water_bottle_01a',
 | 
						|
        bone = 60309,
 | 
						|
        coords = vec3(0.0, 0.0, -0.05),
 | 
						|
        rotation = vec3(0.0, 0.0, -40),
 | 
						|
    }, {}, function() -- Done
 | 
						|
        TriggerEvent('qb-inventory:client:ItemBox', QBCore.Shared.Items[itemName], 'remove')
 | 
						|
        TriggerServerEvent('consumables:server:addThirst', QBCore.Functions.GetPlayerData().metadata.thirst + Config.Consumables.drink[itemName])
 | 
						|
    end)
 | 
						|
end)
 | 
						|
 | 
						|
RegisterNetEvent('consumables:client:DrinkAlcohol', function(itemName)
 | 
						|
    QBCore.Functions.Progressbar('drink_alcohol', Lang:t('consumables.liqour_progress'), math.random(3000, 6000), false, true, {
 | 
						|
        disableMovement = false,
 | 
						|
        disableCarMovement = false,
 | 
						|
        disableMouse = false,
 | 
						|
        disableCombat = true
 | 
						|
    }, {
 | 
						|
        animDict = 'mp_player_intdrink',
 | 
						|
        anim = 'loop_bottle',
 | 
						|
        flags = 49
 | 
						|
    }, {
 | 
						|
        model = 'prop_cs_beer_bot_40oz',
 | 
						|
        bone = 60309,
 | 
						|
        coords = vec3(0.0, 0.0, -0.05),
 | 
						|
        rotation = vec3(0.0, 0.0, -40),
 | 
						|
    }, {}, function() -- Done
 | 
						|
        TriggerEvent('qb-inventory:client:ItemBox', QBCore.Shared.Items[itemName], 'remove')
 | 
						|
        TriggerServerEvent('consumables:server:drinkAlcohol', itemName)
 | 
						|
        TriggerServerEvent('consumables:server:addThirst', QBCore.Functions.GetPlayerData().metadata.thirst + Config.Consumables.alcohol[itemName])
 | 
						|
        TriggerServerEvent('hud:server:RelieveStress', math.random(2, 4))
 | 
						|
        alcoholCount += 1
 | 
						|
        AlcoholLoop()
 | 
						|
        if alcoholCount > 1 and alcoholCount < 4 then
 | 
						|
            TriggerEvent('evidence:client:SetStatus', 'alcohol', 200)
 | 
						|
        elseif alcoholCount >= 4 then
 | 
						|
            TriggerEvent('evidence:client:SetStatus', 'heavyalcohol', 200)
 | 
						|
        end
 | 
						|
    end, function() -- Cancel
 | 
						|
        QBCore.Functions.Notify(Lang:t('consumables.canceled'), 'error')
 | 
						|
    end)
 | 
						|
end)
 | 
						|
 | 
						|
RegisterNetEvent('consumables:client:Custom', function(itemName)
 | 
						|
    QBCore.Functions.TriggerCallback('consumables:itemdata', function(data)
 | 
						|
        QBCore.Functions.Progressbar('custom_consumable', data.progress.label, data.progress.time, false, true, {
 | 
						|
            disableMovement = false,
 | 
						|
            disableCarMovement = false,
 | 
						|
            disableMouse = false,
 | 
						|
            disableCombat = true
 | 
						|
        }, {
 | 
						|
            animDict = data.animation.animDict,
 | 
						|
            anim = data.animation.anim,
 | 
						|
            flags = data.animation.flags
 | 
						|
        }, {
 | 
						|
            model = data.prop.model,
 | 
						|
            bone = data.prop.bone,
 | 
						|
            coords = data.prop.coords,
 | 
						|
            rotation = data.prop.rotation
 | 
						|
        }, {}, function() -- Done
 | 
						|
            ClearPedTasks(PlayerPedId())
 | 
						|
            TriggerEvent('qb-inventory:client:ItemBox', QBCore.Shared.Items[itemName], 'remove')
 | 
						|
            if data.replenish.type then
 | 
						|
                TriggerServerEvent('consumables:server:add' .. data.replenish.type, QBCore.Functions.GetPlayerData().metadata[string.lower(data.replenish.type)] + data.replenish.replenish)
 | 
						|
            end
 | 
						|
            if data.replenish.isAlcohol then
 | 
						|
                alcoholCount += 1
 | 
						|
                AlcoholLoop()
 | 
						|
                if alcoholCount > 1 and alcoholCount < 4 then
 | 
						|
                    TriggerEvent('evidence:client:SetStatus', 'alcohol', 200)
 | 
						|
                elseif alcoholCount >= 4 then
 | 
						|
                    TriggerEvent('evidence:client:SetStatus', 'heavyalcohol', 200)
 | 
						|
                end
 | 
						|
            end
 | 
						|
            if data.replenish.event then
 | 
						|
                TriggerEvent(data.replenish.event)
 | 
						|
            end
 | 
						|
        end)
 | 
						|
    end, itemName)
 | 
						|
end)
 | 
						|
 | 
						|
RegisterNetEvent('consumables:client:Cokebaggy', function()
 | 
						|
    local ped = PlayerPedId()
 | 
						|
    QBCore.Functions.Progressbar('snort_coke', Lang:t('consumables.coke_progress'), math.random(5000, 8000), false, true, {
 | 
						|
        disableMovement = false,
 | 
						|
        disableCarMovement = false,
 | 
						|
        disableMouse = false,
 | 
						|
        disableCombat = true,
 | 
						|
    }, {
 | 
						|
        animDict = 'switch@trevor@trev_smoking_meth',
 | 
						|
        anim = 'trev_smoking_meth_loop',
 | 
						|
        flags = 49,
 | 
						|
    }, {}, {}, function() -- Done
 | 
						|
        StopAnimTask(ped, 'switch@trevor@trev_smoking_meth', 'trev_smoking_meth_loop', 1.0)
 | 
						|
        TriggerServerEvent('consumables:server:useCokeBaggy')
 | 
						|
        TriggerEvent('qb-inventory:client:ItemBox', QBCore.Shared.Items['cokebaggy'], 'remove')
 | 
						|
        TriggerEvent('evidence:client:SetStatus', 'widepupils', 200)
 | 
						|
        cokeBaggyEffect()
 | 
						|
    end, function() -- Cancel
 | 
						|
        StopAnimTask(ped, 'switch@trevor@trev_smoking_meth', 'trev_smoking_meth_loop', 1.0)
 | 
						|
        QBCore.Functions.Notify(Lang:t('consumables.canceled'), 'error')
 | 
						|
    end)
 | 
						|
end)
 | 
						|
 | 
						|
RegisterNetEvent('consumables:client:Crackbaggy', function()
 | 
						|
    local ped = PlayerPedId()
 | 
						|
    QBCore.Functions.Progressbar('snort_coke', Lang:t('consumables.crack_progress'), math.random(7000, 10000), false, true, {
 | 
						|
        disableMovement = false,
 | 
						|
        disableCarMovement = false,
 | 
						|
        disableMouse = false,
 | 
						|
        disableCombat = true,
 | 
						|
    }, {
 | 
						|
        animDict = 'switch@trevor@trev_smoking_meth',
 | 
						|
        anim = 'trev_smoking_meth_loop',
 | 
						|
        flags = 49,
 | 
						|
    }, {}, {}, function() -- Done
 | 
						|
        StopAnimTask(ped, 'switch@trevor@trev_smoking_meth', 'trev_smoking_meth_loop', 1.0)
 | 
						|
        TriggerServerEvent('consumables:server:useCrackBaggy')
 | 
						|
        TriggerEvent('qb-inventory:client:ItemBox', QBCore.Shared.Items['crack_baggy'], 'remove')
 | 
						|
        TriggerEvent('evidence:client:SetStatus', 'widepupils', 300)
 | 
						|
        crackBaggyEffect()
 | 
						|
    end, function() -- Cancel
 | 
						|
        StopAnimTask(ped, 'switch@trevor@trev_smoking_meth', 'trev_smoking_meth_loop', 1.0)
 | 
						|
        QBCore.Functions.Notify(Lang:t('consumables.canceled'), 'error')
 | 
						|
    end)
 | 
						|
end)
 | 
						|
 | 
						|
RegisterNetEvent('consumables:client:EcstasyBaggy', function()
 | 
						|
    QBCore.Functions.Progressbar('use_ecstasy', Lang:t('consumables.ecstasy_progress'), 3000, false, true, {
 | 
						|
        disableMovement = false,
 | 
						|
        disableCarMovement = false,
 | 
						|
        disableMouse = false,
 | 
						|
        disableCombat = true,
 | 
						|
    }, {
 | 
						|
        animDict = 'mp_suicide',
 | 
						|
        anim = 'pill',
 | 
						|
        flags = 49,
 | 
						|
    }, {}, {}, function() -- Done
 | 
						|
        StopAnimTask(PlayerPedId(), 'mp_suicide', 'pill', 1.0)
 | 
						|
        TriggerServerEvent('consumables:server:useXTCBaggy')
 | 
						|
        TriggerEvent('qb-inventory:client:ItemBox', QBCore.Shared.Items['xtcbaggy'], 'remove')
 | 
						|
        ecstasyEffect()
 | 
						|
    end, function() -- Cancel
 | 
						|
        StopAnimTask(PlayerPedId(), 'mp_suicide', 'pill', 1.0)
 | 
						|
        QBCore.Functions.Notify(Lang:t('consumables.canceled'), 'error')
 | 
						|
    end)
 | 
						|
end)
 | 
						|
 | 
						|
RegisterNetEvent('consumables:client:oxy', function()
 | 
						|
    QBCore.Functions.Progressbar('use_oxy', Lang:t('consumables.healing_progress'), 2000, false, true, {
 | 
						|
        disableMovement = false,
 | 
						|
        disableCarMovement = false,
 | 
						|
        disableMouse = false,
 | 
						|
        disableCombat = true,
 | 
						|
    }, {
 | 
						|
        animDict = 'mp_suicide',
 | 
						|
        anim = 'pill',
 | 
						|
        flags = 49,
 | 
						|
    }, {}, {}, function() -- Done
 | 
						|
        StopAnimTask(PlayerPedId(), 'mp_suicide', 'pill', 1.0)
 | 
						|
        TriggerServerEvent('consumables:server:useOxy')
 | 
						|
        TriggerEvent('qb-inventory:client:ItemBox', QBCore.Shared.Items['oxy'], 'remove')
 | 
						|
        ClearPedBloodDamage(PlayerPedId())
 | 
						|
        healOxy()
 | 
						|
    end, function() -- Cancel
 | 
						|
        StopAnimTask(PlayerPedId(), 'mp_suicide', 'pill', 1.0)
 | 
						|
        QBCore.Functions.Notify(Lang:t('consumables.canceled'), 'error')
 | 
						|
    end)
 | 
						|
end)
 | 
						|
 | 
						|
RegisterNetEvent('consumables:client:meth', function()
 | 
						|
    QBCore.Functions.Progressbar('snort_meth', Lang:t('consumables.meth_progress'), 1500, false, true, {
 | 
						|
        disableMovement = false,
 | 
						|
        disableCarMovement = false,
 | 
						|
        disableMouse = false,
 | 
						|
        disableCombat = true,
 | 
						|
    }, {
 | 
						|
        animDict = 'switch@trevor@trev_smoking_meth',
 | 
						|
        anim = 'trev_smoking_meth_loop',
 | 
						|
        flags = 49,
 | 
						|
    }, {}, {}, function() -- Done
 | 
						|
        StopAnimTask(PlayerPedId(), 'switch@trevor@trev_smoking_meth', 'trev_smoking_meth_loop', 1.0)
 | 
						|
        TriggerServerEvent('consumables:server:useMeth')
 | 
						|
        TriggerEvent('qb-inventory:client:ItemBox', QBCore.Shared.Items['meth'], 'remove')
 | 
						|
        TriggerEvent('evidence:client:SetStatus', 'widepupils', 300)
 | 
						|
        TriggerEvent('evidence:client:SetStatus', 'agitated', 300)
 | 
						|
        methBagEffect()
 | 
						|
    end, function() -- Cancel
 | 
						|
        StopAnimTask(PlayerPedId(), 'switch@trevor@trev_smoking_meth', 'trev_smoking_meth_loop', 1.0)
 | 
						|
        QBCore.Functions.Notify(Lang:t('consumables.canceled'), 'error')
 | 
						|
    end)
 | 
						|
end)
 | 
						|
 | 
						|
RegisterNetEvent('consumables:client:UseJoint', function()
 | 
						|
    QBCore.Functions.Progressbar('smoke_joint', Lang:t('consumables.joint_progress'), 1500, false, true, {
 | 
						|
        disableMovement = false,
 | 
						|
        disableCarMovement = false,
 | 
						|
        disableMouse = false,
 | 
						|
        disableCombat = true,
 | 
						|
    }, {}, {}, {}, function() -- Done
 | 
						|
        TriggerEvent('qb-inventory:client:ItemBox', QBCore.Shared.Items['joint'], 'remove')
 | 
						|
        if IsPedInAnyVehicle(PlayerPedId(), false) then
 | 
						|
            QBCore.Functions.PlayAnim('timetable@gardener@smoking_joint', 'smoke_idle', false)
 | 
						|
        else
 | 
						|
            QBCore.Functions.PlayAnim('timetable@gardener@smoking_joint', 'smoke_idle', false)
 | 
						|
        end
 | 
						|
        TriggerEvent('evidence:client:SetStatus', 'weedsmell', 300)
 | 
						|
        TriggerServerEvent('hud:server:RelieveStress', Config.RelieveWeedStress)
 | 
						|
    end)
 | 
						|
end)
 | 
						|
 | 
						|
RegisterNetEvent('consumables:client:UseParachute', function()
 | 
						|
    equipParachuteAnim()
 | 
						|
    QBCore.Functions.Progressbar('use_parachute', Lang:t('consumables.use_parachute_progress'), 5000, false, true, {
 | 
						|
        disableMovement = false,
 | 
						|
        disableCarMovement = false,
 | 
						|
        disableMouse = false,
 | 
						|
        disableCombat = true,
 | 
						|
    }, {}, {}, {}, function() -- Done
 | 
						|
        local ped = PlayerPedId()
 | 
						|
        TriggerEvent('qb-inventory:client:ItemBox', QBCore.Shared.Items['parachute'], 'remove')
 | 
						|
        GiveWeaponToPed(ped, `GADGET_PARACHUTE`, 1, false, false)
 | 
						|
        local parachuteData = {
 | 
						|
            outfitData = { ['bag'] = { item = 7, texture = 0 } } -- Adding Parachute Clothing
 | 
						|
        }
 | 
						|
        TriggerEvent('qb-clothing:client:loadOutfit', parachuteData)
 | 
						|
        parachuteEquipped = true
 | 
						|
        TaskPlayAnim(ped, 'clothingshirt', 'exit', 8.0, 1.0, -1, 49, 0, false, false, false)
 | 
						|
    end)
 | 
						|
end)
 | 
						|
 | 
						|
RegisterNetEvent('consumables:client:ResetParachute', function()
 | 
						|
    if parachuteEquipped then
 | 
						|
        equipParachuteAnim()
 | 
						|
        QBCore.Functions.Progressbar('reset_parachute', Lang:t('consumables.pack_parachute_progress'), 40000, false, true, {
 | 
						|
            disableMovement = false,
 | 
						|
            disableCarMovement = false,
 | 
						|
            disableMouse = false,
 | 
						|
            disableCombat = true,
 | 
						|
        }, {}, {}, {}, function() -- Done
 | 
						|
            local ped = PlayerPedId()
 | 
						|
            TriggerEvent('qb-inventory:client:ItemBox', QBCore.Shared.Items['parachute'], 'add')
 | 
						|
            local parachuteResetData = {
 | 
						|
                outfitData = { ['bag'] = { item = 0, texture = 0 } } -- Removing Parachute Clothing
 | 
						|
            }
 | 
						|
            TriggerEvent('qb-clothing:client:loadOutfit', parachuteResetData)
 | 
						|
            TaskPlayAnim(ped, 'clothingshirt', 'exit', 8.0, 1.0, -1, 49, 0, false, false, false)
 | 
						|
            TriggerServerEvent('consumables:server:AddParachute')
 | 
						|
            parachuteEquipped = false
 | 
						|
        end)
 | 
						|
    else
 | 
						|
        QBCore.Functions.Notify(Lang:t('consumables.no_parachute'), 'error')
 | 
						|
    end
 | 
						|
end)
 | 
						|
 | 
						|
RegisterNetEvent('consumables:client:UseArmor', function()
 | 
						|
    if GetPedArmour(PlayerPedId()) >= 75 then
 | 
						|
        QBCore.Functions.Notify(Lang:t('consumables.armor_full'), 'error')
 | 
						|
        return
 | 
						|
    end
 | 
						|
    QBCore.Functions.Progressbar('use_armor', Lang:t('consumables.armor_progress'), 5000, false, true, {
 | 
						|
        disableMovement = false,
 | 
						|
        disableCarMovement = false,
 | 
						|
        disableMouse = false,
 | 
						|
        disableCombat = true,
 | 
						|
    }, {}, {}, {}, function() -- Done
 | 
						|
        TriggerServerEvent('consumables:server:useArmor')
 | 
						|
    end)
 | 
						|
end)
 | 
						|
 | 
						|
RegisterNetEvent('consumables:client:UseHeavyArmor', function()
 | 
						|
    if GetPedArmour(PlayerPedId()) == 100 then
 | 
						|
        QBCore.Functions.Notify(Lang:t('consumables.armor_full'), 'error')
 | 
						|
        return
 | 
						|
    end
 | 
						|
    local ped = PlayerPedId()
 | 
						|
    local PlayerData = QBCore.Functions.GetPlayerData()
 | 
						|
    QBCore.Functions.Progressbar('use_heavyarmor', Lang:t('consumables.heavy_armor_progress'), 5000, false, true, {
 | 
						|
        disableMovement = false,
 | 
						|
        disableCarMovement = false,
 | 
						|
        disableMouse = false,
 | 
						|
        disableCombat = true,
 | 
						|
    }, {}, {}, {}, function() -- Done
 | 
						|
        if not Config.Disable.vestDrawable then
 | 
						|
            if PlayerData.charinfo.gender == 0 then
 | 
						|
                currVest = GetPedDrawableVariation(ped, 9)
 | 
						|
                currVestTexture = GetPedTextureVariation(ped, 9)
 | 
						|
                if GetPedDrawableVariation(ped, 9) == 7 then
 | 
						|
                    SetPedComponentVariation(ped, 9, 19, GetPedTextureVariation(ped, 9), 2)
 | 
						|
                else
 | 
						|
                    SetPedComponentVariation(ped, 9, 5, 2, 2)
 | 
						|
                end
 | 
						|
            else
 | 
						|
                currVest = GetPedDrawableVariation(ped, 30)
 | 
						|
                currVestTexture = GetPedTextureVariation(ped, 30)
 | 
						|
                SetPedComponentVariation(ped, 9, 30, 0, 2)
 | 
						|
            end
 | 
						|
        end
 | 
						|
        TriggerServerEvent('consumables:server:useHeavyArmor')
 | 
						|
    end)
 | 
						|
end)
 | 
						|
 | 
						|
RegisterNetEvent('consumables:client:ResetArmor', function()
 | 
						|
    local ped = PlayerPedId()
 | 
						|
    if currVest ~= nil and currVestTexture ~= nil then
 | 
						|
        QBCore.Functions.Progressbar('remove_armor', Lang:t('consumables.remove_armor_progress'), 2500, false, true, {
 | 
						|
            disableMovement = false,
 | 
						|
            disableCarMovement = false,
 | 
						|
            disableMouse = false,
 | 
						|
            disableCombat = true,
 | 
						|
        }, {}, {}, {}, function() -- Done
 | 
						|
            SetPedComponentVariation(ped, 9, currVest, currVestTexture, 2)
 | 
						|
            SetPedArmour(ped, 0)
 | 
						|
            TriggerEvent('qb-inventory:client:ItemBox', QBCore.Shared.Items['heavyarmor'], 'add')
 | 
						|
            TriggerServerEvent('consumables:server:resetArmor')
 | 
						|
        end)
 | 
						|
    else
 | 
						|
        QBCore.Functions.Notify(Lang:t('consumables.armor_empty'), 'error')
 | 
						|
    end
 | 
						|
end)
 | 
						|
 | 
						|
-- RegisterNetEvent('consumables:client:UseRedSmoke', function()
 | 
						|
--     if parachuteEquipped then
 | 
						|
--         local ped = PlayerPedId()
 | 
						|
--         SetPlayerParachuteSmokeTrailColor(ped, 255, 0, 0)
 | 
						|
--         SetPlayerCanLeaveParachuteSmokeTrail(ped, true)
 | 
						|
--         TriggerEvent("qb-inventory:client:ItemBox", QBCore.Shared.Items["smoketrailred"], "remove")
 | 
						|
--     else
 | 
						|
--         QBCore.Functions.Notify("You need to have a paracute to activate smoke!", "error")
 | 
						|
--     end
 | 
						|
-- end)
 | 
						|
 | 
						|
--Threads
 | 
						|
local looped = false
 | 
						|
function AlcoholLoop()
 | 
						|
    if not looped then
 | 
						|
        looped = true
 | 
						|
        CreateThread(function()
 | 
						|
            while true do
 | 
						|
                Wait(10)
 | 
						|
                if alcoholCount > 0 then
 | 
						|
                    Wait(1000 * 60 * 15)
 | 
						|
                    alcoholCount -= 1
 | 
						|
                else
 | 
						|
                    looped = false
 | 
						|
                    break
 | 
						|
                end
 | 
						|
            end
 | 
						|
        end)
 | 
						|
    end
 | 
						|
end
 |