Scripts/resources/[jims]/jim-pizzathis/server/server.lua

131 lines
7.3 KiB
Lua
Raw Normal View History

2024-12-29 19:49:12 +00:00
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