235 lines
		
	
	
	
		
			9.6 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			235 lines
		
	
	
	
		
			9.6 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
local QBCore = exports['qb-core']:GetCoreObject()
 | 
						|
local InvType = Config.CoreSettings.Inventory.Type
 | 
						|
local NotifyType = Config.CoreSettings.Notify.Type
 | 
						|
 | 
						|
--notification function
 | 
						|
local function SendNotify(src, msg, type, time, title)
 | 
						|
    if NotifyType == nil then print("Lusty94_Smoking: NotifyType Not Set in Config.CoreSettings.Notify.Type!") return end
 | 
						|
    if not title then title = "Smoking" end
 | 
						|
    if not time then time = 5000 end
 | 
						|
    if not type then type = 'success' end
 | 
						|
    if not msg then print("Notification Sent With No Message") return end
 | 
						|
    if NotifyType == 'qb' then
 | 
						|
        TriggerClientEvent('QBCore:Notify', src, msg, type, time)
 | 
						|
    elseif NotifyType == 'okok' then
 | 
						|
        TriggerClientEvent('okokNotify:Alert', src, title, msg, time, type, Config.CoreSettings.Notify.Sound)
 | 
						|
    elseif NotifyType == 'mythic' then
 | 
						|
        TriggerClientEvent('mythic_notify:client:SendAlert', src, { type = type, text = msg, style = { ['background-color'] = '#00FF00', ['color'] = '#FFFFFF' } })
 | 
						|
    elseif NotifyType == 'ox' then 
 | 
						|
        TriggerClientEvent('ox_lib:notify', src, ({ title = title, description = msg, length = time, type = type, style = 'default'}))
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
--remove items
 | 
						|
local function removeItem(src, item, amount)
 | 
						|
    if InvType == 'qb' then
 | 
						|
        -- Modified for tgiann-inventory
 | 
						|
        if exports['tgiann-inventory']:RemoveItem(src, item, amount) then
 | 
						|
            TriggerClientEvent('inventory:client:ItemBox', src, QBCore.Shared.Items[item], 'remove', amount)
 | 
						|
        end
 | 
						|
    elseif InvType == 'ox' then
 | 
						|
        exports.ox_inventory:RemoveItem(src, item, amount)
 | 
						|
    elseif InvType == 'tgiann' then
 | 
						|
        -- Direct support for tgiann-inventory
 | 
						|
        exports['tgiann-inventory']:RemoveItem(src, item, amount)
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
--add items
 | 
						|
local function addItem(src, item, amount)
 | 
						|
    if InvType == 'qb' then
 | 
						|
        -- Modified for tgiann-inventory
 | 
						|
        if exports['tgiann-inventory']:AddItem(src, item, amount, nil, {
 | 
						|
            serie = "SMOKING-" .. math.random(100000, 999999),
 | 
						|
            durabilityPercent = 100,
 | 
						|
            usedTotalAmmo = 0,
 | 
						|
            ammo = 0
 | 
						|
        }) then
 | 
						|
            TriggerClientEvent('inventory:client:ItemBox', src, QBCore.Shared.Items[item], 'add', amount)
 | 
						|
        end
 | 
						|
    elseif InvType == 'ox' then
 | 
						|
        if exports.ox_inventory:CanCarryItem(src, item, amount) then
 | 
						|
            exports.ox_inventory:AddItem(src, item, amount)
 | 
						|
        else
 | 
						|
            SendNotify(src, Config.Language.Notifications.CantCarry, 'error', 5000)
 | 
						|
        end
 | 
						|
    elseif InvType == 'tgiann' then
 | 
						|
        -- Direct support for tgiann-inventory
 | 
						|
        local metadata = {}
 | 
						|
        if string.match(item, "weapon_") then
 | 
						|
            metadata = {
 | 
						|
                serie = "SMOKING-" .. math.random(100000, 999999),
 | 
						|
                durabilityPercent = 100,
 | 
						|
                usedTotalAmmo = 0,
 | 
						|
                ammo = 0
 | 
						|
            }
 | 
						|
        end
 | 
						|
        exports['tgiann-inventory']:AddItem(src, item, amount, nil, metadata)
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
--useable items
 | 
						|
for itemName, _ in pairs(Config.Consumables) do
 | 
						|
    QBCore.Functions.CreateUseableItem(itemName, function(source, item)
 | 
						|
        TriggerClientEvent('lusty94_smoking:client:UseItem', source, item.name)
 | 
						|
    end)
 | 
						|
end
 | 
						|
 | 
						|
 | 
						|
