2022-02-19 11:56:21 +00:00
local QBCore = exports [ 'qb-core' ]: GetCoreObject ()
-- This script is a simple replacement for QB-Banking and QB-ATMs
-- It uses QB-Input and server callbacks to retreive info about accounts and cash
-- This requires QB-Target and has the location of every ATM, ATM prop and bank window
2022-04-19 21:26:43 +01:00
local Targets = {}
2022-04-20 13:52:32 +01:00
local Peds = {}
2022-04-19 21:26:43 +01:00
2022-04-20 13:52:32 +01:00
local BankLoc = Config.VanBankLocations
local ATMLoc = Config.VanATMLocations
2022-02-19 11:56:21 +00:00
local function cv ( amount )
local formatted = amount
while true do
formatted , k = string.gsub ( formatted , "^(-?%d+)(%d%d%d)" , '%1,%2' )
if ( k == 0 ) then
break
end
end
return formatted
end
2022-04-20 13:52:32 +01:00
2022-04-24 11:06:12 +01:00
local bossroles = {}
local gangroles = {}
CreateThread ( function ()
2022-04-20 13:52:32 +01:00
if Config.Gabz then BankLoc = Config.GabzBankLocations ATMLoc = Config.GabzATMLocations end
2022-02-19 11:56:21 +00:00
if Config.useATM then
2022-02-20 16:22:41 +00:00
if Config.ATMBlips then
2022-04-20 13:52:32 +01:00
for k , v in pairs ( Config.WallATMLocations ) do
2022-02-19 11:56:21 +00:00
blip = AddBlipForCoord ( v )
SetBlipSprite ( blip , 108 )
SetBlipDisplay ( blip , 4 )
SetBlipScale ( blip , 0.55 )
2022-02-20 16:22:41 +00:00
SetBlipColour ( blip , 3 )
2022-02-19 11:56:21 +00:00
SetBlipAsShortRange ( blip , true )
BeginTextCommandSetBlipName ( "STRING" )
2022-02-20 16:22:41 +00:00
AddTextComponentString ( "ATM" )
2022-02-19 11:56:21 +00:00
EndTextCommandSetBlipName ( blip )
end
2022-04-20 13:52:32 +01:00
for k , v in pairs ( ATMLoc ) do
2022-02-19 11:56:21 +00:00
blip = AddBlipForCoord ( v )
SetBlipSprite ( blip , 108 )
SetBlipDisplay ( blip , 4 )
SetBlipScale ( blip , 0.55 )
2022-04-20 13:52:32 +01:00
SetBlipColour ( blip , 3 )
2022-02-19 11:56:21 +00:00
SetBlipAsShortRange ( blip , true )
BeginTextCommandSetBlipName ( "STRING" )
2022-04-20 13:52:32 +01:00
AddTextComponentString ( "ATM" )
2022-02-19 11:56:21 +00:00
EndTextCommandSetBlipName ( blip )
end
end
end
2022-04-20 13:52:32 +01:00
if Config.useBanks then
if Config.BankBlips then
for k , v in pairs ( BankLoc ) do
for l , b in pairs ( v ) do
blip = AddBlipForCoord ( b )
SetBlipSprite ( blip , 108 )
SetBlipDisplay ( blip , 4 )
SetBlipScale ( blip , 0.55 )
SetBlipColour ( blip , 2 )
SetBlipAsShortRange ( blip , true )
BeginTextCommandSetBlipName ( "STRING" )
AddTextComponentString ( "Bank" )
EndTextCommandSetBlipName ( blip )
break
end
end
end
end
2022-02-20 16:22:41 +00:00
if Config.useATM or Config.useBanks then
2022-03-17 10:57:14 +00:00
for k , v in pairs ( QBCore.Shared . Jobs ) do ---Grabs the list of jobs
2022-04-25 10:04:56 +01:00
if QBCore.Shared . Jobs [ tostring ( k )] then
for l , b in pairs ( QBCore.Shared . Jobs [ tostring ( k )]. grades ) do -- Grabs the list of grades
if QBCore.Shared . Jobs [ tostring ( k )]. grades [ l ]. isboss == true then -- Checks the grade if is boss
if bossroles [ tostring ( k )] ~= nil then -- checks if the line exists
if bossroles [ tostring ( k )] > tonumber ( l ) then bossroles [ tostring ( k )] = tonumber ( l ) end -- the
else bossroles [ tostring ( k )] = tonumber ( l )
end
2022-02-19 11:56:21 +00:00
end
end
end
end
2022-03-17 10:57:14 +00:00
for k , v in pairs ( QBCore.Shared . Gangs ) do
2022-04-25 10:04:56 +01:00
if QBCore.Shared . Gangs [ tostring ( k )] then
for l , b in pairs ( QBCore.Shared . Gangs [ tostring ( k )]. grades ) do
if tostring ( k ) ~= "none" then
if QBCore.Shared . Gangs [ tostring ( k )]. grades [ l ]. isboss == true then
if gangroles [ tostring ( k )] ~= nil then
if gangroles [ tostring ( k )] > tonumber ( l ) then gangroles [ tostring ( k )] = tonumber ( l ) end
else gangroles [ tostring ( k )] = tonumber ( l )
end
2022-02-19 11:56:21 +00:00
end
2022-04-25 10:04:56 +01:00
end
end
2022-02-19 11:56:21 +00:00
end
2022-04-20 13:52:32 +01:00
end
2022-02-20 16:22:41 +00:00
end
2022-02-19 11:56:21 +00:00
if Config.useATM then
exports [ 'qb-target' ]: AddTargetModel ( Config.ATMModels , { options = { { event = "jim-payments:Client:ATM:use" , icon = "fas fa-money-check-alt" , label = "Use ATM" , id = "atm" },}, distance = 1.5 , })
2022-04-20 13:52:32 +01:00
for k , v in pairs ( Config.WallATMLocations ) do
Targets [ "jimwallatm" .. k ] =
exports [ 'qb-target' ]: AddCircleZone ( "jimwallatm" .. k , vector3 ( tonumber ( v.x ), tonumber ( v.y ), tonumber ( v.z ) + 0.2 ), 0.5 , { name = "jimwallatm" .. k , debugPoly = Config.Debug , useZ = true , },
{ options = { { event = "jim-payments:Client:ATM:use" , icon = "fas fa-money-check-alt" , label = "Use ATM" , id = "atm" },
--{ event = "jim-payments:Client:ATM:use", icon = "fas fa-arrow-right-arrow-left", label = "Transfer Money", id = "transfer" },
}, distance = 1.5 })
end
for k , v in pairs ( ATMLoc ) do
2022-04-19 21:26:43 +01:00
Targets [ "jimatm" .. k ] =
exports [ 'qb-target' ]: AddCircleZone ( "jimatm" .. k , vector3 ( tonumber ( v.x ), tonumber ( v.y ), tonumber ( v.z ) + 0.2 ), 0.5 , { name = "jimatm" .. k , debugPoly = Config.Debug , useZ = true , },
2022-02-19 11:56:21 +00:00
{ options = { { event = "jim-payments:Client:ATM:use" , icon = "fas fa-money-check-alt" , label = "Use ATM" , id = "atm" },
2022-04-20 13:52:32 +01:00
--{ event = "jim-payments:Client:ATM:use", icon = "fas fa-arrow-right-arrow-left", label = "Transfer Money", id = "transfer" },
}, distance = 1.5 })
2022-02-19 11:56:21 +00:00
end
end
if Config.useBanks then
2022-04-20 13:52:32 +01:00
for k , v in pairs ( BankLoc ) do
for l , b in pairs ( v ) do
Targets [ "jimbank" .. k .. l ] =
exports [ 'qb-target' ]: AddCircleZone ( "jimbank" .. k .. l , vector3 ( tonumber ( b.x ), tonumber ( b.y ), tonumber ( b.z ) + 0.2 ), 2.0 , { name = "jimbank" .. k .. l , debugPoly = Config.Debug , useZ = true , },
{ options = { { event = "jim-payments:Client:ATM:use" , icon = "fas fa-piggy-bank" , label = "Use Bank" , id = "bank" },
{ event = "jim-payments:Client:ATM:use" , icon = "fas fa-arrow-right-arrow-left" , label = "Transfer Money" , id = "transfer" },
{ event = "jim-payments:Client:ATM:use" , icon = "fas fa-money-check-dollar" , label = "Access Savings" , id = "savings" },
{ event = "jim-payments:Client:ATM:use" , icon = "fas fa-building" , label = "Access Society Account" , id = "society" , job = bossroles },
{ event = "jim-payments:Client:ATM:use" , icon = "fas fa-arrow-right-arrow-left" , label = "Society Money Transfer" , id = "societytransfer" , job = bossroles },
{ event = "jim-payments:Client:ATM:use" , icon = "fas fa-building" , label = "Gang Society Account" , id = "gang" , gang = gangroles },
{ event = "jim-payments:Client:ATM:use" , icon = "fas fa-arrow-right-arrow-left" , label = "Gang Money Transfer" , id = "gangtransfer" , gang = gangroles }, },
distance = 2.5 })
if Config.Peds then
local i = math.random ( 1 , # Config.PedPool )
RequestModel ( Config.PedPool [ i ]) while not HasModelLoaded ( Config.PedPool [ i ]) do Wait ( 0 ) end
2022-05-04 20:44:57 +01:00
if Peds [ "jimbank" .. k .. l ] == nil then Peds [ "jimbank" .. k .. l ] = CreatePed ( 0 , Config.PedPool [ i ], vector3 ( tonumber ( b.x ), tonumber ( b.y ), tonumber ( b.z )), b [ 4 ], false , false ) end
2022-04-20 13:52:32 +01:00
if Config.Debug then print ( "Ped Created - 'jimbank" .. k .. l .. "'" ) end
end
end
2022-02-19 11:56:21 +00:00
end
end
end )
local function PlayATMAnimation ( animation )
if animation == 'enter' then RequestAnimDict ( 'amb@prop_human_atm@male@enter' )
while not HasAnimDictLoaded ( 'amb@prop_human_atm@male@enter' ) do Wait ( 1 ) end
if HasAnimDictLoaded ( 'amb@prop_human_atm@male@enter' ) then TaskPlayAnim ( PlayerPedId (), 'amb@prop_human_atm@male@enter' , "enter" , 1.0 , - 1.0 , 1500 , 1 , 1 , true , true , true ) end
end
if animation == 'exit' then RequestAnimDict ( 'amb@prop_human_atm@male@exit' )
while not HasAnimDictLoaded ( 'amb@prop_human_atm@male@exit' ) do Wait ( 1 ) end
if HasAnimDictLoaded ( 'amb@prop_human_atm@male@exit' ) then TaskPlayAnim ( PlayerPedId (), 'amb@prop_human_atm@male@exit' , "exit" , 1.0 , - 1.0 , 3000 , 1 , 1 , true , true , true ) end
end
end
2022-04-03 20:41:07 +01:00
local function GrabAccount ( type , job )
local p = promise.new ()
QBCore.Functions . TriggerCallback ( 'jim-payments:ManageWrapper' , function ( cb ) p : resolve ( cb ) end , type , job )
return Citizen.Await ( p )
end
2022-02-19 11:56:21 +00:00
RegisterNetEvent ( 'jim-payments:Client:ATM:use' , function ( data )
--this grabs all the info from names to savings account numbers in the databases
2022-05-21 11:23:36 +01:00
local p = promise.new ()
QBCore.Functions . TriggerCallback ( 'jim-payments:ATM:Find' , function ( cb ) p : resolve ( cb ) end ) local info = Citizen.Await ( p )
local society local gsociety local cancelled = false
2022-05-04 20:44:57 +01:00
if Config.Manage then
society = GrabAccount ( "GetAccount" , PlayerJob.name )
Wait ( 200 )
gsociety = GrabAccount ( "GetGangAccount" , PlayerGang.name )
else
local p = promise.new ()
QBCore.Functions . TriggerCallback ( 'qb-bossmenu:server:GetAccount' , function ( cb ) p : resolve ( cb ) end , PlayerJob.name ) society = Citizen.Await ( p )
local p2 = promise.new ()
QBCore.Functions . TriggerCallback ( 'qb-gangmenu:server:GetAccount' , function ( cb ) p2 : resolve ( cb ) end , PlayerGang.name ) gsociety = Citizen.Await ( p2 )
end
2022-02-19 11:56:21 +00:00
local atmbartime = 2500
local setoptions = {}
if data.id == "atm" then
setoptions = { { value = "withdraw" , text = "Withdrawl" }, }
2022-05-21 11:23:36 +01:00
setview = "<center><img src=https://static.wikia.nocookie.net/gtawiki/images/b/bd/Fleeca-GTAV-Logo.png width=200px></center><br>Welcome back, " .. info.name .. "<br><br>- Citizen ID -<br>" .. info.cid .. "<br><br>- Balances -<br>🏦Bank - $" .. cv ( info.bank ) .. "<br>💵Cash - $" .. cv ( info.cash ) .. '<br><br>- Options -'
2022-02-19 11:56:21 +00:00
setheader = "💵 ATM Banking 💵"
setinputs = { { type = 'radio' , name = 'billtype' , text = setview , options = setoptions },
{ type = 'number' , isRequired = true , name = 'amount' , text = '💵 Amount to transfer' }, }
for k , v in pairs ( Config.ATMModels ) do
local playerPed = PlayerPedId ()
local playerCoords = GetEntityCoords ( playerPed , true )
local hash = GetHashKey ( v )
2022-05-21 11:23:36 +01:00
local atm = IsObjectNearPoint ( hash , playerCoords.x , playerCoords.y , playerCoords.z , 1.6 )
2022-02-19 11:56:21 +00:00
if atm then
2022-05-21 11:23:36 +01:00
local obj = GetClosestObjectOfType ( playerCoords.x , playerCoords.y , playerCoords.z , 1.6 , v , false , false , false )
2022-02-19 11:56:21 +00:00
local atmCoords = GetEntityCoords ( obj , false )
TaskTurnPedToFaceEntity ( playerPed , obj , 1000 )
Wait ( 1000 )
PlayATMAnimation ( 'enter' )
QBCore.Functions . Progressbar ( "accessing_atm" , "Accessing ATM" , atmbartime , false , true , { disableMovement = false , disableCarMovement = false , disableMouse = false , disableCombat = false , }, {}, {}, {}, function () -- Done
end , function ()
TriggerEvent ( "QBCore:Notify" , "Cancelled!" , "error" )
2022-05-21 11:23:36 +01:00
cancelled = true
end , data.icon )
2022-02-19 11:56:21 +00:00
end
end
elseif data.id == "bank" then
setoptions = { { value = "withdraw" , text = "Withdrawl" }, { value = "deposit" , text = "Deposit" } }
2022-05-21 11:23:36 +01:00
setview = "Welcome back, " .. info.name .. "<br><br>- Account -<br>" .. info.account .. "<br>" .. info.cid .. "<br><br>- Balances -<br>🏦Bank - $" .. cv ( info.bank ) .. "<br>💵Cash - $" .. cv ( info.cash ) .. "<br><br>- Options -"
2022-02-19 11:56:21 +00:00
setheader = "🏦 Banking 🏦"
setinputs = { { type = 'radio' , name = 'billtype' , text = setview , options = setoptions },
{ type = 'number' , isRequired = true , name = 'amount' , text = '💵 Amount to transfer' }, }
PlayATMAnimation ( 'enter' )
QBCore.Functions . Progressbar ( "accessing_atm" , "Accessing Bank" , atmbartime , false , true , { disableMovement = false , disableCarMovement = false , disableMouse = false , disableCombat = false , }, {}, {}, {}, function () -- Done
end , function ()
TriggerEvent ( "QBCore:Notify" , "Cancelled!" , "error" )
2022-05-21 11:23:36 +01:00
cancelled = true
end , data.icon )
2022-02-19 11:56:21 +00:00
elseif data.id == "transfer" then
setoptions = { { value = "transfer" , text = "Transfer" } }
2022-05-21 11:23:36 +01:00
setview = "Welcome back, " .. info.name .. "<br><br>- Account -<br>" .. info.account .. "<br>" .. info.cid .. "<br><br>- Balances -<br>🏦Bank - $" .. cv ( info.bank ) .. "<br><br>- Options -"
2022-02-19 11:56:21 +00:00
setheader = "🔀 Transfer Services 🔀"
setinputs = { { type = 'radio' , name = 'billtype' , text = setview , options = setoptions },
{ type = 'text' , isRequired = true , name = 'account' , text = '🏦 Account no.' },
{ type = 'number' , isRequired = true , name = 'amount' , text = '💸 Amount to transfer' }, }
PlayATMAnimation ( 'enter' )
QBCore.Functions . Progressbar ( "accessing_atm" , "Accessing Transfers" , atmbartime , false , true , { disableMovement = false , disableCarMovement = false , disableMouse = false , disableCombat = false , }, {}, {}, {}, function () -- Done
end , function ()
TriggerEvent ( "QBCore:Notify" , "Cancelled!" , "error" )
2022-05-21 11:23:36 +01:00
cancelled = true
end , data.icon )
2022-02-19 11:56:21 +00:00
elseif data.id == "savings" then
setoptions = { { value = "withdraw" , text = "Withdrawl" }, { value = "deposit" , text = "Deposit" } }
2022-05-21 11:23:36 +01:00
setview = "Welcome back, " .. info.name .. "<br><br>- Account Info -<br>Savings ID: " .. info.aid .. "<br>" .. info.cid .. "<br><br>- Balances -<br>💰Savings - $" .. cv ( info.savbal ) .. "<br>🏦Bank - $" .. cv ( info.bank ) .. "<br><br>- Options -"
2022-02-19 11:56:21 +00:00
setheader = "💰 Savings 💰"
setinputs = { { type = 'radio' , name = 'billtype' , text = setview , options = setoptions },
{ type = 'number' , isRequired = true , name = 'amount' , text = '💵 Amount to transfer' }, }
PlayATMAnimation ( 'enter' )
QBCore.Functions . Progressbar ( "accessing_atm" , "Accessing Savings" , atmbartime , false , true , { disableMovement = false , disableCarMovement = false , disableMouse = false , disableCombat = false , }, {}, {}, {}, function () -- Done
end , function ()
TriggerEvent ( "QBCore:Notify" , "Cancelled!" , "error" )
2022-05-21 11:23:36 +01:00
cancelled = true
end , data.icon )
2022-02-19 11:56:21 +00:00
elseif data.id == "society" then
setoptions = { { value = "withdraw" , text = "Withdrawl" }, { value = "deposit" , text = "Deposit" } }
2022-05-21 11:23:36 +01:00
setview = "Welcome back, " .. info.name .. "<br><br>- Society Account -<br>" .. PlayerJob.label .. "<br><br>- Balances -<br>🏢" .. PlayerJob.label .. " - $" .. cv ( society ) .. "<br>🏦Bank - $" .. cv ( info.bank ) .. "<br><br>- Options -"
2022-02-19 11:56:21 +00:00
setheader = "🏢 Society Banking 🏢"
setinputs = { { type = 'radio' , name = 'billtype' , text = setview , options = setoptions },
{ type = 'number' , isRequired = true , name = 'amount' , text = '💵 Amount to transfer' }, }
PlayATMAnimation ( 'enter' )
QBCore.Functions . Progressbar ( "accessing_atm" , "Accessing Society Account" , atmbartime , false , true , { disableMovement = false , disableCarMovement = false , disableMouse = false , disableCombat = false , }, {}, {}, {}, function () -- Done
end , function ()
TriggerEvent ( "QBCore:Notify" , "Cancelled!" , "error" )
2022-05-21 11:23:36 +01:00
cancelled = true
end , data.icon )
2022-02-19 11:56:21 +00:00
elseif data.id == "societytransfer" then
setoptions = { { value = "transfer" , text = "Transfer" } }
2022-05-21 11:23:36 +01:00
setview = "Welcome back, " .. info.name .. "<br><br>- Society Account -<br>" .. PlayerJob.label .. "<br><br>- Balances -<br>🏢" .. PlayerJob.label .. " - $" .. cv ( society ) .. "<br><br>- Options -"
2022-02-19 11:56:21 +00:00
setheader = "🔀 Transfer Services 🔀"
setinputs = { { type = 'radio' , name = 'billtype' , text = setview , options = setoptions },
{ type = 'text' , isRequired = true , name = 'account' , text = '🏦 Account no.' },
{ type = 'number' , isRequired = true , name = 'amount' , text = '💸 Amount to transfer' }, }
PlayATMAnimation ( 'enter' )
QBCore.Functions . Progressbar ( "accessing_atm" , "Accessing Transfers" , atmbartime , false , true , { disableMovement = false , disableCarMovement = false , disableMouse = false , disableCombat = false , }, {}, {}, {}, function () -- Done
end , function ()
TriggerEvent ( "QBCore:Notify" , "Cancelled!" , "error" )
2022-05-21 11:23:36 +01:00
cancelled = true
end , data.icon )
2022-02-19 11:56:21 +00:00
elseif data.id == "gang" then
setheader = "🏢 Society Banking 🏢"
2022-05-21 11:23:36 +01:00
setview = "Welcome back, " .. info.name .. "<br><br>- Society Account -<br>" .. PlayerGang.label .. "<br><br>- Balances -<br>🏢" .. PlayerGang.label .. " - $" .. cv ( gsociety ) .. "<br>🏦Bank - $" .. cv ( info.bank ) .. "<br><br>- Options -"
2022-02-19 11:56:21 +00:00
setoptions = { { value = "withdraw" , text = "Withdrawl" }, { value = "deposit" , text = "Deposit" } }
setinputs = { { type = 'radio' , name = 'billtype' , text = setview , options = setoptions },
{ type = 'number' , isRequired = true , name = 'amount' , text = '💵 Amount to transfer' }, }
PlayATMAnimation ( 'enter' )
QBCore.Functions . Progressbar ( "accessing_atm" , "Accessing Society Account" , atmbartime , false , true , { disableMovement = false , disableCarMovement = false , disableMouse = false , disableCombat = false , }, {}, {}, {}, function () -- Done
end , function ()
TriggerEvent ( "QBCore:Notify" , "Cancelled!" , "error" )
2022-05-21 11:23:36 +01:00
cancelled = true
end , data.icon )
2022-02-19 11:56:21 +00:00
elseif data.id == "gangtransfer" then
setoptions = { { value = "transfer" , text = "Transfer" } }
2022-05-21 11:23:36 +01:00
setview = "Welcome back, " .. info.name .. "<br><br>- Society Account -<br>" .. PlayerGang.label .. "<br><br>- Balances -<br>🏢" .. PlayerGang.label .. " - $" .. cv ( gsociety ) .. "<br><br>- Options -"
2022-02-19 11:56:21 +00:00
setheader = "🔀 Transfer Services 🔀"
setinputs = { { type = 'radio' , name = 'billtype' , text = setview , options = setoptions },
{ type = 'text' , isRequired = true , name = 'account' , text = '🏦 Account no.' },
{ type = 'number' , isRequired = true , name = 'amount' , text = '💸 Amount to transfer' }, }
PlayATMAnimation ( 'enter' )
QBCore.Functions . Progressbar ( "accessing_atm" , "Accessing Transfers" , atmbartime , false , true , { disableMovement = false , disableCarMovement = false , disableMouse = false , disableCombat = false , }, {}, {}, {}, function () -- Done
2022-05-21 11:23:36 +01:00
2022-02-19 11:56:21 +00:00
end , function ()
TriggerEvent ( "QBCore:Notify" , "Cancelled!" , "error" )
2022-05-21 11:23:36 +01:00
cancelled = true
end , data.icon )
2022-02-19 11:56:21 +00:00
end
Wait ( atmbartime + 500 )
2022-05-21 11:23:36 +01:00
if not cancelled then
local dialog = exports [ 'qb-input' ]: ShowInput ({ header = setheader , txt = "test" , submitText = "Transfer" , inputs = setinputs })
if dialog then
if not dialog.amount then return end
PlayATMAnimation ( 'exit' ) Citizen.Wait ( 1000 )
TriggerServerEvent ( 'jim-payments:server:ATM:use' , dialog.amount , dialog.billtype , dialog.account , data.id , society , gsociety )
end
2022-02-19 11:56:21 +00:00
end
end )
RegisterNetEvent ( 'jim-payments:client:ATM:give' , function ()
local onlineList = {}
local nearbyList = {}
QBCore.Functions . TriggerCallback ( 'jim-payments:MakePlayerList' , function ( cb ) onlineList = cb if onlineList [ 1 ] == nil then Wait ( 200 ) end
for k , v in pairs ( QBCore.Functions . GetPlayersFromCoords ( GetEntityCoords ( PlayerPedId ()), Config.PaymentRadius )) do
local dist = # ( GetEntityCoords ( GetPlayerPed ( v )) - GetEntityCoords ( PlayerPedId ()))
for i = 1 , # onlineList do
if onlineList [ i ]. value == GetPlayerServerId ( v ) then
if v ~= PlayerId () then
nearbyList [ # nearbyList + 1 ] = { value = onlineList [ i ]. value , text = onlineList [ i ]. text .. ' (' .. math.floor ( dist + 0.05 ) .. 'm)' }
end
end
end
dist = nil
end
if nearbyList [ # nearbyList ] == nil then TriggerEvent ( "QBCore:Notify" , "No one near by to charge" , "error" ) return end
local dialog = exports [ 'qb-input' ]: ShowInput ({ header = "Give someone cash" , submitText = "Give" ,
inputs = {
{ text = " " , name = "citizen" , type = "select" , options = nearbyList },
{ type = 'number' , isRequired = true , name = 'price' , text = '💵 Amount to Pay' }, }
})
if dialog then
if not dialog.citizen or not dialog.price then return end
TriggerServerEvent ( 'jim-payments:server:ATM:give' , dialog.citizen , dialog.price )
end
end )
2022-04-19 21:26:43 +01:00
end )
AddEventHandler ( 'onResourceStop' , function ( resource )
if resource == GetCurrentResourceName () then
2022-04-20 13:52:32 +01:00
for k , v in pairs ( Targets ) do exports [ 'qb-target' ]: RemoveZone ( k ) end
for k , v in pairs ( Peds ) do DeletePed ( Peds [ k ]) end
2022-04-19 21:26:43 +01:00
end
2022-05-04 20:44:57 +01:00
end )