tw.emit
Side: Client + Server
Optimized event emission with bandwidth control via latent events. Wraps FiveM/RedM event triggers with rate limiting and bandwidth management.
Client Functions
tw.emit.triggerServer(event_name, ...)
Triggers a server event from the client.
| Parameter | Type | Description |
|---|---|---|
event_name | string | Event name |
... | any | Arguments to send |
tw.emit.triggerServer.latent(event_name, ...)
Triggers a server event with bandwidth-limited delivery.
| Parameter | Type | Description |
|---|---|---|
event_name | string | Event name |
... | any | Arguments to send |
tw.emit.triggerClient(event_name, target, ...)
Triggers a client event on another player, routed via the server.
| Parameter | Type | Description |
|---|---|---|
event_name | string | Event name |
target | integer | Target player server ID |
... | any | Arguments to send |
tw.emit.isEventInProgress(event_name)
Checks if a latent event is still being transmitted.
| Parameter | Type | Description |
|---|---|---|
event_name | string | Event name to check |
Returns: boolean or nil
tw.emit.updateBps(bps)
Updates the client-side bandwidth limit for latent events.
| Parameter | Type | Default | Description |
|---|---|---|---|
bps | integer | 20000 | Bytes per second |
Server Functions
tw.emit.triggerClient(event_name, target, ...)
Triggers a client event on one or more players.
| Parameter | Type | Description |
|---|---|---|
event_name | string | Event name |
target | integer or table | Single player server ID, or array of server IDs |
... | any | Arguments to send |
tw.emit.triggerClient.latent(event_name, target, ...)
Triggers a client event with bandwidth-limited delivery.
| Parameter | Type | Description |
|---|---|---|
event_name | string | Event name |
target | integer or table | Single player server ID, or array of server IDs |
... | any | Arguments to send |
tw.emit.triggerServerWithSource(target, event_name, ...)
Triggers a server event while preserving a specific source value.
| Parameter | Type | Description |
|---|---|---|
target | integer | Source to set |
event_name | string | Event name |
... | any | Arguments to send |
tw.emit.updateBps(bps)
Updates the server-side bandwidth limit for latent events.
| Parameter | Type | Default | Description |
|---|---|---|---|
bps | integer | 100000 | Bytes per second |
Examples
Basic client-to-server event
lua
-- client.lua
tw.emit.triggerServer("myScript:collectItem", item_name, quantity)
-- server.lua
RegisterNetEvent("myScript:collectItem", function(item_name, quantity)
local source = source
tw.fw:giveItem(source, item_name, quantity)
end)Latent event for large data
lua
-- server.lua
local large_data = buildShopInventory()
tw.emit.triggerClient.latent("myScript:syncShop", source, large_data)Send to multiple players
lua
-- server.lua
local nearby_players = { 1, 3, 7 }
tw.emit.triggerClient("myScript:playEffect", nearby_players, effect_name, coords)Adjust bandwidth
lua
-- client.lua — increase bandwidth for faster transfers
tw.emit.updateBps(50000)
-- server.lua — increase server bandwidth
tw.emit.updateBps(200000)Notes
- Default bandwidth limits: 20,000 bytes/s on client, 100,000 bytes/s on server.
- Use
.latentvariants when sending large payloads (config tables, inventory lists, etc.) to avoid network congestion. triggerClienton the server accepts both a single player ID (integer) and an array of IDs (table).isEventInProgressreturnsnilif the event was never triggered.

