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

# core

> API reference for core

<Warning>
  This documentation is for developers who are making scripts for VORP Core Framework
</Warning>

## Export

GetCore is a shared export that returns the core table containing all the getters and setters for VORP Core.
some of the getters and setters are client side only and some are server side only.

<Note>Shared</Note>

<Accordion icon="keyboard" iconType="duotone" title="GetCore">
  <ParamField body="return" type="table">
    The core table containing all the getters and setters.
  </ParamField>

  ```lua theme={null}
  local Core = exports.vorp_core:GetCore()
  ```
</Accordion>

## Register Server Jobs

Allowing you to only give correct jobs and grades to the players and to prevent them from using incorrect jobs and grades.

<Note>Server Side</Note>

<Tabs>
  <Tab title="RegisterJobs">
    <Accordion icon="user" iconType="duotone" title="RegisterJobs">
      Register jobs to the server, this will be stored in config/jobs.lua file in vorp core then can be registered automatically using the RegisterJobs function or manually by adding the jobs to the lua file.

      <ParamField body="jobsData" type="table" required>
        job data is a table with the following keys:

        * `jobname`: `string` job name as the key and the job data as the value.
        * `groups`: `array` optional, if you wish to set this job to only this group can give this job.
        * `privateJob`: `boolean` if true, the job will be private no one can give this job.
        * `grades`: `table` only add grades if you use grades
        * `[grade]`: `table` grade number as the key and the grade data as the value.
        * `label`: `string` the label of the grade
        * `privateGrade`: `boolean` if true, the grade will be private no one can give this grade.
      </ParamField>

      <ParamField body="resourceName" type="string" required>
        The resource name to register the jobs to for debug
      </ParamField>

      ```lua theme={null}
      local jobsData <const> = {
          jobname = {
              groups = {"admin"} -- optional, if you wish to set this job to only this group can give this job.
              privateJob = true -- if true, the job will be private no one can give this job.
              grades = { -- only add grades if you use grades
                  [1] = {
                      label = "Grade Label"
                      privateGrade = true -- if true, the grade will be private no one can give this grade.
                  }
              }
          }
      }

      if Core.RegisterJobs then
          Core.RegisterJobs(jobsData, GetCurrentResourceName())
      else
          print("Core.RegisterJobs is not available update vorp core to the latest version")
      end
      ```
    </Accordion>
  </Tab>
</Tabs>

## Notifications

notifications can also accept -1 as duration to always stay on screen and to clear them you need to use UiFeedClearChannel

<Note>Shared</Note>

