Full View config.server.lua
Preview File Updated: v1.0.0 - 23.11.2024
SV = {}
-- ██████╗ █████╗ ████████╗ █████╗ ██████╗ █████╗ ███████╗███████╗
-- ██╔══██╗██╔══██╗╚══██╔══╝██╔══██╗██╔══██╗██╔══██╗██╔════╝██╔════╝
-- ██║ ██║███████║ ██║ ███████║██████╔╝███████║███████╗█████╗
-- ██║ ██║██╔══██║ ██║ ██╔══██║██╔══██╗██╔══██║╚════██║██╔══╝
-- ██████╔╝██║ ██║ ██║ ██║ ██║██████╔╝██║ ██║███████║███████╗
-- ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚═════╝ ╚═╝ ╚═╝╚══════╝╚══════╝
SV.Database = {
['esx'] = {
['table:users'] = 'users',
['column-users:identifier'] = 'identifier',
['column-users:firstname'] = 'firstname',
['column-users:lastname'] = 'lastname',
['column-users:job'] = 'job',
['column-users:job_grade'] = 'job_grade',
['column-users:job2'] = 'job2', -- NOT AVAILABLE IN ESX BY DEFAULT
['column-users:job_grade2'] = 'job_grade2', -- NOT AVAILABLE IN ESX BY DEFAULT
['table:job_grades'] = 'job_grades',
['table-job_grades:job_name'] = 'job_name',
['table-job_grades:grade'] = 'grade',
['table-job_grades:label'] = 'label',
['table-job_grades:salary'] = 'salary',
},
['qbcore'] = {
['table:players'] = 'players',
['column-players:citizenid'] = 'citizenid',
['column-players:job'] = 'job',
['column-players:gang'] = 'gang',
},
}
-- ██╗ ██╗███████╗██████╗ ██╗ ██╗ ██████╗ ██████╗ ██╗ ██╗███████╗
-- ██║ ██║██╔════╝██╔══██╗██║ ██║██╔═══██╗██╔═══██╗██║ ██╔╝██╔════╝
-- ██║ █╗ ██║█████╗ ██████╔╝███████║██║ ██║██║ ██║█████╔╝ ███████╗
-- ██║███╗██║██╔══╝ ██╔══██╗██╔══██║██║ ██║██║ ██║██╔═██╗ ╚════██║
-- ╚███╔███╔╝███████╗██████╔╝██║ ██║╚██████╔╝╚██████╔╝██║ ██╗███████║
-- ╚══╝╚══╝ ╚══════╝╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝
SV.Webhooks = {
['EMPLOYEE_BONUS'] = "",
['EMPLOYEE_CHANGE_GRADE'] = "",
['EMPLOYEE_FIRE'] = "",
['EMPLOYEE_HIRE'] = "",
['UPDATE_GRADE_LABEL'] = "",
['UPDATE_GRADE_SALARY'] = "",
['UPDATE_GRADE_PERMISSIONS'] = "",
['WITHDRAW'] = "",
['DEPOSIT'] = "",
['TRANSFER'] = "",
['ANNOUNCEMENT'] = "",
['CREATED_CLOTHING'] = "",
['MODIFIED_CLOTHING'] = "",
['DELETED_CLOTHING'] = "",
-- ['police'] = "" -- Config.JobMenusSettings useIndividualWebhooks (config.lua)
}
SV.WebhookText = {
['TITLE.EMPLOYEE_BONUS'] = "💸 Employee Bonus",
['DESCRIPTION.EMPLOYEE_BONUS'] = [[
Player %s [%s] gave a bonus to employee %s of %s$ in %s
]],
['TITLE.EMPLOYEE_CHANGE_GRADE'] = "👨💼 Employee Change Grade",
['DESCRIPTION.EMPLOYEE_CHANGE_GRADE'] = [[
Player %s [%s] changed the job grade of player %s to %s in %s
]],
['TITLE.EMPLOYEE_FIRE'] = "❌ Employee Fire",
['DESCRIPTION.EMPLOYEE_FIRE'] = [[
Player %s [%s] fired an employee %s from %s
]],
['TITLE.EMPLOYEE_HIRE'] = "✅ Employee Hire",
['DESCRIPTION.EMPLOYEE_HIRE'] = [[
Player %s [%s] hired an employee %s (%s) to %s
]],
['TITLE.UPDATE_GRADE_LABEL'] = "🆕 Update Grade Label",
['DESCRIPTION.UPDATE_GRADE_LABEL'] = [[
Player %s [%s] updated grade label from %s to %s (grade: %s) in %s
]],
['TITLE.UPDATE_GRADE_SALARY'] = "🆕 Update Grade Salary",
['DESCRIPTION.UPDATE_GRADE_SALARY'] = [[
Player %s [%s] updated grade salary from $%s to $%s (grade: %s) in %s
]],
['TITLE.UPDATE_GRADE_PERMISSIONS'] = "🆕 Update Grade Permissions",
['DESCRIPTION.UPDATE_GRADE_PERMISSIONS'] = [[
Player %s [%s] made a permissions change for grade %s in %s.
%s
]],
['TITLE.WITHDRAW'] = "💲 Withdraw",
['DESCRIPTION.WITHDRAW'] = [[
Player %s [%s] withdrew $%s from %s
]],
['TITLE.DEPOSIT'] = "💲 Deposit",
['DESCRIPTION.DEPOSIT'] = [[
Player %s [%s] deposit $%s to %s
]],
['TITLE.TRANSFER'] = "💲 Transfer",
['DESCRIPTION.TRANSFER'] = [[
Player %s [%s] made a $%s transfer from %s to %s.
]],
['TITLE.ANNOUNCEMENT'] = "📰 New Announcement",
['DESCRIPTION.ANNOUNCEMENT'] = [[
%s received an announcement from %s with the content:
```%s```
]],
['TITLE.CREATED_CLOTHING'] = "👕 Created Outfit",
['DESCRIPTION.CREATED_CLOTHING'] = [[
Player %s [%s] created a new outfit **%s** (gender: %s) for %s
Grades with access:
```%s```
Outfit:
```json
%s
```
]],
['TITLE.MODIFIED_CLOTHING'] = "👕 Modified Outfit",
['DESCRIPTION.MODIFIED_CLOTHING'] = [[
Player %s [%s] modified outfit id %s (gender: %s) in %s
Grades with access:
```%s```
Outfit:
```json
%s
```
]],
['TITLE.DELETED_CLOTHING'] = "👕 Deleted Outfit",
['DESCRIPTION.DELETED_CLOTHING'] = [[
Player %s [%s] deleted outfit from %s - id %s
]],
}
SV.Webhook = function(webhook_id, title, description, color, footer)
local DiscordWebHook = SV.Webhooks[webhook_id]
local embeds = {{
["title"] = title,
["type"] = "rich",
["description"] = description,
["color"] = color,
["footer"] = {
["text"] = footer..' - '..os.date(),
},
}}
PerformHttpRequest(DiscordWebHook, function(err, text, headers) end, 'POST', json.encode({embeds = embeds}), {['Content-Type'] = 'application/json'})
end
-- ███████╗██████╗ █████╗ ███╗ ███╗███████╗██╗ ██╗ ██████╗ ██████╗ ██╗ ██╗
-- ██╔════╝██╔══██╗██╔══██╗████╗ ████║██╔════╝██║ ██║██╔═══██╗██╔══██╗██║ ██╔╝
-- █████╗ ██████╔╝███████║██╔████╔██║█████╗ ██║ █╗ ██║██║ ██║██████╔╝█████╔╝
-- ██╔══╝ ██╔══██╗██╔══██║██║╚██╔╝██║██╔══╝ ██║███╗██║██║ ██║██╔══██╗██╔═██╗
-- ██║ ██║ ██║██║ ██║██║ ╚═╝ ██║███████╗╚███╔███╔╝╚██████╔╝██║ ██║██║ ██╗
-- ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝ ╚══╝╚══╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝
SV.getPlayer = function(src)
if Config.Core == "ESX" then
return Core.GetPlayerFromId(src)
elseif Config.Core == "QB-Core" then
return Core.Functions.GetPlayer(src)
end
end
SV.getIdentifier = function(xPlayer)
if Config.Core == "ESX" then
return xPlayer.identifier
elseif Config.Core == "QB-Core" then
return xPlayer.PlayerData.citizenid
end
end
SV.getPlayerByIdentifier = function(identifier)
if Config.Core == "ESX" then
return Core.GetPlayerFromIdentifier(identifier)
elseif Config.Core == "QB-Core" then
return Core.Functions.GetPlayerByCitizenId(identifier)
end
end
SV.getPlayerByIdentifierOffline = function(identifier)
if Config.Core == "QB-Core" then
return Core.Functions.GetOfflinePlayerByCitizenId(identifier)
end
end
SV.getCharacterName = function(xPlayer)
if Config.Core == "ESX" then
return xPlayer.getName()
elseif Config.Core == "QB-Core" then
return xPlayer.PlayerData.charinfo.firstname .. ' ' .. xPlayer.PlayerData.charinfo.lastname
end
end
-- ██╗ ██████╗ ██████╗
-- ██║██╔═══██╗██╔══██╗
-- ██║██║ ██║██████╔╝
-- ██ ██║██║ ██║██╔══██╗
-- ╚█████╔╝╚██████╔╝██████╔╝
-- ╚════╝ ╚═════╝ ╚═════╝
SV.getPlayerJob = function(xPlayer)
if Config.Core == "ESX" then
return xPlayer.job.name
elseif Config.Core == "QB-Core" then
return xPlayer.PlayerData.job.name
end
end
SV.getPlayerJobGrade = function(xPlayer)
if Config.Core == "ESX" then
return xPlayer.job.grade
elseif Config.Core == "QB-Core" then
return xPlayer.PlayerData.job.grade.level
end
end
SV.setPlayerJob = function(xPlayer, name, grade)
if name then
if Config.Core == "ESX" then
xPlayer.setJob(name, grade)
elseif Config.Core == "QB-Core" then
xPlayer.Functions.SetJob(name, grade)
Core.Player.Save(xPlayer.PlayerData.source)
end
else
if Config.Core == "ESX" then
xPlayer.setJob('unemployed', 0)
elseif Config.Core == "QB-Core" then
xPlayer.Functions.SetJob('unemployed', 0)
Core.Player.Save(xPlayer.PlayerData.source)
end
end
end
SV.setPlayerJobOffline = function(identifier, name, grade, jobData)
if Config.Core == "ESX" then
if name then
MySQL.Async.execute(('UPDATE `%s` SET `%s` = @job, `%s` = @job_grade WHERE `%s` = @identifier'):format(
SV.Database['esx']['table:users'],
SV.Database['esx']['column-users:job'],
SV.Database['esx']['column-users:job_grade'],
SV.Database['esx']['column-users:identifier']
), {
['@job'] = name,
['@job_grade'] = grade,
['@identifier'] = identifier
})
return true
else
MySQL.Async.execute(('UPDATE `%s` SET `%s` = @job, `%s` = @job_grade WHERE `%s` = @identifier'):format(
SV.Database['esx']['table:users'],
SV.Database['esx']['column-users:job'],
SV.Database['esx']['column-users:job_grade'],
SV.Database['esx']['column-users:identifier']
), {
['@job'] = 'unemployed',
['@job_grade'] = '0',
['@identifier'] = identifier
})
return true
end
elseif Config.Core == "QB-Core" then
local data = MySQL.query.await(("SELECT `%s` FROM `%s` WHERE `%s` = @citizenid"):format(
SV.Database['qbcore']['column-players:job'],
SV.Database['qbcore']['table:players'],
SV.Database['qbcore']['column-players:citizenid']
), {
['@citizenid'] = identifier
})
if not data or not data[1] then
return false
end
local playerJob = json.decode(data[1][SV.Database['qbcore']['column-players:job']])
if not playerJob then
return false
end
if name then
local selectedGrade = jobData.grades[tostring(grade)] or jobData.grades[tonumber(grade)]
if not selectedGrade then
return
end
playerJob.onduty = jobData.defaultDuty
playerJob.type = jobData.type or 'none'
playerJob.label = jobData.label
playerJob.payment = selectedGrade.payment
playerJob.name = name
playerJob.grade = {
level = tonumber(grade),
name = selectedGrade.name
}
playerJob.isboss = selectedGrade.isboss or false
else
if not jobData['unemployed'] then
return
end
playerJob.onduty = jobData['unemployed'].defaultDuty
playerJob.type = jobData['unemployed'].type or 'none'
playerJob.label = jobData['unemployed'].label
playerJob.payment = jobData['unemployed'].grades['0'].payment
playerJob.name = 'unemployed'
playerJob.grade = {
level = 0,
name = jobData['unemployed'].grades['0'].name
}
playerJob.isboss = false
end
playerJob = json.encode(playerJob)
MySQL.Async.execute(('UPDATE `%s` SET `%s` = @job WHERE `%s` = @citizenid'):format(
SV.Database['qbcore']['table:players'],
SV.Database['qbcore']['column-players:job'],
SV.Database['qbcore']['column-players:citizenid']
), {
['@job'] = playerJob,
['@citizenid'] = identifier
})
return true
end
return false
end
-- ██████╗ █████╗ ███╗ ██╗ ██████╗
-- ██╔════╝ ██╔══██╗████╗ ██║██╔════╝
-- ██║ ███╗███████║██╔██╗ ██║██║ ███╗
-- ██║ ██║██╔══██║██║╚██╗██║██║ ██║
-- ╚██████╔╝██║ ██║██║ ╚████║╚██████╔╝
-- ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝
SV.getPlayerGang = function(xPlayer)
if Config.Core == "ESX" then
return xPlayer.job2.name
elseif Config.Core == "QB-Core" then
return xPlayer.PlayerData.gang.name
end
end
SV.getPlayerGangGrade = function(xPlayer)
if Config.Core == "ESX" then
return xPlayer.job2.grade
elseif Config.Core == "QB-Core" then
return xPlayer.PlayerData.gang.grade and xPlayer.PlayerData.gang.grade.level
end
end
SV.setPlayerGang = function(xPlayer, name, grade)
if name then
if Config.Core == "ESX" then
if xPlayer.setJob2 then
xPlayer.setJob2(name, grade)
end
elseif Config.Core == "QB-Core" then
xPlayer.Functions.SetGang(name, grade)
Core.Player.Save(xPlayer.PlayerData.source)
end
else
if Config.Core == "ESX" then
if xPlayer.setJob2 then
xPlayer.setJob2('unemployed', 0)
end
elseif Config.Core == "QB-Core" then
xPlayer.Functions.SetGang('none', 0)
Core.Player.Save(xPlayer.PlayerData.source)
end
end
end
SV.setPlayerGangOffline = function(identifier, name, grade, gangData)
if Config.Core == "ESX" then
if name then
MySQL.Async.execute(('UPDATE `%s` SET `%s` = @job2, `%s` = @job_grade2 WHERE `%s` = @identifier'):format(
SV.Database['esx']['table:users'],
SV.Database['esx']['column-users:job2'],
SV.Database['esx']['column-users:job_grade2'],
SV.Database['esx']['column-users:identifier']
), {
['@job2'] = name,
['@job_grade2'] = grade,
['@identifier'] = identifier
})
return true
else
MySQL.Async.execute(('UPDATE `%s` SET `%s` = @job2, `%s` = @job_grade2 WHERE `%s` = @identifier'):format(
SV.Database['esx']['table:users'],
SV.Database['esx']['column-users:job2'],
SV.Database['esx']['column-users:job_grade2'],
SV.Database['esx']['column-users:identifier']
), {
['@job2'] = 'unemployed',
['@job_grade2'] = '0',
['@identifier'] = identifier
})
return true
end
elseif Config.Core == "QB-Core" then
local data = MySQL.query.await(("SELECT `%s` FROM `%s` WHERE `%s` = @citizenid"):format(
SV.Database['qbcore']['column-players:gang'],
SV.Database['qbcore']['table:players'],
SV.Database['qbcore']['column-players:citizenid']
), {
['@citizenid'] = identifier
})
if not data or not data[1] then
return false
end
local playerGang = json.decode(data[1][SV.Database['qbcore']['column-players:gang']])
if not playerGang then
return false
end
if name then
local selectedGrade = gangData.grades[tostring(grade)] or gangData.grades[tonumber(grade)]
if not selectedGrade then
return
end
playerGang.label = gangData.label
playerGang.name = name
playerGang.grade = {
level = tonumber(grade),
name = selectedGrade.name
}
playerGang.isboss = selectedGrade.isboss or false
else
if not gangData['none'] then
return
end
playerGang.label = gangData['none'].label
playerGang.name = 'none'
playerGang.grade = {
level = 0,
name = gangData['none'].grades['0'].name
}
playerGang.isboss = false
end
playerGang = json.encode(playerGang)
MySQL.Async.execute(('UPDATE `%s` SET `%s` = @gang WHERE `%s` = @citizenid'):format(
SV.Database['qbcore']['table:players'],
SV.Database['qbcore']['column-players:gang'],
SV.Database['qbcore']['column-players:citizenid']
), {
['@gang'] = playerGang,
['@citizenid'] = identifier
})
return true
end
return false
end
-- ██╗ ██████╗ ██████╗ ███████╗
-- ██║██╔═══██╗██╔══██╗██╔════╝
-- ██║██║ ██║██████╔╝███████╗
-- ██ ██║██║ ██║██╔══██╗╚════██║
-- ╚█████╔╝╚██████╔╝██████╔╝███████║
-- ╚════╝ ╚═════╝ ╚═════╝ ╚══════╝
SV.getFrameworkJobs = function(cb)
if Config.Core == "ESX" then
cb(Core.GetJobs())
elseif Config.Core == "QB-Core" then
cb(Core.Shared.Jobs)
end
end
SV.updateFrameworkJob = function(type, name, grade, value)
if Config.Core == "ESX" then
if type == 'label' then
Core.Jobs[name].grades[tostring(grade)].label = value
if Core.RefreshJobs then
Core.RefreshJobs()
end
elseif type == 'salary' then
Core.Jobs[name].grades[tostring(grade)].salary = value
if Core.RefreshJobs then
Core.RefreshJobs()
end
end
end
end
-- ██████╗ █████╗ ███╗ ██╗ ██████╗ ███████╗
-- ██╔════╝ ██╔══██╗████╗ ██║██╔════╝ ██╔════╝
-- ██║ ███╗███████║██╔██╗ ██║██║ ███╗███████╗
-- ██║ ██║██╔══██║██║╚██╗██║██║ ██║╚════██║
-- ╚██████╔╝██║ ██║██║ ╚████║╚██████╔╝███████║
-- ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝ ╚══════╝
SV.getFrameworkGangs = function(cb)
if Config.Core == "ESX" then
cb(Core.GetJobs())
elseif Config.Core == "QB-Core" then
cb(Core.Shared.Gangs)
end
end
SV.updateFrameworkGang = function(type, name, grade, value)
if Config.Core == "ESX" then
if type == 'label' then
Core.Jobs[name].grades[tostring(grade)].label = value
if Core.RefreshJobs then
Core.RefreshJobs()
end
elseif type == 'salary' then
Core.Jobs[name].grades[tostring(grade)].salary = value
if Core.RefreshJobs then
Core.RefreshJobs()
end
end
end
end
-- ███╗ ███╗ ██████╗ ███╗ ██╗███████╗██╗ ██╗
-- ████╗ ████║██╔═══██╗████╗ ██║██╔════╝╚██╗ ██╔╝
-- ██╔████╔██║██║ ██║██╔██╗ ██║█████╗ ╚████╔╝
-- ██║╚██╔╝██║██║ ██║██║╚██╗██║██╔══╝ ╚██╔╝
-- ██║ ╚═╝ ██║╚██████╔╝██║ ╚████║███████╗ ██║
-- ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚══════╝ ╚═╝
SV.getMoney = function(xPlayer, moneyType)
if Config.Core == "ESX" then
local moneyType = moneyType == 'cash' and 'money' or moneyType
return xPlayer.getAccount(moneyType).money
elseif Config.Core == "QB-Core" then
return xPlayer.Functions.GetMoney(moneyType)
end
end
SV.addMoney = function(xPlayer, moneyType, count)
if Config.Core == "ESX" then
local moneyType = moneyType == 'cash' and 'money' or moneyType == 'dirty' and 'black_money' or moneyType
xPlayer.addAccountMoney(moneyType, count)
elseif Config.Core == "QB-Core" then
xPlayer.Functions.AddMoney(moneyType, count)
end
end
SV.removeMoney = function(xPlayer, moneyType, count)
if Config.Core == "ESX" then
local moneyType = moneyType == 'cash' and 'money' or moneyType
xPlayer.removeAccountMoney(moneyType, count)
elseif Config.Core == "QB-Core" then
xPlayer.Functions.RemoveMoney(moneyType, count)
end
end
SV.addMoneyOffline = function(identifier, moneyType, count, cb)
if Config.Core == "ESX" then
local moneyType = moneyType == 'cash' and 'money' or moneyType == 'dirty' and 'black_money' or moneyType
local data = MySQL.query.await(("SELECT accounts FROM `%s` WHERE `%s` = @identifier"):format(
SV.Database['esx']['table:users'],
SV.Database['esx']['column-users:identifier']
), {
['@identifier'] = identifier
})
if not data or not data[1] then
if cb then
cb(false)
end
return
end
local accounts = json.decode(data[1].accounts)
if not accounts or not accounts[moneyType] then
if cb then
cb(false)
end
return
end
accounts[moneyType] = tonumber(accounts[moneyType]) + tonumber(count)
local updatedAccountsJson = json.encode(accounts)
MySQL.Async.execute(('UPDATE `%s` SET accounts = @accounts WHERE `%s` = @identifier'):format(
SV.Database['esx']['table:users'],
SV.Database['esx']['column-users:identifier']
), {
['@accounts'] = updatedAccountsJson,
['@identifier'] = identifier
})
if cb then
cb(true)
end
elseif Config.Core == "QB-Core" then
local data = MySQL.query.await(("SELECT money FROM `%s` WHERE `%s` = @citizenid"):format(
SV.Database['qbcore']['table:players'],
SV.Database['qbcore']['column-players:citizenid']
), {
['@citizenid'] = identifier
})
if not data or not data[1] then
if cb then
cb(false)
end
return
end
local accounts = json.decode(data[1].money)
if not accounts or not accounts[moneyType] then
if cb then
cb(false)
end
return
end
accounts[moneyType] = tonumber(accounts[moneyType]) + tonumber(count)
local updatedAccountsJson = json.encode(accounts)
MySQL.Async.execute(('UPDATE `%s` SET money = @money WHERE `%s` = @citizenid'):format(
SV.Database['qbcore']['table:players'],
SV.Database['qbcore']['column-players:citizenid']
), {
['@money'] = updatedAccountsJson,
['@citizenid'] = identifier
})
if cb then
cb(true)
end
end
end
-- ██████╗██╗ ██╗███████╗████████╗ ██████╗ ███╗ ███╗ ███████╗ ██████╗ ██████╗██╗███████╗████████╗██╗ ██╗ █████╗ ██████╗ ██████╗
-- ██╔════╝██║ ██║██╔════╝╚══██╔══╝██╔═══██╗████╗ ████║ ██╔════╝██╔═══██╗██╔════╝██║██╔════╝╚══██╔══╝╚██╗ ██╔╝ ██╔══██╗██╔════╝██╔════╝
-- ██║ ██║ ██║███████╗ ██║ ██║ ██║██╔████╔██║ ███████╗██║ ██║██║ ██║█████╗ ██║ ╚████╔╝ ███████║██║ ██║
-- ██║ ██║ ██║╚════██║ ██║ ██║ ██║██║╚██╔╝██║ ╚════██║██║ ██║██║ ██║██╔══╝ ██║ ╚██╔╝ ██╔══██║██║ ██║
-- ╚██████╗╚██████╔╝███████║ ██║ ╚██████╔╝██║ ╚═╝ ██║ ███████║╚██████╔╝╚██████╗██║███████╗ ██║ ██║ ██║ ██║╚██████╗╚██████╗██╗
-- ╚═════╝ ╚═════╝ ╚══════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚══════╝ ╚═════╝ ╚═════╝╚═╝╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝╚═╝
---@param name string: this will be the accountName from Config.JobMenusSettings
SV.getSocietyMoney = function(name, cb)
if Config.Banking == 'qb-banking' then
local society = exports['qb-banking']:GetAccountBalance(name)
cb(society)
elseif Config.Banking == 'okokBanking' then
local society = exports['okokBanking']:GetAccount(name)
cb(society)
end
end
---@param name string: this will be the accountName from Config.JobMenusSettings
SV.addSocietyMoney = function(name, amount)
if Config.Banking == 'qb-banking' then
exports['qb-banking']:AddMoney(name, amount)
elseif Config.Banking == 'okokBanking' then
exports['okokBanking']:AddMoney(name, amount)
end
end
---@param name string: this will be the accountName from Config.JobMenusSettings
SV.removeSocietyMoney = function(name, amount)
if Config.Banking == 'qb-banking' then
exports['qb-banking']:RemoveMoney(name, amount)
elseif Config.Banking == 'okokBanking' then
exports['okokBanking']:RemoveMoney(name, amount)