8 Commits

Author SHA1 Message Date
jimathy
abe360bc6b Ped Support and better Gabz Support in config 2022-04-20 13:52:32 +01:00
jimathy
3c3fe054e0 Merge pull request #5 from jimathy/jimathy-patch-2
Debug mode + Custom Ticket Cashin + Gabz Locations
2022-04-19 21:32:35 +01:00
jimathy
4da8c039e7 Disable debug mode 2022-04-19 21:32:12 +01:00
jimathy
a9f7ac5663 Default setting to vanilla location 2022-04-19 21:30:08 +01:00
jimathy
712096887b Debug mode + Custom Ticket Cashin + Gabz Locations 2022-04-19 21:26:43 +01:00
jimathy
892acf1283 Add toggles for bossmenu/management + nearbylist 2022-04-15 18:25:27 +01:00
jimathy
13d83a066a Fix job label on payment popup 2022-04-12 21:10:48 +01:00
jimathy
88765357b3 Fix job label on payment popup 2022-04-12 21:09:44 +01:00
6 changed files with 289 additions and 141 deletions

180
atms.lua
View File

@@ -4,88 +4,11 @@ local QBCore = exports['qb-core']:GetCoreObject()
-- 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
Config.ATMModels = {"prop_atm_01", "prop_atm_02", "prop_atm_03", "prop_fleeca_atm" }
local Targets = {}
local Peds = {}
Config.ATMLocations = {
--PACIFIC BANK 10 ATMS
vector3(265.9, 213.86, 106.28),
vector3(265.56, 212.98, 106.28),
vector3(265.19, 211.91, 106.28),
vector3(264.86, 211.03, 106.28),
vector3(264.52, 210.06, 106.28),
vector3(236.64, 219.72, 106.29),
vector3(237.04, 218.72, 106.29),
vector3(237.5, 217.87, 106.29),
vector3(237.93, 216.94, 106.29),
vector3(238.36, 216.03, 106.29),
--WALL ATMS
vector3(-386.54, 6046.29, 31.5),
vector3(-282.82, 6226.24, 31.49),
vector3(-132.74, 6366.79, 31.48),
vector3(-95.76, 6457.41, 31.46),
vector3(-97.52, 6455.65, 31.47),
vector3(155.95, 6642.99, 31.6),
vector3(173.92, 6638.16, 31.57),
vector3(2558.65, 350.92, 108.62),
vector3(1077.78, -776.64, 58.35),
vector3(1138.14, -468.88, 66.73),
vector3(1166.93, -455.96, 66.81),
vector3(285.37, 143.07, 104.17),
vector3(-165.43, 234.81, 94.92),
vector3(-165.4, 232.73, 94.92),
vector3(-1410.41, -98.76, 52.43),
vector3(-1409.85, -100.51, 52.38),
vector3(-1206.0, -324.94, 37.86),
vector3(-1205.23, -326.55, 37.86),
vector3(-2072.28, -317.27, 13.32),
vector3(-2974.7, 380.15, 15.0),
vector3(-2959.01, 487.45, 15.46),
vector3(-2956.87, 487.36, 15.46),
vector3(-3043.98, 594.32, 7.74),
vector3(-3241.35, 997.74, 12.55),
vector3(-1305.59, -706.64, 25.32),
vector3(-537.85, -854.69, 29.28),
vector3(-709.98, -818.71, 23.73),
vector3(-712.87, -818.71, 23.73),
vector3(-526.71, -1223.18, 18.45),
vector3(-256.47, -715.94, 33.55),
vector3(-259.13, -723.29, 33.54),
vector3(-203.82, -861.3, 30.27),
vector3(111.38, -774.96, 31.44),
vector3(114.56, -776.13, 31.42),
vector3(112.46, -819.65, 31.34),
vector3(118.93, -883.68, 31.12),
vector3(-846.97, -340.29, 38.68),
vector3(-846.41, -341.41, 38.68),
vector3(-262.21, -2012.17, 30.15),
vector3(-273.23, -2024.32, 30.15),
vector3(24.46, -945.94, 29.36),
vector3(-254.48, -692.74, 33.61),
vector3(-1569.95, -546.94, 34.96),
vector3(-1570.91, -547.63, 34.96),
vector3(289.14, -1282.29, 29.6),
vector3(289.18, -1256.84, 29.44),
vector3(296.04, -896.22, 29.24),
vector3(296.74, -894.26, 29.24),
vector3(-301.63, -829.73, 32.43),
vector3(-303.23, -829.44, 32.43),
vector3(5.27, -919.87, 29.56),
vector3(-1200.61, -885.62, 13.26),
}
Config.BankLocations = {
vector3(149.9, -1040.46, 29.37),
vector3(314.23, -278.83, 54.17),
vector3(-350.8, -49.57, 49.04),
vector3(-1213.0, -330.39, 37.79),
vector3(-2962.71, 483.0, 15.7),
vector3(1175.07, 2706.41, 38.09),
vector3(247.44, 223.22, 106.29),
vector3(-113.22, 6470.03, 31.63),
vector3(242.25, 225.15, 106.29)
--vector3(252.41, 221.41, 106.29)
}
local BankLoc = Config.VanBankLocations
local ATMLoc = Config.VanATMLocations
local function cv(amount)
local formatted = amount
@@ -97,10 +20,23 @@ local function cv(amount)
end
return formatted
end
local function createBlips()
if Config.Gabz then BankLoc = Config.GabzBankLocations ATMLoc = Config.GabzATMLocations end
if Config.useATM then
if Config.ATMBlips then
for k, v in pairs(Config.ATMLocations) do
for k, v in pairs(Config.WallATMLocations) do
blip = AddBlipForCoord(v)
SetBlipSprite(blip, 108)
SetBlipDisplay(blip, 4)
SetBlipScale(blip, 0.55)
SetBlipColour(blip, 3)
SetBlipAsShortRange(blip, true)
BeginTextCommandSetBlipName("STRING")
AddTextComponentString("ATM")
EndTextCommandSetBlipName(blip)
end
for k, v in pairs(ATMLoc) do
blip = AddBlipForCoord(v)
SetBlipSprite(blip, 108)
SetBlipDisplay(blip, 4)
@@ -115,16 +51,19 @@ local function createBlips()
end
if Config.useBanks then
if Config.BankBlips then
for k, v in pairs(Config.BankLocations) do
blip = AddBlipForCoord(v)
SetBlipSprite(blip, 108)
SetBlipDisplay(blip, 4)
SetBlipScale(blip, 0.55)
SetBlipColour(blip, 2)
SetBlipAsShortRange(blip, true)
BeginTextCommandSetBlipName("STRING")
AddTextComponentString("Bank")
EndTextCommandSetBlipName(blip)
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
@@ -159,29 +98,47 @@ Citizen.CreateThread(function()
end
end
end
end
end
end
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, })
for k,v in pairs(Config.ATMLocations) do
exports['qb-target']:AddCircleZone("jimatm"..k, vector3(tonumber(v.x), tonumber(v.y), tonumber(v.z)+0.2), 0.5, { name="jimatm"..k, debugPoly=false, useZ=true, },
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 })
--{ 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
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, },
{ 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
end
if Config.useBanks then
for k,v in pairs(Config.BankLocations) do
exports['qb-target']:AddCircleZone("jimbank"..k, vector3(tonumber(v.x), tonumber(v.y), tonumber(v.z)), 2.0, { name="jimbank"..k, debugPoly=false, 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 })
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
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
if Config.Debug then print("Ped Created - 'jimbank"..k..l.."'") end
end
end
end
end
end)
@@ -374,4 +331,11 @@ RegisterNetEvent('jim-payments:client:ATM:give', function()
TriggerServerEvent('jim-payments:server:ATM:give', dialog.citizen, dialog.price)
end
end)
end)
AddEventHandler('onResourceStop', function(resource)
if resource == GetCurrentResourceName() then
for k, v in pairs(Targets) do exports['qb-target']:RemoveZone(k) end
for k, v in pairs(Peds) do DeletePed(Peds[k]) end
end
end)

