Skip to content

MetaDen Skills API Reference

Client exports

exports['metaden-skills']:GetNonce()

  • Returns: string|nil

exports['metaden-skills']:RequestNonce()

  • Triggers server nonce generation.
  • Returns: string|nil (may be stale until metaden-skills:nonce arrives).

Server exports

For sourceOrIdentifier, accepted forms are:

  • number (player source)
  • string (resolved identifier/citizenid)

When a number source is used and nonce protection is enabled, a valid nonce is required unless Config.Security.AllowServerMissingNonce = true.

XP and levels

exports['metaden-skills']:AddExperience(sourceOrIdentifier, skill, amount, nonce)

  • Adds XP (amount > 0).
  • Returns: number|nil (new XP)

exports['metaden-skills']:RemoveExperience(sourceOrIdentifier, skill, amount, nonce)

  • Removes XP (amount > 0).
  • Returns: number|nil (new XP)

exports['metaden-skills']:SetExperience(sourceOrIdentifier, skill, amount, nonce)

  • Sets XP directly (clamped to >= 0).
  • Returns: number|nil (new XP)

exports['metaden-skills']:GetExperience(sourceOrIdentifier, skill, nonce)

  • Returns XP for a skill.
  • Returns: number|nil

exports['metaden-skills']:GetTotalExperience(sourceOrIdentifier, nonce)

  • Returns total cached XP across all skills.
  • Returns: number|nil

exports['metaden-skills']:GetAllReputation()

  • Returns leaderboard-like totals sorted descending.
  • Returns: table[] as { identifier = string, total = number }

exports['metaden-skills']:GetPlayerLevel(experience)

  • Converts raw XP to level info.
  • Returns: level:number, nextLevelExp:number

Milestones payload exports

exports['metaden-skills']:GetMilestonesLevels(sourceOrIdentifier)

  • Returns levels payload from bridge config/hooks.

exports['metaden-skills']:GetMilestonesReputation(sourceOrIdentifier)

  • Returns reputation payload from bridge config/hooks.

exports['metaden-skills']:GetMilestonesData(sourceOrIdentifier)

  • Returns: { levels = table, reputation = table }

Mission/reputation exports

exports['metaden-skills']:GetAllReputationsForPlayer(playerSourceOrPlayer)

  • Returns merged reputation table for a player.

exports['metaden-skills']:CompleteMission(playerSource, missionId)

  • Completes an active mission when requirements are satisfied.
  • Returns: boolean success, string message

exports['metaden-skills']:SetMissionForPlayer(target, missionId)

  • Assigns or re-activates a mission.
  • Returns: boolean success, string message

exports['metaden-skills']:AssignMissionToPlayer(target, missionId)

  • Alias of SetMissionForPlayer.
  • Returns: boolean success, string message

Events and RPC

Client -> server events

metaden-skills:requestNonce

  • Generates/stores a nonce for the calling player.

metaden-skills:getExperience(skill, nonce)

  • Requests single-skill payload push to client.

metaden-skills:server:SetMissionForPlayer(target, missionId)

  • Assigns/re-activates a mission for a target.

metaden-skills:server:IncreaseRep(category, amount, passedSource, system)

  • Public integration event for reputation/skill increments.

metaden-skills:server:rpc:request(requestId, name, args)

  • Internal RPC bus used by milestones UI callbacks.

Server -> client events

metaden-skills:nonce(nonce)

  • Nonce response event.

metaden-skills:experience(data)

  • XP payload event.
  • Payload:
lua
{
  identifier = string,
  skill = string,
  experience = number,
  level = number,
  nextLevelExp = number
}

metaden-skills:client:rpc:response(requestId, payload)

  • RPC response for client-side request promises.

Registered RPC handlers (name)

  • metadenSkills:server:getPlayerTasks
  • taskApp:server:getPlayerReputation
  • taskApp:server:getPlayerLevels
  • metaden-skills:server:completeMission

NUI callback contract

Callbacks are registered in client/milestones.lua and consumed by the React app.

getPlayerTasks

  • Request body: {}
  • Response: Mission[]

getPlayerReputation

  • Request body: {}
  • Response: table

getPlayerLevels

  • Request body: {}
  • Response: table

setMissionWaypoint

  • Request body: { x: number, y: number }
  • Response: empty/ack

completeMission

  • Request body: { missionId: string }
  • Response: { success: boolean, message?: string }

closeMilestones

  • Request body: {}
  • Response: { ok: true }

Commands and permissions

XP command

/<Config.AdminCommand.Name> add|remove|set <skill> <amount> <playerId|citizenid>

Examples:

text
/skillexp add fishing 100 23
/skillexp set cooking 1500 CITIZEN123

Mission assignment command

/<Config.MissionSystem.AdminAssignCommandName> <missionId> <playerId|identifier(optional)>

Examples:

text
/missionassign gather_wood 23
/missionassign collect_rocks license:xxxxxxxxxxxxxxxx

If target is omitted, the caller is used.

Standalone milestones command

/<Config.MilestonesUi.StandaloneCommandName>

Disable if needed:

lua
Config.MilestonesUi = {
  EnableStandaloneCommand = false,
  StandaloneCommandName = 'milestones'
}