Files

372 lines
16 KiB
Lua
Raw Permalink Normal View History

2024-01-27 21:57:05 +00:00
Peds = {}
RegisterNetEvent('QBCore:Client:SetDuty', function(duty) onDuty = duty end)
if Config.Banks.enable then
2025-04-13 13:14:20 +01:00
onPlayerLoaded(function()
for k, v in pairs(BankLocations) do
for i = 1, #v do
local name = getScript()..":BankLocation:"..k..i
if Config.General.Peds then
if not Config.Gabz then CreateModelHide(v[i].xyz, 1.0, `v_corp_bk_chair3`, true) end
if not Peds[name] then
Peds[name] = makePed(Config.General.PedPool[math.random(1, #Config.General.PedPool)], v[i], false, false)
if isStarted("jim-talktonpc") then
exports["jim-talktonpc"]:createDistanceMessage("hi", Peds[name], 3.0, false)
end
2024-01-27 21:57:05 +00:00
end
end
2025-04-13 13:14:20 +01:00
local jobroles = {} local gangroles = {}
for k, v in pairs(Config.Receipts.Jobs) do
if v.gang then
gangroles[k] = 0
else
jobroles[k] = 0
end
end
local options = {
{ action = function()
2025-04-13 13:14:20 +01:00
if Config.General.Peds and isStarted("jim-talktonpc") then
exports["jim-talktonpc"]:createCam(Peds[name], true, "generic", true)
end
TriggerEvent(getScript()..":Client:Bank", { ped = Config.General.Peds and Peds[name] })
end,
icon = "fas fa-piggy-bank", label = locale("target", "bank")
},
}
if Config.Receipts.CashInAnywhere then
options[#options+1] =
2025-04-13 13:14:20 +01:00
{ action = function() TriggerEvent(getScript()..":Tickets:Menu", { gang = false }) end,
icon = "fas fa-receipt", label = locale("target", "cashin_boss"), job = jobroles,
}
options[#options+1] =
2025-04-13 13:14:20 +01:00
{ action = function() TriggerEvent(getScript()..":Tickets:Menu", { gang = true }) end,
icon = "fas fa-receipt", label = locale("target", "cashin_gang"), gang = gangroles,
}
end
createCircleTarget(
{ name, vec3(v[i].x, v[i].y, v[i].z+0.2), 2.0, { name = name, debugPoly = debugMode, useZ = true, }, }, options, 2.5)
2025-04-13 13:14:20 +01:00
if Config.Banks.showBlips then
makeBlip({coords = v[i], sprite = 814, col = 2, scale = 0.7, disp = 6, name = locale("blip", "blip_bank") })
2025-02-21 13:54:49 +00:00
end
2024-01-27 21:57:05 +00:00
end
end
2025-04-13 13:14:20 +01:00
end, true)
2024-01-27 21:57:05 +00:00
end
2025-02-21 13:54:49 +00:00
RegisterNetEvent(getScript()..":Client:Bank", function(data) local setheader = nil
2024-01-27 21:57:05 +00:00
--this grabs all the info from names to savings account numbers in the databases
2025-02-21 13:54:49 +00:00
local bankinfo = triggerCallback(getScript()..":GetInfo")
local info = getPlayer()
info.ped = data.ped or nil
2024-01-27 21:57:05 +00:00
playAnim("amb@prop_human_atm@male@enter", "enter", 2000, 1)
2025-02-21 13:54:49 +00:00
if progressBar({ label = locale("menu", "acc_bank"), time = 3000 }) then
2024-01-27 21:57:05 +00:00
local Menu = {}
Menu[#Menu+1] = {
isMenuHeader = true,
2025-02-21 13:54:49 +00:00
header = locale("menu", "welcome")..info.name,
txt = locale("menu", "header_acc").." "..info.account..br..locale("menu", "citizenid").." "..info.citizenId,
2024-01-27 21:57:05 +00:00
}
Menu[#Menu+1] = {
isMenuHeader = true,
2025-02-21 13:54:49 +00:00
header = locale("menu", "header_acc")..locale("menu", "header_balance"),
txt = locale("menu", "bank_balance")..cv(info.bank)..br..locale("menu", "cash_balance")..cv(info.cash)
2024-01-27 21:57:05 +00:00
}
Menu[#Menu+1] = {
2025-02-21 13:54:49 +00:00
header = locale("menu", "deposit").."/"..locale("menu", "withdraw"),
2024-01-27 21:57:05 +00:00
icon = "fas fa-piggy-bank",
2025-02-21 13:54:49 +00:00
onSelect = function()
info.id = "bank"
bankTransaction(info, bankinfo)
end,
2024-01-27 21:57:05 +00:00
}
if isStarted(QBExport) and not isStarted(QBXExport) then -- only supports qbcore account transfers
2025-02-21 13:54:49 +00:00
Menu[#Menu+1] = {
header = locale("target", "transfer"),
icon = "fas fa-arrow-right-arrow-left",
onSelect = function()
info.id = "transfer"
bankTransaction(info, bankinfo)
end,
}
Menu[#Menu+1] = {
header = locale("target", "saving"),
icon = "fas fa-money-check-dollar",
onSelect = function()
info.id = "savings"
bankTransaction(info, bankinfo)
end,
}
2025-02-21 13:54:49 +00:00
end
if info.jobBoss then
2024-01-27 21:57:05 +00:00
Menu[#Menu+1] = {
2025-02-21 13:54:49 +00:00
header = locale("target", "soc_saving"),
txt = Jobs[info.job].label..br.." 🏦 $"..bankinfo.society or "Error",
2024-01-27 21:57:05 +00:00
icon = "fas fa-building",
2025-02-21 13:54:49 +00:00
onSelect = function()
info.id = "society"
bankTransaction(info, bankinfo)
end,
2024-01-27 21:57:05 +00:00
}
if isStarted(QBExport) and not isStarted(QBXExport) then -- only supports qbcore account transfers
2025-02-21 13:54:49 +00:00
Menu[#Menu+1] = {
header = locale("target", "soc_trans"),
txt = Jobs[info.job].label or "Error",
icon = "fas fa-arrow-right-arrow-left",
onSelect = function()
info.id = "societytransfer"
bankTransaction(info, bankinfo)
end,
}
end
2024-01-27 21:57:05 +00:00
end
2025-02-21 13:54:49 +00:00
if info.gangBoss then
2024-01-27 21:57:05 +00:00
Menu[#Menu+1] = {
2025-02-21 13:54:49 +00:00
header = locale("target", "gang_acct"),
txt = Gangs[info.gang].label or "Error",
2024-01-27 21:57:05 +00:00
icon = "fas fa-building",
2025-02-21 13:54:49 +00:00
onSelect = function()
info.id = "gang"
bankTransaction(info, bankinfo)
end,
2024-01-27 21:57:05 +00:00
}
2025-02-21 13:54:49 +00:00
if isStarted(QBExport) then
Menu[#Menu+1] = {
header = locale("target", "gang_trans"),
txt = Gangs[info.gang].label or "Error",
icon = "fas fa-arrow-right-arrow-left",
onSelect = function()
info.id = "gangtransfer"
bankTransaction(info, bankinfo)
end,
}
end
2024-01-27 21:57:05 +00:00
end
2025-02-21 13:54:49 +00:00
local header = locale("menu", "header_atm")
2024-01-27 21:57:05 +00:00
if Config.System.Menu == "qb" then header = "<center><img src="..Config.General.menuLogo.." width=200px></center>"
elseif Config.System.Menu == "ox" then header = '!['..''.. ']('..Config.General.menuLogo..')'
end
openMenu(Menu, { header = header, canClose = true, onExit = function()
2025-02-21 13:54:49 +00:00
if Config.General.Peds and isStarted("jim-talktonpc") then
2024-01-27 21:57:05 +00:00
exports["jim-talktonpc"]:stopCam()
end
playAnim("amb@prop_human_atm@male@exit", "exit", 3000, 1)
end, })
else
2025-02-21 13:54:49 +00:00
triggerNotify(nil, locale("error", "cancel"), "error")
2024-01-27 21:57:05 +00:00
end
end)
2025-02-21 13:54:49 +00:00
function bankTransaction(info, bankinfo)
local setimage = locale("menu", "header_atm")
2024-01-27 21:57:05 +00:00
if Config.System.Menu == "qb" then setimage = "<center><img src="..Config.General.menuLogo.." width=200px></center>"
elseif Config.System.Menu == "ox" then setimage = '!['..''.. ']('..Config.General.menuLogo..')'
end
playAnim("amb@prop_human_atm@male@idle_a", "idle_a", nil, 1)
2025-02-21 13:54:49 +00:00
if isStarted("jim-talktonpc") then exports["jim-talktonpc"]:injectEmotion("thanks", info.ped) end
2024-01-27 21:57:05 +00:00
local setinputs, setheader = {}, ""
if info.id == "bank" then
2025-02-21 13:54:49 +00:00
setheader = locale("menu", "header_bank")
2024-01-27 21:57:05 +00:00
setinputs = {
2025-02-21 13:54:49 +00:00
{ type = 'radio',
2024-01-27 21:57:05 +00:00
name = 'billtype',
2025-02-21 13:54:49 +00:00
text = Config.System.Menu == "ox" and locale("menu", "bank_balance")..cv(info.bank)..locale("menu", "cash_balance")..cv(info.cash)
2024-01-27 21:57:05 +00:00
or
setimage..
2025-02-21 13:54:49 +00:00
locale("menu", "header_balance")..br..
locale("menu", "bank_balance")..cv(info.bank)..br..
locale("menu", "cash_balance")..cv(info.cash)..br..br..
locale("menu", "header_option"),
2024-01-27 21:57:05 +00:00
options = {
2025-02-21 13:54:49 +00:00
{ value = "withdraw", text = locale("menu", "withdraw") },
{ value = "deposit", text = locale("menu", "deposit") }
2024-01-27 21:57:05 +00:00
},
},
2025-02-21 13:54:49 +00:00
{ type = 'number',
2024-01-27 21:57:05 +00:00
isRequired = true,
name = 'amount',
2025-02-21 13:54:49 +00:00
text = locale("menu", "header_trans_amount")
2024-01-27 21:57:05 +00:00
},
}
elseif info.id == "transfer" then
2025-02-21 13:54:49 +00:00
setheader = locale("menu", "header_trans")
2024-01-27 21:57:05 +00:00
setinputs = {
{ type = 'radio',
name = 'billtype',
2025-02-21 13:54:49 +00:00
text = Config.System.Menu == "ox" and locale("menu", "bank_balance")..cv(info.bank)
2024-01-27 21:57:05 +00:00
or
setimage..
2025-02-21 13:54:49 +00:00
locale("menu", "header_balance")..br..
locale("menu", "bank_balance")..cv(info.bank)..br..
locale("menu", "header_option"),
2024-01-27 21:57:05 +00:00
options = {
2025-02-21 13:54:49 +00:00
{ value = "transfer", text = locale("menu", "transfer") }
2024-01-27 21:57:05 +00:00
},
},
{ type = 'text',
isRequired = true,
name = 'account',
2025-02-21 13:54:49 +00:00
text = locale("menu", "header_account_no")
2024-01-27 21:57:05 +00:00
},
{ type = 'number',
isRequired = true,
name = 'amount',
2025-02-21 13:54:49 +00:00
text = locale("menu", "header_trans_amount"),
2024-01-27 21:57:05 +00:00
min = 0,
max = info.bank,
},
}
elseif info.id == "savings" then
2025-02-21 13:54:49 +00:00
setheader = locale("menu", "header_saving")
2024-01-27 21:57:05 +00:00
setinputs = {
{ type = 'radio',
name = 'billtype',
2025-02-21 13:54:49 +00:00
text = Config.System.Menu == "ox" and locale("menu", "saving_balance")..cv(bankinfo.savbal)..locale("menu", "bank_balance")..cv(info.bank)
2024-01-27 21:57:05 +00:00
or
setimage..
2025-02-21 13:54:49 +00:00
locale("menu", "header_balance")..br..
locale("menu", "saving_balance")..cv(bankinfo.savbal)..br..
locale("menu", "bank_balance")..cv(info.bank)..br..br..
locale("menu", "header_option"),
2024-01-27 21:57:05 +00:00
options = {
2025-02-21 13:54:49 +00:00
{ value = "withdraw", text = locale("menu", "withdraw") },
{ value = "deposit", text = locale("menu", "deposit") }
2024-01-27 21:57:05 +00:00
}
},
{ type = 'number',
isRequired = true,
name = 'amount',
2025-02-21 13:54:49 +00:00
text = locale("menu", "header_trans_amount")
2024-01-27 21:57:05 +00:00
},
}
elseif info.id == "society" then
2025-02-21 13:54:49 +00:00
setheader = Jobs[info.job].label.." - "..locale("menu", "header_soc_bank")
2024-01-27 21:57:05 +00:00
setinputs = {
{ type = 'radio',
name = 'billtype',
2025-02-21 13:54:49 +00:00
text = Config.System.Menu == "ox" and Jobs[info.job].label.." - $"..cv(bankinfo.society)..locale("menu", "bank_balance")..cv(info.bank)
2024-01-27 21:57:05 +00:00
or
setimage..
2025-02-21 13:54:49 +00:00
locale("menu", "header_balance")..br..
Jobs[info.job].label.." - $"..cv(bankinfo.society)..br..
locale("menu", "bank_balance")..cv(info.bank)..br..br..
locale("menu", "header_option"),
2024-01-27 21:57:05 +00:00
options = {
2025-02-21 13:54:49 +00:00
{ value = "withdraw", text = locale("menu", "withdraw") },
{ value = "deposit", text = locale("menu", "deposit") }
2024-01-27 21:57:05 +00:00
}
},
{ type = 'number',
isRequired = true,
name = 'amount',
2025-02-21 13:54:49 +00:00
text = locale("menu", "header_trans_amount")
2024-01-27 21:57:05 +00:00
},
}
elseif info.id == "societytransfer" then
2025-02-21 13:54:49 +00:00
setheader =Jobs[info.job].label.." - "..locale("menu", "header_trans")
2024-01-27 21:57:05 +00:00
setinputs = {
{ type = 'radio',
name = 'billtype',
2025-02-21 13:54:49 +00:00
text = Config.System.Menu == "ox" and Jobs[info.job].label.." - $"..cv(bankinfo.society)..locale("menu", "bank_balance")..cv(info.bank)
2024-01-27 21:57:05 +00:00
or
setimage..
2025-02-21 13:54:49 +00:00
locale("menu", "header_balance")..br..
Jobs[info.job].label.." - $"..cv(bankinfo.society)..br..
locale("menu", "bank_balance")..cv(info.bank)..br..br..
locale("menu", "header_option"),
options = { { value = "transfer", text = locale("menu", "transfer") } }
2024-01-27 21:57:05 +00:00
},
{ type = 'text',
isRequired = true,
name = 'account',
2025-02-21 13:54:49 +00:00
text = locale("menu", "header_account_no")
2024-01-27 21:57:05 +00:00
},
{ type = 'number',
isRequired = true,
name = 'amount',
2025-02-21 13:54:49 +00:00
text = locale("menu", "header_trans_amount")
2024-01-27 21:57:05 +00:00
},
}
elseif info.id == "gang" then
2025-02-21 13:54:49 +00:00
setheader = Gangs[info.gang].label.." - "..locale("menu", "header_soc_bank")
2024-01-27 21:57:05 +00:00
setinputs = {
{ type = 'radio',
name = 'billtype',
2025-02-21 13:54:49 +00:00
text = Config.System.Menu == "ox" and Gangs[info.gang].label.." - $"..cv(bankinfo.gsociety)..locale("menu", "bank_balance")..cv(info.bank)
2024-01-27 21:57:05 +00:00
or
setimage..
2025-02-21 13:54:49 +00:00
locale("menu", "header_balance")..br..
Gangs[info.gang].label.." - $"..cv(bankinfo.gsociety)..br..
locale("menu", "bank_balance")..cv(info.bank)..br..br..
locale("menu", "header_option"),
2024-01-27 21:57:05 +00:00
options = {
2025-02-21 13:54:49 +00:00
{ value = "withdraw", text = locale("menu", "withdraw") },
{ value = "deposit", text = locale("menu", "deposit") }
2024-01-27 21:57:05 +00:00
}
},
{ type = 'number',
isRequired = true,
name = 'amount',
2025-02-21 13:54:49 +00:00
text = locale("menu", "header_trans_amount")
2024-01-27 21:57:05 +00:00
},
}
elseif info.id == "gangtransfer" then
2025-02-21 13:54:49 +00:00
setheader = Gangs[info.gang].label.." - "..locale("menu", "header_soc_bank")
2024-01-27 21:57:05 +00:00
setinputs = {
{ type = 'radio',
name = 'billtype',
2025-02-21 13:54:49 +00:00
text = Config.System.Menu == "ox" and Gangs[info.gang].label.." - $"..cv(bankinfo.gsociety)..locale("menu", "bank_balance")..cv(info.bank)
2024-01-27 21:57:05 +00:00
or
setimage..
2025-02-21 13:54:49 +00:00
locale("menu", "header_balance")..br..
Gangs[info.gang].label.." - $"..cv(bankinfo.gsociety)..br..
locale("menu", "bank_balance")..cv(info.bank)..br..br..
locale("menu", "header_option"),
2024-01-27 21:57:05 +00:00
options = {
2025-02-21 13:54:49 +00:00
{ value = "transfer", text = locale("menu", "transfer") }
2024-01-27 21:57:05 +00:00
}
},
{ type = 'text',
isRequired = true,
name = 'account',
2025-02-21 13:54:49 +00:00
text = locale("menu", "header_account_no")
2024-01-27 21:57:05 +00:00
},
{ type = 'number',
isRequired = true,
name = 'amount',
2025-02-21 13:54:49 +00:00
text = locale("menu", "header_trans_amount")
2024-01-27 21:57:05 +00:00
},
}
end
local dialog = createInput(setheader, setinputs)
if dialog then
if dialog[1] then
dialog.billtype = dialog[1]
dialog.amount = dialog[2] or 1
end
if not dialog.amount then
2025-02-21 13:54:49 +00:00
TriggerEvent(getScript()..":Client:Bank", { ped = info.ped })
2024-01-27 21:57:05 +00:00
return
end
2025-02-21 13:54:49 +00:00
if Config.General.Peds and isStarted("jim-talktonpc") then
2024-01-27 21:57:05 +00:00
exports["jim-talktonpc"]:stopCam()
end
playAnim("amb@prop_human_atm@male@exit", "exit", 3000, 1)
Wait(1000)
2025-02-21 13:54:49 +00:00
TriggerServerEvent(getScript()..":server:ATM:use", dialog.amount, dialog.billtype, dialog.account, info.id, bankinfo.society, bankinfo.gsociety)
2024-01-27 21:57:05 +00:00
end
end