if not _IS_SERVER or not HasResource("qb-phone") then return end
-- NOTES
--- IN ORDER TO LET PLAYERS CALL NON-PLAYER NUMBERS YOU NEED TO CHANGE CALLBACK CALLED "qb-phone:server:GetCallState" IN qb-phone/server/main.lua:163 WITH THIS
-- cb(true, true) EVEN IF TARGET IS NIL
-- QBCore.Functions.CreateCallback('qb-phone:server:GetCallState', function(_, cb, ContactData)
-- local Target = QBCore.Functions.GetPlayerByPhone(ContactData.number)
-- if Target ~= nil then
-- if Calls[Target.PlayerData.citizenid] ~= nil then
-- if Calls[Target.PlayerData.citizenid].inCall then
-- cb(false, true)
-- else
-- cb(true, true)
-- end
-- else
-- cb(true, true)
-- end
-- else
-- cb(true, true)
-- end
-- end)
-- SERVER START
local QBCore = exports["qb-core"]:GetCoreObject()
-- payphone start the call
---@param ctx table
---@field source number
---@field number string
---@field targetNumber string
---@field callId number
AddEventHandler("no-payphone:call:start", function(ctx)
local target = QBCore.Functions.GetPlayerByPhone(ctx.targetNumber)
if not target then return end
TriggerClientEvent("qb-phone:client:GetCalled", target.PlayerData.source, ctx.number, ctx.callId, false)
end)
-- payphone answer the call
---@param ctx table
---@field source number
---@field number string
---@field targetNumber string
---@field callId number
AddEventHandler("no-payphone:call:answer", function(ctx)
local target = QBCore.Functions.GetPlayerByPhone(ctx.targetNumber)
if not target then return end
TriggerClientEvent("qb-phone:client:AnswerCall", target.PlayerData.source)
end)
-- payphone end the call
---@param ctx table
---@field number string
---@field targetNumber string
AddEventHandler("no-payphone:call:end", function(ctx)
local target = QBCore.Functions.GetPlayerByPhone(ctx.targetNumber)
if not target then return end
TriggerClientEvent("qb-phone:client:CancelCall", target.PlayerData.source)
end)
-- phone start the call
RegisterNetEvent("qb-phone:server:CallContact", function(targetData, callId)
local player = QBCore.Functions.GetPlayer(source)
if not player then return end
TriggerEvent("no-payphone:phone:start", {
source = source, -- number
number = player.PlayerData.charinfo.phone, -- string
targetNumber = targetData.number, -- string
callId = callId -- number?
})
end)
-- phone answer the call
RegisterNetEvent("qb-phone:server:AnswerCall", function(ctx)
local player = QBCore.Functions.GetPlayer(source)
if not player then return end
TriggerEvent("no-payphone:phone:answer", {
source = source, -- number
number = player.PlayerData.charinfo.phone
})
end)
-- phone cancel the call
RegisterNetEvent("qb-phone:server:CancelCall", function(ctx)
local player = QBCore.Functions.GetPlayer(source)
if not player then return end
TriggerEvent("no-payphone:phone:end", player.PlayerData.charinfo.phone)
end)