Events
The Events module provides a simplified API for handling FiveM events, replacing the traditional AddEventHandler
with cleaner, more readable methods.
Compatibility
✅ Shared - Works on both client and server-side
Basic Usage
Instead of using AddEventHandler
, use the simplified events API:
-- Using namespace
fivem.events:on('playerSpawned', function()
print('Player spawned!')
end)
-- Using global access (no fivem prefix needed)
events:on('playerSpawned', function()
print('Player spawned!')
end)
Available Methods
events.on(eventName, callback)
events.on(eventName, callback)
Adds an event handler for the specified event.
Parameters:
eventName
(string) - The name of the event to listen forcallback
(function) - The function to execute when the event is triggered
Example:
fivem.events:on('playerSpawned', function()
print('Player has spawned!')
end)
-- Or use global access
events:on('playerSpawned', function()
print('Player has spawned!')
end)
events:emit(eventName, ...)
events:emit(eventName, ...)
Triggers a local event.
Parameters:
eventName
(string) - The name of the event to trigger...
- Additional arguments to pass to the event handlers
Example:
fivem.events:emit('customEvent', 'Hello', 'World')
-- Or use global access
events:emit('customEvent', 'Hello', 'World')
events.emitServer(eventName, ...)
events.emitServer(eventName, ...)
Triggers a server event.
Parameters:
eventName
(string) - The name of the event to trigger on the server...
- Additional arguments to pass to the server
Example:
fivem.events.emitServer('savePlayerData', playerData)
-- Or use global access
events.emitServer('savePlayerData', playerData)
events.emitClient(eventName, target, ...)
events.emitClient(eventName, target, ...)
Triggers a client event for a specific player.
Parameters:
eventName
(string) - The name of the event to triggertarget
(number) - The player ID to send the event to...
- Additional arguments to pass to the client
Example:
fivem.events:emitClient('showNotification', playerId, 'Welcome!')
-- Or use global access
events:emitClient('showNotification', playerId, 'Welcome!')
Best Practices
Use descriptive event names - Make event names clear and specific
Handle errors - Always check for errors in event callbacks
Clean up events - Remove event handlers when they're no longer needed
Use namespacing - Consider prefixing custom events with your resource name
Check environment - Use
fivem.isServer
orfivem.isClient
when needed
-- Good example
events:on('myResource:playerJoined', function(playerId)
-- Handle player join
end)
-- Clean up when resource stops
events:on('onResourceStop', function(resourceName)
if resourceName == GetCurrentResourceName() then
events:off('myResource:playerJoined')
end
end)
-- Environment-specific handling
events:on('playerSpawned', function()
if fivem.isClient then
-- Client-side spawn logic
print('Client spawn logic')
else
-- Server-side spawn logic
print('Player spawned on server')
end
end)
Migration from Traditional Events
AddEventHandler('eventName', callback)
fivem.events:on('eventName', callback)
or events:on('eventName', callback)
TriggerEvent('eventName', ...)
fivem.events:emit('eventName', ...)
or events:emit('eventName', ...)
TriggerServerEvent('eventName', ...)
fivem.events:emitServer('eventName', ...)
or events:emitServer('eventName', ...)
TriggerClientEvent('eventName', target, ...)
fivem.events:emitClient('eventName', target, ...)
or events:emitClient('eventName', target, ...)
Last updated