<Tabs>
  <Tab title="Client">
    <Accordion icon="bell" iconType="duotone" title="NotifyLeft">
      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="subtitle" type="string" required>
        The subtitle of the notification
      </ParamField>

      <ParamField body="dict" type="string" required>
        The dictionary for the icon
      </ParamField>

      <ParamField body="icon" type="string" required>
        The icon name
      </ParamField>

      <ParamField body="duration" type="number" required>
        Duration in milliseconds
      </ParamField>

      <ParamField body="color" type="string" required>
        Color of the notification
      </ParamField>

      ```lua theme={null}
      Core.NotifyLeft("title", "subtitle", "dict", "icon", 4000, "color")
      ```
    </Accordion>

    <Accordion icon="bell" iconType="duotone" title="NotifyTip">
      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="duration" type="number" required>
        Duration in milliseconds
      </ParamField>

      ```lua theme={null}
      Core.NotifyTip("title", 4000)
      ```
    </Accordion>

    <Accordion icon="bell" iconType="duotone" title="NotifyRightTip">
      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="duration" type="number" required>
        Duration in milliseconds
      </ParamField>

      ```lua theme={null}
      Core.NotifyRightTip("title", 4000)
      ```
    </Accordion>

    <Accordion icon="bell" iconType="duotone" title="NotifyObjective">
      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="duration" type="number" required>
        Duration in milliseconds
      </ParamField>

      ```lua theme={null}
      Core.NotifyObjective("title", 4000)
      ```
    </Accordion>

    <Accordion icon="bell" iconType="duotone" title="NotifyTop">
      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="location" type="string" required>
        The location to display
      </ParamField>

      <ParamField body="duration" type="number" required>
        Duration in milliseconds
      </ParamField>

      ```lua theme={null}
      Core.NotifyTop("title", "location", 4000)
      ```
    </Accordion>

    <Accordion icon="bell" iconType="duotone" title="NotifySimpleTop">
      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="subtitle" type="string" required>
        The subtitle of the notification
      </ParamField>

      <ParamField body="duration" type="number" required>
        Duration in milliseconds
      </ParamField>

      ```lua theme={null}
      Core.NotifySimpleTop("title", "subtitle", 4000)
      ```
    </Accordion>

    <Accordion icon="bell" iconType="duotone" title="NotifyAvanced">
      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="dict" type="string" required>
        The dictionary for the icon
      </ParamField>

      <ParamField body="icon" type="string" required>
        The icon name
      </ParamField>

      <ParamField body="color" type="string" required>
        Color of the notification
      </ParamField>

      <ParamField body="duration" type="number" required>
        Duration in milliseconds
      </ParamField>

      <ParamField body="quality" type="number" required>
        enables the stars for quality like animal pelt stars
      </ParamField>

      <ParamField body="showQuality" type="boolean" required>
        shows the quality of the notification
      </ParamField>

      ```lua theme={null}
      Core.NotifyAvanced("title", "dict", "icon", "color", 4000, quality, showQuality)
      ```
    </Accordion>

    <Accordion icon="bell" iconType="duotone" title="NotifyCenter">
      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="duration" type="number" required>
        Duration in milliseconds
      </ParamField>

      ```lua theme={null}
      Core.NotifyCenter("title", 4000)
      ```
    </Accordion>

    <Accordion icon="bell" iconType="duotone" title="NotifyBottomRight">
      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="duration" type="number" required>
        Duration in milliseconds
      </ParamField>

      ```lua theme={null}
      Core.NotifyBottomRight("title", 4000)
      ```
    </Accordion>

    <Accordion icon="bell" iconType="duotone" title="NotifyFail">
      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="subtitle" type="string" required>
        The subtitle of the notification
      </ParamField>

      <ParamField body="duration" type="number" required>
        Duration in milliseconds
      </ParamField>

      ```lua theme={null}
      Core.NotifyFail("title", "subtitle", 4000)
      ```
    </Accordion>

    <Accordion icon="bell" iconType="duotone" title="NotifyDead">
      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="audioref" type="string" required>
        The audio reference
      </ParamField>

      <ParamField body="audioname" type="string" required>
        The audio name
      </ParamField>

      <ParamField body="duration" type="number" required>
        Duration in milliseconds
      </ParamField>

      ```lua theme={null}
      Core.NotifyDead("title", "audioref", "audioname", 4000)
      ```
    </Accordion>

    <Accordion icon="bell" iconType="duotone" title="NotifyUpdate">
      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="subtitle" type="string" required>
        The subtitle of the notification
      </ParamField>

      <ParamField body="duration" type="number" required>
        Duration in milliseconds
      </ParamField>

      ```lua theme={null}
      Core.NotifyUpdate("title", "subtitle", 4000)
      ```
    </Accordion>

    <Accordion icon="bell" iconType="duotone" title="NotifyWarning">
      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="subtitle" type="string" required>
        The subtitle of the notification
      </ParamField>

      <ParamField body="audioref" type="string" required>
        The audio reference
      </ParamField>

      <ParamField body="audioname" type="string" required>
        The audio name
      </ParamField>

      <ParamField body="duration" type="number" required>
        Duration in milliseconds
      </ParamField>

      ```lua theme={null}
      Core.NotifyWarning("title", "subtitle", "audioref", "audioname", 4000)
      ```
    </Accordion>

    <Accordion icon="bell" iconType="duotone" title="NotifyLeftRank">
      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="subtitle" type="string" required>
        The subtitle of the notification
      </ParamField>

      <ParamField body="dict" type="string" required>
        The dictionary for the icon
      </ParamField>

      <ParamField body="icon" type="string" required>
        The icon name
      </ParamField>

      <ParamField body="duration" type="number" required>
        Duration in milliseconds
      </ParamField>

      <ParamField body="color" type="string" required>
        Color of the notification
      </ParamField>

      ```lua theme={null}
      Core.NotifyLeftRank("title", "subtitle", "dict", "icon", 4000, "color")
      ```
    </Accordion>

    <Accordion icon="bell" iconType="duotone" title="NotifyOneSimpleTop">
      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="duration" type="number" required>
        Duration in milliseconds
      </ParamField>

      ```lua theme={null}
      Core.NotifyOneSimpleTop("title", 4000)
      ```
    </Accordion>

    <Accordion icon="bell" iconType="duotone" title="NotifyThreeSimpleTop">
      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="description" type="string" required>
        The description of the notification
      </ParamField>

      <ParamField body="second_description" type="string" required>
        The second description of the notification
      </ParamField>

      <ParamField body="duration" type="number" required>
        Duration in milliseconds
      </ParamField>

      ```lua theme={null}
      Core.NotifyThreeSimpleTop("title","description","second_description", 4000)
      ```
    </Accordion>

    <Accordion icon="bell" iconType="duotone" title="NotifyLeftInteractive">
      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="subtitle" type="string" required>
        The subtitle of the notification
      </ParamField>

      <ParamField body="dict" type="string" required>
        The dictionary for the icon
      </ParamField>

      <ParamField body="icon" type="string" required>
        The icon name
      </ParamField>

      <ParamField body="duration" type="number" required>
        Duration in milliseconds or -1 for infinite
      </ParamField>

      <ParamField body="color" type="string" required>
        Color of the notification
      </ParamField>

      ```lua theme={null}
      Core.NotifyLeftInteractive("title", "subtitle", "dict", "icon", 4000, "color")
      ```
    </Accordion>
  </Tab>

  <Tab title="Server">
    <Accordion icon="bell" iconType="duotone" title="NotifyTip">
      <ParamField body="source" type="integer" required>
        The player ID
      </ParamField>

      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="duration" type="integer" required>
        Duration in milliseconds
      </ParamField>

      ```lua theme={null}
      Core.NotifyTip(source, "title", 4000)
      ```
    </Accordion>

    <Accordion icon="bell" iconType="duotone" title="NotifyLeft">
      <ParamField body="source" type="integer" required>
        The player ID
      </ParamField>

      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="subtitle" type="string" required>
        The subtitle of the notification
      </ParamField>

      <ParamField body="dict" type="string" required>
        The dictionary for the icon
      </ParamField>

      <ParamField body="icon" type="string" required>
        The icon name
      </ParamField>

      <ParamField body="duration" type="integer" required>
        Duration in milliseconds
      </ParamField>

      <ParamField body="color" type="string" required>
        Color of the notification
      </ParamField>

      ```lua theme={null}
      Core.NotifyLeft(source, "title", "subtitle", "dict", "icon", 4000, "color")
      ```
    </Accordion>

    <Accordion icon="bell" iconType="duotone" title="NotifyRightTip">
      <ParamField body="source" type="integer" required>
        The player ID
      </ParamField>

      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="duration" type="integer" required>
        Duration in milliseconds
      </ParamField>

      ```lua theme={null}
      Core.NotifyRightTip(source, "title", 4000)
      ```
    </Accordion>

    <Accordion icon="bell" iconType="duotone" title="NotifyObjective">
      <ParamField body="source" type="integer" required>
        The player ID
      </ParamField>

      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="duration" type="integer" required>
        Duration in milliseconds
      </ParamField>

      ```lua theme={null}
      Core.NotifyObjective(source, "title", 4000)
      ```
    </Accordion>

    <Accordion icon="bell" iconType="duotone" title="NotifyTop">
      <ParamField body="source" type="integer" required>
        The player ID
      </ParamField>

      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="location" type="string" required>
        The location to display
      </ParamField>

      <ParamField body="duration" type="integer" required>
        Duration in milliseconds
      </ParamField>

      ```lua theme={null}
      Core.NotifyTop(source, "title", "location", 4000)
      ```
    </Accordion>

    <Accordion icon="bell" iconType="duotone" title="NotifySimpleTop">
      <ParamField body="source" type="integer" required>
        The player ID
      </ParamField>

      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="subtitle" type="string" required>
        The subtitle of the notification
      </ParamField>

      <ParamField body="duration" type="integer" required>
        Duration in milliseconds
      </ParamField>

      ```lua theme={null}
      Core.NotifySimpleTop(source, "title", "subtitle", 4000)
      ```
    </Accordion>

    <Accordion icon="bell" iconType="duotone" title="NotifyAvanced">
      <ParamField body="source" type="integer" required>
        The player ID
      </ParamField>

      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="dict" type="string" required>
        The dictionary for the icon
      </ParamField>

      <ParamField body="icon" type="string" required>
        The icon name
      </ParamField>

      <ParamField body="color" type="string" required>
        Color of the notification
      </ParamField>

      <ParamField body="duration" type="integer" required>
        Duration in milliseconds
      </ParamField>

      <ParamField body="showQuality" type="boolean" required>
        Show the quality of the notification
      </ParamField>

      <ParamField body="quality" type="number" required>
        The quality of the notification max 3
      </ParamField>

      ```lua theme={null}
      Core.NotifyAvanced(source, "title", "dict", "icon", "color",showQuality,quality, 4000)
      ```
    </Accordion>

    <Accordion icon="bell" iconType="duotone" title="NotifyCenter">
      <ParamField body="source" type="integer" required>
        The player ID
      </ParamField>

      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="duration" type="integer" required>
        Duration in milliseconds
      </ParamField>

      ```lua theme={null}
      Core.NotifyCenter(source, "title", 4000)
      ```
    </Accordion>

    <Accordion icon="bell" iconType="duotone" title="NotifyBottomRight">
      <ParamField body="source" type="integer" required>
        The player ID
      </ParamField>

      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="duration" type="integer" required>
        Duration in milliseconds
      </ParamField>

      ```lua theme={null}
      Core.NotifyBottomRight(source, "title", 4000)
      ```
    </Accordion>

    <Accordion icon="bell" iconType="duotone" title="NotifyFail">
      <ParamField body="source" type="integer" required>
        The player ID
      </ParamField>

      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="subtitle" type="string" required>
        The subtitle of the notification
      </ParamField>

      <ParamField body="duration" type="integer" required>
        Duration in milliseconds
      </ParamField>

      ```lua theme={null}
      Core.NotifyFail(source, "title", "subtitle", 4000)
      ```
    </Accordion>

    <Accordion icon="bell" iconType="duotone" title="NotifyDead">
      <ParamField body="source" type="integer" required>
        The player ID
      </ParamField>

      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="audioref" type="string" required>
        The audio reference
      </ParamField>

      <ParamField body="audioname" type="string" required>
        The audio name
      </ParamField>

      <ParamField body="duration" type="integer" required>
        Duration in milliseconds
      </ParamField>

      ```lua theme={null}
      Core.NotifyDead(source, "title", "audioref", "audioname", 4000)
      ```
    </Accordion>

    <Accordion icon="bell" iconType="duotone" title="NotifyUpdate">
      <ParamField body="source" type="integer" required>
        The player ID
      </ParamField>

      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="subtitle" type="string" required>
        The subtitle of the notification
      </ParamField>

      <ParamField body="duration" type="integer" required>
        Duration in milliseconds
      </ParamField>

      ```lua theme={null}
      Core.NotifyUpdate(source, "title", "subtitle", 4000)
      ```
    </Accordion>

    <Accordion icon="bell" iconType="duotone" title="NotifyWarning">
      <ParamField body="source" type="integer" required>
        The player ID
      </ParamField>

      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="subtitle" type="string" required>
        The subtitle of the notification
      </ParamField>

      <ParamField body="audioref" type="string" required>
        The audio reference
      </ParamField>

      <ParamField body="audioname" type="string" required>
        The audio name
      </ParamField>

      <ParamField body="duration" type="integer" required>
        Duration in milliseconds
      </ParamField>

      ```lua theme={null}
      Core.NotifyWarning(source, "title", "subtitle", "audioref", "audioname", 4000)
      ```
    </Accordion>

    <Accordion icon="bell" iconType="duotone" title="NotifyLeftRank">
      <ParamField body="source" type="integer" required>
        The player ID
      </ParamField>

      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="subtitle" type="string" required>
        The subtitle of the notification
      </ParamField>

      <ParamField body="dict" type="string" required>
        The dictionary for the icon
      </ParamField>

      <ParamField body="icon" type="string" required>
        The icon name
      </ParamField>

      <ParamField body="duration" type="integer" required>
        Duration in milliseconds
      </ParamField>

      <ParamField body="color" type="string" required>
        Color of the notification
      </ParamField>

      ```lua theme={null}
      Core.NotifyLeftRank(source, "title", "subtitle", "dict", "icon", 4000, "color")
      ```
    </Accordion>

    <Accordion icon="bell" iconType="duotone" title="NotifyOneSimpleTop">
      <ParamField body="source" type="integer" required>
        The player ID
      </ParamField>

      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="duration" type="integer" required>
        Duration in milliseconds
      </ParamField>

      ```lua theme={null}
      Core.NotifyOneSimpleTop(source, "title", 4000)
      ```
    </Accordion>

    <Accordion icon="bell" iconType="duotone" title="NotifyThreeSimpleTop">
      <ParamField body="source" type="integer" required>
        The player ID
      </ParamField>

      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="description" type="string" required>
        The description of the notification
      </ParamField>

      <ParamField body="second_description" type="string" required>
        The second description of the notification
      </ParamField>

      <ParamField body="duration" type="integer" required>
        Duration in milliseconds
      </ParamField>

      ```lua theme={null}
      Core.NotifyThreeSimpleTop(source, "title","description","second_description", 4000)
      ```
    </Accordion>

    <Accordion icon="bell" iconType="duotone" title="NotifyLeftInteractive">
      <ParamField body="source" type="integer" required>
        The player ID
      </ParamField>

      <ParamField body="title" type="string" required>
        The title of the notification
      </ParamField>

      <ParamField body="subtitle" type="string" required>
        The subtitle of the notification
      </ParamField>

      <ParamField body="dict" type="string" required>
        The dictionary for the icon
      </ParamField>

      <ParamField body="icon" type="string" required>
        The icon name
      </ParamField>

      <ParamField body="duration" type="integer" required>
        Duration in milliseconds or -1 for infinite
      </ParamField>

      <ParamField body="color" type="string" required>
        Color of the notification
      </ParamField>

      ```lua theme={null}
      Core.NotifyLeftInteractive(source, "title", "subtitle", "dict", "icon", 4000, "color")
      ```
    </Accordion>
  </Tab>