--callback for items and required items
 | 
						|
QBCore.Functions.CreateCallback('lusty94_smoking:server:hasItem', function(source, cb, itemName)
 | 
						|
    local src = source
 | 
						|
    local Player = QBCore.Functions.GetPlayer(src)
 | 
						|
    local item = Config.Consumables[itemName]
 | 
						|
    if item then
 | 
						|
        if item.requiredItem then
 | 
						|
            local hasItem = false
 | 
						|
            if InvType == 'tgiann' then
 | 
						|
                hasItem = exports['tgiann-inventory']:HasItem(src, item.requiredItem, 1)
 | 
						|
            else
 | 
						|
                local requiredItem = Player.Functions.GetItemByName(item.requiredItem)         
 | 
						|
                hasItem = requiredItem ~= nil
 | 
						|
            end
 | 
						|
            
 | 
						|
            if hasItem then
 | 
						|
                cb(true)
 | 
						|
            else
 | 
						|
                SendNotify(src, 'You need a ' .. item.requiredLabel .. ' to use this!', 'error', 5000)    
 | 
						|
                cb(false)
 | 
						|
            end
 | 
						|
        else
 | 
						|
            cb(true)
 | 
						|
        end
 | 
						|
    else
 | 
						|
        cb(false)       
 | 
						|
    end
 | 
						|
end)
 | 
						|
 | 
						|
--use item
 | 
						|
RegisterNetEvent('lusty94_smoking:server:UseItem', function(itemName)
 | 
						|
    local src = source
 | 
						|
    local Player = QBCore.Functions.GetPlayer(src)
 | 
						|
    if Player then
 | 
						|
        removeItem(src, itemName, 1)
 | 
						|
    end
 | 
						|
end)
 | 
						|
 | 
						|
--return item
 | 
						|
RegisterNetEvent('lusty94_smoking:server:returnItems', function(itemName, amount)
 | 
						|
    local src = source
 | 
						|
    local Player = QBCore.Functions.GetPlayer(src)
 | 
						|
    if Player then
 | 
						|
        addItem(src, itemName, amount)
 | 
						|
    end
 | 
						|
end)
 | 
						|
 | 
						|
--use vape juice
 | 
						|
RegisterNetEvent('lusty94_smoking:server:UseVapeJuice', function(itemName, amount)
 | 
						|
    local src = source
 | 
						|
    local Player = QBCore.Functions.GetPlayer(src)
 | 
						|
    local chance = 25 -- 25% chance to remove vape juice upon use
 | 
						|
    local juice = 'vapejuice' -- if changing the name of vapejuice make sure to change it here also so it removes correctly
 | 
						|
    if Player then
 | 
						|
        if chance >= math.random(1,100) then
 | 
						|
            removeItem(src, juice, 1)
 | 
						|
        end
 | 
						|
    end
 | 
						|
end)
 | 
						|
 | 
						|
--qb inventory shop
 | 
						|
RegisterNetEvent('lusty94_smoking:server:openShop', function()
 | 
						|
    local src = source
 | 
						|
    local Player = QBCore.Functions.GetPlayer(src)
 | 
						|
    
 | 
						|
    if InvType == 'tgiann' then
 | 
						|
        -- For tgiann-inventory
 | 
						|
        local items = {
 | 
						|
            { name = 'redwoodpack', price = 250, amount = 100, type = 'item' },
 | 
						|
            { name = 'debonairepack', price = 250, amount = 100, type = 'item' },
 | 
						|
            { name = 'sixtyninepack', price = 250, amount = 100, type = 'item' },
 | 
						|
            { name = 'yukonpack', price = 250, amount = 100, type = 'item' },
 | 
						|
            { name = 'vape', price = 100, amount = 100, type = 'item' },
 | 
						|
            { name = 'vapejuice', price = 50, amount = 100, type = 'item' },
 | 
						|
            { name = 'lighter', price = 5, amount = 100, type = 'item' },
 | 
						|
        }
 | 
						|
        exports["tgiann-inventory"]:RegisterShop("smokingShop", items)
 | 
						|
        exports["tgiann-inventory"]:OpenShop(src, "smokingShop")
 | 
						|
        return
 | 
						|
    end
 | 
						|
    
 | 
						|
    local smokingShop = {
 | 
						|
        { name = "redwoodpack",      price = 250, amount = 100, info = {}, type = "item", slot = 1,}, 
 | 
						|
        { name = "debonairepack",    price = 250, amount = 100, info = {}, type = "item", slot = 2,},
 | 
						|
        { name = "sixtyninepack",    price = 250, amount = 100, info = {}, type = "item", slot = 3,},
 | 
						|
        { name = "yukonpack",        price = 250, amount = 100, info = {}, type = "item", slot = 4,},
 | 
						|
        { name = "vape",             price = 100, amount = 100, info = {}, type = "item", slot = 5,},
 | 
						|
        { name = "vapejuice",        price = 50,  amount = 100, info = {}, type = "item", slot = 6,},
 | 
						|
        { name = "lighter",          price = 5,   amount = 100, info = {}, type = "item", slot = 7,},
 | 
						|
    }
 | 
						|
    
 | 
						|
    if InvType == 'qb' then
 | 
						|
        exports['qb-inventory']:CreateShop({
 | 
						|
            name = 'smokingShop',
 | 
						|
            label = 'Smoking Shop',
 | 
						|
            slots = 7,
 | 
						|
            items = smokingShop
 | 
						|
        })
 | 
						|
        if Player then
 | 
						|
            exports['qb-inventory']:OpenShop(source, 'smokingShop')
 | 
						|
        end
 | 
						|
    end
 | 
						|
end)
 | 
						|
 | 
						|
