From b7d6d9f3193caa4062322320f9b2408f4bdc1371 Mon Sep 17 00:00:00 2001 From: Kasey FItton Date: Thu, 24 Oct 2024 13:49:28 +0100 Subject: [PATCH] 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` --- [core]/es_extended/server/classes/player.lua | 6 ++++++ [core]/es_extended/server/functions.lua | 1 + [core]/es_extended/server/main.lua | 5 +++++ 3 files changed, 12 insertions(+) diff --git a/[core]/es_extended/server/classes/player.lua b/[core]/es_extended/server/classes/player.lua index 709031fd..620e7b72 100644 --- a/[core]/es_extended/server/classes/player.lua +++ b/[core]/es_extended/server/classes/player.lua @@ -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) diff --git a/[core]/es_extended/server/functions.lua b/[core]/es_extended/server/functions.lua index 4ed4b39a..cb454ab3 100644 --- a/[core]/es_extended/server/functions.lua +++ b/[core]/es_extended/server/functions.lua @@ -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) diff --git a/[core]/es_extended/server/main.lua b/[core]/es_extended/server/main.lua index 26cab119..26efb4dd 100644 --- a/[core]/es_extended/server/main.lua +++ b/[core]/es_extended/server/main.lua @@ -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