View File

@@ -26,7 +26,7 @@ RegisterServerEvent('jim-payments:server:ATM:use', function(amount, billtype, ba
local cashB = Player.Functions.GetMoney("cash")
local bankB = Player.Functions.GetMoney("bank")
local amount = tonumber(amount)
--TriggerClientEvent("QBCore:Notify", src, tostring(account), "error")
--TriggerClientEvent("QBCore:Notify", src, tostring(account), "error")
--Simple transfers from bank to wallet --
if account == "bank" or account == "atm" then
@@ -79,14 +79,14 @@ RegisterServerEvent('jim-payments:server:ATM:use', function(amount, billtype, ba
elseif tonumber(society) >= amount then
TriggerClientEvent("QBCore:Notify", src, "Withdrew $"..cv(amount).." from the "..Player.PlayerData.job.label.." account", "success")
Player.Functions.AddMoney('bank', amount)
exports["qb-management"]:RemoveMoney(tostring(Player.PlayerData.job.name), amount)
--TriggerEvent("qb-bossmenu:server:removeAccountMoney", tostring(Player.PlayerData.job.name), amount)
if Config.Manage then exports["qb-management"]:RemoveMoney(tostring(Player.PlayerData.job.name), amount)
else TriggerEvent("qb-bossmenu:server:removeAccountMoney", tostring(Player.PlayerData.job.name), amount) end
end
elseif billtype == "deposit" then
if bankB < amount then TriggerClientEvent("QBCore:Notify", src, "Not enough money in your bank", "error")
elseif bankB >= amount then
exports["qb-management"]:AddMoney(tostring(Player.PlayerData.job.name), amount)
--TriggerEvent("qb-bossmenu:server:addAccountMoney", tostring(Player.PlayerData.job.name), amount)
if Config.Manage then exports["qb-management"]:AddMoney(tostring(Player.PlayerData.job.name), amount)
else TriggerEvent("qb-bossmenu:server:addAccountMoney", tostring(Player.PlayerData.job.name), amount) end
Player.Functions.RemoveMoney('bank', amount) Wait(1500)
TriggerClientEvent("QBCore:Notify", src, "Deposited $"..cv(amount).." into the "..Player.PlayerData.job.label.." account", "success")
end
@@ -109,8 +109,8 @@ RegisterServerEvent('jim-payments:server:ATM:use', function(amount, billtype, ba
local result = MySQL.Sync.fetchAll('SELECT * FROM players WHERE charinfo LIKE ?', {query})
if result[1] ~= nil then
local Reciever = QBCore.Functions.GetPlayerByCitizenId(result[1].citizenid)
exports["qb-management"]:RemoveMoney(tostring(Player.PlayerData.job.name), amount)
--TriggerEvent("qb-bossmenu:server:removeAccountMoney", tostring(Player.PlayerData.job.name), amount)
if Config.Manage then exports["qb-management"]:RemoveMoney(tostring(Player.PlayerData.job.name), amount)
else TriggerEvent("qb-bossmenu:server:removeAccountMoney", tostring(Player.PlayerData.job.name), amount) end
if Reciever ~= nil then
Reciever.Functions.AddMoney('bank', amount)
TriggerClientEvent("QBCore:Notify", src, "Sent $"..amount.." to "..Reciever.PlayerData.charinfo.firstname.." "..Reciever.PlayerData.charinfo.lastname, "success")
@@ -131,14 +131,14 @@ RegisterServerEvent('jim-payments:server:ATM:use', function(amount, billtype, ba
elseif tonumber(gsociety) >= amount then
TriggerClientEvent("QBCore:Notify", src, "Withdrew $"..cv(amount).." from the "..Player.PlayerData.gang.label.." account", "success")
Player.Functions.AddMoney('bank', amount)
exports["qb-management"]:RemoveGangMoney(tostring(Player.PlayerData.gang.name), amount)
--TriggerEvent("qb-gangmenu:server:removeAccountMoney", tostring(Player.PlayerData.gang.name), amount)
if Config.Manage then exports["qb-management"]:RemoveGangMoney(tostring(Player.PlayerData.gang.name), amount)
else TriggerEvent("qb-gangmenu:server:removeAccountMoney", tostring(Player.PlayerData.gang.name), amount) end
end
elseif billtype == "deposit" then
if bankB < amount then TriggerClientEvent("QBCore:Notify", src, "Not enough money in your bank", "error")
elseif bankB >= amount then
exports["qb-management"]:AddGangMoney(tostring(Player.PlayerData.gang.name), amount)
--TriggerEvent("qb-gangmenu:server:addAccountMoney", tostring(Player.PlayerData.gang.name), amount)
if Config.Manage then exports["qb-management"]:AddGangMoney(tostring(Player.PlayerData.gang.name), amount)
else TriggerEvent("qb-gangmenu:server:addAccountMoney", tostring(Player.PlayerData.gang.name), amount) end
Player.Functions.RemoveMoney('bank', amount) Wait(1500)
TriggerClientEvent("QBCore:Notify", src, "Deposited $"..cv(amount).." into the "..Player.PlayerData.gang.label.." account", "success")
end
@@ -161,8 +161,8 @@ RegisterServerEvent('jim-payments:server:ATM:use', function(amount, billtype, ba
local result = MySQL.Sync.fetchAll('SELECT * FROM players WHERE charinfo LIKE ?', {query})
if result[1] ~= nil then
local Reciever = QBCore.Functions.GetPlayerByCitizenId(result[1].citizenid)
exports["qb-management"]:RemoveGangMoney(tostring(Player.PlayerData.gang.name), amount)
--TriggerEvent("qb-bossmenu:server:removeAccountMoney", tostring(Player.PlayerData.gang.name), amount)
if Config.Manage then exports["qb-management"]:RemoveGangMoney(tostring(Player.PlayerData.gang.name), amount)
else TriggerEvent("qb-bossmenu:server:removeAccountMoney", tostring(Player.PlayerData.gang.name), amount) end
if Reciever ~= nil then
Reciever.Functions.AddMoney('bank', amount)
TriggerClientEvent("QBCore:Notify", src, "Sent $"..amount.." to "..Reciever.PlayerData.charinfo.firstname.." "..Reciever.PlayerData.charinfo.lastname, "success")
@@ -226,6 +226,7 @@ QBCore.Functions.CreateCallback('jim-payments:ATM:Find', function(source, cb)
savbal = getSavingsAccount[1].amount
else
MySQL.Async.insert('INSERT INTO bank_accounts (citizenid, amount, account_type) VALUES (?, ?, ?)', { Player.PlayerData.citizenid, 0, 'Savings' }, function() completed = true end) repeat Wait(0) until completed == true
local getSavingsAccount = MySQL.Sync.fetchAll('SELECT * FROM bank_accounts WHERE citizenid = ? AND account_type = ?', { Player.PlayerData.citizenid, 'Savings' })
aid = getSavingsAccount[1].record_id
savbal = getSavingsAccount[1].amount
end

View File

@@ -2,7 +2,7 @@ local QBCore = exports['qb-core']:GetCoreObject()
PlayerJob = {}
local onDuty = false
local BankPed = nil
RegisterNetEvent('QBCore:Client:OnPlayerLoaded') AddEventHandler('QBCore:Client:OnPlayerLoaded', function() QBCore.Functions.GetPlayerData(function(PlayerData) PlayerJob = PlayerData.job PlayerGang = PlayerData.gang end) end)
RegisterNetEvent('QBCore:Client:OnJobUpdate') AddEventHandler('QBCore:Client:OnJobUpdate', function(JobInfo) PlayerJob = JobInfo onDuty = PlayerJob.onduty end)
RegisterNetEvent('QBCore:Client:SetDuty') AddEventHandler('QBCore:Client:SetDuty', function(duty) onDuty = duty end)
@@ -14,8 +14,15 @@ AddEventHandler('onResourceStart', function(resource) if GetCurrentResourceName(
Citizen.CreateThread(function()
local jobroles = {}
for k, v in pairs(Config.Jobs) do jobroles[tostring(k)] = 0 end
exports['qb-target']:AddBoxZone("JimBank", vector3(251.75, 222.17, 106.2), 0.6, 2.0, { name="JimBank", heading = 340.0, debugPoly=false, minZ = 105.75, maxZ = 107.29, },
--exports['qb-target']:AddBoxZone("JimBank", Config.CashInLocation, 0.6, 2.0, { name="JimBank", heading = 340.0, debugPoly=Config.Debug, minZ = 105.75, maxZ = 107.29, },
exports['qb-target']:AddCircleZone("JimBank", vector3(Config.CashInLocation.x, Config.CashInLocation.y, Config.CashInLocation.z), 2.0, { name="JimBank", debugPoly=Config.Debug, useZ=true, },
{ options = { { event = "jim-payments:Tickets:Menu", icon = "fas fa-receipt", label = "Cash in Receipts", job = jobroles } }, distance = 2.0 })
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
if BankPed == nil then BankPed = CreatePed(0, Config.PedPool[i], Config.CashInLocation, Config.CashInLocation[4], false, false) end
if Config.Debug then print("Ped Created for Ticket Trade") end
end
end)
RegisterNetEvent('jim-payments:client:Charge', function(data)
@@ -36,12 +43,12 @@ RegisterNetEvent('jim-payments:client:Charge', function(data)
end
if data.img == nil then img = "" else img = data.img 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 = img..PlayerJob.label.." Cash Register", submitText = "Send",
inputs = {
{ text = " ", name = "citizen", type = "select", options = nearbyList },
{ type = 'radio', name = 'billtype', text = 'Payment Type', options = { { value = "cash", text = "Cash" }, { value = "bank", text = "Card" } } },
{ type = 'number', isRequired = true, name = 'price', text = '💵 Amount to Charge' },}
})
local newinputs = {}
if Config.List then newinputs[#newinputs+1] = { text = " ", name = "citizen", type = "select", options = nearbyList } end
if not Config.List then newinputs[#newinputs+1] = { type = 'text', isRequired = true, name = 'citizen', text = '# Customer ID #' } end
newinputs[#newinputs+1] = { type = 'radio', name = 'billtype', text = 'Payment Type', options = { { value = "cash", text = "Cash" }, { value = "bank", text = "Card" } } }
newinputs[#newinputs+1] = { type = 'number', isRequired = true, name = 'price', text = '💵 Amount to Charge' }
local dialog = exports['qb-input']:ShowInput({ header = img..PlayerJob.label.." Cash Register", submitText = "Send", inputs = newinputs})
if dialog then
if not dialog.citizen or not dialog.price then return end
TriggerServerEvent('jim-payments:server:Charge', dialog.citizen, dialog.price, dialog.billtype, data.img)
@@ -62,14 +69,18 @@ RegisterNetEvent('jim-payments:Tickets:Menu', function()
end
end)
RegisterNetEvent("jim-payments:client:PayPopup", function(amount, biller, billtype, img)
RegisterNetEvent("jim-payments:client:PayPopup", function(amount, biller, billtype, img, billerjob)
if img == nil then img = "" end
exports['qb-menu']:openMenu({
{ isMenuHeader = true, header = img.."🧾 "..PlayerJob.label.." Payment 🧾", txt = "Do you want accept the payment?" },
{ isMenuHeader = true, header = img.."🧾 "..billerjob.." Payment 🧾", txt = "Do you want accept the payment?" },
{ isMenuHeader = true, header = "", txt = billtype:gsub("^%l", string.upper).." Payment: $"..amount },
{ header = "✅ Yes", txt = "", params = { isServer = true, event = "jim-payments:server:PayPopup", args = { accept = true, amount = amount, biller = biller, billtype = billtype } } },
{ header = "❌ No", txt = "", params = { isServer = true, event = "jim-payments:server:PayPopup", args = { accept = false, amount = amount, biller = biller, billtype = billtype } } }, })
end)
RegisterNetEvent('jim-payments:Tickets:Sell:yes', function() TriggerServerEvent('jim-payments:Tickets:Sell') end)
RegisterNetEvent('jim-payments:Tickets:Sell:no', function() exports['qb-menu']:closeMenu() end)
RegisterNetEvent('jim-payments:Tickets:Sell:no', function() exports['qb-menu']:closeMenu() end)
AddEventHandler('onResourceStop', function(resource)
if resource == GetCurrentResourceName() then exports['qb-target']:RemoveZone("JimBank") DeletePed(BankPed) end
end)

View File

@@ -1,4 +1,4 @@
print("Jim-Payments v2.2 - Payments Script by Jimathy")
print("Jim-Payments v2.4 - Payments Script by Jimathy")
-- If you need support I now have a discord available, it helps me keep track of issues and give better support.
@@ -6,10 +6,35 @@ print("Jim-Payments v2.2 - Payments Script by Jimathy")
Config = {}
Config.TicketSystem = true -- Enable this if you want to use the ticket system
Config.Debug = false
Config.Manage = true -- "true" if using qb-management
-- "false" if using qb-bossmenu
Config.TicketSystem = true -- Enable this if you want to use the ticket system false
Config.List = true -- "true" to use nearby player list feature in the cash registers, "false" for manual id entry
Config.PaymentRadius = 30 -- This is how far the playerlist will check for nearby players (based on the person charging)
Config.Peds = true -- "true" to enable peds spawning in banks
Config.PedPool = {
[1] = `IG_Bankman`,
[2] = `U_M_M_BankMan`,
[3] = `S_F_M_Shop_HIGH`,
[4] = `S_M_M_HighSec_02`,
[5] = `S_M_M_HighSec_03`,
[6] = `S_M_M_HighSec_04`,
[7] = `A_F_Y_Business_01`,
[8] = `A_F_Y_Business_02`,
[9] = `A_F_Y_Business_03`,
[10] = `A_F_Y_Business_04`,
[11] = `A_M_M_Business_01`,
[12] = `A_M_Y_Business_02`,
[13] = `A_M_Y_Business_03`,
[14] = `U_F_M_CasinoShop_01`,
}
Config.Gabz = false -- "true" to enable Gabz Banking locations
Config.useATM = true -- Enable this to use my ATM's
Config.useBanks = true -- Enable this to use my banking stuff
Config.BankBlips = true -- Enable this if you disabled qb-banking and need bank locations
@@ -28,6 +53,9 @@ Config.CommissionLimit = false -- If true, this limits the Commission to only be
-- PayPerTicket should never be higher than MinAmountforTicket
-- Commission is a percentage eg "0.10" becomes 10%
Config.CashInLocation = vector4(252.23, 223.11, 106.29, 159.2) -- Default Third Window along in Pacific Bank
if Config.Gabz then Config.CashInLocation = vector3(269.28, 217.24, 106.28, 69.0) end -- Middle along in Pacific Bank (Gabz)
Config.Jobs = {
['beanmachine'] = { MinAmountforTicket = 50, PayPerTicket = 50, Commission = 0.10, },
['burgershot'] = { MinAmountforTicket = 50, PayPerTicket = 50 , Commission = 0.10,},
@@ -38,4 +66,148 @@ Config.Jobs = {
['tequilala'] = { MinAmountforTicket = 50, PayPerTicket = 50, Commission = 0.10, },
['vanilla'] = { MinAmountforTicket = 50, PayPerTicket = 50, Commission = 0.10, },
['mechanic'] = { MinAmountforTicket = 1000, PayPerTicket = 500, Commission = 0.10, },
}
Config.ATMModels = {"prop_atm_01", "prop_atm_02", "prop_atm_03", "prop_fleeca_atm" }
Config.GabzATMLocations = {
--PACIFIC BANK 8 ATMS (GABZ)
vector3(239.02, 212.37, 106.28),
vector3(239.46, 213.6, 106.28),
vector3(239.9, 214.82, 106.28),
vector3(240.35, 216.03, 106.28),
vector3(241.42, 218.96, 106.28),
vector3(241.86, 220.16, 106.28),
vector3(242.3, 221.41, 106.28),
vector3(242.76, 222.63, 106.28),
}
Config.VanATMLocations = {
--PACIFIC BANK 10 ATMS
vector3(265.9, 213.86, 106.28),
vector3(265.56, 212.98, 106.28),
vector3(265.19, 211.91, 106.28),
vector3(264.86, 211.03, 106.28),
vector3(264.52, 210.06, 106.28),
vector3(236.64, 219.72, 106.29),
vector3(237.04, 218.72, 106.29),
vector3(237.5, 217.87, 106.29),
vector3(237.93, 216.94, 106.29),
vector3(238.36, 216.03, 106.29),
}
--QB-Target doesn't seem to like ALL ATM Props so need to manually add locations
Config.WallATMLocations = {
vector3(-386.54, 6046.29, 31.5),
vector3(-282.82, 6226.24, 31.49),
vector3(-132.74, 6366.79, 31.48),
vector3(-95.76, 6457.41, 31.46),
vector3(-97.52, 6455.65, 31.47),
vector3(155.95, 6642.99, 31.6),
vector3(173.92, 6638.16, 31.57),
vector3(2558.65, 350.92, 108.62),
vector3(1077.78, -776.64, 58.35),
vector3(1138.14, -468.88, 66.73),
vector3(1166.93, -455.96, 66.81),
vector3(285.37, 143.07, 104.17),
vector3(-165.43, 234.81, 94.92),
vector3(-165.4, 232.73, 94.92),
vector3(-1410.41, -98.76, 52.43),
vector3(-1409.85, -100.51, 52.38),
vector3(-1206.0, -324.94, 37.86),
vector3(-1205.23, -326.55, 37.86),
vector3(-2072.28, -317.27, 13.32),
vector3(-2974.7, 380.15, 15.0),
vector3(-2959.01, 487.45, 15.46),
vector3(-2956.87, 487.36, 15.46),
vector3(-3043.98, 594.32, 7.74),
vector3(-3241.35, 997.74, 12.55),
vector3(-1305.59, -706.64, 25.32),
vector3(-537.85, -854.69, 29.28),
vector3(-709.98, -818.71, 23.73),
vector3(-712.87, -818.71, 23.73),
vector3(-526.71, -1223.18, 18.45),
vector3(-256.47, -715.94, 33.55),
vector3(-259.13, -723.29, 33.54),
vector3(-203.82, -861.3, 30.27),
vector3(111.38, -774.96, 31.44),
vector3(114.56, -776.13, 31.42),
vector3(112.46, -819.65, 31.34),
vector3(118.93, -883.68, 31.12),
vector3(-846.97, -340.29, 38.68),
vector3(-846.41, -341.41, 38.68),
vector3(-262.21, -2012.17, 30.15),
vector3(-273.23, -2024.32, 30.15),
vector3(24.46, -945.94, 29.36),
vector3(-254.48, -692.74, 33.61),
vector3(-1569.95, -546.94, 34.96),
vector3(-1570.91, -547.63, 34.96),
vector3(289.14, -1282.29, 29.6),
vector3(289.18, -1256.84, 29.44),
vector3(296.04, -896.22, 29.24),
vector3(296.74, -894.26, 29.24),
vector3(-301.63, -829.73, 32.43),
vector3(-303.23, -829.44, 32.43),
vector3(5.27, -919.87, 29.56),
vector3(-1200.61, -885.62, 13.26),
}
Config.VanBankLocations = {
["legion"] = {
vector4(149.5, -1042.08, 29.37, 342.74), -- Legion Fleeca
},
["hawick"] = {
vector4(313.81, -280.43, 54.16, 342.29), -- Hawick Fleeca
},
["vinewood"] = {
vector4(-351.4, -51.24, 49.04, 338.4), -- Vinewood Fleeca
},
["delperro"] = {
vector4(-1212.11, -332.01, 37.78, 25.33), -- Del Perro Fleeca
},
["route1"] = {
vector4(-2961.17, 482.9, 15.7, 84.68), -- Route 1 Fleeca
},
["route68"] = {
vector4(1175.03, 2708.2, 38.09, 180.0), -- Route 68 Fleeca
},
["paleto"] = {
vector4(-111.22, 6470.03, 31.63, 133.86), -- Paleto Bank
},
["pacific"] = {
vector4(243.58, 226.25, 106.29, 169.06), -- Pacific Bank Window 1
vector4(247.08, 224.98, 106.29, 157.75), -- Pacific Bank Window 2
},
}
Config.GabzBankLocations = {
["legion"] = {
vector4(149.5, -1042.08, 29.37, 342.74), -- Legion Fleeca
},
["hawick"] = {
vector4(313.81, -280.43, 54.16, 342.29), -- Hawick Fleeca
},
["vinewood"] = {
vector4(-351.4, -51.24, 49.04, 338.4), -- Vinewood Fleeca
},
["delperro"] = {
vector4(-1212.11, -332.01, 37.78, 25.33), -- Del Perro Fleeca
},
["route1"] = {
vector4(-2961.17, 482.9, 15.7, 84.68), -- Route 1 Fleeca
},
["route68"] = {
vector4(1175.03, 2708.2, 38.09, 180.0), -- Route 68 Fleeca
},
["paleto"] = {
vector4(-110.72, 6469.82, 31.63, 222.94), -- Paleto Bank (GABZ) - 1
vector4(-108.98, 6471.56, 31.63, 222.92), -- Paleto Bank (GABZ) - 2
},
["pacific"] = {
vector4(258.55, 227.63, 106.28, 160.96), -- Pacficic Gabz 1+2
vector4(263.21, 225.93, 106.28, 158.25), -- Pacficic Gabz 3+4
vector4(267.95, 224.24, 106.28, 158.5), -- Pacficic Gabz 5+6
vector4(263.71, 212.63, 106.28, 337.53), -- Pacficic Gabz 7+8
vector4(259.02, 214.32, 106.28, 337.82), -- Pacficic Gabz 9+10
vector4(254.27, 216.06, 106.28, 336.37), -- Pacficic Gabz 11+12
}
}

View File

@@ -1,6 +1,6 @@
name "Jim-Payments"
author "Jimathy"
version "v2.2"
version "v2.4"
description "Payment Script By Jimathy"
fx_version "cerulean"
game "gta5"
@@ -8,7 +8,6 @@ game "gta5"
dependencies {
'qb-input',
'qb-target',
'qb-management'
}
client_scripts {

View File

@@ -21,6 +21,7 @@ RegisterServerEvent('jim-payments:Tickets:Give', function(data, biller)
if Player.PlayerData.citizenid == data.senderCitizenId then biller = Player end
end
end
-- If ticket system enabled, do this
if Config.TicketSystem then
if data.amount >= Config.Jobs[data.society].MinAmountforTicket then
for k, v in pairs(QBCore.Functions.GetPlayers()) do
@@ -91,10 +92,10 @@ RegisterServerEvent("jim-payments:server:Charge", function(citizen, price, billt
return
end
if billtype == "cash" then
TriggerClientEvent("jim-payments:client:PayPopup", billed.PlayerData.source, amount, src, billtype, img)
TriggerClientEvent("jim-payments:client:PayPopup", billed.PlayerData.source, amount, src, billtype, img, biller.PlayerData.job.label)
elseif billtype == "bank" then
if Config.PhoneBank == false then
TriggerClientEvent("jim-payments:client:PayPopup", billed.PlayerData.source, amount, src, billtype, img)
TriggerClientEvent("jim-payments:client:PayPopup", billed.PlayerData.source, amount, src, billtype, img, biller.PlayerData.job.label)
else
MySQL.Async.insert(
'INSERT INTO phone_invoices (citizenid, amount, society, sender, sendercitizenid) VALUES (?, ?, ?, ?, ?)',
@@ -113,9 +114,9 @@ RegisterServerEvent("jim-payments:server:PayPopup", function(data)
local biller = QBCore.Functions.GetPlayer(tonumber(data.biller))
local newdata = { senderCitizenId = biller.PlayerData.citizenid, society = biller.PlayerData.job.name, amount = data.amount }
if data.accept == true then
billed.Functions.RemoveMoney(tostring(data.billtype), data.amount)
exports["qb-management"]:AddMoney(tostring(biller.PlayerData.job.name), data.amount)
--TriggerEvent("qb-bossmenu:server:addAccountMoney", tostring(biller.PlayerData.job.name), data.amount)
billed.Functions.RemoveMoney(tostring(data.billtype), data.amount)
if Config.Manage then exports["qb-management"]:AddMoney(tostring(biller.PlayerData.job.name), data.amount)
else TriggerEvent("qb-bossmenu:server:addAccountMoney", tostring(biller.PlayerData.job.name), data.amount) end
TriggerEvent('jim-payments:Tickets:Give', newdata, biller)
TriggerClientEvent("QBCore:Notify", data.biller, billed.PlayerData.charinfo.firstname.." accepted the payment", "success")
elseif data.accept == false then