--ox_ivnentory shop
 | 
						|
AddEventHandler('onResourceStart', function(resourceName)
 | 
						|
    if (GetCurrentResourceName() == resourceName) then
 | 
						|
        if InvType == 'ox' then
 | 
						|
            exports.ox_inventory:RegisterShop('smokingShop', {
 | 
						|
                name = 'Smoking Shop',
 | 
						|
                inventory = {
 | 
						|
                    { name = 'redwoodpack',     price = 250 },
 | 
						|
                    { name = 'yukonpack',       price = 250 },
 | 
						|
                    { name = 'sixtyninepack',   price = 250 },
 | 
						|
                    { name = 'debonairepack',   price = 250 },
 | 
						|
                    { name = 'vape',            price = 100 },
 | 
						|
                    { name = 'vapejuice',       price = 50 },
 | 
						|
                    { name = 'lighter',         price = 5 },
 | 
						|
                },
 | 
						|
            })
 | 
						|
        elseif InvType == 'tgiann' then
 | 
						|
            -- Register shop for tgiann-inventory on resource start
 | 
						|
            local items = {
 | 
						|
                { name = 'redwoodpack', price = 250, amount = 100, type = 'item' },
 | 
						|
                { name = 'debonairepack', price = 250, amount = 100, type = 'item' },
 | 
						|
                { name = 'sixtyninepack', price = 250, amount = 100, type = 'item' },
 | 
						|
                { name = 'yukonpack', price = 250, amount = 100, type = 'item' },
 | 
						|
                { name = 'vape', price = 100, amount = 100, type = 'item' },
 | 
						|
                { name = 'vapejuice', price = 50, amount = 100, type = 'item' },
 | 
						|
                { name = 'lighter', price = 5, amount = 100, type = 'item' },
 | 
						|
            }
 | 
						|
            exports["tgiann-inventory"]:RegisterShop("smokingShop", items)
 | 
						|
        end
 | 
						|
    end
 | 
						|
end)
 | 
						|
 | 
						|
 | 
						|
--------------< VERSION CHECK >-------------
 | 
						|
 | 
						|
local function CheckVersion()
 | 
						|
    PerformHttpRequest('https://raw.githubusercontent.com/Lusty94/UpdatedVersions/main/Smoking/version.txt', function(err, newestVersion, headers)
 | 
						|
        local currentVersion = GetResourceMetadata(GetCurrentResourceName(), 'version')
 | 
						|
        if not newestVersion then
 | 
						|
            print('^1[Lusty94_Smoking]^7: Unable to fetch the latest version.')
 | 
						|
            return
 | 
						|
        end
 | 
						|
        newestVersion = newestVersion:gsub('%s+', '')
 | 
						|
        currentVersion = currentVersion and currentVersion:gsub('%s+', '') or "Unknown"
 | 
						|
        if newestVersion == currentVersion then
 | 
						|
            print(string.format('^2[Lusty94_Smoking]^7: ^6You are running the latest version.^7 (^2v%s^7)', currentVersion))
 | 
						|
        else
 | 
						|
            print(string.format('^2[Lusty94_Smoking]^7: ^3Your version: ^1v%s^7 | ^2Latest version: ^2v%s^7\n^1Please update to the latest version | Changelogs can be found in the support discord.^7', currentVersion, newestVersion))
 | 
						|
        end
 | 
						|
    end)
 | 
						|
end
 | 
						|
 | 
						|
CheckVersion()
 |