76 lines
2.4 KiB
Lua
76 lines
2.4 KiB
Lua
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
|