OPX//77
opx_infinitycharacter

Client

Last updated on

The character contract on the client — a read-only mirror of the local character, and other players' public state.

local character = OPX.Api.Get('character')

From client code inside opx_infinity. These read a local mirror of the server; nothing is authoritative. Never yields. The client hides every other player's platform nameplate: no character name and no account gamertag over a stranger's head (Privacy).

GetPlayerData

The mirrored PlayerData. Read only.

character.GetPlayerData()

Returns

  • table — {} before a character loads; see PlayerData

GetCitizenId

character.GetCitizenId()

Returns

  • string?

IsLoggedIn

True between loaded and unloaded.

character.IsLoggedIn()

Returns

  • boolean

IsNamed

Whether the loaded character has a first name.

character.IsNamed()

Returns

  • boolean

GetJobData

The primary job.

character.GetJobData()

Returns

  • table?

GetGangData

The primary gang.

character.GetGangData()

Returns

  • table?

GetJobGrade

Grade level of the primary job.

character.GetJobGrade(name)

Parameters

  • name?: string

Returns

  • integer — -1 when that job is not held

HasJob

Primary job only.

character.HasJob(name, onDutyOnly, minGrade)

Parameters

  • name: string
  • onDutyOnly?: boolean
  • minGrade?: integer

Returns

  • boolean
Example
if character.HasJob('ncpd', true, 2) then print('on duty, grade 2+') end

HasGang

Primary gang only.

character.HasGang(name, minGrade)

Parameters

  • name: string
  • minGrade?: integer

Returns

  • boolean

GetMoney

character.GetMoney(moneyType)

Parameters

  • moneyType: string

Returns

  • integer — 0 when unknown

GetMetadata

character.GetMetadata(key)

Parameters

  • key?: string — nil returns the whole table

Returns

  • any

GetPosition

The local player's position.

character.GetPosition()

Returns

  • { x, y, z }?

SetName

Checks the name locally and sends it. The server checks again and accepts it once.

character.SetName(firstName, lastName)

Parameters

  • firstName, lastName: string

Returns

  • boolean, string? — ok, code

GetPlayerState

Kept for callers written against the old contract: always an empty table, because the state bag carries nothing. Do not write to it.

character.GetPlayerState(playerId)

Parameters

  • playerId: number

Returns

  • table — always {}

GetPlayerName

Another player's character name: never known on a client.

character.GetPlayerName(playerId)

Parameters

  • playerId: number

Returns

  • nil — always

GetPlayerIdentity

Kept for the old contract: a fresh table of three nils. Staff name tags come from the staff tag list instead (admin).

character.GetPlayerIdentity(playerId)

Parameters

  • playerId: number

Returns

  • { name = nil, username = nil, citizenId = nil }

State bag

Empty since PR #93. A player bag reaches every client in the routing bucket (the whole city), so the character module writes no key on it (State.KEYS = {}, held by a test). The keys an older build wrote (citizenId, name, charInfo, job, gang, username, life) are cleared once per player when they are found.

NeedUse instead
The local player's own characterGetPlayerData or the GetPlayerData client export
Another player's job, gang, name or life statethe server: server exports such as GetPlayerData, HasJob, IsDown. Never hand a name on to a client that has not met that character.
Who is who, for staffthe staff name tags (opx.admin.self.tags)

On this page