</Tabs>

## Characters

Get the character data to access getters and setters

<Note>Server</Note>

<Accordion icon="user" iconType="duotone" title="getUsedCharacter">
  <ParamField body="source" type="integer" required>
    The player ID
  </ParamField>

  ```lua theme={null}
      local user = Core.getUser(source) --[[@as User]]  
      if not user then return end -- is player in session?
      local character = user.getUsedCharacter --[[@as Character]]
  ```
</Accordion>

<Tabs>
  <Tab title="getters">
    <Accordion icon="user" iconType="duotone" title="identifier">
      <ParamField body="return" type="string">
        The unique identifier of the character
      </ParamField>

      ```lua theme={null}
      local identifier = character.identifier
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="charIdentifier">
      <ParamField body="return" type="string">
        The unique character identifier
      </ParamField>

      ```lua theme={null}
      local charIdentifier = character.charIdentifier
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="group">
      <ParamField body="return" type="string">
        The group the character belongs to
      </ParamField>

      ```lua theme={null}
      local group = character.group
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="multiJobs">
      <ParamField body="return" type="table">
        The multiJobs of the character
      </ParamField>

      ```lua theme={null}
      local multijobs = character.multiJobs
      for _, job in pairs(multiJobs) do   
          print(job.job, job.grade, job.label)
      end
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="job">
      <ParamField body="return" type="string">
        The job of the character
      </ParamField>

      ```lua theme={null}
      local job = character.job
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="jobGrade">
      <ParamField body="return" type="integer">
        The job grade of the character
      </ParamField>

      ```lua theme={null}
      local jobGrade = character.jobGrade
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="jobLabel">
      <ParamField body="return" type="string">
        The job label of the character
      </ParamField>

      ```lua theme={null}
      local jobLabel = character.jobLabel
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="money">
      <ParamField body="return" type="number">
        The amount of money the character has
      </ParamField>

      ```lua theme={null}
      local money = character.money
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="gold">
      <ParamField body="return" type="number">
        The amount of gold the character has
      </ParamField>

      ```lua theme={null}
      local gold = character.gold
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="rol">
      <ParamField body="return" type="number">
        The amount of rol the character has
      </ParamField>

      ```lua theme={null}
      local rol = character.rol
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="xp">
      <ParamField body="return" type="number">
        The amount of experience points the character has
      </ParamField>

      ```lua theme={null}
      local xp = character.xp
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="firstname">
      <ParamField body="return" type="string">
        The first name of the character
      </ParamField>

      ```lua theme={null}
      local firstname = character.firstname
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="lastname">
      <ParamField body="return" type="string">
        The last name of the character
      </ParamField>

      ```lua theme={null}
      local lastname = character.lastname
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="status">
      <ParamField body="return" type="table">
        The status of the character
      </ParamField>

      ```lua theme={null}
      local status = character.status
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="coords">
      <ParamField body="return" type="table">
        The coordinates of the character
      </ParamField>

      ```lua theme={null}
      local coords = character.coords
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="isdead">
      <ParamField body="return" type="boolean">
        Whether the character is dead or not
      </ParamField>

      ```lua theme={null}
      local isDead = character.isdead
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="skin">
      <ParamField body="return" type="table">
        The skin details of the character
      </ParamField>

      ```lua theme={null}
      local skin = character.skin
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="comps">
      <ParamField body="return" type="table">
        The component details of the character
      </ParamField>

      ```lua theme={null}
      local comps = character.comps
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="compTints">
      <ParamField body="return" type="table">
        The component tints of the character
      </ParamField>

      ```lua theme={null}
      local compTints = character.compTints
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="age">
      <ParamField body="return" type="number">
        The age of the character
      </ParamField>

      ```lua theme={null}
      local age = character.age
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="gender">
      <ParamField body="return" type="string">
        The gender of the character
      </ParamField>

      ```lua theme={null}
      local gender = character.gender
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="charDescription">
      <ParamField body="return" type="string">
        The description of the character
      </ParamField>

      ```lua theme={null}
      local charDescription = character.charDescription
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="nickname">
      <ParamField body="return" type="string">
        The nickname of the character
      </ParamField>

      ```lua theme={null}
      local nickname = character.nickname
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="invCapacity">
      <ParamField body="return" type="number">
        The inventory capacity of the character
      </ParamField>

      ```lua theme={null}
      local invCapacity = character.invCapacity
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="skills">
      <ParamField body="return" type="table">
        The skills of the character
      </ParamField>

      ```lua theme={null}
      local skills = character.skills
      local skill = skills.Crafting
      if not skill then return print("skill not found in core config or it doesn't exist") end
      local skillExp = skill.Exp
      local skillLevel = skill.Level
      ```
    </Accordion>
  </Tab>

  <Tab title="setters">
    <Accordion icon="user" iconType="duotone" title="setJob">
      <ParamField body="job" type="string" required>
        The job name to set
      </ParamField>

      <ParamField body="flag" type="boolean">
        If true, the job change event won't be triggered
      </ParamField>

      ```lua theme={null}
       character.setJob("job", flag)
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="setMultiJob">
      multijobs can be added to users and they can switch between them using the switch command in vorp core
      listen for job change events to know when the user switches jobs

      <ParamField body="job" type="string" required>
        The job name to set
      </ParamField>

      <ParamField body="grade" type="number" required>
        The job grade to set
      </ParamField>

      <ParamField body="label" type="string" required>
        The job label to set
      </ParamField>

      ```lua theme={null}
      character.setMultiJob("job", 1, "label")
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="removeMultiJob">
      <ParamField body="job" type="string" required>
        The job name to remove
      </ParamField>

      ```lua theme={null}
      character.removeMultiJob("job")
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="getMultiJobsCount">
      <ParamField body="return" type="number">
        The number of multijobs the character has
      </ParamField>

      ```lua theme={null}
      local multiJobCount = character.getMultiJobsCount()
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="setJobGrade">
      <ParamField body="grade" type="number" required>
        The job grade to set
      </ParamField>

      <ParamField body="flag" type="boolean">
        If true, the job change event won't be triggered
      </ParamField>

      ```lua theme={null}
      character.setJobGrade(1, flag)
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="setJobLabel">
      <ParamField body="label" type="string" required>
        The job label to set
      </ParamField>

      ```lua theme={null}
      character.setJobLabel("Label")
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="setGroup">
      <ParamField body="group" type="string" required>
        The group to set
      </ParamField>

      <ParamField body="flag" type="boolean">
        If true, the group change event won't be triggered
      </ParamField>

      ```lua theme={null}
      character.setGroup("admin", false)
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="setRol">
      <ParamField body="amount" type="number" required>
        Set the amount of Rol of the character
      </ParamField>

      ```lua theme={null}
      character.setRol(1000)
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="setXp">
      <ParamField body="amount" type="number" required>
        Set the amount of XP of the character
      </ParamField>

      ```lua theme={null}
      character.setXp(5000)
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="setFirstname">
      <ParamField body="firstname" type="string" required>
        Set the first name of the character
      </ParamField>

      ```lua theme={null}
      character.setFirstname("Sadie")
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="setLastname">
      <ParamField body="lastname" type="string" required>
        Set the last name of the character
      </ParamField>

      ```lua theme={null}
      character.setLastname("Adler")
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="updateSkin">
      <ParamField body="comps" type="string" required>
        The skin in JSON format
      </ParamField>

      ```lua theme={null}
      character.updateSkin("skin")
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="updateComps">
      <ParamField body="comps" type="string" required>
        The clothing components in JSON format
      </ParamField>

      ```lua theme={null}
      character.updateComps("comps")
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="updateCompTints">
      <ParamField body="comps" type="string" required>
        The clothing components tints in JSON format
      </ParamField>

      ```lua theme={null}
      character.updateCompTints("comps")
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="addCurrency">
      <ParamField body="type" type="number" required>
        The currency type (0 = money, 1 = gold, 2 = rol)
      </ParamField>

      <ParamField body="amount" type="number" required>
        The amount to add to character
      </ParamField>

      ```lua theme={null}
      character.addCurrency(0, 1000)
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="removeCurrency">
      <ParamField body="type" type="number" required>
        The currency type (0 = money, 1 = gold, 2 = rol)
      </ParamField>

      <ParamField body="amount" type="number" required>
        The amount to remove from character
      </ParamField>

      ```lua theme={null}
      character.removeCurrency(0, 1000)
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="addXp">
      <ParamField body="amount" type="number" required>
        The amount of XP to add
      </ParamField>

      ```lua theme={null}
      character.addXp(100)
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="removeXp">
      <ParamField body="amount" type="number" required>
        The amount of XP to remove
      </ParamField>

      ```lua theme={null}
      character.removeXp(100)
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="setAge">
      <ParamField body="age" type="number" required>
        The age to set to the character
      </ParamField>

      ```lua theme={null}
      character.setAge(45)
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="setCharDescription">
      <ParamField body="description" type="string" required>
        The character description to set to the character
      </ParamField>

      ```lua theme={null}
      character.setCharDescription("string")
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="setNickName">
      <ParamField body="nickname" type="string" required>
        The nickname to set to the character
      </ParamField>

      ```lua theme={null}
      character.setNickName("string")
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="setGender">
      <ParamField body="gender" type="string" required>
        The gender to set (male or female)
      </ParamField>

      ```lua theme={null}
      character.setGender("string")
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="updateInvCapacity">
      <ParamField body="change" type="number" required>
        The amount to change the inventory capacity by (can be positive or negative) its also incremental so 1000 will be 1000 + what you already        have
      </ParamField>

      ```lua theme={null}
      character.updateInvCapacity(1) 
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="setSkills">
      <ParamField body="skillName" type="string" required>
        The name of the skill to set, these skillNames will be in VORP Core config skills
      </ParamField>

      <ParamField body="value" type="number" required>
        the Exp value to be set to the skillName you passed values are incremental so 1000 exp will be 1000 + what you already have
      </ParamField>

      ```lua theme={null}
      character.setSkills("skillName", 10) -- skillname exp
      ```
    </Accordion>
  </Tab>
</Tabs>

## Users

Get the user data to access getters and setters

<Accordion icon="user" iconType="duotone" title="getUser">
  <ParamField body="source" type="number" required>
    The player ID
  </ParamField>

  ```lua theme={null}
  local user = Core.getUser(source) --[[@as User]]  
  if not user then return end -- is player in session?
  ```
</Accordion>

<Accordion icon="user" iconType="duotone" title="setMaxJobsAllowed">
  <ParamField body="maxJobs" type="number" required>
    The maximum number of jobs allowed for the user
  </ParamField>

  ```lua theme={null}
  user.setMaxJobsAllowed(maxJobs)
  ```
</Accordion>

<Tabs>
  <Tab title="getters">
    <Accordion icon="user" iconType="duotone" title="getUserByCharId">
      <ParamField body="charid" type="number" required>
        The character ID
      </ParamField>

      ```lua theme={null}
      local user = Core.getUserByCharId(charid) --[[@as User]]
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="getGroup">
      <ParamField body="return" type="string">
        The user group (not character group)
      </ParamField>

      ```lua theme={null}
      local userGroup = user.getGroup
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="source">
      <ParamField body="return" type="integer">
        The user's source (player ID)
      </ParamField>

      ```lua theme={null}
      local userSource = user.source
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="maxJobsAllowed">
      <ParamField body="return" type="number">
        The maximum number of jobs allowed for the user
      </ParamField>

      ```lua theme={null}
      local maxJobsAllowed = user.maxJobsAllowed
      ```
    </Accordion>
  </Tab>

  <Tab title="setters">
    <Accordion icon="user" iconType="duotone" title="SetGroup">
      <ParamField body="group" type="string" required>
        The group to set for the user
      </ParamField>

      ```lua theme={null}
      user.SetGroup(group)
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="getIdentifier">
      <ParamField body="return" type="number">
        The steam ID of the user
      </ParamField>

      ```lua theme={null}
      local steam = user.getIdentifier()
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="getUserCharacters">
      <ParamField body="return" type="table">
        All characters of the user
      </ParamField>

      ```lua theme={null}
      local data = user.getUserCharacters()
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="getPlayerwarnings">
      <ParamField body="return" type="integer">
        The warning status of the user
      </ParamField>

      ```lua theme={null}
      local warnstatus = user.getPlayerwarnings()
      ```
    </Accordion>
  </Tab>
</Tabs>

## Whitelist

<Note>Server</Note>

<Tabs>
  <Tab title="getters">
    <Accordion icon="user" iconType="duotone" title="getEntry">
      <ParamField body="identifier" type="string" required>
        The identifier of the whitelist entry
      </ParamField>

      ```lua theme={null}
      local data = Core.Whitelist.getEntry(identifier)
      print(json.encode(data),{ident = true})
      ```
    </Accordion>
  </Tab>

  <Tab title="setters">
    <Accordion icon="user" iconType="duotone" title="whitelistUser">
      <ParamField body="identifier" type="string" required>
        The identifier of the whitelist entry
      </ParamField>

      ```lua theme={null}
      Core.Whitelist.whitelistUser(identifier)
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="unWhitelistUser">
      <ParamField body="identifier" type="string" required>
        The identifier of the whitelist entry
      </ParamField>

      ```lua theme={null}
      Core.Whitelist.unWhitelistUser(identifier)
      ```
    </Accordion>
  </Tab>
</Tabs>

## Webhooks

<Note>Shared</Note>

<Accordion icon="user" iconType="duotone" title="AddWebhook">
  <ParamField body="title" type="string" required>
    The title of the webhook
  </ParamField>

  <ParamField body="webhook" type="string" required>
    The webhook link
  </ParamField>

  <ParamField body="description" type="string" required>
    The description of the webhook
  </ParamField>

  <ParamField body="color" type="number" required>
    The color of the webhook
  </ParamField>

  <ParamField body="name" type="string" required>
    The name of the webhook
  </ParamField>

  <ParamField body="logo" type="string">
    The logo of the webhook
  </ParamField>

  <ParamField body="footerlogo" type="string">
    The footerlogo of the webhook
  </ParamField>

  <ParamField body="avatar" type="string">
    The avatar of the webhook
  </ParamField>

  ```lua theme={null}
  Core.AddWebhook("title", "webhook", "description", 12345678, "name", "logo", "footerlogo", "avatar")
  ```
</Accordion>

## Instancing

<Note>Client</Note>

to add a players to different instances use his server id + instance number
to add players to same instance use only the instanceNumber

```lua theme={null}
local instanceNumber = 54123 -- any number
VORPcore.instancePlayers(GetPlayerServerId(PlayerId())+ instanceNumber)
```

remove players from instance

```lua theme={null}
VORPcore.instancePlayers(0)
```

## Player

Available through core export

<Note>Server Side <br />
when using these functions you will benefit of the event listeners `OnPlayerDeath` `OnPlayerRevive` `OnPlayerRespawn`</Note>

<Accordion icon="user" iconType="duotone" title="Heal">
  <ParamField body="source" type="integer" required>
    The player ID
  </ParamField>

  ```lua theme={null}
  Core.Player.Heal(source)
  ```
</Accordion>

<Accordion icon="user" iconType="duotone" title="Revive">
  <ParamField body="source" type="integer" required>
    The player ID
  </ParamField>

  ```lua theme={null}
  Core.Player.Revive(source)
  ```
</Accordion>

<Accordion icon="user" iconType="duotone" title="Respawn">
  <ParamField body="source" type="integer" required>
    The player ID
  </ParamField>

  ```lua theme={null}
  Core.Player.Respawn(source)
  ```
</Accordion>

## Callbacks

Callbacks are available through core export or single exports

<Tabs>
  <Tab title="Server">
    if you need only the call back system

    ```lua theme={null}
    local ServerRPC = exports.vorp_core:ServerRpcCall() --[[@as ServerRPC]] -- for intellisense
    ```

    <Accordion icon="user" iconType="duotone" title="TriggerAwait">
      trigger a synchronous callback from client to server

      <ParamField body="name" type="string" required>
        The name of the callback
      </ParamField>

      <ParamField body="..." type="any">
        The parameters to pass to the callback
      </ParamField>

      <ParamField body="return" type="any">
        The result of the callback
      </ParamField>

      ```lua theme={null}
      local result =  Core.Callback.TriggerAwait(name,...)
      print(result)
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="TriggerAsync">
      trigger an asynchronous callback from client to server

      <ParamField body="name" type="string" required>
        The name of the callback
      </ParamField>

      <ParamField body="..." type="any">
        The parameters to pass to the callback
      </ParamField>

      <ParamField body="return" type="any">
        The result of the callback
      </ParamField>

      ```lua theme={null}
      Core.Callback.TriggerAsync(name, function(result)
        print(result)
       end, ...)
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="Register">
      register a callback on the server to receive a client callback

      <ParamField body="name" type="string" required>
        The name of the callback
      </ParamField>

      <ParamField body="callback" type="function" required>
        The callback function
      </ParamField>

      <ParamField body="source" type="integer">
        The source of the callback
      </ParamField>

      <ParamField body="callback" type="function">
        The callback function
      </ParamField>

      <ParamField body="..." type="any">
        The parameters to pass to the callback
      </ParamField>

      <ParamField body="return" type="any">
        The result of the callback
      </ParamField>

      ```lua theme={null}
      Core.Callback.Register(name, function(source,callback,...)
         callback(...)
       end)
      ```
    </Accordion>
  </Tab>

  <Tab title="Client">
    if you need only the call back system

    ```lua theme={null}
    local ClientRPC = exports.vorp_core:ClientRpcCall() --[[@as ClientRPC]] -- for intellisense
    ```

    <Accordion icon="user" iconType="duotone" title="TriggerAwait">
      trigger a server to client callback synchronously

      <ParamField body="name" type="string" required>
        The name of the callback
      </ParamField>

      <ParamField body="source" type="integer">
        The source of the callback
      </ParamField>

      <ParamField body="..." type="any">
        The parameters to pass to the callback
      </ParamField>

      <ParamField body="return" type="any">
        The result of the callback
      </ParamField>

      ```lua theme={null}
      local result = Core.Callback.TriggerAwait(name,source,...)
      print(result)
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="TriggerAsync">
      trigger an asynchronous callback from client to server

      <ParamField body="name" type="string" required>
        The name of the callback
      </ParamField>

      <ParamField body="source" type="integer">
        The source of the callback
      </ParamField>

      <ParamField body="..." type="any">
        The parameters to pass to the callback
      </ParamField>

      <ParamField body="return" type="any">
        The result of the callback
      </ParamField>

      ```lua theme={null}
      Core.Callback.TriggerAsync(name, source, function(result)
        print(result)
       end, ...)
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="Register">
      register a callback on the client to receive a server callback

      <ParamField body="name" type="string" required>
        The name of the callback
      </ParamField>

      <ParamField body="callback" type="function" required>
        The callback function
      </ParamField>

      <ParamField body="..." type="any">
        The parameters to pass to the callback
      </ParamField>

      <ParamField body="return" type="any">
        The result of the callback
      </ParamField>

      ```lua theme={null}
      Core.Callback.Register(name, function(callback,...)
       callback(...)
      end)        
      ```
    </Accordion>
  </Tab>
