Hello,
(sorry for my bad english, i use google translate)
I am currently having a problem with the vdk call script, as soon as someone sends a call to the police, the police do not receive it. I added a line in the service outlet for the police officers:
TriggerServerEvent("player:serviceOn", "police")
TriggerEvent('esx:showNotification', "Welcome ! Bonne prise de service")
In the call.lua
local callActive = false
local haveTarget = false
local work
local target = {}
Citizen.CreateThread(function()
while true do
Citizen.Wait(1)
if IsControlJustPressed(1, 56) then
local plyPos = GetEntityCoords(GetPlayerPed(-1), true)
TriggerServerEvent("call:makeCall", "police", {x=plyPos.x,y=plyPos.y,z=plyPos.z})
SendNotification("Vous avez appelé la ~b~Police~s~")
end
-- Press X key to get the call
if IsControlJustPressed(1, 73) and callActive then
TriggerServerEvent("call:getCall", work)
SendNotification("Vous avez pris l'appel")
target.blip = AddBlipForCoord(target.pos.x, target.pos.y, target.pos.z)
SetBlipRoute(target.blip, true)
haveTarget = true
callActive = false
-- Press N key to declie the call
elseif IsControlJustPressed(1, 249) and callActive then
SendNotification("Vous avez refusé l'appel")
callActive = false
end
if haveTarget then
DrawMarker(1, target.pos.x, target.pos.y, target.pos.z, 0, 0, 0, 0, 0, 0, 2.001, 2.0001, 0.5001, 0, 155, 255, 200, 0, 0, 0, 0)
local playerPos = GetEntityCoords(GetPlayerPed(-1), true)
if Vdist(target.pos.x, target.pos.y, target.pos.z, playerPos.x, playerPos.y, playerPos.z) < 2.0 then
RemoveBlip(target.blip)
haveTarget = false
end
end
end
end)
RegisterNetEvent("call:callIncoming")
AddEventHandler("call:callIncoming", function(job, pos)
callActive = true
work = job
target.pos = pos
SendNotification("Appuyez sur ~g~X~s~ pour prendre l'appel ou ~g~N~s~ pour le refuser")
end)
RegisterNetEvent("call:taken")
AddEventHandler("call:taken", function()
callActive = false
SendNotification("L'appel a été pris")
end)
RegisterNetEvent("target:call:taken")
AddEventHandler("target:call:taken", function(taken)
if taken == 1 then
SendNotification("Quelqu'un arrive !")
elseif taken == 0 then
SendNotification("Personne ne viendra, désolé...")
elseif taken == 2 then
SendNotification("Veuillez rappeler dans quelques instants")
end
end)
-- If player disconnect, remove him from the inService server table
AddEventHandler('playerDropped', function()
TriggerServerEvent("player:serviceOff", nil)
end)
function SendNotification(message)
SetNotificationTextEntry('STRING')
AddTextComponentString(message)
DrawNotification(false, false)
end
In the server.lua
RegisterServerEvent("player:serviceOn")
RegisterServerEvent("player:serviceOff")
RegisterServerEvent("call:makeCall")
RegisterServerEvent("call:getCall")
local inService = {
["police"] = {},
["medic"] = {},
["uber"] = {},
}
local callActive = {
["police"] = {taken = false},
["medic"] = {taken = false},
["uber"] = {taken = false},
}
local timing = 15000
-- Add the player to the inService table
AddEventHandler("player:serviceOn", function(job)
table.insert(inService[job], source)
end)
-- Remove the player to the inService table
AddEventHandler("player:serviceOff", function(job)
if job == nil then
for _,v in pairs(inService) do
removeService(v)
end
end
removeService(source, job)
end)
-- Receive call event
AddEventHandler("call:makeCall", function(job, pos)
-- Players can't call simultanously the same service
if callActive[job].taken then
TriggerClientEvent("target:call:taken", callActive[job].target, 2)
CancelEvent()
end
-- Save the target of the call
callActive[job].target = source
callActive[job].taken = true
-- Send notif to all players in service
for _, player in pairs(inService[job]) do
TriggerClientEvent("call:callIncoming", player, job, pos)
end
-- Say to the target after 'timing' seconds that nobody will come
SetTimeout(timing, function()
if callActive[job].taken then
TriggerClientEvent("target:call:taken", callActive[job].target, 0)
end
callActive[job].taken = false
end)
end)
AddEventHandler("call:getCall", function(job)
callActive[job].taken = false
-- Say to other in service people that the call is taken
for _, player in pairs(inService[job]) do
if player ~= source then
TriggerClientEvent("call:taken", player)
end
end
-- Say to a target that someone come
if not callActive[job].taken then
TriggerClientEvent("target:call:taken", callActive[job].target, 1)
end
end)
function removeService(player, job)
for i,val in pairs(inService[job]) do
if val == player then
table.remove(inService[job], i)
return
end
end
end
I hope, help me. thank you