diff --git a/client/main.lua b/client/main.lua
index 5ba395b5..ed69f73c 100644
--- a/client/main.lua
+++ b/client/main.lua
@@ -23,6 +23,7 @@ local CurrentAction = nil
local CurrentActionMsg = ''
local CurrentActionData = {}
local CurrentDispatchRequestId = -1
+local PhoneNumberSources = {}
Citizen.CreateThread(function()
@@ -71,6 +72,7 @@ AddEventHandler('esx_phone:loaded', function(phoneNumber, contacts)
PhoneData.contacts = {}
for i=1, #contacts, 1 do
+ contacts[i].online = (PhoneNumberSources[contacts[i].number] == nil and false or NetworkIsPlayerActive(GetPlayerFromServerId(PhoneNumberSources[contacts[i].number]))),
table.insert(PhoneData.contacts, contacts[i])
end
@@ -82,12 +84,12 @@ AddEventHandler('esx_phone:loaded', function(phoneNumber, contacts)
end)
RegisterNetEvent('esx_phone:addContact')
-AddEventHandler('esx_phone:addContact', function(name, phoneNumber, isOnline)
+AddEventHandler('esx_phone:addContact', function(name, phoneNumber)
table.insert(PhoneData.contacts, {
name = name,
number = phoneNumber,
- online = isOnline
+ online = (PhoneNumberSources[contacts[i].number] == nil and false or NetworkIsPlayerActive(GetPlayerFromServerId(PhoneNumberSources[contacts[i].number]))),
})
-- CALL HERE RELOADCONTACT
SendNUIMessage({
@@ -133,7 +135,7 @@ end)
RegisterNetEvent('esx_phone:onMessage')
AddEventHandler('esx_phone:onMessage', function(phoneNumber, message, position, anon, job, dispatchRequestId)
- ESX.ShowNotification(_U('new_message'))
+ ESX.ShowNotification(_U('new_message', message))
SendNUIMessage({
newMessage = true,
@@ -177,6 +179,16 @@ AddEventHandler('esx_phone:stopDispatch', function(dispatchRequestId, playerName
end)
+RegisterNetEvent('esx_phone:setPhoneNumberSource')
+AddEventHandler('esx_phone:setPhoneNumberSource', function(phoneNumber, source)
+
+ if source == -1 then
+ PhoneNumberSources[phoneNumber] = nil
+ else
+ PhoneNumberSources[phoneNumber] = source
+ end
+end)
+
RegisterNUICallback('setGPS', function(data)
SetNewWaypoint(data.x, data.y)
ESX.ShowNotification(_U('gps_position'))
@@ -185,12 +197,18 @@ end)
RegisterNUICallback('send', function(data)
local phoneNumber = data.number
+ local playerPed = GetPlayerPed(-1)
+ local coords = GetEntityCoords(playerPed)
if tonumber(phoneNumber) ~= nil then
phoneNumber = tonumber(phoneNumber)
end
- TriggerServerEvent('esx_phone:send', phoneNumber, data.message, data.anonyme)
+ TriggerServerEvent('esx_phone:send', phoneNumber, data.message, data.anonyme, {
+ x = coords.x,
+ y = coords.y,
+ z = coords.z
+ })
SendNUIMessage({
showMessageEditor = false
diff --git a/html/scripts/app.js b/html/scripts/app.js
index a4f64f5a..3afebe53 100644
--- a/html/scripts/app.js
+++ b/html/scripts/app.js
@@ -36,6 +36,7 @@
let showMain = function() {
$('.screen').removeClass('active');
+ $('.screen *').attr('disabled', 'disabled');
}
let showRepertoire = function() {
@@ -58,6 +59,8 @@
let showAddContact = function() {
$('#contact').addClass('active');
+ $('.screen *').attr('disabled', 'disabled');
+ $('.screen.active *').removeAttr('disabled');
}
let hideAddContact = function() {
@@ -70,6 +73,8 @@
$('#writer').addClass('active');
$('#writer_number').val(cnum);
$('#writer .header-title').html(cname);
+ $('.screen *').attr('disabled', 'disabled');
+ $('.screen.active *').removeAttr('disabled');
}
let hideNewMessage = function() {
@@ -145,6 +150,7 @@
let showPhone = function(phoneData){
reloadPhone(phoneData);
$('#phone').show();
+ showMain();
isPhoneShowed = true;
}
diff --git a/html/scripts/app_de.js b/html/scripts/app_de.js
index bdc0e71f..fa6bb6a7 100644
--- a/html/scripts/app_de.js
+++ b/html/scripts/app_de.js
@@ -1,6 +1,6 @@
(function(){
-
- let ContactTpl =
+
+ let ContactTpl =
'
'
;
@@ -33,52 +33,57 @@
let isMessageEditorOpen = false;
let isMessagesOpen = false;
let isPhoneShowed = false;
-
+
let showMain = function() {
$('.screen').removeClass('active');
+ $('.screen *').attr('disabled', 'disabled');
}
-
+
let showRepertoire = function() {
$('#repertoire').addClass('active');
}
-
+
let hideRepertoire = function() {
$('#repertoire').removeClass('active');
}
-
- let showMessages = function(){
+
+ let showMessages = function(){
$('#messages').addClass('active');
isMessagesOpen = true;
}
- let hideMessages = function(){
+ let hideMessages = function(){
$('#messages').removeClass('active');
isMessagesOpen = false;
}
-
+
let showAddContact = function() {
$('#contact').addClass('active');
+ $('.screen *').attr('disabled', 'disabled');
+ $('.screen.active *').removeAttr('disabled');
}
-
+
let hideAddContact = function() {
$('#contact').removeClass('active');
$('#contact_name').val('');
$('#contact_number').val('');
}
-
+
let showNewMessage = function(cnum, cname) {
$('#writer').addClass('active');
$('#writer_number').val(cnum);
$('#writer .header-title').html(cname);
+ $('.screen *').attr('disabled', 'disabled');
+ $('.screen.active *').removeAttr('disabled');
}
- let hideNewMessage = function() {
+ let hideNewMessage = function() {
$('#writer').removeClass('active');
$('#writer_number').val('');
$('#writer_message').val('');
$('#writer .header-title').html('');
}
-
+
let showGPS = function(xPos, yPos) {
$.post('http://esx_phone/setGPS', JSON.stringify({
x: parseFloat(xPos),
@@ -88,13 +93,13 @@
}
let renderContacts = function(){
-
+
let contactHTML = '';
-
+
if(contacts.length > 0) {
for(let i=0; i 0) {
-
+
for(let i=0; i' +
'' +
@@ -10,15 +10,15 @@
'
' +
'
'
;
-
- let MessageTpl =
+
+ let MessageTpl =
'' +
'
' +
'
' +
'{{sender}}
#{{phoneNumber}}' +
- '
' +
- '
' +
- '
{{message}}
' +
+ '
' +
+ '' +
+ '{{message}}
' +
'
' +
''
;
@@ -33,52 +33,57 @@
let isMessageEditorOpen = false;
let isMessagesOpen = false;
let isPhoneShowed = false;
-
+
let showMain = function() {
$('.screen').removeClass('active');
+ $('.screen *').attr('disabled', 'disabled');
}
-
+
let showRepertoire = function() {
$('#repertoire').addClass('active');
}
-
+
let hideRepertoire = function() {
$('#repertoire').removeClass('active');
}
-
- let showMessages = function(){
+
+ let showMessages = function(){
$('#messages').addClass('active');
isMessagesOpen = true;
}
- let hideMessages = function(){
+ let hideMessages = function(){
$('#messages').removeClass('active');
isMessagesOpen = false;
}
-
+
let showAddContact = function() {
$('#contact').addClass('active');
+ $('.screen *').attr('disabled', 'disabled');
+ $('.screen.active *').removeAttr('disabled');
}
-
+
let hideAddContact = function() {
$('#contact').removeClass('active');
$('#contact_name').val('');
$('#contact_number').val('');
}
-
+
let showNewMessage = function(cnum, cname) {
$('#writer').addClass('active');
$('#writer_number').val(cnum);
$('#writer .header-title').html(cname);
+ $('.screen *').attr('disabled', 'disabled');
+ $('.screen.active *').removeAttr('disabled');
}
- let hideNewMessage = function() {
+ let hideNewMessage = function() {
$('#writer').removeClass('active');
$('#writer_number').val('');
$('#writer_message').val('');
$('#writer .header-title').html('');
}
-
+
let showGPS = function(xPos, yPos) {
$.post('http://esx_phone/setGPS', JSON.stringify({
x: parseFloat(xPos),
@@ -88,13 +93,13 @@
}
let renderContacts = function(){
-
+
let contactHTML = '';
-
+
if(contacts.length > 0) {
for(let i=0; i 0) {
-
+
for(let i=0; i ' .. xPlayer.name .. '@' .. phoneNumber .. ' : ' .. message)
- local xPlayer2 = ESX.GetPlayerFromId(xPlayers[j])
-
- if xPlayer2.get('phoneNumber') == contacts[i].number then
- contacts[i].online = true
- end
+ if PhoneNumbers[phoneNumber] ~= nil then
+
+ for i=1, #PhoneNumbers[phoneNumber].sources, 1 do
+
+ if PhoneNumbers[phoneNumber].sources[i] ~= nil then
+
+ local numType = PhoneNumbers[phoneNumber].type
+ local numHasDispatch = PhoneNumbers[phoneNumber].hasDispatch
+ local numHide = PhoneNumbers[phoneNumber].hideNumber
+ local numHidePosIfAnon = PhoneNumbers[phoneNumber].hidePosIfAnon
+ local numPosition = (PhoneNumbers[phoneNumber].sharePos and position or false)
+ local numSource = PhoneNumbers[phoneNumber].sources[i]
+
+ if numHidePosIfAnon and anon then
+ numPosition = false
+ end
+
+ if numHasDispatch then
+ TriggerClientEvent('esx_phone:onMessage', numSource, xPlayer.get('phoneNumber'), message, numPosition, (numHide and true or anon), numType, GetDistpatchRequestId())
+ else
+ TriggerClientEvent('esx_phone:onMessage', numSource, xPlayer.get('phoneNumber'), message, numPosition, (numHide and true or anon), numType, false)
end
end
- xPlayer.set('contacts', contacts)
-
- TriggerClientEvent('esx_phone:loaded', _source, phoneNumber, contacts)
-
end
- )
-end)
-
-RegisterServerEvent('esx_phone:registerCallback')
-AddEventHandler('esx_phone:registerCallback', function(cb)
- table.insert(RegisteredCallbacks, cb)
-end)
-
-RegisterServerEvent('esx_phone:send')
-AddEventHandler('esx_phone:send', function(phoneNumber, message, anon)
-
- local _source = source
-
- for i=1, #RegisteredCallbacks, 1 do
- RegisteredCallbacks[i](_source, phoneNumber, message, anon)
end
+
+end)
+
+AddEventHandler('esx_phone:registerNumber', function(number, type, sharePos, hasDispatch, hideNumber, hidePosIfAnon)
+
+ local hideNumber = hideNumber or false
+ local hidePosIfAnon = hidePosIfAnon or false
+
+ PhoneNumbers[number] = {
+ type = type,
+ sharePos = sharePos,
+ hasDispatch = (hasDispatch or false),
+ hideNumber = hideNumber,
+ hidePosIfAnon = hidePosIfAnon,
+ sources = {}
+ }
+
+end)
+
+AddEventHandler('esx_phone:addSource', function(number, source)
+
+ local found = false
+
+ for i=1, #PhoneNumbers[number].sources, 1 do
+ if PhoneNumbers[number].sources[i] == source then
+ found = true
+ break
+ end
+ end
+
+ if not found then
+ table.insert(PhoneNumbers[number].sources, source)
+ end
+
+end)
+
+AddEventHandler('esx_phone:removeSource', function(number, source)
+
+ for i=1, #PhoneNumbers[number].sources, 1 do
+ if PhoneNumbers[number].sources[i] == source then
+ PhoneNumbers[number].sources[i] = nil
+ end
+ end
+
end)
RegisterServerEvent('esx_phone:addPlayerContact')
@@ -244,20 +312,7 @@ AddEventHandler('esx_phone:addPlayerContact', function(phoneNumber, contactName)
TriggerClientEvent('esx:showNotification', _source, _U('contact_added'))
- local xPlayers = ESX.GetPlayers()
- local isOnline = false
-
- for i=1, #xPlayers, 1 do
-
- local xPlayer2 = ESX.GetPlayerFromId(xPlayers[i])
-
- if xPlayer2.get('phoneNumber') == phoneNumber then
- isOnline = true
- break
- end
- end
-
- TriggerClientEvent('esx_phone:addContact', _source, contactName, phoneNumber, isOnline)
+ TriggerClientEvent('esx_phone:addContact', _source, contactName, phoneNumber)
end
)
@@ -273,26 +328,6 @@ AddEventHandler('esx_phone:addPlayerContact', function(phoneNumber, contactName)
end)
-AddEventHandler('esx_phone:ready', function()
- TriggerEvent('esx_phone:registerCallback', function(source, phoneNumber, message, anon)
-
- local xPlayer = ESX.GetPlayerFromId(source)
- local xPlayers = ESX.GetPlayers()
-
- print('MESSAGE => ' .. xPlayer.name .. '@' .. phoneNumber .. ' : ' .. message)
-
- for i=1, #xPlayers, 1 do
-
- local xPlayer2 = ESX.GetPlayerFromId(xPlayers[i])
-
- if xPlayer2.get('phoneNumber') == phoneNumber then
- TriggerClientEvent('esx_phone:onMessage', xPlayer2.source, xPlayer.get('phoneNumber'), message, false, anon, 'player', false)
- end
- end
-
- end)
-end)
-
RegisterServerEvent('esx_phone:stopDispatch')
AddEventHandler('esx_phone:stopDispatch', function(dispatchRequestId)
TriggerClientEvent('esx_phone:stopDispatch', -1, dispatchRequestId, GetPlayerName(source))