Update 19.11.2022
This commit is contained in:
2
HTML/gcphone/resources/esx_addons_gcphone/.gitattributes
vendored
Normal file
2
HTML/gcphone/resources/esx_addons_gcphone/.gitattributes
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
# Auto detect text files and perform LF normalization
|
||||
* text=auto
|
||||
35
HTML/gcphone/resources/esx_addons_gcphone/client.lua
Normal file
35
HTML/gcphone/resources/esx_addons_gcphone/client.lua
Normal file
@@ -0,0 +1,35 @@
|
||||
RegisterNetEvent('esx_addons_gcphone:call')
|
||||
AddEventHandler('esx_addons_gcphone:call', function(data)
|
||||
local playerPed = GetPlayerPed(-1)
|
||||
local coords = GetEntityCoords(playerPed)
|
||||
local message = data.message
|
||||
local number = data.number
|
||||
if message == nil then
|
||||
DisplayOnscreenKeyboard(1, "FMMC_MPM_NA", "", "", "", "", "", 200)
|
||||
while (UpdateOnscreenKeyboard() == 0) do
|
||||
DisableAllControlActions(0);
|
||||
Wait(0);
|
||||
end
|
||||
if (GetOnscreenKeyboardResult()) then
|
||||
message = GetOnscreenKeyboardResult()
|
||||
end
|
||||
end
|
||||
if message ~= nil and message ~= "" then
|
||||
TriggerServerEvent('esx_addons_gcphone:startCall', number, message, {
|
||||
x = coords.x,
|
||||
y = coords.y,
|
||||
z = coords.z
|
||||
})
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterNetEvent('esx_addons_gcphone:call_taxi')
|
||||
AddEventHandler('esx_addons_gcphone:call_taxi', function(data)
|
||||
local playerPed = GetPlayerPed(-1)
|
||||
local coords = GetEntityCoords(playerPed)
|
||||
TriggerServerEvent('esx_phone:send', '555-5555', "Eine Person benötigt ein Taxi", false, {
|
||||
x = coords.x,
|
||||
y = coords.y,
|
||||
z = coords.z
|
||||
})
|
||||
end)
|
||||
22
HTML/gcphone/resources/esx_addons_gcphone/fxmanifest.lua
Normal file
22
HTML/gcphone/resources/esx_addons_gcphone/fxmanifest.lua
Normal file
@@ -0,0 +1,22 @@
|
||||
fx_version 'adamant'
|
||||
|
||||
game 'gta5'
|
||||
|
||||
client_script 'client.lua'
|
||||
|
||||
server_script {
|
||||
'@mysql-async/lib/MySQL.lua',
|
||||
'server.lua'
|
||||
}
|
||||
|
||||
-- {
|
||||
-- "display": "Police",
|
||||
-- "subMenu": [
|
||||
-- {
|
||||
-- "title": "Envoyer un message",
|
||||
-- "eventName": "esx_addons_gcphone:call",
|
||||
-- "type": {
|
||||
-- "number": "police"
|
||||
-- }}
|
||||
-- ]
|
||||
-- }
|
||||
162
HTML/gcphone/resources/esx_addons_gcphone/server.lua
Normal file
162
HTML/gcphone/resources/esx_addons_gcphone/server.lua
Normal file
@@ -0,0 +1,162 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user