RE:CORD
REC_PlayerManager

Events

Welcome to REC_PlayerManager documentation.
Added
Updated

What this gives you: a reliable moment to hang your own scripts off.

Knowing when a player has connected is easy. Knowing when their character is actually loaded and ready is the hard part, and getting it wrong is why scripts fire too early and read empty data. Every RE : CORD resource listens here instead of guessing at framework events, and yours can too.

REC_PlayerManager:server:onPlayerLoaded

Fires once the character is loaded and ready to be worked with.

sample.lua
---@param src integer
---@param payload REC_PlayerManager.Server.Main.PlayerLoaded.Payload
AddEventHandler('REC_PlayerManager:server:onPlayerLoaded', function(src, payload)
    print(("%s joined as %s"):format(payload.citizenId, payload.job.name))
end)
FieldTypeDescription
citizenIdstringThe character that loaded
job.namestringTheir job at that moment
Restarting this resource mid-session does not strand anybody. Everyone already connected is picked back up, so you never end up with half your players unmanaged.

REC_PlayerManager:server:onPlayerLeft

Fires when somebody drops, whether they logged out or timed out.

FieldTypeDescription
playerIdinteger
citizenIdstring?nil if they dropped before their character loaded

REC_PlayerManager:server:onPlayerRoutingBucketChange

Fires when a player is moved into a different routing bucket.

FieldTypeDescription
citizenIdstring
oldBucketinteger
newBucketinteger

Positions and buckets are re-read every config.playerManager.updateInterval (1000 ms). Every tracked player is read on each pass, so raise it if you run a busy server.

©2026 RE:CORD Development Group. All rights reserved.