Commands#
Biohazard Creator registers one command and one keybind. There are no console commands: outbreaks are started and stopped from the creator, or by Auto Start.
Command | Where | Description |
|---|---|---|
| In game | Opens the creator: design, save, start, stop and delete outbreaks. Needs the ACE |
| Keybind | Shows or hides the kill ranking during an outbreak. Players can rebind it under Settings → Key Bindings → FiveM. |
The
/biohazard <seconds | stop>command from the first version no longer exists. Save the outbreak you want as a preset and press Start in the creator.
Server Exports#
For reading progression from your own scripts — a level badge on a HUD, a Discord leaderboard, a reward for reaching a rank.
GetProfile
A connected player's full profile, the same one the phone app shows. Returns nil without a source; a player who has never played gets a level-1 profile.
local profile = exports['qs-biohazard']:GetProfile(source)
if profile then
print(profile.name, profile.level, profile.rank, profile.position)
endField | Holds |
|---|---|
| From GetIdentifier and GetDisplayName. |
| The level, the rank key (such as |
| Total XP, XP into the current level, XP that level needs, and progress from 0 to 1. |
| Lifetime totals, and the most kills in a single outbreak. |
| Outbreaks played, survived, lost, and the win rate as a percentage. |
| Place on the XP leaderboard, out of every player on record. |
GetLeaderboard
The top players, straight from the database. limit is 1 to 100 (default Config.Phone.LeaderboardMax); sortBy is 'level' (default), 'kills', 'wins', 'games' or 'mvps', with ties broken by XP.
local rows = exports['qs-biohazard']:GetLeaderboard(10, 'kills')
for i, row in ipairs(rows) do
print(i, row.name, row.kills)
end
-- each row: identifier, name, xp, level, kills, infections,
-- games, wins, losses, best_kills, mvpsClient Events#
Listen to these from any resource to react to an outbreak — hide a HUD, pause a weather sync, silence a dispatch script. The server sends them: listen, never trigger them yourself.
RegisterNetEvent('biohazard:start', function(data)
-- an outbreak started, or this player joined one already running
print(data.label, data.remaining, data.area.type) -- seconds left · 'world' or 'zone'
end)
RegisterNetEvent('biohazard:stop', function(data)
print(data.endedAsZombie) -- true if this player finished as a zombie
end)Event | When | Data |
|---|---|---|
| An outbreak starts, or the player connects during one. |
|
| The outbreak ends, by timer, Stop event or a resource stop. |
|
| The player has just been infected. | — |
| Every |
|
| The outbreak ends and the player's XP is saved. | The profile from GetProfile, plus |
On a zone event,
biohazard:startreaches every player, including those far from the zone. Checkdata.area.typebefore hiding anything for players who are not taking part.



