Advertisement
LennoxFT

Untitled

Jan 23rd, 2020
989
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 18.26 KB | None | 0 0
  1. ESX              = nil
  2.  
  3. Citizen.CreateThread(function()
  4.     while ESX == nil do
  5.         TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
  6.         Citizen.Wait(0)
  7.     end
  8. end)
  9.  
  10. local KeyToucheCloseEvent = {
  11.     { code = 172, event = 'ArrowUp' },
  12.     { code = 173, event = 'ArrowDown' },
  13.     { code = 174, event = 'ArrowLeft' },
  14.     { code = 175, event = 'ArrowRight' },
  15.     { code = 176, event = 'Enter' },
  16.     { code = 177, event = 'Backspace' },
  17. }
  18. local KeyOpenClose = 166 -- F5
  19. local KeyTakeCall = 38 -- E
  20. local menuIsOpen = false
  21. local contacts = {}
  22. local messages = {}
  23. local myPhoneNumber = ''
  24. local isDead = false
  25. local USE_RTC = false
  26.  
  27. local PhoneInCall = {}
  28. local currentPlaySound = false
  29. local soundId = 1485
  30. local TokoVoipID = nil
  31.  
  32. --====================================================================================
  33. --  Active ou Deactive une application (appName => config.json)
  34. --====================================================================================
  35.  
  36. RegisterNetEvent('gcPhone:setEnableApp')
  37. AddEventHandler('gcPhone:setEnableApp', function(appName, enable)
  38.     SendNUIMessage({event = 'setEnableApp', appName = appName, enable = enable })
  39. end)
  40.  
  41. --====================================================================================
  42. --  Gestion des appels fixe
  43. --====================================================================================
  44.  
  45. function startFixeCall (fixeNumber)
  46.     local number = ''
  47.     DisplayOnscreenKeyboard(1, "FMMC_MPM_NA", "", "", "", "", "", 10)
  48.     while (UpdateOnscreenKeyboard() == 0) do
  49.         DisableAllControlActions(0);
  50.         Wait(0);
  51.     end
  52.     if (GetOnscreenKeyboardResult()) then
  53.         number =  GetOnscreenKeyboardResult()
  54.     end
  55.     if number ~= '' then
  56.         TriggerEvent('gcphone:autoCall', number, {
  57.             useNumber = fixeNumber
  58.         })
  59.         PhonePlayCall(true)
  60.     end
  61. end
  62.  
  63. function TakeAppel (infoCall)
  64.     TriggerEvent('gcphone:autoAcceptCall', infoCall)
  65. end
  66.  
  67. RegisterNetEvent("gcPhone:notifyFixePhoneChange")
  68. AddEventHandler("gcPhone:notifyFixePhoneChange", function(_PhoneInCall)
  69.     PhoneInCall = _PhoneInCall
  70. end)
  71.  
  72. --[[
  73.   Affiche les imformations quant le joueurs est proche d'un fixe
  74. --]]
  75. function showFixePhoneHelper (coords)
  76.     for number, data in pairs(FixePhone) do
  77.         local dist = GetDistanceBetweenCoords(
  78.             data.coords.x, data.coords.y, data.coords.z,
  79.             coords.x, coords.y, coords.z, 1)
  80.         if dist <= 2.0 then
  81.             SetTextComponentFormat("STRING")
  82.             AddTextComponentString("~g~" .. data.name .. ' ~o~' .. number .. '~n~~INPUT_PICKUP~~w~ Use')
  83.             DisplayHelpTextFromStringLabel(0, 0, 0, -1)
  84.             if IsControlJustPressed(1, KeyTakeCall) then
  85.                 startFixeCall(number)
  86.             end
  87.             break
  88.         end
  89.     end
  90. end
  91.  
  92.  
  93. Citizen.CreateThread(function ()
  94.     while true do
  95.         local playerPed   = PlayerPedId()
  96.         local coords      = GetEntityCoords(playerPed)
  97.         local inRangeToActivePhone = false
  98.         for i, _ in pairs(PhoneInCall) do
  99.             local dist = GetDistanceBetweenCoords(
  100.                 PhoneInCall[i].coords.x, PhoneInCall[i].coords.y, PhoneInCall[i].coords.z,
  101.                 coords.x, coords.y, coords.z, 1)
  102.             if (dist <= 5.0) then
  103.                 DrawMarker(1, PhoneInCall[i].coords.x, PhoneInCall[i].coords.y, PhoneInCall[i].coords.z,
  104.                     0,0,0, 0,0,0, 0.1,0.1,0.1, 0,255,0,255, 0,0,0,0,0,0,0)
  105.                 inRangeToActivePhone = true
  106.                 if (dist <= 1.5) then
  107.                     SetTextComponentFormat("STRING")
  108.                     AddTextComponentString("~INPUT_PICKUP~ Answer")
  109.                     DisplayHelpTextFromStringLabel(0, 0, 1, -1)
  110.                     if IsControlJustPressed(1, KeyTakeCall) then
  111.                         PhonePlayCall(true)
  112.                         TakeAppel(PhoneInCall[i])
  113.                         PhoneInCall = {}
  114.                         StopSound(soundId)
  115.                     end
  116.                 end
  117.                 break
  118.             end
  119.         end
  120.         if inRangeToActivePhone == false then
  121.             showFixePhoneHelper(coords)
  122.         end
  123.         if inRangeToActivePhone == true and currentPlaySound == false then
  124.             PlaySound(soundId, "Remote_Ring", "Phone_SoundSet_Michael", 0, 0, 1)
  125.             currentPlaySound = true
  126.         elseif inRangeToActivePhone == false and currentPlaySound == true then
  127.             currentPlaySound = false
  128.             StopSound(soundId)
  129.         end
  130.         Citizen.Wait(0)
  131.     end
  132. end)
  133.  
  134. --====================================================================================
  135. --
  136. --====================================================================================
  137. -- Citizen.CreateThread(function()
  138.  
  139.         -- while true do
  140.             -- Citizen.Wait(0)
  141.             -- if IsControlJustPressed(1, KeyOpenClose) and GetLastInputMethod( 0 ) then
  142.                 -- TooglePhone()
  143.             -- end
  144.             -- if menuIsOpen == true then
  145.                 -- for _, value in ipairs(KeyToucheCloseEvent) do
  146.                     -- if IsControlJustPressed(1, value.code) then
  147.                         -- SendNUIMessage({keyUp = value.event})
  148.                     -- end
  149.                 -- end
  150.             -- end
  151.         -- end
  152. -- end)
  153.  
  154. Citizen.CreateThread(function()
  155.     while true do
  156.         Citizen.Wait(0)
  157.         if IsControlJustPressed(1, KeyOpenClose) and GetLastInputMethod( 0 ) then
  158.             ESX.TriggerServerCallback('gcphone:getItemAmount', function(qtty)
  159.                 if qtty > 0 then
  160.                     TooglePhone()
  161.                 else
  162.                     TriggerEvent('esx:showNotification', "Du besitzt kein ~r~Telefon~s~.")
  163.                 end
  164.             end, 'phone')
  165.         end
  166.         if menuIsOpen == true then
  167.             for _, value in ipairs(KeyToucheCloseEvent) do
  168.                 if IsControlJustPressed(1, value.code) then
  169.                     SendNUIMessage({keyUp = value.event})
  170.                 end
  171.             end
  172.         end
  173.     end
  174. end)
  175.  
  176. RegisterNetEvent("gcPhone:forceOpenPhone")
  177. AddEventHandler("gcPhone:forceOpenPhone", function(_myPhoneNumber)
  178.     if menuIsOpen == false then
  179.         TooglePhone()
  180.     end
  181. end)
  182.  
  183. --====================================================================================
  184. --  Events
  185. --====================================================================================
  186. RegisterNetEvent("gcPhone:myPhoneNumber")
  187. AddEventHandler("gcPhone:myPhoneNumber", function(_myPhoneNumber)
  188.     myPhoneNumber = _myPhoneNumber
  189.     SendNUIMessage({event = 'updateMyPhoneNumber', myPhoneNumber = myPhoneNumber})
  190. end)
  191.  
  192. RegisterNetEvent("gcPhone:contactList")
  193. AddEventHandler("gcPhone:contactList", function(_contacts)
  194.     SendNUIMessage({event = 'updateContacts', contacts = _contacts})
  195.     contacts = _contacts
  196. end)
  197.  
  198. RegisterNetEvent("gcPhone:allMessage")
  199. AddEventHandler("gcPhone:allMessage", function(allmessages)
  200.     SendNUIMessage({event = 'updateMessages', messages = allmessages})
  201.     messages = allmessages
  202. end)
  203.  
  204. RegisterNetEvent("gcPhone:getBourse")
  205. AddEventHandler("gcPhone:getBourse", function(bourse)
  206.     SendNUIMessage({event = 'updateBourse', bourse = bourse})
  207. end)
  208.  
  209. RegisterNetEvent("gcPhone:receiveMessage")
  210. AddEventHandler("gcPhone:receiveMessage", function(message)
  211.     -- SendNUIMessage({event = 'updateMessages', messages = messages})
  212.     SendNUIMessage({event = 'newMessage', message = message})
  213.     if message.owner == 0 then
  214.         local text = '~o~New Message'
  215.         if ShowNumberNotification == true then
  216.             text = '~o~New message from ~y~'.. message.transmitter
  217.             for _,contact in pairs(contacts) do
  218.                 if contact.number == message.transmitter then
  219.                     text = '~o~New message from ~g~'.. contact.display
  220.                     break
  221.                 end
  222.             end
  223.         end
  224.         SetNotificationTextEntry("STRING")
  225.         AddTextComponentString(text)
  226.         DrawNotification(false, false)
  227.         PlaySound(-1, "Menu_Accept", "Phone_SoundSet_Default", 0, 0, 1)
  228.         Citizen.Wait(300)
  229.         PlaySound(-1, "Menu_Accept", "Phone_SoundSet_Default", 0, 0, 1)
  230.         Citizen.Wait(300)
  231.         PlaySound(-1, "Menu_Accept", "Phone_SoundSet_Default", 0, 0, 1)
  232.     end
  233. end)
  234.  
  235. --====================================================================================
  236. --  Function client | Contacts
  237. --====================================================================================
  238.  
  239. function addContact(display, num)
  240.     TriggerServerEvent('gcPhone:addContact', display, num)
  241. end
  242.  
  243. function deleteContact(num)
  244.     TriggerServerEvent('gcPhone:deleteContact', num)
  245. end
  246.  
  247. --====================================================================================
  248. --  Function client | Messages
  249. --====================================================================================
  250. function sendMessage(num, message)
  251.     TriggerServerEvent('gcPhone:sendMessage', num, message)
  252. end
  253.  
  254. function deleteMessage(msgId)
  255.     TriggerServerEvent('gcPhone:deleteMessage', msgId)
  256.     for k, v in ipairs(messages) do
  257.         if v.id == msgId then
  258.             table.remove(messages, k)
  259.             SendNUIMessage({event = 'updateMessages', messages = messages})
  260.             return
  261.         end
  262.     end
  263. end
  264.  
  265. function deleteMessageContact(num)
  266.     TriggerServerEvent('gcPhone:deleteMessageNumber', num)
  267. end
  268.  
  269. function deleteAllMessage()
  270.     TriggerServerEvent('gcPhone:deleteAllMessage')
  271. end
  272.  
  273. function setReadMessageNumber(num)
  274.     TriggerServerEvent('gcPhone:setReadMessageNumber', num)
  275.     for k, v in ipairs(messages) do
  276.         if v.transmitter == num then
  277.             v.isRead = 1
  278.         end
  279.     end
  280. end
  281.  
  282. function requestAllMessages()
  283.     TriggerServerEvent('gcPhone:requestAllMessages')
  284. end
  285.  
  286. function requestAllContact()
  287.     TriggerServerEvent('gcPhone:requestAllContact')
  288. end
  289.  
  290. --====================================================================================
  291. --  Function client | Appels
  292. --====================================================================================
  293.  
  294. local inCall = false
  295. local aminCall = false
  296.  
  297. RegisterNetEvent("gcPhone:waitingCall")
  298. AddEventHandler("gcPhone:waitingCall", function(infoCall, initiator)
  299.     SendNUIMessage({event = 'waitingCall', infoCall = infoCall, initiator = initiator})
  300.     print('---------------------', initiator)
  301.     if initiator == true then
  302.         PhonePlayCall()
  303.         if menuIsOpen == false then
  304.             TooglePhone()
  305.         end
  306.     end
  307. end)
  308.  
  309. RegisterNetEvent("gcPhone:acceptCall")
  310. AddEventHandler("gcPhone:acceptCall", function(infoCall, initiator)
  311.     if inCall == false and USE_RTC == false then
  312.         inCall = true
  313.         exports.tokovoip_script:addPlayerToRadio(infoCall.id + 120)
  314.         TokoVoipID = infoCall.id + 120
  315.     end
  316.     if menuIsOpen == false then
  317.         TooglePhone()
  318.     end
  319.     PhonePlayCall()
  320.     SendNUIMessage({event = 'acceptCall', infoCall = infoCall, initiator = initiator})
  321. end)
  322.  
  323. RegisterNetEvent("gcPhone:rejectCall")
  324. AddEventHandler("gcPhone:rejectCall", function(infoCall)
  325.     if inCall == true then
  326.         inCall = false
  327.         Citizen.InvokeNative(0xE036A705F989E049)
  328.         exports.tokovoip_script:removePlayerFromRadio(TokoVoipID)
  329.         TokoVoipID = nil
  330.     end
  331.     PhonePlayText()
  332.     SendNUIMessage({event = 'rejectCall', infoCall = infoCall})
  333. end)
  334.  
  335. RegisterNetEvent("gcPhone:historiqueCall")
  336. AddEventHandler("gcPhone:historiqueCall", function(historique)
  337.     SendNUIMessage({event = 'historiqueCall', historique = historique})
  338. end)
  339.  
  340. function rejectCall(infoCall)
  341.     TriggerServerEvent('gcPhone:rejectCall', infoCall)
  342. end
  343.  
  344. function ignoreCall(infoCall)
  345.     TriggerServerEvent('gcPhone:ignoreCall', infoCall)
  346. end
  347.  
  348. function requestHistoriqueCall()
  349.     TriggerServerEvent('gcPhone:getHistoriqueCall')
  350. end
  351.  
  352. function appelsDeleteHistorique (num)
  353.     TriggerServerEvent('gcPhone:appelsDeleteHistorique', num)
  354. end
  355.  
  356. function appelsDeleteAllHistorique ()
  357.     TriggerServerEvent('gcPhone:appelsDeleteAllHistorique')
  358. end
  359.  
  360.  
  361. --====================================================================================
  362. --  Event NUI - Appels
  363. --====================================================================================
  364. function startCall (phone_number, rtcOffer, extraData)
  365.     TriggerServerEvent('gcPhone:startCall', phone_number, rtcOffer, extraData)
  366. end
  367. RegisterNUICallback('startCall', function (data, cb)
  368.     print(json.encode(data))
  369.     startCall(data.numero, data.rtcOffer, data.extraData)
  370.     cb()
  371. end)
  372.  
  373. function acceptCall (infoCall, rtcAnswer)
  374.     TriggerServerEvent('gcPhone:acceptCall', infoCall, rtcAnswer)
  375. end
  376. RegisterNUICallback('acceptCall', function (data, cb)
  377.     acceptCall(data.infoCall, data.rtcAnswer)
  378.     cb()
  379. end)
  380. RegisterNUICallback('rejectCall', function (data, cb)
  381.     rejectCall(data.infoCall)
  382.     cb()
  383. end)
  384.  
  385. RegisterNUICallback('ignoreCall', function (data, cb)
  386.     ignoreCall(data.infoCall)
  387.     cb()
  388. end)
  389.  
  390. RegisterNUICallback('notififyUseRTC', function (use, cb)
  391.     USE_RTC = use
  392.     if USE_RTC == true and inCall == true then
  393.         print('USE RTC ON')
  394.         inCall = false
  395.         Citizen.InvokeNative(0xE036A705F989E049)
  396.         exports.tokovoip_script:removePlayerFromRadio(TokoVoipID)
  397.         TokoVoipID = nil
  398.     end
  399.     cb()
  400. end)
  401.  
  402. RegisterNUICallback('onCandidates', function (data, cb)
  403.     TriggerServerEvent('gcPhone:candidates', data.id, data.candidates)
  404.     cb()
  405. end)
  406.  
  407. RegisterNetEvent("gcPhone:candidates")
  408. AddEventHandler("gcPhone:candidates", function(candidates)
  409.     SendNUIMessage({event = 'candidatesAvailable', candidates = candidates})
  410. end)
  411.  
  412. RegisterNetEvent('gcphone:autoCall')
  413. AddEventHandler('gcphone:autoCall', function(number, extraData)
  414.     if number ~= nil then
  415.         print('number', number)
  416.         SendNUIMessage({ event = "autoStartCall", number = number, extraData = extraData})
  417.     end
  418. end)
  419.  
  420. RegisterNetEvent('gcphone:autoCallNumber')
  421. AddEventHandler('gcphone:autoCallNumber', function(data)
  422.     TriggerEvent('gcphone:autoCall', data.number)
  423. end)
  424.  
  425. RegisterNetEvent('gcphone:autoAcceptCall')
  426. AddEventHandler('gcphone:autoAcceptCall', function(infoCall)
  427.     SendNUIMessage({ event = "autoAcceptCall", infoCall = infoCall})
  428. end)
  429.  
  430. --====================================================================================
  431. --  Gestion des evenements NUI
  432. --====================================================================================
  433. RegisterNUICallback('log', function(data, cb)
  434.     print(data)
  435.     cb()
  436. end)
  437. RegisterNUICallback('focus', function(data, cb)
  438.     cb()
  439. end)
  440. RegisterNUICallback('blur', function(data, cb)
  441.     cb()
  442. end)
  443. RegisterNUICallback('reponseText', function(data, cb)
  444.     local limit = data.limit or 255
  445.     local text = data.text or ''
  446.  
  447.     DisplayOnscreenKeyboard(1, "FMMC_MPM_NA", "", text, "", "", "", limit)
  448.     while (UpdateOnscreenKeyboard() == 0) do
  449.         DisableAllControlActions(0);
  450.         Wait(0);
  451.     end
  452.     if (GetOnscreenKeyboardResult()) then
  453.         text = GetOnscreenKeyboardResult()
  454.     end
  455.     cb(json.encode({text = text}))
  456. end)
  457.  
  458. --====================================================================================
  459. --  Event - Messages
  460. --====================================================================================
  461. RegisterNUICallback('getMessages', function(data, cb)
  462.     cb(json.encode(messages))
  463. end)
  464. RegisterNUICallback('sendMessage', function(data, cb)
  465.     if data.message == '%pos%' then
  466.         local myPos = GetEntityCoords(PlayerPedId())
  467.         data.message = 'GPS: ' .. myPos.x .. ', ' .. myPos.y
  468.     end
  469.     TriggerServerEvent('gcPhone:sendMessage', data.phoneNumber, data.message)
  470. end)
  471. RegisterNUICallback('deleteMessage', function(data, cb)
  472.     deleteMessage(data.id)
  473.     cb()
  474. end)
  475. RegisterNUICallback('deleteMessageNumber', function (data, cb)
  476.     deleteMessageContact(data.number)
  477.     cb()
  478. end)
  479. RegisterNUICallback('deleteAllMessage', function (data, cb)
  480.     deleteAllMessage()
  481.     cb()
  482. end)
  483. RegisterNUICallback('setReadMessageNumber', function (data, cb)
  484.     setReadMessageNumber(data.number)
  485.     cb()
  486. end)
  487. --====================================================================================
  488. --  Event - Contacts
  489. --====================================================================================
  490. RegisterNUICallback('addContact', function(data, cb)
  491.     TriggerServerEvent('gcPhone:addContact', data.display, data.phoneNumber)
  492. end)
  493. RegisterNUICallback('updateContact', function(data, cb)
  494.     TriggerServerEvent('gcPhone:updateContact', data.id, data.display, data.phoneNumber)
  495. end)
  496. RegisterNUICallback('deleteContact', function(data, cb)
  497.     TriggerServerEvent('gcPhone:deleteContact', data.id)
  498. end)
  499. RegisterNUICallback('getContacts', function(data, cb)
  500.     cb(json.encode(contacts))
  501. end)
  502. RegisterNUICallback('setGPS', function(data, cb)
  503.     SetNewWaypoint(tonumber(data.x), tonumber(data.y))
  504.     cb()
  505. end)
  506. RegisterNUICallback('callEvent', function(data, cb)
  507.     if data.data ~= nil then
  508.         TriggerEvent(data.eventName, data.data)
  509.     else
  510.         TriggerEvent(data.eventName)
  511.     end
  512.     cb()
  513. end)
  514. RegisterNUICallback('deleteALL', function(data, cb)
  515.     TriggerServerEvent('gcPhone:deleteALL')
  516.     cb()
  517. end)
  518.  
  519.  
  520.  
  521. function TooglePhone()
  522.     menuIsOpen = not menuIsOpen
  523.     SendNUIMessage({show = menuIsOpen})
  524.     if menuIsOpen == true then
  525.         PhonePlayIn()
  526.     else
  527.         PhonePlayOut()
  528.     end
  529. end
  530. RegisterNUICallback('takePhoto', function(data, cb)
  531.     menuIsOpen = false
  532.     SendNUIMessage({show = false})
  533.     cb()
  534.     TriggerEvent('camera:open')
  535. end)
  536.  
  537. RegisterNUICallback('closePhone', function(data, cb)
  538.     menuIsOpen = false
  539.     SendNUIMessage({show = false})
  540.     PhonePlayOut()
  541.     cb()
  542. end)
  543.  
  544.  
  545.  
  546.  
  547. ----------------------------------
  548. ---------- GESTION APPEL ---------
  549. ----------------------------------
  550. RegisterNUICallback('appelsDeleteHistorique', function (data, cb)
  551.     appelsDeleteHistorique(data.numero)
  552.     cb()
  553. end)
  554. RegisterNUICallback('appelsDeleteAllHistorique', function (data, cb)
  555.     appelsDeleteAllHistorique(data.infoCall)
  556.     cb()
  557. end)
  558.  
  559.  
  560. ----------------------------------
  561. ---------- GESTION VIA WEBRTC ----
  562. ----------------------------------
  563. AddEventHandler('onClientResourceStart', function(res)
  564.     DoScreenFadeIn(300)
  565.     if res == "gcphone" then
  566.         TriggerServerEvent('gcPhone:allUpdate')
  567.     end
  568. end)
  569.  
  570. function openPhone()
  571.     if menuIsOpen == false then
  572.     TooglePhone()
  573.     end
  574. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement