From 068056bb117638f69fcbee9641a834a1e18ad65c Mon Sep 17 00:00:00 2001 From: Ilias Rbayti <63159154+Kenshiin13@users.noreply.github.com> Date: Thu, 31 Oct 2024 15:00:46 +0100 Subject: [PATCH] Add job duty --- [core]/es_extended/config.lua | 1 + [core]/es_extended/server/classes/player.lua | 29 ++++++++++++++++++++ [core]/es_extended/server/commands.lua | 3 +- 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/[core]/es_extended/config.lua b/[core]/es_extended/config.lua index 95db96af..274f121c 100644 --- a/[core]/es_extended/config.lua +++ b/[core]/es_extended/config.lua @@ -48,6 +48,7 @@ Config.EnableDebug = false -- Use Debug options? Config.EnableDefaultInventory = true -- Display the default Inventory ( F2 ) Config.EnableWantedLevel = false -- Use Normal GTA wanted Level? Config.EnablePVP = true -- Allow Player to player combat +Config.DefaultJobDuty = true -- Default job duty when setting a players job Config.Multichar = GetResourceState("esx_multicharacter") ~= "missing" Config.Identity = true -- Select a character identity data before they have loaded in (this happens by default with multichar) diff --git a/[core]/es_extended/server/classes/player.lua b/[core]/es_extended/server/classes/player.lua index 709031fd..4df069f4 100644 --- a/[core]/es_extended/server/classes/player.lua +++ b/[core]/es_extended/server/classes/player.lua @@ -49,6 +49,12 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, self.license = "license:" .. identifier end + if type(metadata.jobduty) ~= "boolean" then + self.job.duty = self.job.name ~= "unemployed" and Config.DefaultJobDuty or false + else + self.job.duty = metadata.jobduty + end + _ExecuteCommand(("add_principal identifier.%s group.%s"):format(self.license, self.group)) local stateBag = Player(self.source).state @@ -485,6 +491,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, id = jobObject.id, name = jobObject.name, label = jobObject.label, + duty = jobObject.name ~= "unemployed" and Config.DefaultJobDuty or false, grade = tonumber(grade), grade_name = gradeObject.name, @@ -495,11 +502,33 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, skin_female = gradeObject.skin_female and json.decode(gradeObject.skin_female) or {}, } + self.metadata["jobduty"] = self.job.duty + _TriggerEvent("esx:setJob", self.source, self.job, lastJob) self.triggerEvent("esx:setJob", self.job, lastJob) Player(self.source).state:set("job", self.job, true) end + ---@param newDuty boolean + ---@return nil + function self.setJobDuty(newDuty) + if type(newDuty) ~= "boolean" then + return print(("[ESX] [^3WARNING^7] Ignoring invalid ^5.setJobDuty()^7 usage for ID: ^5%s^7, Duty: ^5%s^7"):format(self.source, newDuty)) + end + + if self.job.name == "unemployed" then + return + end + + local lastJob = ESX.Table.Clone(self.job) + self.job.duty = newDuty + self.metadata["jobduty"] = newDuty + + TriggerEvent("esx:setJob", self.source, self.job, lastJob) + self.triggerEvent("esx:setJob", self.job, lastJob) + Player(self.source).state:set("job", self.job, true) + end + ---@param weaponName string ---@param ammo number ---@return void diff --git a/[core]/es_extended/server/commands.lua b/[core]/es_extended/server/commands.lua index 1c998368..36dd3744 100644 --- a/[core]/es_extended/server/commands.lua +++ b/[core]/es_extended/server/commands.lua @@ -540,7 +540,8 @@ ESX.RegisterCommand("group", { "user", "admin" }, function(xPlayer, _, _) end, true) ESX.RegisterCommand("job", { "user", "admin" }, function(xPlayer, _, _) - print(("%s, your job is: ^5%s^0 - ^5%s^0"):format(xPlayer.getName(), xPlayer.getJob().name, xPlayer.getJob().grade_label)) + local job = xPlayer.getJob() + print(("%s, your job is: ^5%s^0 - ^5%s^0 - ^5%s^0"):format(xPlayer.getName(), job.name, job.grade_label, job.duty and "On Duty" or "Off Duty")) end, false) ESX.RegisterCommand("info", { "user", "admin" }, function(xPlayer)