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—-1when that job is not held
HasJob
Primary job only.
character.HasJob(name, onDutyOnly, minGrade)Parameters
- name:
string - onDutyOnly?:
boolean - minGrade?:
integer
Returns
boolean
if character.HasJob('ncpd', true, 2) then print('on duty, grade 2+') endHasGang
Primary gang only.
character.HasGang(name, minGrade)Parameters
- name:
string - minGrade?:
integer
Returns
boolean
GetMoney
character.GetMoney(moneyType)Parameters
- moneyType:
string
Returns
integer—0when 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.
| Need | Use instead |
|---|---|
| The local player's own character | GetPlayerData or the GetPlayerData client export |
| Another player's job, gang, name or life state | the 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 staff | the staff name tags (opx.admin.self.tags) |