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.isServerorfivem.isClientwhen 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