Archived
Private
Public Access
1
0
This repository has been archived on 2026-02-04. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
ProjectBackup/HTML/gcphone/resources/esx_addons_gcphone/server.lua
2022-11-19 14:12:22 +01:00

163 lines
4.5 KiB
Lua

ESX = nil
-- local PhoneNumbers = {}
local PhoneNumbers = {
['912'] = {
type = "ambulance",
sources = {}
},
['911'] = {
type = "police",
sources = {}
},
['555-5555'] = {
type = "taxi",
sources = {}
}
}
TriggerEvent('esx:getSharedObject', function(obj)
ESX = obj
end)
function notifyAlertSMS (number, alert, listSrc)
if PhoneNumbers[number] ~= nil then
local mess = '#' .. alert.numero .. ' : ' .. alert.message
if alert.coords ~= nil then
mess = mess .. ' ' .. alert.coords.x .. ', ' .. alert.coords.y
end
for k, _ in pairs(listSrc) do
getPhoneNumber(tonumber(k), function (n)
if n ~= nil then
TriggerEvent('gcPhone:_internalAddMessage', number, n, mess, 0, function (smsMess)
TriggerClientEvent("gcPhone:receiveMessage", tonumber(k), smsMess, alert.numero)
end)
end
end)
end
end
end
AddEventHandler('esx_phone:registerNumber', function(number, type, sharePos, hasDispatch, hideNumber, hidePosIfAnon)
print('= INFO = Enregistrement du telephone ' .. number .. ' => ' .. type)
local hideNumber = hideNumber or false
local hidePosIfAnon = hidePosIfAnon or false
PhoneNumbers[number] = {
type = type,
sources = {},
alerts = {}
}
end)
function checkJob(current)
if current == 'ambulance' then current = '912' end
if current == 'police' then current = '911' end
if current == 'taxi' then current = '555-5555' end
return current;
end
AddEventHandler('esx:setJob', function(source, job, lastJob)
local current = checkJob(job.name);
local last = checkJob(lastJob.name);
if PhoneNumbers[last] ~= nil then
TriggerEvent('esx_addons_gcphone:removeSource', last, source)
end
if PhoneNumbers[current] ~= nil then
TriggerEvent('esx_addons_gcphone:addSource', current, source)
end
end)
AddEventHandler('esx_addons_gcphone:addSource', function(number, source)
PhoneNumbers[number].sources[tostring(source)] = true
end)
AddEventHandler('esx_addons_gcphone:removeSource', function(number, source)
PhoneNumbers[number].sources[tostring(source)] = nil
end)
RegisterServerEvent('gcPhone:sendMessage')
AddEventHandler('gcPhone:sendMessage', function(number, message)
local sourcePlayer = tonumber(source)
if PhoneNumbers[number] ~= nil then
getPhoneNumber(source, function (phone)
notifyAlertSMS(number, {
message = message,
numero = phone,
}, PhoneNumbers[number].sources)
end)
end
end)
RegisterServerEvent('esx_addons_gcphone:startCall')
AddEventHandler('esx_addons_gcphone:startCall', function (number, message, coords)
local source = source
if PhoneNumbers[number] ~= nil then
getPhoneNumber(source, function (phone)
notifyAlertSMS(number, {
message = message,
coords = coords,
numero = phone,
}, PhoneNumbers[number].sources)
end)
else
print('= WARNING = Appels sur un service non enregistre => numero : ' .. number)
end
end)
AddEventHandler('esx:playerLoaded', function(source)
local xPlayer = ESX.GetPlayerFromId(source)
MySQL.Async.fetchAll('SELECT * FROM users WHERE identifier = @identifier',{
['@identifier'] = xPlayer.identifier
}, function(result)
local phoneNumber = result[1].phone_number
xPlayer.set('phoneNumber', phoneNumber)
local job = checkJob(xPlayer.job.name);
if PhoneNumbers[job] ~= nil then
TriggerEvent('esx_addons_gcphone:addSource', job, source)
end
end)
end)
AddEventHandler('esx:playerDropped', function(source)
local source = source
local xPlayer = ESX.GetPlayerFromId(source)
if PhoneNumbers[xPlayer.job.name] ~= nil then
TriggerEvent('esx_addons_gcphone:removeSource', xPlayer.job.name, source)
end
end)
function getPhoneNumber (source, callback)
local xPlayer = ESX.GetPlayerFromId(source)
if xPlayer == nil then
callback(nil)
end
MySQL.Async.fetchAll('SELECT * FROM users WHERE identifier = @identifier',{
['@identifier'] = xPlayer.identifier
}, function(result)
callback(result[1].phone_number)
end)
end
RegisterServerEvent('esx_phone:send')
AddEventHandler('esx_phone:send', function(number, message, _, coords)
local source = source
if PhoneNumbers[number] ~= nil then
getPhoneNumber(source, function (phone)
notifyAlertSMS(number, {
message = message,
coords = coords,
numero = phone,
}, PhoneNumbers[number].sources)
end)
else
-- print('esx_phone:send | Appels sur un service non enregistre => numero : ' .. number)
end
end)