Scripts/resources/[qb]/[qb_shops]/qb-shop/server/main.lua

76 lines
2.4 KiB
Lua
Raw Permalink Normal View History

2024-12-29 20:06:22 +00:00
local FrameworkSelected = Config.Framework and Config.Framework:lower() or nil
local ESX = nil
local QBCore = nil
if (FrameworkSelected == "esx") then
if (Config.FrameworkCore) then
ESX = exports[Config.FrameworkCore]:getSharedObject()
if (not ESX) then
TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
end
else
TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
end
if (not ESX) then
print(' ERROR: Invalid FrameworkCore! Pls fix it on Config!!!')
end
elseif (FrameworkSelected == "qb" or FrameworkSelected == "qb-core" or FrameworkSelected == "qbcore") then
if (Config.FrameworkCore) then
QBCore = exports[Config.FrameworkCore]:GetCoreObject()
else
print(' ERROR: Invalid FrameworkCore! Pls fix it on Config!!!')
end
else
print(' ERROR: Unknown Framework! Available: ESX or QB!')
end
local function getFrameworkPlayerBalance(FPlayer)
local balance = 0
local payMethod = Config.PayMethod
if (ESX) then
if (payMethod == 'cash') then payMethod = 'money' end
balance = FPlayer.getAccount(payMethod).money
elseif (QBCore) then
if (payMethod == 'money') then payMethod = 'cash' end
balance = FPlayer.Functions.GetMoney(payMethod)
end
return tonumber(balance)
end
local function removeFrameworkPlayerMoney(FPlayer, amount)
local payMethod = Config.PayMethod
if (ESX) then
if (payMethod == 'cash') then payMethod = 'money' end
FPlayer.removeAccountMoney(payMethod, amount)
elseif (QBCore) then
if (payMethod == 'cash') then payMethod = 'money' end
FPlayer.Functions.RemoveMoney(payMethod, amount)
end
end
local function canAfford(source, cb, totalPrice, shoppingCart)
local _source = source
local FPlayer = ESX and ESX.GetPlayerFromId(_source) or QBCore and QBCore.Functions.GetPlayer(_source)
local playerBalance = getFrameworkPlayerBalance(FPlayer)
totalPrice = tonumber(totalPrice)
if (playerBalance and playerBalance >= totalPrice) then
for k, v in pairs(shoppingCart) do
if (ESX) then FPlayer.addInventoryItem(k, v.amount or 1)
elseif (QBCore) then FPlayer.Functions.AddItem(k, v.amount or 1)
end
end
removeFrameworkPlayerMoney(FPlayer, totalPrice)
cb(true)
else
cb(false)
end
end
if (ESX) then ESX.RegisterServerCallback('qb-shop:canAfford', canAfford)
elseif (QBCore) then QBCore.Functions.CreateCallback('qb-shop:canAfford', canAfford)
end