feat(es_extended): Added "Duty" system

feat(es_extended): Added "Duty" system
This commit is contained in:
Esplike
2022-04-11 20:37:38 +01:00
committed by GitHub
7 changed files with 35 additions and 3 deletions
+1 -1
View File
@@ -20,5 +20,5 @@ Config.EnablePVP = true -- Allow Player to player combat
Config.Multichar = true -- Enable support for esx_multicharacter Config.Multichar = true -- Enable support for esx_multicharacter
Config.Identity = true -- Select a characters identity data before they have loaded in (this happens by default with multichar) Config.Identity = true -- Select a characters identity data before they have loaded in (this happens by default with multichar)
Config.DistanceGive = 4.0 -- Max distance when giving items, weapons etc. Config.DistanceGive = 4.0 -- Max distance when giving items, weapons etc.
Config.OnDuty = true -- Default state of the on duty system
+4
View File
@@ -343,4 +343,8 @@ Locales['en'] = {
['tint_lspd'] = 'blue skin', ['tint_lspd'] = 'blue skin',
['tint_orange'] = 'orange skin', ['tint_orange'] = 'orange skin',
['tint_platinum'] = 'platinum skin', ['tint_platinum'] = 'platinum skin',
-- Duty related
['stopped_duty'] = 'You\'ve stopped your duty.',
['started_duty'] = 'You\'ve started your duty.',
} }
+4
View File
@@ -222,4 +222,8 @@ Locales['fr'] = {
['tint_lspd'] = 'skin bleu', ['tint_lspd'] = 'skin bleu',
['tint_orange'] = 'skin orange', ['tint_orange'] = 'skin orange',
['tint_platinum'] = 'skin platine', ['tint_platinum'] = 'skin platine',
-- Duty related
['stopped_duty'] = 'Vous êtes maintenant hors-service.',
['started_duty'] = 'Vous êtes maintenant en-service.',
} }
@@ -356,6 +356,11 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
end end
end end
function self.setDuty(bool)
self.job.onDuty = bool
self.triggerEvent('esx:setJob', self.job)
end
function self.setJob(job, grade) function self.setJob(job, grade)
grade = tostring(grade) grade = tostring(grade)
local lastJob = json.decode(json.encode(self.job)) local lastJob = json.decode(json.encode(self.job))
@@ -371,6 +376,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
self.job.grade_name = gradeObject.name self.job.grade_name = gradeObject.name
self.job.grade_label = gradeObject.label self.job.grade_label = gradeObject.label
self.job.grade_salary = gradeObject.salary self.job.grade_salary = gradeObject.salary
self.job.onDuty = Config.OnDuty
if gradeObject.skin_male then if gradeObject.skin_male then
self.job.skin_male = json.decode(gradeObject.skin_male) self.job.skin_male = json.decode(gradeObject.skin_male)
+1
View File
@@ -93,6 +93,7 @@ MySQL.ready(function()
grade = 0, grade = 0,
label = 'Unemployed', label = 'Unemployed',
salary = 200, salary = 200,
onDuty = false,
skin_male = {}, skin_male = {},
skin_female = {} skin_female = {}
} }
+16
View File
@@ -156,6 +156,7 @@ function loadESXPlayer(identifier, playerId, isNew)
userData.job.grade_name = gradeObject.name userData.job.grade_name = gradeObject.name
userData.job.grade_label = gradeObject.label userData.job.grade_label = gradeObject.label
userData.job.grade_salary = gradeObject.salary userData.job.grade_salary = gradeObject.salary
userData.job.onDuty = Config.OnDuty
userData.job.skin_male = {} userData.job.skin_male = {}
userData.job.skin_female = {} userData.job.skin_female = {}
@@ -613,3 +614,18 @@ AddEventHandler('txAdmin:events:scheduledRestart', function(eventData)
end) end)
end end
end) end)
RegisterNetEvent('esx:setDuty')
AddEventHandler('esx:setDuty', function(bool)
local xPlayer = ESX.GetPlayerFromId(source)
if xPlayer.job.onDuty == bool then return end
if bool then
xPlayer.setDuty(true)
xPlayer.triggerEvent('esx:showNotification', _U('started_duty'))
else
xPlayer.setDuty(false)
xPlayer.triggerEvent('esx:showNotification', _U('stopped_duty'))
end
TriggerClientEvent('esx:setJob', xPlayer.source, xPlayer.job)
end)
+3 -2
View File
@@ -5,13 +5,14 @@ function StartPayCheck()
local xPlayers = ESX.GetExtendedPlayers() local xPlayers = ESX.GetExtendedPlayers()
for _, xPlayer in pairs(xPlayers) do for _, xPlayer in pairs(xPlayers) do
local job = xPlayer.job.grade_name local job = xPlayer.job.grade_name
local onDuty = xPlayer.job.onDuty
local salary = xPlayer.job.grade_salary local salary = xPlayer.job.grade_salary
if salary > 0 then if salary > 0 then
if job == 'unemployed' then -- unemployed if job == 'unemployed' then -- unemployed
xPlayer.addAccountMoney('bank', salary) xPlayer.addAccountMoney('bank', salary)
TriggerClientEvent('esx:showAdvancedNotification', xPlayer.source, _U('bank'), _U('received_paycheck'), _U('received_help', salary), 'CHAR_BANK_MAZE', 9) TriggerClientEvent('esx:showAdvancedNotification', xPlayer.source, _U('bank'), _U('received_paycheck'), _U('received_help', salary), 'CHAR_BANK_MAZE', 9)
elseif Config.EnableSocietyPayouts then -- possibly a society elseif Config.EnableSocietyPayouts and onDuty then -- possibly a society
TriggerEvent('esx_society:getSociety', xPlayer.job.name, function (society) TriggerEvent('esx_society:getSociety', xPlayer.job.name, function (society)
if society ~= nil then -- verified society if society ~= nil then -- verified society
TriggerEvent('esx_addonaccount:getSharedAccount', society.account, function (account) TriggerEvent('esx_addonaccount:getSharedAccount', society.account, function (account)
@@ -29,7 +30,7 @@ function StartPayCheck()
TriggerClientEvent('esx:showAdvancedNotification', xPlayer.source, _U('bank'), _U('received_paycheck'), _U('received_salary', salary), 'CHAR_BANK_MAZE', 9) TriggerClientEvent('esx:showAdvancedNotification', xPlayer.source, _U('bank'), _U('received_paycheck'), _U('received_salary', salary), 'CHAR_BANK_MAZE', 9)
end end
end) end)
else -- generic job elseif onDuty then -- generic job
xPlayer.addAccountMoney('bank', salary) xPlayer.addAccountMoney('bank', salary)
TriggerClientEvent('esx:showAdvancedNotification', xPlayer.source, _U('bank'), _U('received_paycheck'), _U('received_salary', salary), 'CHAR_BANK_MAZE', 9) TriggerClientEvent('esx:showAdvancedNotification', xPlayer.source, _U('bank'), _U('received_paycheck'), _U('received_salary', salary), 'CHAR_BANK_MAZE', 9)
end end