> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apex-services.site/llms.txt
> Use this file to discover all available pages before exploring further.

# APEX FFA

> Open zones, ranked 2v2–5v5 lobbies, and XP-gated weapon progression.

A complete Free-For-All / Deathmatch system. Players join one of 9 open zones (respawn-based), or create ranked 2v2–5v5 lobbies with round-based best-of matches, spectator mode for eliminated teammates, MVP screen, XP progression, attachment unlocks, and weapon skins. Everything is server-authoritative.

## Features

* 9 open FFA zones — Sandy Berg, Hafen, Alienberg, Marktplatz, Baustelle, Gefängnis, Casino Dach, Hotel Dach, Observatorium
* Ranked lobbies — private / password, 2v2–5v5, 3–15 rounds, best-of, round skip, host kick
* Auto-lobby vehicle spawns — per-team NPC spawns a team-colored vehicle per round
* Spectator mode — eliminated players scroll through living teammates
* XP progression — attachment unlocks + cosmetic weapon skins per category
* Admin commands — `/setffaxp`, `/addffaxp`
* Server-wide leaderboard — 30-min cache, offline-name resolution
* Kill-rate anti-cheat + boundary enforcement (leave zone = die)
* Automatic SQL tables (stats + upgrade unlocks)

## Requirements

<Card title="Required" icon="circle-check">
  `es_extended` (Legacy), `ox_lib`, `oxmysql`
</Card>

## Configuration

```lua config.lua theme={null}
Config.KillRateWindowSeconds = 10
Config.KillRateMax           = 15
Config.LeaderboardLimit      = 10
Config.XP = { KILL = 25 }

Config.Lobby = {
    MAX_PLAYERS    = 10,
    TEAM_SIZE      = 5,
    DEFAULT_ROUNDS = 5,
    MIN_ROUNDS     = 3,
    MAX_ROUNDS     = 15,
    VEHICLES       = { 'schafter5', 'jugular', 'drafter' },
    TEAM_COLORS    = { team1 = 64, team2 = 27 },
}
```

9 zones with routing buckets ship out of the box. Weapons, upgrades, skins, team NPCs, and the vehicle pool are all fully configurable.

## Hooks

See [Hooks reference / FFA](/hooks/apex-ffa). Key hooks: `Hooks.OnCheatDetected`, `Hooks.SavePlayerPosition`, `Hooks.ResolveOfflineName`, `Hooks.OnPlayerKill`, `Hooks.OnLobbyEnd`, `Hooks.ReviveWithoutTimeout`, `Hooks.SetCombatMode`, `Hooks.SetInventoryBlocked`.

## Resource info

<Note>
  Code accessible: `config.lua`, `hooks.lua`, `locales/*`, `html/*`. Approximately 3500 lines of Lua + NUI. English + German.
</Note>
