Improved paycheck system, added advanced notifications, see desc

- Improved paycheck system
    - we now take society money if there is any, or else the employees wont get a salary at all
    - now using ESX.ShowAdvancedNotifications
This commit is contained in:
ElPumpo
2018-05-11 13:57:35 +02:00
parent 987a40bf0d
commit 66e7eceddf
14 changed files with 137 additions and 395 deletions
+10 -2
View File
@@ -17,8 +17,16 @@ end, function(source, args, user)
end, {help = "Teleport to coordinates", params = {{name = "x", help = "X coords"}, {name = "y", help = "Y coords"}, {name = "z", help = "Z coords"}}})
TriggerEvent('es:addGroupCommand', 'setjob', 'jobmaster', function(source, args, user)
local xPlayer = ESX.GetPlayerFromId(args[1])
xPlayer.setJob(args[2], tonumber(args[3]))
if tonumber(args[1]) and args[2] and tonumber(args[3]) then
local xPlayer = ESX.GetPlayerFromId(args[1])
if xPlayer ~= nil then
xPlayer.setJob(args[2], args[3])
else
TriggerClientEvent('chatMessage', source, "SYSTEM", {255, 0, 0}, "Player not online.")
end
else
TriggerClientEvent('chatMessage', source, "SYSTEM", {255, 0, 0}, "Invalid usage.")
end
end, function(source, args, user)
TriggerClientEvent('chatMessage', source, "SYSTEM", {255, 0, 0}, "Insufficient Permissions.")
end, {help = _U('setjob'), params = {{name = "id", help = _U('id_param')}, {name = "job", help = _U('setjob_param2')}, {name = "grade_id", help = _U('setjob_param3')}}})
+37 -19
View File
@@ -1,29 +1,47 @@
ESX.StartPayCheck = function()
function payCheck()
function payCheck()
local xPlayers = ESX.GetPlayers()
local xPlayers = ESX.GetPlayers()
for i=1, #xPlayers, 1 do
local xPlayer = ESX.GetPlayerFromId(xPlayers[i])
local job = xPlayer.job.grade_name
local salary = xPlayer.job.grade_salary
for i=1, #xPlayers, 1 do
if salary > 0 then
if job == 'unemployed' then -- unemployed
xPlayer.addAccountMoney('bank', salary)
TriggerClientEvent('esx:showAdvancedNotification', xPlayer.source, _U('bank'), _U('recived_money'), _U('recived_help', salary), 'CHAR_BANK_MAZE', 9)
elseif job == 'employee' then -- generic job, not a society
xPlayer.addAccountMoney('bank', salary)
TriggerClientEvent('esx:showAdvancedNotification', xPlayer.source, _U('bank'), _U('recived_money'), _U('recived_salary', salary), 'CHAR_BANK_MAZE', 9)
else -- 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)
account.removeMoney(salary)
TriggerClientEvent('esx:showAdvancedNotification', xPlayer.source, _U('bank'), _U('recived_money'), _U('recived_salary', salary), 'CHAR_BANK_MAZE', 9)
else
TriggerClientEvent('esx:showAdvancedNotification', xPlayer.source, _U('bank'), '', _U('company_nomoney'), 'CHAR_BANK_MAZE', 1)
end
end)
else -- not a society, use 'employee' as grade name!
xPlayer.addAccountMoney('bank', salary)
TriggerClientEvent('esx:showAdvancedNotification', xPlayer.source, _U('bank'), _U('recived_money'), _U('recived_salary', salary), 'CHAR_BANK_MAZE', 9)
end
end)
end
end
local xPlayer = ESX.GetPlayerFromId(xPlayers[i])
end
if xPlayer.job.grade_salary > 0 then
xPlayer.addMoney(xPlayer.job.grade_salary)
SetTimeout(Config.PaycheckInterval, payCheck)
if xPlayer.job.grade_name == 'interim' then
TriggerClientEvent('esx:showNotification', xPlayer.source, _U('rec_help') .. '~g~$' .. xPlayer.job.grade_salary)
else
TriggerClientEvent('esx:showNotification', xPlayer.source, _U('rec_salary') .. '~g~$' .. xPlayer.job.grade_salary)
end
end
end
end
SetTimeout(Config.PaycheckInterval, payCheck)
end
SetTimeout(Config.PaycheckInterval, payCheck)
SetTimeout(Config.PaycheckInterval, payCheck)
end
-30
View File
@@ -1,30 +0,0 @@
ESX.StartPayCheck = function ()
function payCheck ()
local xPlayers = ESX.GetPlayers()
for i=1, #xPlayers, 1 do
local xPlayer = ESX.GetPlayerFromId(xPlayers[i])
if xPlayer.job.grade_name == 'interim' or xPlayer.job.grade_name == 'rsa' or xPlayer.job.grade_name == 'employee' then -- only if the player is employeed in a company
if xPlayer.job.grade_salary > 0 then
xPlayer.addAccountMoney('bank', xPlayer.job.grade_salary)
TriggerClientEvent('esx:showNotification', xPlayer.source, ('L\'état vous a payé ') .. '~g~$' .. xPlayer.job.grade_salary)
end
else -- Else take money from society
TriggerEvent('esx_society:getSociety', xPlayer.job.name, function (society)
TriggerEvent('esx_addonaccount:getSharedAccount', society.account, function (account)
if account.money >= xPlayer.job.grade_salary then
xPlayer.addAccountMoney('bank',xPlayer.job.grade_salary)
account.removeMoney(xPlayer.job.grade_salary)
TriggerClientEvent('esx:showNotification', xPlayer.source, ('Votre entreprise vous a payé ') .. '~g~$' .. xPlayer.job.grade_salary)
else
TriggerClientEvent('esx:showNotification', xPlayer.source, 'Votre entreprise n\'a plus d\'argent pour vous payer !')
end
end)
end)
end
end
SetTimeout(Config.PaycheckInterval, payCheck)
end
SetTimeout(Config.PaycheckInterval, payCheck)
end