</Tabs>

## Events

Event Listeners to detect changes in the player state

when player job and group changes these events are triggered

<Note>Server Side</Note>

#### onGroupChange

```lua theme={null}
AddEventHandler("vorp:playerGroupChange",function(source, newgroup,oldgroup) end)
```

#### onJobChange

```lua theme={null}
AddEventHandler("vorp:playerJobChange", function(source, newjob,oldjob) end)
```

#### onJobGradeChange

```lua theme={null}
AddEventHandler("vorp:playerJobGradeChange",function(source, newjobgrade,oldjobgrade) end)
```

#### onPlayerDeath

when player dies this event is triggered

```lua theme={null}
--CLIENT
AddEventHandler("vorp_core:Client:OnPlayerDeath",function(killerserverid,causeofdeath) end)

--SERVER
RegisterNetEvent("vorp_core:Server:OnPlayerDeath",function(killerserverid,causeofdeath) end)

```

#### onPlayerRevive

when player is revived through VORP Core export this event will trigger

```lua theme={null}
--SERVER
AddEventHandler("vorp_core:Server:OnPlayerRevive",function(source)end)

--CLIENT
RegisterNetEvent("vorp_core:Client:OnPlayerRevive")
```

#### onPlayerRespawn

when player respawns through VORP Core export this event will trigger

