Loading screens for FiveM
The one screen every player sees on every connect. Drag widgets onto a canvas, drop in a video background, and point your server at a single URL we host.
FAM-261023-261025-UL4B9this weekendTick it in your cart Halloween Edition36 maps, limited runlimited runShop the drop FREE TOOL · FOUR GENERATORS
A roleplay character, a server name, a gang and a script idea — four generators in one page, all running in your browser. Every result is built from a seed, so the link in your address bar reproduces exactly what you are looking at, and you can send it to whoever is reviewing the application.
Nothing is stored and nothing is sent anywhere. The character tab draws an age inside a band that fits the job, the gang tab uses real San Andreas neighbourhoods and real vehicle spawn names, and the script tab names only natives that exist. Where a check cannot be done in a browser — domain availability, for one — the page says so instead of guessing.
A person with a job, a debt and something to want.
50 · Armenian · Detective
/me has the tie loose and the jacket on anyway, which is its own kind of answer, a hairline of sunburn where a cap sits all day.
Age is drawn inside a band that fits the job, so you do not get a nineteen-year-old detective. Nationality picks the name pool and the city the backstory points back at. Everything here is a starting point, not a script — the flaw is the part worth keeping.
HOW TO USE IT
Roll until a line surprises you, then stop. One good flaw is worth more than four rerolls of the name, because the flaw is the part other players can push on — and a character other people can create problems for is the only kind that lasts past the first week. Copy the sheet, change the name so it fits the server’s setting, delete anything that contradicts their lore, and rewrite the hook in your own words before you paste it into an application.
The occupation decides where your character is at nine in the evening, which decides who they meet. A mechanic, a paramedic or a tow driver has a reason to be standing next to a stranger; a “retired hitman” has none, which is why those applications die.
Half of a server’s traffic arrives by somebody repeating the name in a voice call. If the generated name needs spelling out, take the shorter alias the domain panel suggests and point it at the same site.
A crew with turf and no enemy has nothing to do. The rivalry line is the seed of every scene the gang will be in for a month, so pick one that gives both sides a reason to keep it cold rather than shooting on sight.
The difficulty meter is deliberately pessimistic. A one-pip idea finished and on a live server beats a five-pip idea in a folder, and the hardest-part line tells you which afternoon is going to disappear.
Server-side. ESX, QBCore and the RP chat resources all provide their own /me — paste this only if you are building a server from nothing and do not have one. GetPlayers() is a server native and returns ids as strings, which is why the loop passes id straight through to TriggerClientEvent.
-- server.lua — a proximity /me, which is what every RP server means by the command:
-- only the people standing near you see it. On a framework you already have one;
-- this is the version you write once if you are building a server from nothing.
local RANGE = 20.0
RegisterCommand('me', function(source, args)
if source == 0 then return end -- the console has no ped to describe
if #args == 0 then return end
local text = table.concat(args, ' ')
local from = GetEntityCoords(GetPlayerPed(source))
local line = ('* %s %s'):format(GetPlayerName(source), text)
for _, id in ipairs(GetPlayers()) do
local ped = GetPlayerPed(id)
if ped ~= 0 and #(GetEntityCoords(ped) - from) < RANGE then
TriggerClientEvent('chat:addMessage', id, {
color = { 190, 160, 240 },
multiline = true,
args = { line },
})
end
end
end, false)
-- /do answers a question about the scene rather than describing your own action.
RegisterCommand('do', function(source, args)
if source == 0 or #args == 0 then return end
local text = table.concat(args, ' ')
local from = GetEntityCoords(GetPlayerPed(source))
local line = ('(( %s )) %s'):format(text, GetPlayerName(source))
for _, id in ipairs(GetPlayers()) do
local ped = GetPlayerPed(id)
if ped ~= 0 and #(GetEntityCoords(ped) - from) < RANGE then
TriggerClientEvent('chat:addMessage', id, {
color = { 150, 190, 240 },
multiline = true,
args = { line },
})
end
end
end, false)Generators that cannot be shared are useless for a team. The seed is hashed with the same joaat function the game uses for model names, so the same six characters always produce the same person, server, crew and script — on any machine, offline, forever.
No availability badge on a domain, no claim that a name is unused, no invented natives. A browser tab cannot run a WHOIS query, so the server tab checks the shape of the hostname and says plainly that the rest is your job.
Every car a gang can be given is matched against the 921 base-game models in the vehicle list, so the spawn name beside it goes straight into a garage config without a typo hunt.
Picking a nationality picks the name pool and the city the backstory points back at, so you do not end up with an Armenian surname and a hook about Guadalajara. Change either one freely — the point is that the default is coherent.
QUESTIONS
MORE
The rest of the config the server name goes into: endpoints, OneSync, the resource list and the convars people forget.
fxmanifest.lua generatorThe manifest for the resource the script idea turns into, with the fx_version and the script lists filled in correctly.
Hash calculatorGetHashKey for the vehicle spawn name the gang drives, as an unsigned number, a signed int32 and hex.
All the free toolsThe flag calculators, the marker and particle references, the icon makers and the server status checks.
ALSO FREE
Picked because they touch the same files, natives or part of the game.
FROM THE SHOP
The free tools and the paid work come out of the same place. These are the lines closest to what this page is about.
Grand opening: 25% off every product with FAM-261023-261025-UL4B9, until 25 October. It is applied at checkout.
The one screen every player sees on every connect. Drag widgets onto a canvas, drop in a video background, and point your server at a single URL we host.
One design, cut to every slot your server shows up in: the server list strip, the Discord header, the stream art, each composed for its own crop.