diff --git a/__resource.lua b/__resource.lua index a29f912f..a0947dbf 100644 --- a/__resource.lua +++ b/__resource.lua @@ -30,3 +30,5 @@ client_scripts { 'locales/sv.lua', 'client/main.lua' } + +dependency 'es_extended' diff --git a/client/main.lua b/client/main.lua index 2506b8c2..97b3c22f 100644 --- a/client/main.lua +++ b/client/main.lua @@ -19,11 +19,9 @@ end) function ShowJobListingMenu(data) ESX.TriggerServerCallback('esx_joblisting:getJobsList', function(data) local elements = {} + for i = 1, #data, 1 do - table.insert( - elements, - {label = data[i].label, value = data[i].value} - ) + table.insert(elements, {label = data[i].label, value = data[i].value}) end ESX.UI.Menu.CloseAll() @@ -52,7 +50,7 @@ end) -- Display markers Citizen.CreateThread(function() while true do - Citizen.Wait(10) + Citizen.Wait(1) local coords = GetEntityCoords(GetPlayerPed(-1)) for i=1, #Config.Zones, 1 do if(GetDistanceBetweenCoords(coords, Config.Zones[i].x, Config.Zones[i].y, Config.Zones[i].z, true) < Config.DrawDistance) then @@ -65,10 +63,10 @@ end) -- Activate menu when player is inside marker Citizen.CreateThread(function() while true do - Citizen.Wait(10) - local coords = GetEntityCoords(GetPlayerPed(-1)) - isInJoblistingMarker = false - local currentZone = nil + Citizen.Wait(1) + local coords = GetEntityCoords(GetPlayerPed(-1)) + isInJoblistingMarker = false + local currentZone = nil for i=1, #Config.Zones, 1 do if(GetDistanceBetweenCoords(coords, Config.Zones[i].x, Config.Zones[i].y, Config.Zones[i].z, true) < Config.ZoneSize.x / 2) then isInJoblistingMarker = true diff --git a/server/main.lua b/server/main.lua index af73d047..b83dbc64 100644 --- a/server/main.lua +++ b/server/main.lua @@ -2,25 +2,36 @@ ESX = nil TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end) ESX.RegisterServerCallback('esx_joblisting:getJobsList', function(source, cb) - MySQL.Async.fetchAll( - 'SELECT * FROM jobs WHERE whitelisted = false', - {}, - function(result) - local data = {} - for i=1, #result, 1 do - table.insert(data, { - value = result[i].name, - label = result[i].label - }) - end - cb(data) + MySQL.Async.fetchAll('SELECT * FROM jobs WHERE whitelisted = @whitelisted', { + ['@whitelisted'] = false + }, function(result) + local data = {} + + for i=1, #result, 1 do + table.insert(data, { + value = result[i].name, + label = result[i].label + }) end - ) + + cb(data) + end) end) RegisterServerEvent('esx_joblisting:setJob') AddEventHandler('esx_joblisting:setJob', function(job) local _source = source local xPlayer = ESX.GetPlayerFromId(_source) - xPlayer.setJob(job, 0) -end) \ No newline at end of file + + MySQL.Async.fetchAll('SELECT whitelisted FROM jobs WHERE name = @name', { + ['@name'] = job, + }, function(result) + if not result[1].whitelisted then + xPlayer.setJob(job, 0) + else + print(('esx_joblisting: %s attempted to set a whitelisted job! (lua injector)'):format(xPlayer.identifier)) + end + + end) + +end)