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

# FAQs

> Common questions about vrs_permanentid: how IDs are issued, whether they can change, framework support, and troubleshooting.

<AccordionGroup>
  <Accordion title="How is a permanent ID assigned?" icon="hash">
    On a character's first login, the resource inserts a row into `vrs_permanent_ids` and uses MySQL's `AUTO_INCREMENT` to assign the next available number. The value is stored against the character's identifier and read back on every subsequent login.
  </Accordion>

  <Accordion title="Can an ID ever change or be reused?" icon="repeat">
    No. IDs are tied to a character's identifier for life. Deleted characters do not free their ID for reuse. The next character always gets `MAX(id) + 1`.
  </Accordion>

  <Accordion title="How is this different from the FiveM server slot ID?" icon="shuffle">
    The server slot ID (`source` / `GetPlayerServerId`) is recycled every time a player disconnects and can be reused by the next joiner. It is fine for a single session but useless for reports, clips, or historical logs. A permanent ID stays the same across every reconnect and every server restart.
  </Accordion>

  <Accordion title="Which frameworks are supported?" icon="layers">
    QBox, QBCore, and ESX, via [vrs\_bridge](/getting-started/submitting-a-request). The bridge auto-detects the running framework, so no configuration is required.
  </Accordion>

  <Accordion title="Do I need to import an SQL file?" icon="database">
    No. The `vrs_permanent_ids` table is created automatically on first start.
  </Accordion>

  <Accordion title="Can I start IDs at a higher number (e.g. #1000)?" icon="rotate-cw">
    Yes. Set `Config.StartId` in `config.lua` **before** the first boot. It only applies when the table is empty. Once IDs are being issued, changing `StartId` has no effect.
  </Accordion>

  <Accordion title="Can I change the '#' prefix?" icon="type">
    Yes. `Config.DisplayPrefix` controls the cosmetic prefix used in commands and above-head text. Set it to `'VRS-'`, `''`, or anything else you like.
  </Accordion>

  <Accordion title="Can staff use these commands if they aren't in the framework admin group?" icon="shield-check">
    Yes. Grant the `vrs.permanentid` ACE:

    ```cfg theme={null}
    add_ace group.moderator vrs.permanentid allow
    ```

    QBox/QBCore `admin`/`god` and ESX `admin` groups pass without needing the ACE.
  </Accordion>

  <Accordion title="How do I read a player's ID from another resource?" icon="plug">
    The recommended path is the statebag:

    ```lua theme={null}
    Player(serverId).state.vrs_pid
    ```

    See [Integrations](/permanent-id/integrations) for the full API.
  </Accordion>

  <Accordion title="Can I translate the player-facing text?" icon="languages">
    Yes. Copy `locales/en.lua` to `locales/<code>.lua`, translate the values (keep `%s` and `%d` placeholders in order), then set `Config.Locale = '<code>'`. Missing keys fall back to English automatically.
  </Accordion>

  <Accordion title="The resource won't start. What now?" icon="circle-x">
    Check the server console for the specific message. The most common causes are:

    * `vrs_bridge` is not started, or is older than **v1.2.0**.
    * `oxmysql` is not started or cannot connect.
    * `ox_lib` is missing.

    Ensure them in the correct order in `server.cfg`:

    ```cfg theme={null}
    ensure oxmysql
    ensure ox_lib
    ensure vrs_bridge
    ensure vrs_permanentid
    ```
  </Accordion>
</AccordionGroup>
