Hello all,
I’ve got myself into a situation, and i do not seem to get out of it. I’m trying to change up a script and there’s this part where i want the server sided script to trigger a client event. But it does not seem to work for some reason. I’ve pasted the code down below with the error messages i get (these are from the server console).
server.lua :: (The bold part does not seem to work)
RegisterServerEvent('meth:start_lab_maken')
AddEventHandler('meth:start_lab_maken', function()
local _source = source
local xPlayer = ESX.GetPlayerFromId(_source)
if xPlayer.getInventoryItem('methlab').count >= 1 then
xPlayer.showNotification(('U hebt al een methlab bij, je kan er niet nog een dragen!'))
TriggerEvent('meth:WegUitMarker', xPlayer.source, spawnPoint, vehicle)
else
if xPlayer.getInventoryItem('slang').count >= 2 and xPlayer.getInventoryItem('glas_fles').count >= 1 and xPlayer.getInventoryItem('campingstove').count >= 1 and xPlayer.getInventoryItem('tube').count >= 2 and xPlayer.getInventoryItem('propanebottle').count >= 1 then
xPlayer.removeInventoryItem('slang', 2)
xPlayer.removeInventoryItem('glas_fles', 1)
xPlayer.removeInventoryItem('campingstove', 1)
xPlayer.removeInventoryItem('tube', 2)
xPlayer.removeInventoryItem('propanebottle', 1)
**TriggerEvent('meth:spullenweg', xPlayer.source)**
-- xPlayer.addInventoryItem('methlab', 1)
else
xPlayer.showNotification(('U hebt niet genoeg spullen om een lab in elkaar te zetten!'))
end
end
end)
client.lua :: (The bold part from server.lua need to activate the bolt italic part from the client.lua)
AddEventHandler('meth:spullenweg', function ()
print('Client3')
Citizen.CreateThread(function()
print('Client1')
exports['progressBars']:startUI(10000, "Reparing")
Citizen.Wait(10000)
print('Client2')
end)
end)
Error messages i’ve recieved while trying to solve this issue:


I hope ya’ll can help me solve this issue. Thanks anyways!
1 Like
A few things here wrong.
You are using “TriggerEvent” instead of “TriggerClientEvent”. This means you’re only triggering an event to be processed server side, not client side.
Your error does not even involve the event issue, your source is nil, or your xPlayer object is not returning the player, because xPlayer is nil, resulting in your error.
Lastly, in your client side script, never create threads inside events. This will just stack threads for no reason, resulting in poor quality scripts. You don’t even need a thread to use the code inside it. Just execute the export without creating a thread for it, it will work just fine.
Thanks, i think i might have solved it. Atleast i got the server side to execute the client part!
Here is what i did for any others who wondered:
server.lua:
RegisterServerEvent('meth:start_lab_maken')
AddEventHandler('meth:start_lab_maken', function()
local _source = source
local xPlayer = ESX.GetPlayerFromId(_source)
if xPlayer.getInventoryItem('methlab').count >= 1 then
xPlayer.showNotification(('U hebt al een methlab bij, je kan er niet nog een dragen!'))
TriggerEvent('meth:WegUitMarker', xPlayer.source, spawnPoint, vehicle)
else
if xPlayer.getInventoryItem('slang').count >= 2 and xPlayer.getInventoryItem('glas_fles').count >= 1 and xPlayer.getInventoryItem('campingstove').count >= 1 and xPlayer.getInventoryItem('tube').count >= 2 and xPlayer.getInventoryItem('propanebottle').count >= 1 then
xPlayer.removeInventoryItem('slang', 2)
xPlayer.removeInventoryItem('glas_fles', 1)
xPlayer.removeInventoryItem('campingstove', 1)
xPlayer.removeInventoryItem('tube', 2)
xPlayer.removeInventoryItem('propanebottle', 1)
TriggerClientEvent('meth:spullenweg', source)
-- xPlayer.addInventoryItem('methlab', 1)
else
xPlayer.showNotification(('U hebt niet genoeg spullen om een lab in elkaar te zetten!'))
end
end
end)
client.lua: (added: RegisterNetEvent(‘meth:spullenweg’))
RegisterNetEvent('meth:spullenweg')
AddEventHandler('meth:spullenweg', function ()
exports['progressBars']:startUI(10000, "Reparing")
Citizen.Wait(10000)
print('Client2')
end)
Is this a good way to do this? or are there any better ways ?
1 Like