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

# Pilot Job hooks

> Every hook exposed by apex-pilot-job/hooks.lua.

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

## Client hooks

<AccordionGroup>
  <Accordion title="Hooks.ShowHelpPrompt(key, text)" icon="comment">
    Default `lib.showTextUI`.
  </Accordion>

  <Accordion title="Hooks.HideHelpPrompt(key)" icon="comment-slash">
    Default `lib.hideTextUI`.
  </Accordion>

  <Accordion title="Hooks.ClientAlert(title, message, duration, alertType)" icon="bell">
    Default `lib.notify`. `alertType` ∈ `success | error | info | warning`.
  </Accordion>

  <Accordion title="Hooks.OnVehicleSpawn(plate)" icon="plane">
    Default `TriggerEvent('vehiclekeys:client:SetOwner', plate)`.
  </Accordion>

  <Accordion title="Hooks.PutOnUniform(clothing)" icon="shirt">
    Default uses `skinchanger:getSkin` + `skinchanger:loadClothes`. Receives the per-gender outfit table.
  </Accordion>

  <Accordion title="Hooks.TakeOffUniform()" icon="shirt">
    Default reloads the original skin via `esx_skin:getPlayerSkin`.
  </Accordion>
</AccordionGroup>

## Server hooks

<AccordionGroup>
  <Accordion title="Hooks.HasFlightLicense(source)" icon="id-card">
    Returns `hasLicense (bool), errorKey (string)`. Default checks an `ox_inventory` item with `extraDataContent` containing the license class. Setting `Config.RequireFlightLicense = false` short-circuits to `true`.
  </Accordion>

  <Accordion title="Hooks.UpdateQuestProgress(source, questName, amount)" icon="trophy">
    Default no-op. Wire into your quest / progression resource.
  </Accordion>

  <Accordion title="Hooks.ServerAlert(source, title, message, duration, alertType)" icon="bell">
    Default `TriggerClientEvent('apex-pilot-job:client:alert', source, ...)`.
  </Accordion>

  <Accordion title="Hooks.OnPilotDisconnected(citizenId, currentStrikes, didBlacklist)" icon="user-slash">
    Called on disconnect mid-flight. Use for anti-abuse logging.
  </Accordion>

  <Accordion title="Hooks.OnPilotCrashed(source, citizenId)" icon="explosion">
    Called when a player's aircraft is destroyed mid-flight (always blacklists).
  </Accordion>
</AccordionGroup>
