I could be wrong, but I think you’re trying to use a server-sided approach to determine the job. Try something like this, which gets the job once at the beginning and then just listens for job change events after that. (following your ++ = changed/new line style, except for the new functions)
++ ESX = nil
++ local playerJobName = nil
Citizen.CreateThread(
function()
++ loadEsx()
++ initializeJob()
++ registerJobChangeListener()
-- Wait for nui to load or just timeout
local l = 0
local timeout = false
while not tabLoaded do
Citizen.Wait(0)
l = l + 1
if l > 500 then
tabLoaded = true
timeout = true
end
end
if timeout == true then
print("Failed to load tablet nui...")
-- return ---- Quit
end
print("::The client lua for tablet loaded::")
REQUEST_NUI_FOCUS(false) -- This is just in case the resources restarted whilst the NUI is focused.
while true do
++ if playerJobName == 'ambulance' then**
-- Control ID 20 is the 'Z' key by default
-- 244 = M
-- Use https://wiki.fivem.net/wiki/Controls to find a different key
if (IsControlJustPressed(0, 244)) and GetLastInputMethod( 0 ) then
tabEnabled = not tabEnabled -- Toggle tablet visible state
REQUEST_NUI_FOCUS(tabEnabled)
print("The tablet state is: " .. tostring(tabEnabled))
Citizen.Wait(0)
end
if (tabEnabled) then
local ped = GetPlayerPed(-1)
DisableControlAction(0, 1, tabEnabled) -- LookLeftRight
DisableControlAction(0, 2, tabEnabled) -- LookUpDown
DisableControlAction(0, 24, tabEnabled) -- Attack
DisablePlayerFiring(ped, tabEnabled) -- Disable weapon firing
DisableControlAction(0, 142, tabEnabled) -- MeleeAttackAlternate
DisableControlAction(0, 106, tabEnabled) -- VehicleMouseControlOverride
end
Citizen.Wait(0)
++ else
++ Citizen.Wait(1000)
++ end
end
end
)
function loadEsx()
while ESX == nil do
TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
Citizen.Wait(0)
end
end
function initializeJob()
while true do
local playerData = ESX.GetPlayerData()
if playerData.job ~= nil then
handleJobChange(playerData.job)
break
end
Citizen.Wait(10)
end
end
function registerJobChangeListener()
RegisterNetEvent('esx:setJob')
AddEventHandler('esx:setJob', handleJobChange)
end
function handleJobChange(job)
playerJobName = job.name
end
4 Likes