diff --git a/[core]/es_extended/server/classes/player.lua b/[core]/es_extended/server/classes/player.lua index 56a770a6..7fe1be01 100644 --- a/[core]/es_extended/server/classes/player.lua +++ b/[core]/es_extended/server/classes/player.lua @@ -49,6 +49,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, self.maxWeight = Config.MaxWeight self.metadata = metadata self.lastPlaytime = self.metadata.lastPlaytime or 0 + self.paycheckEnabled = true self.admin = Core.IsPlayerAdmin(playerId) if Config.Multichar then local startIndex = identifier:find(":", 1) @@ -76,6 +77,17 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, TriggerClientEvent(eventName, self.source, ...) end + ---@param toggle boolean + ---@return nil + function self.togglePaycheck(toggle) + self.paycheckEnabled = toggle + end + + ---@return boolean + function self.isPaycheckEnabled() + return self.paycheckEnabled + end + ---@param coordinates vector4 | vector3 | table ---@return nil function self.setCoords(coordinates) diff --git a/[core]/es_extended/server/onesync.lua b/[core]/es_extended/server/onesync.lua index 0aa69dde..1beff597 100644 --- a/[core]/es_extended/server/onesync.lua +++ b/[core]/es_extended/server/onesync.lua @@ -91,7 +91,7 @@ function ESX.OneSync.SpawnVehicle(model, coords, heading, properties, cb) local xPlayer = ESX.OneSync.GetClosestPlayer(coords, 300) ESX.GetVehicleType(vehicleModel, xPlayer.id, function(vehicleType) if vehicleType then - local createdVehicle = CreateVehicleServerSetter(vehicleModel, vehicleType, coords, heading) + local createdVehicle = CreateVehicleServerSetter(vehicleModel, vehicleType, coords.x, coords.y, coords.z, heading) local tries = 0 while not DoesEntityExist(createdVehicle) do Wait(200) @@ -121,7 +121,7 @@ function ESX.OneSync.SpawnObject(model, coords, heading, cb) end local objectCoords = type(coords) == "vector3" and coords or vector3(coords.x, coords.y, coords.z) CreateThread(function() - local entity = CreateObject(model, objectCoords, true, true) + local entity = CreateObject(model, objectCoords.x, objectCoords.y, objectCoords.z, true, true, false) while not DoesEntityExist(entity) do Wait(50) end diff --git a/[core]/es_extended/server/paycheck.lua b/[core]/es_extended/server/paycheck.lua index ef317e5d..f80c7f12 100644 --- a/[core]/es_extended/server/paycheck.lua +++ b/[core]/es_extended/server/paycheck.lua @@ -7,59 +7,61 @@ function StartPayCheck() local job = xPlayer.job.grade_name local salary = xPlayer.job.grade_salary - if salary > 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) - 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 }, - }) - 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 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 }, - }) - end - - TriggerClientEvent("esx:showAdvancedNotification", player, TranslateCap("bank"), TranslateCap("received_paycheck"), TranslateCap("received_salary", salary), "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") - 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 }, - }) - end - TriggerClientEvent("esx:showAdvancedNotification", player, TranslateCap("bank"), TranslateCap("received_paycheck"), TranslateCap("received_salary", salary), "CHAR_BANK_MAZE", 9) + if xPlayer.paycheckEnabled then + if salary > 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) + 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 }, + }) end - end) - else -- generic job - xPlayer.addAccountMoney("bank", salary, "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 }, - }) + 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 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 }, + }) + end + + TriggerClientEvent("esx:showAdvancedNotification", player, TranslateCap("bank"), TranslateCap("received_paycheck"), TranslateCap("received_salary", salary), "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") + 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 }, + }) + end + TriggerClientEvent("esx:showAdvancedNotification", player, TranslateCap("bank"), TranslateCap("received_paycheck"), TranslateCap("received_salary", salary), "CHAR_BANK_MAZE", 9) + end + end) + else -- generic job + xPlayer.addAccountMoney("bank", salary, "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 }, + }) + end + TriggerClientEvent("esx:showAdvancedNotification", player, TranslateCap("bank"), TranslateCap("received_paycheck"), TranslateCap("received_salary", salary), "CHAR_BANK_MAZE", 9) end - TriggerClientEvent("esx:showAdvancedNotification", player, TranslateCap("bank"), TranslateCap("received_paycheck"), TranslateCap("received_salary", salary), "CHAR_BANK_MAZE", 9) end end end