forked from Simnation/Main
149 lines
4.7 KiB
Lua
149 lines
4.7 KiB
Lua
![]() |
if GetResourceState('qb-core') ~= 'started' then return end
|
||
|
|
||
|
Framework = "QB"
|
||
|
QBCore = exports['qb-core']:GetCoreObject()
|
||
|
|
||
|
function ShowNotification(target, text)
|
||
|
TriggerClientEvent(GetCurrentResourceName()..":showNotification", target, text)
|
||
|
end
|
||
|
|
||
|
function GetIdentifier(source)
|
||
|
local xPlayer = QBCore.Functions.GetPlayer(source).PlayerData
|
||
|
return xPlayer.citizenid
|
||
|
end
|
||
|
|
||
|
function SetPlayerMetadata(source, key, data)
|
||
|
QBCore.Functions.GetPlayer(source).Functions.SetMetaData(key, data)
|
||
|
end
|
||
|
|
||
|
function AddMoney(source, count)
|
||
|
local xPlayer = QBCore.Functions.GetPlayer(source)
|
||
|
xPlayer.Functions.AddMoney('cash',count)
|
||
|
end
|
||
|
|
||
|
function RemoveMoney(source, count)
|
||
|
local xPlayer = QBCore.Functions.GetPlayer(source)
|
||
|
xPlayer.Functions.RemoveMoney('cash',count)
|
||
|
end
|
||
|
|
||
|
function GetMoney(source)
|
||
|
local xPlayer = QBCore.Functions.GetPlayer(source)
|
||
|
return xPlayer.PlayerData.money.cash
|
||
|
end
|
||
|
|
||
|
function CheckPermission(source, permission)
|
||
|
local xPlayer = QBCore.Functions.GetPlayer(source).PlayerData
|
||
|
local name = xPlayer.job.name
|
||
|
local rank = xPlayer.job.grade.level
|
||
|
if permission.jobs[name] and permission.jobs[name] <= rank then
|
||
|
return true
|
||
|
end
|
||
|
for i=1, #permission.groups do
|
||
|
if QBCore.Functions.HasPermission(source, permission.groups[i]) then
|
||
|
return true
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
-- Status
|
||
|
|
||
|
function ExecuteStatus(source, statuses)
|
||
|
local xPlayer = QBCore.Functions.GetPlayer(source)
|
||
|
for k,v in pairs(statuses) do
|
||
|
if Config.MaxValues[k] then
|
||
|
local value = (0.01 * v) * Config.MaxValues[k]
|
||
|
if xPlayer.PlayerData.metadata[k] then
|
||
|
xPlayer.PlayerData.metadata[k] = ((xPlayer.PlayerData.metadata[k] + value < 0) and 0 or (xPlayer.PlayerData.metadata[k] + value))
|
||
|
else
|
||
|
xPlayer.PlayerData.metadata[k] = (value > 0 and value or 0)
|
||
|
end
|
||
|
xPlayer.Functions.SetMetaData(k, xPlayer.PlayerData.metadata[k])
|
||
|
TriggerClientEvent('hud:client:UpdateNeeds', source, xPlayer.PlayerData.metadata.hunger, xPlayer.PlayerData.metadata.thirst)
|
||
|
else
|
||
|
Config.ExternalStatus(source, k, v)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
-- Inventory Fallback
|
||
|
|
||
|
CreateThread(function()
|
||
|
Wait(100)
|
||
|
|
||
|
if not UsableItem then
|
||
|
function RegisterUsableItem(name, cb)
|
||
|
QBCore.Functions.CreateUseableItem(name, function(source, data)
|
||
|
local item = data
|
||
|
if item.info then
|
||
|
item.metadata = data.info
|
||
|
item.info = nil
|
||
|
end
|
||
|
cb(source, item.metadata, item.slot)
|
||
|
end)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
if InitializeInventory then return InitializeInventory() end -- Already loaded through inventory folder.
|
||
|
|
||
|
Inventory = {}
|
||
|
|
||
|
Inventory.Items = {}
|
||
|
|
||
|
Inventory.Ready = false
|
||
|
|
||
|
Inventory.CanCarryItem = function(source, name, count)
|
||
|
local slots = 40 -- Change this if higher / lower.
|
||
|
local items = Inventory.GetInventory(source)
|
||
|
return (#items + count < slots)
|
||
|
end
|
||
|
|
||
|
Inventory.GetInventory = function(source)
|
||
|
local xPlayer = QBCore.Functions.GetPlayer(source)
|
||
|
local items = {}
|
||
|
local data = xPlayer.PlayerData.items
|
||
|
for slot, item in pairs(data) do
|
||
|
items[#items + 1] = {
|
||
|
name = item.name,
|
||
|
label = item.label,
|
||
|
count = item.amount,
|
||
|
weight = item.weight,
|
||
|
slot = item.slot,
|
||
|
metadata = item.info
|
||
|
}
|
||
|
end
|
||
|
return items
|
||
|
end
|
||
|
|
||
|
Inventory.AddItem = function(source, name, count, metadata, slot) -- Metadata is not required.
|
||
|
local xPlayer = QBCore.Functions.GetPlayer(source)
|
||
|
xPlayer.Functions.AddItem(name, count, slot, metadata)
|
||
|
end
|
||
|
|
||
|
Inventory.RemoveItem = function(source, name, count, slot)
|
||
|
local xPlayer = QBCore.Functions.GetPlayer(source)
|
||
|
xPlayer.Functions.RemoveItem(name, count, slot)
|
||
|
end
|
||
|
|
||
|
Inventory.SetMetadata = function(source, slot, metadata)
|
||
|
local xPlayer = QBCore.Functions.GetPlayer(source)
|
||
|
local Inventory = xPlayer.PlayerData.items
|
||
|
Inventory[slot].info = metadata
|
||
|
xPlayer.Functions.SetInventory(Inventory, true)
|
||
|
end
|
||
|
|
||
|
Inventory.GetItemCount = function(source, name)
|
||
|
local xPlayer = QBCore.Functions.GetPlayer(source)
|
||
|
local item = xPlayer.Functions.GetItemByName(name)
|
||
|
return item and item.amount or 0
|
||
|
end
|
||
|
|
||
|
lib.callback.register("pickle_consumables:getInventory", function(source)
|
||
|
return Inventory.GetInventory(source)
|
||
|
end)
|
||
|
|
||
|
for item, data in pairs(QBCore.Shared.Items) do
|
||
|
Inventory.Items[item] = {label = data.label}
|
||
|
end
|
||
|
|
||
|
Inventory.Ready = true
|
||
|
end)
|