forked from Simnation/Main
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()
|