336 lines
		
	
	
	
		
			9.1 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			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)
 | 
