EndCore Framework

Events

Every server, client and net event en-core fires or accepts, with payloads, plus the callbacks it registers.

en-core announces almost everything it does through events, so your resources can react without polling. This page lists them all in one place. The pages for each system explain when and why they fire.

Naming:

  • encore:server:* events fire on the server. Listen with AddEventHandler.
  • encore:client:* net events come from the server. Listen with RegisterNetEvent.
  • Some encore:client:* events are local: en-core re-fires them on the client for convenience. Listen with AddEventHandler.

Server events

Fired by en-core on the server.

EventPayloadPage
encore:server:onPlayerLoadedsource, playerDataPlayer API
encore:server:onPlayerUnloadsource, playerData (the player is already removed from the registry)Player API
encore:server:onJobUpdatesource, jobJobs
encore:server:onDutyUpdatesource, ondutyJobs
encore:server:onMoneyChangesource, moneyType, amount, action, reason, balanceMoney and cash
encore:server:onMoneySyncsource, moneyType, balanceMoney and cash
encore:server:onSetMetaDatasource, key, valuePlayer data
encore:server:onRadiationChangesource, value, action, reasonSurvival system
encore:server:onInfectionChangesource, value, action, reasonSurvival system
encore:server:onImmunityChangesource, value, action, reasonSurvival system
encore:server:onTemperatureChangesource, temperature, 'set', reasonSurvival system
encore:server:onSurvivalTicksource, stats, damage, causesSurvival system
encore:server:playerDiedsource, killerServerId, causeWorld and death
encore:server:xpChangedsource, infoXP and levels
encore:server:levelChangedsource, level, previousLevelXP and levels
encore:server:onGroupUpdatesource, summary or nilGroups
encore:server:groupCreatedgroupId, sourceGroups
encore:server:groupJoinedgroupId, sourceGroups
encore:server:groupLeftgroupId, sourceGroups
encore:server:groupInvitetargetSource, groupId, fromSourceGroups
encore:server:groupDisbandedgroupIdGroups
encore:content:readynoneContent registry
encore:content:changedkind, id, data or nilContent registry

Notes:

  • For radiation, infection and immunity, value is the resulting stat, not the amount changed. action is 'add', 'remove' or 'set' (immunity has no 'set').
  • The per-stat survival events fire only from explicit calls such as AddRadiation. The survival tick fires onSurvivalTick and onSetMetaData instead.
  • Player-object events can also fire when you change an offline player object. Don't rely on source being a valid online player in that case.

Net events clients may send

en-core accepts these from clients. The server always uses the event's real source, never a player id from the payload.

EventPayloadWhat it does
encore:server:requestLogoutnoneSaves and logs the player out to character selection
encore:server:toggleDutynoneToggles the sender's duty
encore:server:syncHealthhealth, armorStores health (clamped 0–200) and armour (0–100)
encore:server:onPlayerDeathkillerServerId, causeMarks the player dead
encore:server:onPlayerLastStandnoneMarks the player in last stand
encore:server:onPlayerRevivenoneClears the dead and last stand flags

Client net events

Sent by the server. Register them with RegisterNetEvent.

EventPayload
encore:client:onPlayerLoadedplayerData
encore:client:onPlayerUnloadnone
encore:client:playerDataUpdateplayerData
encore:client:onJobUpdatejob
encore:client:onDutyUpdateonduty
encore:client:onMoneyChangemoneyType, amount, action, reason, balance
encore:client:onMoneySyncmoneyType, balance
encore:client:onSetMetaDatakey, value
encore:client:onRadiationChangevalue, action, reason
encore:client:onInfectionChangevalue, action, reason
encore:client:onImmunityChangevalue, action, reason
encore:client:onTemperatureChangevalue, action, reason
encore:client:survivalDamagedamage, causes (en-core applies the damage)
encore:client:radiationExposurerate
encore:client:xpChangedinfo
encore:client:onGroupUpdatesummary or nil
encore:client:groupInvite{ id, name, tag, from, timeout }
encore:client:groupRosterChangedgroupId
encore:client:contentChangedkind, id, data or nil

Client local events

Re-fired by en-core on the client. Listen with AddEventHandler.

EventPayload
encore:client:playerLoadedplayerData
encore:client:playerUnloadednone
encore:client:moneyChangedmoneyType, balance, action, reason (action is 'sync' for mirror updates)
encore:client:groupChangedsummary or nil
encore:client:playerDiedkillerServerId, cause
encore:client:playerRevivednone
encore:client:survivalDamageddamage, causes

Callbacks

en-core registers these with the library's callback system. See Callbacks for how to call them.

CallbackArgumentsReturns
encore:groups:getnoneThe player's group, pending invite and group rules
encore:groups:actionaction, data{ ok, result } or { ok = false, error }
encore:content:getkindEvery entry of that content kind

Examples

A HUD that reacts to login, stat changes and money:

lua
-- client
AddEventHandler('encore:client:playerLoaded', function(data)
    -- build the HUD from data.metadata and data.money
end)

RegisterNetEvent('encore:client:onSetMetaData', function(key, value)
    if key == 'radiation' then
        -- update the radiation gauge
    end
end)

AddEventHandler('encore:client:moneyChanged', function(moneyType, balance, action)
    -- update the cash or bank display
end)

Server-side setup when a character loads and cleanup when they leave:

lua
AddEventHandler('encore:server:onPlayerLoaded', function(source, playerData)
    print(('%s loaded as %s'):format(GetPlayerName(source), playerData.name))
end)

AddEventHandler('encore:server:onPlayerUnload', function(source, playerData)
    -- clear anything you cached for this source
end)

Watch every survival tick:

lua
AddEventHandler('encore:server:onSurvivalTick', function(source, stats, damage, causes)
    if damage > 0 then
        print(source, damage, table.concat(causes, ', '))
    end
end)