Player Contract
Contract: IPlayer
Default provider: shiva-player
The player contract manages character data, permissions, and player state.
Methods
IPlayer:get(serverId)
Get a player's data by server ID.
lua
local player = container:make('IPlayer')
local data = player:get(source)
-- { id, serverId, name, charId, job, gang, metadata }Returns: PlayerData | nil
IPlayer:getCharacter(charId)
Get a character by character ID.
Returns: CharacterData | nil
IPlayer:hasPermission(serverId, level)
Check if a player has at least the given permission level.
lua
if player:hasPermission(source, 'admin') then
-- ...
endPermission levels: 'user', 'mod', 'admin', 'superadmin'
Returns: boolean
IPlayer:hasJob(serverId, job, grade?)
Check if a player has a specific job, optionally at a minimum grade.
lua
player:hasJob(source, 'police') -- any grade
player:hasJob(source, 'police', 2) -- grade >= 2Returns: boolean
IPlayer:setMetadata(serverId, key, value)
Set a metadata value on a player.
lua
player:setMetadata(source, 'hunger', 80)IPlayer:getMetadata(serverId, key)
Get a metadata value.
lua
local hunger = player:getMetadata(source, 'hunger')Returns: any
Events Emitted
| Event | Payload |
|---|---|
player:connected | { playerId } |
player:disconnected | { playerId, reason } |
player:spawned | { playerId, charId, coords } |
player:jobChanged | { playerId, oldJob, newJob } |