framework.lua

A framework integration layer for CS_RADIO that supports ESX, QB-Core, or custom frameworks. Handles player job retrieval, inventory checks, and RP name fetching, both client- and server-side.

Supported Frameworks

  • ESX – Compatible with both old and new ESX versions

  • QB-Core – Uses QBCore exports

  • CUSTOM – Placeholder for custom framework integration

Client-Side Functions

framework.getPlayerJob()

Returns the player’s job name.

Behavior:

  • Waits for framework object and player data to load.

  • Initializes the radio menu.

  • Returns job.name for ESX or QB-Core.

  • Returns nil for CUSTOM framework

framework.registerJobUpdate(onJobChange)

Registers a callback to detect job changes.

  • onJobChange(jobName) – Called whenever the player’s job changes.

Framework-specific events:

  • ESX: esx:setJob

  • QB-Core: QBCore:Client:OnJobUpdate

  • CUSTOM: Not implemented

framework.doesPlayerHaveItem(item)

Checks if the player has a specific item in their inventory.

Parameters:

  • item – Name of the required item (e.g., "radio")

Returns: true / false

Framework behavior:

  • ESX: Checks ESX.GetPlayerData().inventory

  • QB-Core: Checks QBCore.Functions.GetPlayerData().items

  • CUSTOM: Returns false by default


Server-Side Functions

framework.getPlayer(src)

Fetches the server-side player object.

  • ESX: ESX.GetPlayerFromId(src)

  • QB-Core: QBCore.Functions.GetPlayer(src)

  • CUSTOM: Not implemented

framework.getRpName(src)

Returns the player’s RP name.

  • ESX: ESX.GetPlayerFromId(src).getName()

  • QB-Core: Combines firstname and lastname from charinfo

  • CUSTOM: Not implemented


Notes
  • Supports automatic detection of ESX version (old vs new).

  • Handles framework-specific differences for jobs, inventory, and RP names.

  • Can be extended to support custom frameworks.

Last updated

Was this helpful?