> ## 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.

# FFA hooks

> Every hook exposed by apex-ffa/hooks.lua.

Source: `apex-ffa/hooks.lua` (unencrypted).

## Server hooks

<AccordionGroup>
  <Accordion title="Hooks.HasAdminPermission(source)" icon="user-shield">
    Default — group is in `Config.AdminGroups`.
  </Accordion>

  <Accordion title="Hooks.HasAntiJoinProtection(source)" icon="shield">
    Return `true` to block the player from joining a zone / lobby. Default `false`.
  </Accordion>

  <Accordion title="Hooks.OnCheatDetected(source, reason)" icon="ban">
    Default `DropPlayer(source, reason)`. Wire to your anti-cheat ban resource.
  </Accordion>

  <Accordion title="Hooks.GiveItem(source, item, count)" icon="box-archive">
    Default `xPlayer.addInventoryItem(item, count or 1)`.
  </Accordion>

  <Accordion title="Hooks.SavePlayerPosition(identifier, pos)" icon="floppy-disk">
    Default — `UPDATE users SET position = ? WHERE identifier = ?` (ESX legacy).
  </Accordion>

  <Accordion title="Hooks.ResolveOfflineName(identifier)" icon="user">
    Default — `SELECT firstname, lastname FROM users WHERE identifier = ?`.
  </Accordion>

  <Accordion title="Hooks.OnPlayerKill(killerId, victimId, zoneId, isLobby)" icon="skull">
    Per-kill hook. `killerId` may be nil for suicide/environment.
  </Accordion>

  <Accordion title="Hooks.OnLobbyEnd(lobbyId, winningTeam, players, mvp)" icon="trophy">
    Lobby-end hook for quest systems / webhooks.
  </Accordion>

  <Accordion title="Hooks.ReviveWithoutTimeout(source, xPlayer)" icon="heart-pulse">
    Default `TriggerClientEvent('esx_ambulancejob:revive', source)`.
  </Accordion>

  <Accordion title="Hooks.Notify(source, message, type)" icon="bell">
    Default `TriggerClientEvent('esx:showNotification', source, message)`.
  </Accordion>
</AccordionGroup>

## Client hooks

<AccordionGroup>
  <Accordion title="Hooks.ShowHelpText / HideHelpText" icon="comment">
    Default `lib.showTextUI` / `lib.hideTextUI`.
  </Accordion>

  <Accordion title="Hooks.ShowClientNotify(message, type)" icon="bell">
    Default `ESX.ShowNotification`, falls back to `lib.notify`.
  </Accordion>

  <Accordion title="Hooks.SetCombatMode(enabled)" icon="crosshairs">
    Called when entering / leaving a zone or lobby. Use to integrate with custom\_mode / saltychat / dpemotes.
  </Accordion>

  <Accordion title="Hooks.SetHudVisibility(visible)" icon="display">
    Default no-op.
  </Accordion>

  <Accordion title="Hooks.HasTimeout()" icon="hourglass">
    Default `false`. Return true if the local player currently has a combat / death timeout.
  </Accordion>

  <Accordion title="Hooks.IsPlayerDead()" icon="skull">
    Default — `IsEntityDead` / `IsPedDeadOrDying` / `LocalPlayer.state.isDead`.
  </Accordion>

  <Accordion title="Hooks.SetInventoryBlocked(blocked)" icon="lock">
    Default — toggles `ox_inventory:weaponWheel` and the `invBusy` / `invHotkeys` state bags.
  </Accordion>
</AccordionGroup>
