131 lines
7.3 KiB
Lua
131 lines
7.3 KiB
Lua
|
local QBCore = exports['qb-core']:GetCoreObject()
|
||
|
|
||
|
AddEventHandler('onResourceStart', function(r) if GetCurrentResourceName() ~= r then return end
|
||
|
for k, v in pairs(Crafting) do for i = 1, #v do
|
||
|
for l, b in pairs(v[i]) do if not QBCore.Shared.Items[l] then print("^5Debug^7: ^6Crafting^7: ^2Missing Item from ^4QBCore^7.^4Shared^7.^4Items^7: '^6"..l.."^7'") end
|
||
|
for j, c in pairs(b) do if not QBCore.Shared.Items[j] then print("^5Debug^7: ^6Crafting^7: ^2Missing Item from ^4QBCore^7.^4Shared^7.^4Items^7: '^6"..j.."^7'") end end end end end
|
||
|
for i = 1, #Config.DrinkItems.items do
|
||
|
if not QBCore.Shared.Items[Config.DrinkItems.items[i].name] then print("^5Debug^7: ^6Store^7: ^2Missing Item from ^4QBCore^7.^4Shared^7.^4Items^7: '^6"..Config.DrinkItems.items[i].name.."^7'") end
|
||
|
end
|
||
|
for i = 1, #Config.FoodItems.items do
|
||
|
if not QBCore.Shared.Items[Config.FoodItems.items[i].name] then print("^5Debug^7: ^6Store^7: ^2Missing Item from ^4QBCore^7.^4Shared^7.^4Items^7: '^6"..Config.FoodItems.items[i].name.."^7'") end
|
||
|
end
|
||
|
for i = 1, #Config.WineItems.items do
|
||
|
if not QBCore.Shared.Items[Config.WineItems.items[i].name] then print("^5Debug^7: ^6Store^7: ^2Missing Item from ^4QBCore^7.^4Shared^7.^4Items^7: '^6"..Config.WineItems.items[i].name.."^7'") end
|
||
|
end
|
||
|
for i = 1, #Config.FreezerItems.items do
|
||
|
if not QBCore.Shared.Items[Config.FreezerItems.items[i].name] then print("^5Debug^7: ^6Store^7: ^2Missing Item from ^4QBCore^7.^4Shared^7.^4Items^7: '^6"..Config.FreezerItems.items[i].name.."^7'") end
|
||
|
end
|
||
|
if not QBCore.Shared.Jobs["pizzathis"] then print("Error: Job role not found - 'pizzathis'") end
|
||
|
end)
|
||
|
|
||
|
--Consumables
|
||
|
if not Config.JimConsumables then
|
||
|
CreateThread(function()
|
||
|
local wines = { "amarone", "barbera", "dolceto", "housered", "housewhite", "rosso" }
|
||
|
for _, v in pairs(wines) do QBCore.Functions.CreateUseableItem(v, function(source, item) TriggerClientEvent('jim-pizzathis:client:DrinkAlcohol', source, item.name) end) end
|
||
|
|
||
|
local beers = { "ambeer", "dusche", "logger", "pisswasser", "pisswasser2", "pisswasser3" }
|
||
|
for _, v in pairs(beers) do QBCore.Functions.CreateUseableItem(v, function(source, item) TriggerClientEvent('jim-pizzathis:client:DrinkAlcohol', source, item.name) end) end
|
||
|
|
||
|
local drink = { "sprunk", "sprunklight", "ecola", "ecolalight" }
|
||
|
for _, v in pairs(drink) do QBCore.Functions.CreateUseableItem(v, function(source, item) TriggerClientEvent('jim-pizzathis:client:Drink', source, item.name) end) end
|
||
|
|
||
|
local food = { "tiramisu", "gelato", "medfruits", "capricciosa", "diavola", "marinara", "margherita", "prosciuttio", "vegetariana", "bolognese", "calamari", "meatball", "alla", "pescatore" }
|
||
|
for _, v in pairs(food) do QBCore.Functions.CreateUseableItem(v, function(source, item) TriggerClientEvent('jim-pizzathis:client:Eat', source, item.name) end) end
|
||
|
end)
|
||
|
end
|
||
|
CreateThread(function()
|
||
|
local boxes = { "capricciosabox", "diavolabox", "marinarabox", "margheritabox", "prosciuttiobox", "vegetarianabox" }
|
||
|
for _, v in pairs(boxes) do QBCore.Functions.CreateUseableItem(v, function(source, item) TriggerEvent('jim-pizzathis:OpenBox', source, item.name) end) end
|
||
|
end)
|
||
|
|
||
|
RegisterServerEvent('jim-pizzathis:OpenBox', function(source, item)
|
||
|
local src = source
|
||
|
local Player = QBCore.Functions.GetPlayer(src)
|
||
|
if item == "capricciosabox" then slices = "capricciosa"
|
||
|
elseif item == "diavolabox" then slices = "diavola"
|
||
|
elseif item == "marinarabox" then slices = "marinara"
|
||
|
elseif item == "margheritabox" then slices = "margherita"
|
||
|
elseif item == "prosciuttiobox" then slices = "prosciuttio"
|
||
|
elseif item == "vegetarianabox" then slices = "vegetariana" end
|
||
|
--This removes the box
|
||
|
TriggerEvent("jim-pizzathis:server:toggleItem", false, item, 1, src)
|
||
|
Wait(600)
|
||
|
--This gives the slices
|
||
|
TriggerEvent("jim-pizzathis:server:toggleItem", true, QBCore.Shared.Items[slices].name, 6, src)
|
||
|
|
||
|
end)
|
||
|
|
||
|
---Crafting
|
||
|
RegisterServerEvent('jim-pizzathis:Crafting:GetItem', function(ItemMake, craftable)
|
||
|
local src = source
|
||
|
local Player = QBCore.Functions.GetPlayer(src)
|
||
|
--This grabs the table from client and removes the item requirements
|
||
|
local amount = 1
|
||
|
if craftable then
|
||
|
if craftable["amount"] then amount = craftable["amount"] end
|
||
|
for k, v in pairs(craftable[ItemMake]) do TriggerEvent("jim-pizzathis:server:toggleItem", false, tostring(k), v, src) end
|
||
|
end
|
||
|
--This should give the item, while the rest removes the requirements
|
||
|
TriggerEvent("jim-pizzathis:server:toggleItem", true, ItemMake, amount, src)
|
||
|
end)
|
||
|
|
||
|
RegisterNetEvent('jim-pizzathis:server:toggleItem', function(give, item, amount, newsrc)
|
||
|
local src = newsrc or source
|
||
|
local amount = amount or 1
|
||
|
local remamount = amount
|
||
|
if not give then
|
||
|
if HasItem(src, item, amount) then -- check if you still have the item
|
||
|
if QBCore.Functions.GetPlayer(src).Functions.GetItemByName(item).unique then -- If unique item, keep removing until gone
|
||
|
while remamount > 0 do
|
||
|
QBCore.Functions.GetPlayer(src).Functions.RemoveItem(item, 1)
|
||
|
remamount -= 1
|
||
|
end
|
||
|
TriggerClientEvent('inventory:client:ItemBox', src, QBCore.Shared.Items[item], "remove", amount) -- Show removal item box when all are removed
|
||
|
return
|
||
|
end
|
||
|
if QBCore.Functions.GetPlayer(src).Functions.RemoveItem(item, amount) then
|
||
|
if Config.Debug then print("^5Debug^7: ^1Removing ^2from Player^7(^2"..src.."^7) '^6"..QBCore.Shared.Items[item].label.."^7(^2x^6"..(amount or "1").."^7)'") end
|
||
|
TriggerClientEvent('inventory:client:ItemBox', src, QBCore.Shared.Items[item], "remove", amount)
|
||
|
end
|
||
|
else TriggerEvent("jim-pizzathis:server:DupeWarn", item, src) end -- if not boot the player
|
||
|
elseif give then
|
||
|
if QBCore.Functions.GetPlayer(src).Functions.AddItem(item, amount) then
|
||
|
if Config.Debug then print("^5Debug^7: ^4Giving ^2Player^7(^2"..src.."^7) '^6"..QBCore.Shared.Items[item].label.."^7(^2x^6"..(amount or "1").."^7)'") end
|
||
|
TriggerClientEvent('inventory:client:ItemBox', src, QBCore.Shared.Items[item], "add", amount)
|
||
|
end
|
||
|
end
|
||
|
end)
|
||
|
|
||
|
RegisterNetEvent("jim-pizzathis:server:DupeWarn", function(item, newsrc)
|
||
|
local src = newsrc or source
|
||
|
local P = QBCore.Functions.GetPlayer(src)
|
||
|
print("^5DupeWarn: ^1"..P.PlayerData.charinfo.firstname.." "..P.PlayerData.charinfo.lastname.."^7(^1"..tostring(src).."^7) ^2Tried to remove item ^7('^3"..item.."^7')^2 but it wasn't there^7")
|
||
|
-- if not Config.Debug then DropPlayer(src, "Kicked for attempting to duplicate items") end
|
||
|
print("^5DupeWarn: ^1"..P.PlayerData.charinfo.firstname.." "..P.PlayerData.charinfo.lastname.."^7(^1"..tostring(src).."^7) ^2Dropped from server for item duplicating^7")
|
||
|
end)
|
||
|
|
||
|
function HasItem(source, items, amount)
|
||
|
local amount = amount or 1
|
||
|
local Player = QBCore.Functions.GetPlayer(source)
|
||
|
if not Player then return false end
|
||
|
local totalItems = #items
|
||
|
local count = 0
|
||
|
local kvIndex = 2
|
||
|
|
||
|
if Config.Debug then print("^5Debug^7: ^3HasItem^7: ^2Checking if player has required item^7 '^3"..tostring(items).."^7'") end
|
||
|
|
||
|
for _, itemData in pairs(Player.PlayerData.items) do
|
||
|
if itemData and (itemData.name == items) then
|
||
|
if Config.Debug then print("^5Debug^7: ^3HasItem^7: ^2Item^7: '^3"..tostring(items).."^7' ^2Slot^7: ^3"..itemData.slot.." ^7x(^3"..tostring(itemData.amount).."^7)") end
|
||
|
count += itemData.amount
|
||
|
end
|
||
|
end
|
||
|
if count >= amount then
|
||
|
if Config.Debug then print("^5Debug^7: ^3HasItem^7: ^2Items ^5FOUND^7 x^3"..count.."^7") end
|
||
|
return true
|
||
|
end
|
||
|
if Config.Debug then print("^5Debug^7: ^3HasItem^7: ^2Items ^1NOT FOUND^7") end
|
||
|
return false
|
||
|
end
|