feat(es_extended/server): Store Player's Playtime

Some Notes on this:
- Will store per character
- adds a command: `/playtime` as 1. an example on using it and 2. a way for players to see their current stats.
- Increases Minimum Artifact Requirements to: `9515`
This commit is contained in:
Kasey FItton
2024-10-24 13:49:28 +01:00
parent 0b658bc3bb
commit b7d6d9f319
3 changed files with 12 additions and 0 deletions
@@ -42,6 +42,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
self.weight = weight
self.maxWeight = Config.MaxWeight
self.metadata = metadata
self.lastPlaytime = self.metadata.lastPlaytime or 0
self.admin = Core.IsPlayerAdmin(playerId)
if Config.Multichar then
self.license = "license" .. identifier:sub(identifier:find(":"), identifier:len())
@@ -102,6 +103,11 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
_DropPlayer(self.source, reason)
end
---@return number
function self.getPlayTime()
return self.lastPlaytime + GetPlayerTimeOnline(self.source)
end
---@param money number
---@return void
function self.setMoney(money)
+1
View File
@@ -186,6 +186,7 @@ local function updateHealthAndArmorInMetadata(xPlayer)
local ped = GetPlayerPed(xPlayer.source)
xPlayer.setMeta("health", GetEntityHealth(ped))
xPlayer.setMeta("armor", GetPedArmour(ped))
xPlayer.setMeta("lastPlaytime", xPlayer.getPlayTime())
end
function Core.SavePlayer(xPlayer, cb)
+5
View File
@@ -98,9 +98,14 @@ end
if not Config.Multichar then
AddEventHandler("playerConnecting", function(_, _, deferrals)
deferrals.defer()
Wait(0) -- Required
local playerId = source
local identifier = ESX.GetIdentifier(playerId)
if not GetPlayerTimeOnline then
return deferrals.done(("[ESX] ESX Requires a minimum Artifact version of 9515, Please update your server."):format(oneSyncState))
end
if oneSyncState == "off" or oneSyncState == "legacy" then
return deferrals.done(("[ESX] ESX Requires Onesync Infinity to work. This server currently has Onesync set to: %s"):format(oneSyncState))
end