Skip to content

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
    -- ...
end

Permission 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 >= 2

Returns: 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

EventPayload
player:connected{ playerId }
player:disconnected{ playerId, reason }
player:spawned{ playerId, charId, coords }
player:jobChanged{ playerId, oldJob, newJob }

See Also

Released under the MIT License.