```lua theme={null}
--SERVER
AddEventHandler("vorp_core:Server:OnPlayerRespawn"function(source)end)

--CLIENT
RegisterNetEvent("vorp_core:Client:OnPlayerRespawn")
```

#### onPlayerHeal

when player is healed through VORP Core export this event will trigger

```lua theme={null}
--SERVER
AddEventHandler("vorp_core:Server:OnPlayerHeal",function(source) end)
--CLIENT
RegisterNetEvent("vorp_core:Client:OnPlayerHeal")
```

#### onPlayerLevelUp

triggered when a player has leveled up or down

```lua theme={null}
--SERVER
AddEventHandler("vorp_core:Server:OnPlayerLevelUp",function(source,skillName,newLevel,oldLevel) end)
--CLIENT
RegisterNetEvent("vorp_core:Client:OnPlayerLevelUp",function(skillName,newLevel,oldLevel) end)
```

#### onPlayerSpawned

triggered when a player has fully spawned after teleportation and loading screens

```lua theme={null}
--CLIENT
AddEventHandler("vorp_core:Client:OnPlayerSpawned",function()end)
```

## Dataview

call dataview in your script fxmanifest

```lua theme={null}
 client_scripts {
    '@vorp_core/client/dataview.lua'
 }
```

## GlobalStates

* easily get players count from client or server

```lua theme={null}
GlobalState.PlayersInSession
```

## Statebags

statebag getters that allow you to get the character data
<Note>Shared</Note>

