diff --git a/[core]/es_extended/server/modules/paycheck.lua b/[core]/es_extended/server/modules/paycheck.lua index 4bba1948..5a78cc36 100644 --- a/[core]/es_extended/server/modules/paycheck.lua +++ b/[core]/es_extended/server/modules/paycheck.lua @@ -6,61 +6,63 @@ function StartPayCheck() local jobLabel = xPlayer.job.label local job = xPlayer.job.grade_name local salary = xPlayer.job.grade_salary - + local onDuty = xPlayer.job.onDuty + local effectiveSalary = (job == "unemployed" or onDuty) and salary or ESX.Math.Round(salary * Config.OffDutyPaycheckMultiplier) + if xPlayer.paycheckEnabled then - if salary > 0 then + if effectiveSalary > 0 then if job == "unemployed" then -- unemployed - xPlayer.addAccountMoney("bank", salary, "Welfare Check") - TriggerClientEvent("esx:showAdvancedNotification", player, TranslateCap("bank"), TranslateCap("received_paycheck"), TranslateCap("received_help", salary), "CHAR_BANK_MAZE", 9) + xPlayer.addAccountMoney("bank", effectiveSalary, "Welfare Check") + TriggerClientEvent("esx:showAdvancedNotification", player, TranslateCap("bank"), TranslateCap("received_paycheck"), TranslateCap("received_help", effectiveSalary), "CHAR_BANK_MAZE", 9) if Config.LogPaycheck then ESX.DiscordLogFields("Paycheck", "Paycheck - Unemployment Benefits", "green", { { name = "Player", value = xPlayer.name, inline = true }, { name = "ID", value = xPlayer.source, inline = true }, - { name = "Amount", value = salary, inline = true }, + { name = "Amount", value = effectiveSalary, inline = true }, }) end elseif Config.EnableSocietyPayouts then -- possibly a society TriggerEvent("esx_society:getSociety", xPlayer.job.name, function(society) if society ~= nil then -- verified society TriggerEvent("esx_addonaccount:getSharedAccount", society.account, function(account) - if account.money >= salary then -- does the society money to pay its employees? - xPlayer.addAccountMoney("bank", salary, "Paycheck") - account.removeMoney(salary) + if account.money >= effectiveSalary then -- does the society money to pay its employees? + xPlayer.addAccountMoney("bank", effectiveSalary, "Paycheck") + account.removeMoney(effectiveSalary) if Config.LogPaycheck then ESX.DiscordLogFields("Paycheck", "Paycheck - " .. jobLabel, "green", { { name = "Player", value = xPlayer.name, inline = true }, { name = "ID", value = xPlayer.source, inline = true }, - { name = "Amount", value = salary, inline = true }, + { name = "Amount", value = effectiveSalary, inline = true }, }) end - TriggerClientEvent("esx:showAdvancedNotification", player, TranslateCap("bank"), TranslateCap("received_paycheck"), TranslateCap("received_salary", salary), "CHAR_BANK_MAZE", 9) + TriggerClientEvent("esx:showAdvancedNotification", player, TranslateCap("bank"), TranslateCap("received_paycheck"), TranslateCap("received_salary", effectiveSalary), "CHAR_BANK_MAZE", 9) else TriggerClientEvent("esx:showAdvancedNotification", player, TranslateCap("bank"), "", TranslateCap("company_nomoney"), "CHAR_BANK_MAZE", 1) end end) else -- not a society - xPlayer.addAccountMoney("bank", salary, "Paycheck") + xPlayer.addAccountMoney("bank", effectiveSalary, "Paycheck") if Config.LogPaycheck then ESX.DiscordLogFields("Paycheck", "Paycheck - " .. jobLabel, "green", { { name = "Player", value = xPlayer.name, inline = true }, { name = "ID", value = xPlayer.source, inline = true }, - { name = "Amount", value = salary, inline = true }, + { name = "Amount", value = effectiveSalary, inline = true }, }) end - TriggerClientEvent("esx:showAdvancedNotification", player, TranslateCap("bank"), TranslateCap("received_paycheck"), TranslateCap("received_salary", salary), "CHAR_BANK_MAZE", 9) + TriggerClientEvent("esx:showAdvancedNotification", player, TranslateCap("bank"), TranslateCap("received_paycheck"), TranslateCap("received_salary", effectiveSalary), "CHAR_BANK_MAZE", 9) end end) else -- generic job - xPlayer.addAccountMoney("bank", salary, "Paycheck") + xPlayer.addAccountMoney("bank", effectiveSalary, "Paycheck") if Config.LogPaycheck then ESX.DiscordLogFields("Paycheck", "Paycheck - Generic", "green", { { name = "Player", value = xPlayer.name, inline = true }, { name = "ID", value = xPlayer.source, inline = true }, - { name = "Amount", value = salary, inline = true }, + { name = "Amount", value = effectiveSalary, inline = true }, }) end - TriggerClientEvent("esx:showAdvancedNotification", player, TranslateCap("bank"), TranslateCap("received_paycheck"), TranslateCap("received_salary", salary), "CHAR_BANK_MAZE", 9) + TriggerClientEvent("esx:showAdvancedNotification", player, TranslateCap("bank"), TranslateCap("received_paycheck"), TranslateCap("received_salary", effectiveSalary), "CHAR_BANK_MAZE", 9) end end end diff --git a/[core]/es_extended/shared/config/main.lua b/[core]/es_extended/shared/config/main.lua index f769f758..5d37450a 100644 --- a/[core]/es_extended/shared/config/main.lua +++ b/[core]/es_extended/shared/config/main.lua @@ -44,6 +44,7 @@ Config.SaveDeathStatus = true -- Save the death status of a player Config.EnableDebug = false -- Use Debug options? Config.DefaultJobDuty = true -- A players default duty status when changing jobs +Config.OffDutyPaycheckMultiplier = 0.5 -- The multiplier for off duty paychecks. 0.5 = 50% of the on duty paycheck 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)