
Every arena script ends a round the same way: a chat message and a teleport. This replaces that with a proper end-of-round moment — result headline, the winner, a standings board, and a countdown to whatever comes next.
It is deliberately a single job done well. It does not run your arena, track your scores, or own your game loop. You send it a payload when a round ends and it handles the presentation.
| No framework. No database. No dependencies. Identical on ESX, QBCore, Qbox and fully standalone — it only draws what you send it. |
The overlay works out on its own whether the viewer won, lost or drew, and adjusts the headline, colours and confetti for each player individually. You send the same payload to everyone.
TriggerClientEvent('ravn_winsequence:play', src, {
title = 'PISTOL ARENA',
accent = 'gold',
winner = { id = 12, name = 'Mikkel', kills = 7 },
standings = {
{ id = 12, name = 'Mikkel', kills = 7, deaths = 2 },
{ id = 34, name = 'Sofie', kills = 5, deaths = 4 },
},
nextMap = 'School',
})Or client-side via exports.ravn_winsequence:Play(payload).
The overlay takes no NUI focus. Players can still move, shoot and type while it is on screen. That matters for rotating arenas where the next round starts before the overlay finishes.
Duration and a min/max clamp, standings row count, sorting, accent list, sound cues, and every piece of on-screen text. config.lua and locales/ ship unencrypted so you can edit them.
Two steps. Drop in the folder, then:
ensure ravn_winsequenceRequirements: none.
Does it work without a framework?
Yes. It never reads player data, so there is nothing to be compatible with.
Will it block my players from moving?
No. It never takes NUI focus.
Can I use it with my own arena script?
That is what it is for. Any script that knows who won can drive it.
Can I translate it?
Copy locales/en.lua, translate the values, point Config.Locale at it. Missing keys fall back to English.
Does it need a database?
No.
Is the code open?
The Lua is protected through the FiveM asset escrow system. config.lua and the locale files ship unencrypted, and the payload contract is documented in the README and in the code header.