<Tabs>
  <Tab title="client">
    <Accordion icon="user" iconType="duotone" title="IsInSession">
      is player in session? this will return true when player choose his character

      <ParamField body="return" type="boolean">
        The IsInSession of the character
      </ParamField>

      ```lua theme={null}
      LocalPlayer.state.IsInSession
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="FirstName">
      get the first name of the character

      <ParamField body="return" type="string">
        The first name of the character
      </ParamField>

      ```lua theme={null}
      LocalPlayer.state.Character.FirstName
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="LastName">
      get the last name of the character

      <ParamField body="return" type="string">
        The last name of the character
      </ParamField>

      ```lua theme={null}
      LocalPlayer.state.Character.LastName
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="Job">
      get the job of the character

      <ParamField body="return" type="string">
        The job of the character
      </ParamField>

      ```lua theme={null}
      LocalPlayer.state.Character.Job
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="JobLabel">
      get the job label of the character

      <ParamField body="return" type="string">
        The job label of the character
      </ParamField>

      ```lua theme={null}
      LocalPlayer.state.Character.JobLabel
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="Grade">
      get the grade of the character

      <ParamField body="return" type="integer">
        The grade of the character
      </ParamField>

      ```lua theme={null}
      LocalPlayer.state.Character.Grade
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="Group">
      get the group of the character

      <ParamField body="return" type="string">
        The group of the character
      </ParamField>

      ```lua theme={null}
      LocalPlayer.state.Character.Group
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="Age">
      get the age of the character

      <ParamField body="return" type="integer">
        The age of the character
      </ParamField>

      ```lua theme={null}
      LocalPlayer.state.Character.Age
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="Gender">
      get the gender of the character

      <ParamField body="return" type="string">
        The gender of the character
      </ParamField>

      ```lua theme={null}
      LocalPlayer.state.Character.Gender
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="NickName">
      get the nickname of the character

      <ParamField body="return" type="string">
        The nickname of the character
      </ParamField>

      ```lua theme={null}
      LocalPlayer.state.Character.NickName
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="CharDescription">
      get the character description of the character

      <ParamField body="return" type="string">
        The character description of the character
      </ParamField>

      ```lua theme={null}
      LocalPlayer.state.Character.CharDescription
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="Money">
      get the money of the character

      <ParamField body="return" type="integer">
        The money of the character
      </ParamField>

      ```lua theme={null}
      LocalPlayer.state.Character.Money
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="Gold">
      get the gold of the character

      <ParamField body="return" type="integer">
        The gold of the character
      </ParamField>

      ```lua theme={null}
      LocalPlayer.state.Character.Gold
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="Rol">
      get the rol of the character

      <ParamField body="return" type="integer">
        The rol of the character
      </ParamField>

      ```lua theme={null}
      LocalPlayer.state.Character.Rol
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="CharId">
      get the charid of the character

      <ParamField body="return" type="integer">
        The charid of the character
      </ParamField>

      ```lua theme={null}
      LocalPlayer.state.Character.CharId
      ```
    </Accordion>
  </Tab>

  <Tab title="server">
    <Accordion icon="user" iconType="duotone" title="IsInSession">
      is player in session? this will return true when player choose his character

      <ParamField body="return" type="boolean">
        The IsInSession of the character
      </ParamField>

      ```lua theme={null}
      Player(source).state.IsInSession
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="FirstName">
      get the first name of the character

      <ParamField body="return" type="string">
        The first name of the character
      </ParamField>

      ```lua theme={null}
      Player(source).state.Character.FirstName
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="LastName">
      get the last name of the character

      <ParamField body="return" type="string">
        The last name of the character
      </ParamField>

      ```lua theme={null}
      Player(source).state.Character.LastName
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="Job">
      get the job of the character

      <ParamField body="return" type="string">
        The job of the character
      </ParamField>

      ```lua theme={null}
      Player(source).state.Character.Job
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="JobLabel">
      get the job label of the character

      <ParamField body="return" type="string">
        The job label of the character
      </ParamField>

      ```lua theme={null}
      Player(source).state.Character.JobLabel
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="Grade">
      get the grade of the character

      <ParamField body="return" type="integer">
        The grade of the character
      </ParamField>

      ```lua theme={null}
      Player(source).state.Character.Grade
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="Group">
      get the group of the character

      <ParamField body="return" type="string">
        The group of the character
      </ParamField>

      ```lua theme={null}
      Player(source).state.Character.Group
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="Age">
      get the age of the character

      <ParamField body="return" type="integer">
        The age of the character
      </ParamField>

      ```lua theme={null}
      Player(source).state.Character.Age
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="Gender">
      get the gender of the character

      <ParamField body="return" type="string">
        The gender of the character
      </ParamField>

      ```lua theme={null}
      Player(source).state.Character.Gender
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="NickName">
      get the nickname of the character

      <ParamField body="return" type="string">
        The nickname of the character
      </ParamField>

      ```lua theme={null}
      Player(source).state.Character.NickName
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="CharDescription">
      get the character description of the character

      <ParamField body="return" type="string">
        The character description of the character
      </ParamField>

      ```lua theme={null}
      Player(source).state.Character.CharDescription
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="Money">
      get the money of the character

      <ParamField body="return" type="integer">
        The money of the character
      </ParamField>

      ```lua theme={null}
      Player(source).state.Character.Money
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="Gold">
      get the gold of the character

      <ParamField body="return" type="integer">
        The gold of the character
      </ParamField>

      ```lua theme={null}
      Player(source).state.Character.Gold
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="Rol">
      get the rol of the character

      <ParamField body="return" type="integer">
        The rol of the character
      </ParamField>

      ```lua theme={null}
      Player(source).state.Character.Rol
      ```
    </Accordion>

    <Accordion icon="user" iconType="duotone" title="CharId">
      get the charid of the character

      <ParamField body="return" type="integer">
        The charid of the character
      </ParamField>

      ```lua theme={null}
      Player(source).state.Character.CharId
      ```
    </Accordion>
  </Tab>
</Tabs>

## Version

Use vorp version check with change logs feature in your scripts

add this in your fxmanifest

```lua theme={null}
-- version must match version.file
version '0.0.1'
vorp_checker 'yes'
-- can use color codes ^1
vorp_name '^5your resource name ^4version Check^3' 
-- path to the github repository, in here it must have a version.file file type where your change logs will be, also must be public repository
vorp_github 'https://github.com/repository/resource_name' 
```

example of a version.file

```lua theme={null}
<0.0.1> -- version must be the same in fxmanifest
- new version
- added feature
- removed feature
- fixed something
```
