1
0
Fork 0
forked from Simnation/Main
Main/resources/[qb]/qb-core/server/exports.lua
2025-06-07 08:51:21 +02:00

336 lines
9.1 KiB
Lua

-- Add or change (a) method(s) in the QBCore.Functions table
local function SetMethod(methodName, handler)
if type(methodName) ~= 'string' then
return false, 'invalid_method_name'
end
QBCore.Functions[methodName] = handler
TriggerEvent('QBCore:Server:UpdateObject')
return true, 'success'
end
QBCore.Functions.SetMethod = SetMethod
exports('SetMethod', SetMethod)
-- Add or change (a) field(s) in the QBCore table
local function SetField(fieldName, data)
if type(fieldName) ~= 'string' then
return false, 'invalid_field_name'
end
QBCore[fieldName] = data
TriggerEvent('QBCore:Server:UpdateObject')
return true, 'success'
end
QBCore.Functions.SetField = SetField
exports('SetField', SetField)
-- Single add job function which should only be used if you planning on adding a single job
local function AddJob(jobName, job)
if type(jobName) ~= 'string' then
return false, 'invalid_job_name'
end
if QBCore.Shared.Jobs[jobName] then
return false, 'job_exists'
end
QBCore.Shared.Jobs[jobName] = job
TriggerClientEvent('QBCore:Client:OnSharedUpdate', -1, 'Jobs', jobName, job)
TriggerEvent('QBCore:Server:UpdateObject')
return true, 'success'
end
QBCore.Functions.AddJob = AddJob
exports('AddJob', AddJob)
-- Multiple Add Jobs
local function AddJobs(jobs)
local shouldContinue = true
local message = 'success'
local errorItem = nil
for key, value in pairs(jobs) do
if type(key) ~= 'string' then
message = 'invalid_job_name'
shouldContinue = false
errorItem = jobs[key]
break
end
if QBCore.Shared.Jobs[key] then
message = 'job_exists'
shouldContinue = false
errorItem = jobs[key]
break
end
QBCore.Shared.Jobs[key] = value
end
if not shouldContinue then return false, message, errorItem end
TriggerClientEvent('QBCore:Client:OnSharedUpdateMultiple', -1, 'Jobs', jobs)
TriggerEvent('QBCore:Server:UpdateObject')
return true, message, nil
end
QBCore.Functions.AddJobs = AddJobs
exports('AddJobs', AddJobs)
-- Single Remove Job
local function RemoveJob(jobName)
if type(jobName) ~= 'string' then
return false, 'invalid_job_name'
end
if not QBCore.Shared.Jobs[jobName] then
return false, 'job_not_exists'
end
QBCore.Shared.Jobs[jobName] = nil
TriggerClientEvent('QBCore:Client:OnSharedUpdate', -1, 'Jobs', jobName, nil)
TriggerEvent('QBCore:Server:UpdateObject')
return true, 'success'
end
QBCore.Functions.RemoveJob = RemoveJob
exports('RemoveJob', RemoveJob)
-- Single Update Job
local function UpdateJob(jobName, job)
if type(jobName) ~= 'string' then
return false, 'invalid_job_name'
end
if not QBCore.Shared.Jobs[jobName] then
return false, 'job_not_exists'
end
QBCore.Shared.Jobs[jobName] = job
TriggerClientEvent('QBCore:Client:OnSharedUpdate', -1, 'Jobs', jobName, job)
TriggerEvent('QBCore:Server:UpdateObject')
return true, 'success'
end
QBCore.Functions.UpdateJob = UpdateJob
exports('UpdateJob', UpdateJob)
-- Single add item
local function AddItem(itemName, item)
if type(itemName) ~= 'string' then
return false, 'invalid_item_name'
end
if QBCore.Shared.Items[itemName] then
return false, 'item_exists'
end
QBCore.Shared.Items[itemName] = item
TriggerClientEvent('QBCore:Client:OnSharedUpdate', -1, 'Items', itemName, item)
TriggerEvent('QBCore:Server:UpdateObject')
return true, 'success'
end
QBCore.Functions.AddItem = AddItem
exports('AddItem', AddItem)
-- Single update item
local function UpdateItem(itemName, item)
if type(itemName) ~= 'string' then
return false, 'invalid_item_name'
end
if not QBCore.Shared.Items[itemName] then
return false, 'item_not_exists'
end
QBCore.Shared.Items[itemName] = item
TriggerClientEvent('QBCore:Client:OnSharedUpdate', -1, 'Items', itemName, item)
TriggerEvent('QBCore:Server:UpdateObject')
return true, 'success'
end
QBCore.Functions.UpdateItem = UpdateItem
exports('UpdateItem', UpdateItem)
-- Multiple Add Items
local function AddItems(items)
local shouldContinue = true
local message = 'success'
local errorItem = nil
for key, value in pairs(items) do
if type(key) ~= 'string' then
message = 'invalid_item_name'
shouldContinue = false
errorItem = items[key]
break
end
if QBCore.Shared.Items[key] then
message = 'item_exists'
shouldContinue = false
errorItem = items[key]
break
end
QBCore.Shared.Items[key] = value
end
if not shouldContinue then return false, message, errorItem end
TriggerClientEvent('QBCore:Client:OnSharedUpdateMultiple', -1, 'Items', items)
TriggerEvent('QBCore:Server:UpdateObject')
return true, message, nil
end
QBCore.Functions.AddItems = AddItems
exports('AddItems', AddItems)
-- Single Remove Item
local function RemoveItem(itemName)
if type(itemName) ~= 'string' then
return false, 'invalid_item_name'
end
if not QBCore.Shared.Items[itemName] then
return false, 'item_not_exists'
end
QBCore.Shared.Items[itemName] = nil
TriggerClientEvent('QBCore:Client:OnSharedUpdate', -1, 'Items', itemName, nil)
TriggerEvent('QBCore:Server:UpdateObject')
return true, 'success'
end
QBCore.Functions.RemoveItem = RemoveItem
exports('RemoveItem', RemoveItem)
-- Single Add Gang
local function AddGang(gangName, gang)
if type(gangName) ~= 'string' then
return false, 'invalid_gang_name'
end
if QBCore.Shared.Gangs[gangName] then
return false, 'gang_exists'
end
QBCore.Shared.Gangs[gangName] = gang
TriggerClientEvent('QBCore:Client:OnSharedUpdate', -1, 'Gangs', gangName, gang)
TriggerEvent('QBCore:Server:UpdateObject')
return true, 'success'
end
QBCore.Functions.AddGang = AddGang
exports('AddGang', AddGang)
-- Multiple Add Gangs
local function AddGangs(gangs)
local shouldContinue = true
local message = 'success'
local errorItem = nil
for key, value in pairs(gangs) do
if type(key) ~= 'string' then
message = 'invalid_gang_name'
shouldContinue = false
errorItem = gangs[key]
break
end
if QBCore.Shared.Gangs[key] then
message = 'gang_exists'
shouldContinue = false
errorItem = gangs[key]
break
end
QBCore.Shared.Gangs[key] = value
end
if not shouldContinue then return false, message, errorItem end
TriggerClientEvent('QBCore:Client:OnSharedUpdateMultiple', -1, 'Gangs', gangs)
TriggerEvent('QBCore:Server:UpdateObject')
return true, message, nil
end
QBCore.Functions.AddGangs = AddGangs
exports('AddGangs', AddGangs)
-- Single Remove Gang
local function RemoveGang(gangName)
if type(gangName) ~= 'string' then
return false, 'invalid_gang_name'
end
if not QBCore.Shared.Gangs[gangName] then
return false, 'gang_not_exists'
end
QBCore.Shared.Gangs[gangName] = nil
TriggerClientEvent('QBCore:Client:OnSharedUpdate', -1, 'Gangs', gangName, nil)
TriggerEvent('QBCore:Server:UpdateObject')
return true, 'success'
end
QBCore.Functions.RemoveGang = RemoveGang
exports('RemoveGang', RemoveGang)
-- Single Update Gang
local function UpdateGang(gangName, gang)
if type(gangName) ~= 'string' then
return false, 'invalid_gang_name'
end
if not QBCore.Shared.Gangs[gangName] then
return false, 'gang_not_exists'
end
QBCore.Shared.Gangs[gangName] = gang
TriggerClientEvent('QBCore:Client:OnSharedUpdate', -1, 'Gangs', gangName, gang)
TriggerEvent('QBCore:Server:UpdateObject')
return true, 'success'
end
QBCore.Functions.UpdateGang = UpdateGang
exports('UpdateGang', UpdateGang)
local resourceName = GetCurrentResourceName()
local function GetCoreVersion(InvokingResource)
local resourceVersion = GetResourceMetadata(resourceName, 'version')
if InvokingResource and InvokingResource ~= '' then
print(('%s called qbcore version check: %s'):format(InvokingResource or 'Unknown Resource', resourceVersion))
end
return resourceVersion
end
QBCore.Functions.GetCoreVersion = GetCoreVersion
exports('GetCoreVersion', GetCoreVersion)
local function ExploitBan(playerId, origin)
local name = GetPlayerName(playerId)
MySQL.insert('INSERT INTO bans (name, license, discord, ip, reason, expire, bannedby) VALUES (?, ?, ?, ?, ?, ?, ?)', {
name,
QBCore.Functions.GetIdentifier(playerId, 'license'),
QBCore.Functions.GetIdentifier(playerId, 'discord'),
QBCore.Functions.GetIdentifier(playerId, 'ip'),
origin,
2147483647,
'Anti Cheat'
})
DropPlayer(playerId, Lang:t('info.exploit_banned', { discord = QBCore.Config.Server.Discord }))
TriggerEvent('qb-log:server:CreateLog', 'anticheat', 'Anti-Cheat', 'red', name .. ' has been banned for exploiting ' .. origin, true)
end
exports('ExploitBan', ExploitBan)