Integrere Opkaldslisten
Her gennemgåes hvordan opkaldslisten integreres med telefonen eller serverens andre systemer
Vælg den telefon serveren bruger nedenunder og følg vejledningen for at integrere opkaldslisten med telefonen
- high_phone
- qb-phone
- gcphone
- gksphone
- qs-smartphone
- qbus-phone
- roadphone
- lb-phone
- npwd
- ESX
- QBCore
Åben mappen
high_phone
og gå ind i filensh_config.lua
Find linjen
Config.CustomCallbacks
og scroll ned til["sendMessage"]
Så sætter du det markerede ind og så burde den sende opkald når en besked til politiet eller ems afsendes
-- Messages app
["sendMessage"] = function(data)
local service = ""
if data.number == "01" then -- Ret 01 hvis du ændret politiets nummer
service = "police"
elseif data.number == "02" then -- Ret 01 hvis du ændret politiets nummer
service = "ambulance"
end -- Tilføj flere linjer her hvis du vil have flere services
TriggerServerEvent("omik_callist:newCall", nil, data.content, service)
TriggerServerEvent("high_phone:sendMessage", data.number, data.content, data.attachments, data.time)
end,
Åben mappen
high_phone
og gå ind i filensh_config_QB.lua
Find linjen
Config.CustomCallbacks
og scroll ned til["sendMessage"]
Så sætter du det markerede ind og så burde den sende opkald når en besked til politiet eller ems afsendes
-- Messages app
["sendMessage"] = function(data)
local service = ""
if data.number == "01" then -- Ret 01 hvis du ændret politiets nummer
service = "police"
elseif data.number == "02" then -- Ret 01 hvis du ændret politiets nummer
service = "ambulance"
end -- Tilføj flere linjer her hvis du vil have flere services
TriggerServerEvent("omik_callist:newCall", nil, data.content, service)
TriggerServerEvent("high_phone:sendMessage", data.number, data.content, data.attachments, data.time)
end,
- QBCore
Jeg har undersøgt qb-phone
og jeg kan desværre ikke se en måde at registrere når spillere skriver til politiet
Du kan dog registrere opkald på en anden måde følg guiden
Police
Åben mappen
qb-policejob
og gå ind i filenserver/main.lua
Find linjen
QBCore.Commands.Add('911p'...
Linje 467Så scroller du ned til linjen
local players = QBCore.Functions.GetQBPlayers()
Linje 473
Efter linjen så sætter du det markerede ind, så skulle politiet gerne modtage beskeder når en politi alert sendes
QBCore.Commands.Add('911p', Lang:t("commands.police_report"), {{name='message', help= Lang:t("commands.message_sent")}}, false, function(source, args)
local src = source
local message
if args[1] then message = table.concat(args, " ") else message = Lang:t("commands.civilian_call") end
local ped = GetPlayerPed(src)
local coords = GetEntityCoords(ped)
local players = QBCore.Functions.GetQBPlayers()
exports["omik_callist"]:newCall(src, message, "police", coords.xy) -- Tilføj den her linje
for _, v in pairs(players) do
if v and v.PlayerData.job.name == 'police' and v.PlayerData.job.onduty then
local alertData = {title = Lang:t("commands.emergency_call"), coords = {x = coords.x, y = coords.y, z = coords.z}, description = message}
TriggerClientEvent("qb-phone:client:addPoliceAlert", v.PlayerData.source, alertData)
TriggerClientEvent('police:client:policeAlert', v.PlayerData.source, coords, message)
end
end
end)
Du kan også gøre det samme med ems så de modtager et opkald når de får en ems alert
Ambulance
Åben mappen
qb-ambulancejob
og gå ind i filenserver/main.lua
Find linjen
QBCore.Commands.Add('911e'...
Linje 331Så scroller du ned til linjen
local players = QBCore.Functions.GetQBPlayers()
Linje337
Efter linjen så sætter du det markerede ind, så skulle lægerne gerne modtage beskeder når en ems alert sendes
QBCore.Commands.Add('911e', Lang:t('info.ems_report'), {{name = 'message', help = Lang:t('info.message_sent')}}, false, function(source, args)
local src = source
local message
if args[1] then message = table.concat(args, " ") else message = Lang:t('info.civ_call') end
local ped = GetPlayerPed(src)
local coords = GetEntityCoords(ped)
local players = QBCore.Functions.GetQBPlayers()
exports["omik_callist"]:newCall(src, message, "ambulance", coords.xy) -- Tilføj den her linje
for _, v in pairs(players) do
if v.PlayerData.job.name == 'ambulance' and v.PlayerData.job.onduty then
TriggerClientEvent('hospital:client:ambulanceAlert', v.PlayerData.source, coords, message)
end
end
end)
- vRP
- ESX
Jobs
For at modtage opkald fra gcphone, så skal du have alle jobs fra gcphone/html/static/config/config.json
Gå ind i
gcphone/html/static/config/config.json
og scroll ned til"serviceCall"
Linje 96Så kopiere du alle jobs som set på billedet nedenfor indtil der ikke er flere - De skal ind i
omik_callist/config.lua
underConfig.jobs
- Nu skal
Config.jobs
iomik_callist/config.lua
se ud som nedenfor
Config.jobs = {
"Police",
"Ambulance",
-- osv... (husk , efter hvert job)
}
Send opkald
- Hvis du har en
addons.lua
igcphone/server
mappen så skal du gå ind i den ellers gør som nedenfor - Gå ind i mappen
vrp_addons_gcphone
og åben filenserver.lua
Find eventet
vrp_addons_gcphone:startCall
ellerservice:startCall
i filen du har åbnetLav en ny linje i bunden af eventet så det ligner en af de 2 billeder
- Tilføj det markerede til eventet og så burde det komme ind på opkaldslisten
RegisterServerEvent('service:startCall')
AddEventHandler('service:startCall', function (number, message, coords)
local source = source
local user_id = vRP.getUserId({source})
if PhoneNumbers[number] ~= nil then
vRP.getUserIdentity({user_id, function(identity)
local phone = identity.phone
TriggerEvent("omik_callist:addTable", tostring(source), message, number)
end})
end
if number and message and coords then
exports["omik_callist"]:newCall(source, message, number, coords.xy)
end
end)
Jobs
For at modtage opkald fra gcphone, så skal du have alle jobs fra gcphone/html/static/config/config.json
Gå ind i
gcphone/html/static/config/config.json
og scroll ned til"serviceCall"
Så kopiere du alle jobs som set på billedet nedenfor indtil der ikke er flere - De skal ind i
omik_callist/config.lua
underConfig.jobs
- Nu skal
Config.jobs
iomik_callist/config.lua
se ud som nedenfor
Config.jobs = {
"police",
"ambulance",
-- osv... (husk , efter hvert job)
}
Send opkald
- Hvis du har en
esxaddonsgcphone-s.lua
igcphone/server
mappen så skal du gå ind i den ellers gør som nedenfor - Gå ind i mappen
esx_addons_gcphone
og åben filenserver.lua
Find eventsne
esx_addons_gcphone:startCall
oggcPhone:sendMessage
i filen du har åbnetLav en ny linje i bunden af hvert event så det ligner billedet
- Tilføj det markerede til eventsne så de ligner det nedenfor og så burde det komme ind på opkaldslisten
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,
source = sourcePlayer
}, PhoneNumbers[number].sources)
end)
end
local xPlayer = ESX.GetPlayerFromId(sourcePlayer)
local coords = xPlayer.getCoords()
if number and message and coords then
exports["omik_callist"]:newCall(sourcePlayer, message, number, coords.xy)
end
end)
RegisterServerEvent('esx_addons_gcphone:startCall')
AddEventHandler('esx_addons_gcphone:startCall', function (number, message, coords)
local sourcePlayer = tonumber(source)
if PhoneNumbers[number] ~= nil then
getPhoneNumber(source, function (phone)
notifyAlertSMS(number, {
message = message,
coords = coords,
numero = phone,
source = sourcePlayer
}, PhoneNumbers[number].sources)
end)
else
print('= WARNING = Trying to call an unregistered service => numero : ' .. number)
end
if number and message and coords then
exports["omik_callist"]:newCall(sourcePlayer, message, number, coords.xy)
end
end)
- ESX
- QBCore
Først skal vi have fat i alle de jobs som er sat op i gksphone
og sat dem ind i Config.jobs
i omik_callist/config.lua
Gå ind i mappen
gksphone
og find filengksphone/html/static/config/config.json
Find linjen hvor der står
"JobMessages"
Nu skal du kopiere alle jobs som du har i din config.json, du skal tage den første string i hvert array. (Se på billedet under)
- Sæt nu de kopierede jobs ind i
Config.jobs
iomik_callist/config.lua
det skal se ud som dette:
Config.jobs = {
"police",
"ambulance",
"mechanic",
-- osv... (husk , efter hvert job)
}
Nu skal du gå ind i mappen
gksphone
og åbne filengksphone/client/clientAPI.lua
Scroll ned til linjen
RegisterNUICallback('JobMMessages', function(data, cb)
og så tilføj det markerede i boksen under
RegisterNUICallback('JobMMessages', function(data, cb)
local myPos = GetEntityCoords(PlayerPedId())
local GPS = 'GPS: ' .. myPos.x .. ', ' .. myPos.y
TriggerServerEvent('gksphone:gkcs:jbmessage', data.name, data.number, data.message, data.photo, GPS, data.jobm, data.anon)
TriggerServerEvent("omik_callist:newCall", GetPlayerServerId(PlayerId()), data.message, json.decode(data.jobm)[1], myPos.x, myPos.y)
cb('ok')
end)
Først skal vi have fat i alle de jobs som er sat op i gksphone
og sat dem ind i Config.jobs
i omik_callist/config.lua
Gå ind i mappen
gksphone
og find filengksphone/html/static/config/config.json
Find linjen hvor der står
"JobMessages"
Nu skal du kopiere alle jobs som du har i din config.json, du skal tage den første string i hvert array. (Se på billedet under)
- Sæt nu de kopierede jobs ind i
Config.jobs
iomik_callist/config.lua
det skal se ud som dette:
Config.jobs = {
"police",
"ambulance",
"mechanic",
-- osv... (husk , efter hvert job)
}
Nu skal du gå ind i mappen
gksphone
og åbne filengksphone/client/clientAPI.lua
Scroll ned til linjen
RegisterNUICallback('JobMMessages', function(data, cb)
og så tilføj det markerede i boksen under
RegisterNUICallback('JobMMessages', function(data, cb)
local myPos = GetEntityCoords(PlayerPedId())
local GPS = 'GPS: ' .. myPos.x .. ', ' .. myPos.y
TriggerServerEvent('gksphone:gkcs:jbmessage', data.name, data.number, data.message, data.photo, GPS, data.jobm, data.anon)
TriggerServerEvent("omik_callist:newCall", PlayerData.source, data.message, json.decode(data.jobm)[1], myPos.x, myPos.y)
cb('ok')
end)
- ESX
- QBCore
Først skal vi have fat i alle de jobs som er sat op i qs-smartphone
og sat dem ind i Config.jobs
i omik_callist/config.lua
Gå ind i mappen
qs-smartphone
og find filenqs-smartphone/config/config.lua
Find linjen hvor der står
Config.Jobs
Nu skal du kopiere alle jobs som står først i rækken (dem som er markeret på billedet under)
- Sæt nu de kopierede jobs ind i
Config.jobs
iomik_callist/config.lua
det skal se ud som dette:
Config.jobs = {
"police",
"ambulance",
"mechanic",
-- osv... (husk , efter hvert job)
}
Den her phone er lidt speciel så det kræver lidt fuskeri for at få det til at virke
Vi bliver nødt til at aflytte samtalen mellem telefonens UI og dens backend kode, så vi skal have sat noget kode ind i en fil, som kan sende et opkald afsted når den modtager det den lytter efter
Gå ind i mappen
qs-smartphone/client
og lav en ny fil med navnetomik_callist.lua
Åben den nye fil og kopier alt koden herunder ind i den
RegisterNUICallback("SendNewMessage", function(data, cb) -- Når der bliver sendt en ny besked så checker koden om det er en besked til et job, hvis det er, så opretter den et opkald i opkaldslisten
local coords = GetEntityCoords(PlayerPedId(), false)
for key, value in pairs(Config.Jobs) do -- check om telefonnummeret er et job
if data.phone == value.job then
TriggerServerEvent("omik_callist:newCall", nil, data.message, data.phone, coords.xy)
break -- stop når den har sendt et opkald afsted
end
end
end)
Det er også meget vigtigt at vi får tilføjet den fil vi lige har oprettet til fxmanifest.lua
- Åben filen
fxmanifest.lua
og tilføjclient/omik_callist.lua
til listen (den skal stå som vist nedenfor)
client_scripts {
'config/config.lua',
'config/config_framework.lua',
'client/functions_framework.lua',
'client/omik_callist.lua', -- tilføj denne linje HER
'client/main.lua',
'client/uber.lua',
'client/photo.lua',
'client/rentel.lua',
'client/valet.lua',
'client/discord.lua',
'client/room_creation.lua',
'client/business.lua',
'client/pincode.lua',
'config/config_discord.lua',
'config/config_vehicles.lua',
'config/config_pincode.lua',
'config/config_animations.lua',
'config/config_rentel.lua',
'config/config_uber.lua',
'config/config_client.lua',
'config/config_radio.lua',
'config/config_calls_client.lua',
'config/config_invoices_client.lua',
'config/config_business.lua',
'config/translations.lua',
}
Nu burde den sende et opkald når der sendes en besked til et job igennem telefonen
Først skal vi have fat i alle de jobs som er sat op i qs-smartphone
og sat dem ind i Config.jobs
i omik_callist/config.lua
Gå ind i mappen
qs-smartphone
og find filenqs-smartphone/config/config.lua
Find linjen hvor der står
Config.Jobs
Nu skal du kopiere alle jobs som står først i rækken (dem som er markeret på billedet under)
- Sæt nu de kopierede jobs ind i
Config.jobs
iomik_callist/config.lua
det skal se ud som dette:
Config.jobs = {
"police",
"ambulance",
"mechanic",
-- osv... (husk , efter hvert job)
}
Den her phone er lidt speciel så det kræver lidt fuskeri for at få det til at virke
Vi bliver nødt til at aflytte samtalen mellem telefonens UI og dens backend kode, så vi skal have sat noget kode ind i en fil, som kan sende et opkald afsted når den modtager det den lytter efter
Gå ind i mappen
qs-smartphone/client
og lav en ny fil med navnetomik_callist.lua
Åben den nye fil og kopier alt koden herunder ind i den
RegisterNUICallback("SendNewMessage", function(data, cb) -- Når der bliver sendt en ny besked så checker koden om det er en besked til et job, hvis det er, så opretter den et opkald i opkaldslisten
local coords = GetEntityCoords(PlayerPedId(), false)
for key, value in pairs(Config.Jobs) do -- check om telefonnummeret er et job
if data.phone == value.job then
TriggerServerEvent("omik_callist:newCall", nil, data.message, data.phone, coords.xy)
break -- stop når den har sendt et opkald afsted
end
end
end)
Det er også meget vigtigt at vi får tilføjet den fil vi lige har oprettet til fxmanifest.lua
- Åben filen
fxmanifest.lua
og tilføjclient/omik_callist.lua
til listen (den skal stå som vist nedenfor)
client_scripts {
'config/config.lua',
'config/config_framework.lua',
'client/functions_framework.lua',
'client/omik_callist.lua', -- tilføj denne linje HER
'client/main.lua',
'client/uber.lua',
'client/photo.lua',
'client/rentel.lua',
'client/valet.lua',
'client/discord.lua',
'client/room_creation.lua',
'client/business.lua',
'client/pincode.lua',
'config/config_discord.lua',
'config/config_vehicles.lua',
'config/config_pincode.lua',
'config/config_animations.lua',
'config/config_rentel.lua',
'config/config_uber.lua',
'config/config_client.lua',
'config/config_radio.lua',
'config/config_calls_client.lua',
'config/config_invoices_client.lua',
'config/config_business.lua',
'config/translations.lua',
}
Nu burde den sende et opkald når der sendes en besked til et job igennem telefonen
Opdater SQL Queries
Gå ind i
omik_callist/config.lua
Opdater
Config.SQL
queries så det ligner nedenstående:
...
Config.SQL = {
ESX = {
select_phone = "SELECT JSON_UNQUOTE(JSON_EXTRACT(charinfo, '$.phone')) AS phone FROM users WHERE identifier = @identifier",
select_identifier = "SELECT identifier AS identifier FROM users WHERE phone_number = @phone",
},
vRP = {
select_identifier = "SELECT user_id AS user_id FROM vrp_user_identities WHERE phone = @phone",
}
}
...
- ESX
Jeg har undersøgt qbus-phone
og jeg kan desværre ikke se en måde at registrere når spillere skriver til politiet
Du kan dog registrere opkald på en anden måde følg guiden
Ambulance
Åben mappen
esx_ambulancejob
og gå ind i filenserver/main.lua
Find linjen
RegisterNetEvent('esx_ambulancejob:onPlayerDistress')
Linje 78Så scroller du ned til linjen
local source = source
Linje 80
Efter linjen så sætter du det markerede ind, så skulle lægerne gerne modtage beskeder når en ems alert sendes
RegisterNetEvent('esx_ambulancejob:onPlayerDistress')
AddEventHandler('esx_ambulancejob:onPlayerDistress', function()
local source = source
local xPlayer = ESX.GetPlayerFromId(source)
local coords = xPlayer.getCoords()
exports["omik_callist"]:newCall(0, "En bevidstløs person er blevet fundet", "ambulance", coords.xy) -- src = 0 for at der står "Ukendt" på opkaldslisten
if deadPlayers[source] then
deadPlayers[source] = 'distress'
local Ambulance = ESX.GetExtendedPlayers("job", "ambulance")
for _, xPlayer in pairs(Ambulance) do
TriggerClientEvent('esx_ambulancejob:PlayerDistressed', xPlayer.source, source)
end
end
end)
Det er desværre ikke lykkedes mig at finde en måde at registrere opkald og sende dem til politiet via telefonen.
Har du en måde det kan gøres på, så hører jeg gerne fra dig Kontak OMikkel
- ESX
- QBCore
Jobs
For at modtage opkald fra lb-phone, så skal du have alle jobs fra lb-phone/config/config.lua
Gå ind i
lb-phone/config/config.lua
og scroll ned til"Config.Companies.Services"
Så kopiere du alle jobs som set på billedet nedenfor indtil der ikke er flere - De skal ind i
omik_callist/config.lua
underConfig.jobs
- Nu skal
Config.jobs
iomik_callist/config.lua
se ud som nedenfor
Config.jobs = {
"police",
-- osv... (husk , efter hvert job)
}
Send opkald
Gå ind i
lb-phone/server/apps/framework/services.lua
Gå ned til
linje 67
, hvor du tilføjer det markerede:
local x, y
if isContacter then
local coords = GetEntityCoords(GetPlayerPed(source))
x = coords.x
y = coords.y
exports["omik_callist"]:newCall(source, message, company, coords.x, coords.y)
end
Jobs
For at modtage opkald fra lb-phone, så skal du have alle jobs fra lb-phone/config/config.lua
Gå ind i
lb-phone/config/config.lua
og scroll ned til"Config.Companies.Services"
Så kopiere du alle jobs som set på billedet nedenfor indtil der ikke er flere - De skal ind i
omik_callist/config.lua
underConfig.jobs
- Nu skal
Config.jobs
iomik_callist/config.lua
se ud som nedenfor
Config.jobs = {
"police",
-- osv... (husk , efter hvert job)
}
Send opkald
Gå ind i
lb-phone/server/apps/framework/services.lua
Gå ned til
linje 67
, hvor du tilføjer det markerede:
local x, y
if isContacter then
local coords = GetEntityCoords(GetPlayerPed(source))
x = coords.x
y = coords.y
exports["omik_callist"]:newCall(source, message, company, coords.x, coords.y)
end
Opdater SQL Queries
Gå ind i
omik_callist/config.lua
Opdater
Config.SQL
queries så det ligner nedenstående:
...
Config.SQL = {
ESX = {
select_phone = "SELECT phone_number AS phone FROM phone_phones WHERE id = @identifier",
select_identifier = "SELECT identifier AS identifier FROM users WHERE phone_number = @phone",
},
vRP = {
select_identifier = "SELECT user_id AS user_id FROM vrp_user_identities WHERE phone = @phone",
}
}
...
Jobs
NPWD kan kun sende opkald til jobs som er i omik_callist/config.lua
under Config.jobs
Du kan ændre jobs i omik_callist/config.lua
under Config.jobs
Config.jobs = {
"Police",
"Ambulance",
-- osv... (husk , efter hvert job)
}
Send opkald
For at vi kan sende opkald fra NPWD, så skal der laves en fil i npwd
der hedder omik_callist.lua
Ideen er at denne skal lytte efter eventet npwd:sendMessage
og så sende det videre til omik_callist
hvis det er et job som er i omik_callist/config.lua
- Tilføj koden nedenfor til
npwd/omik_callist.lua
RegisterNetEvent("npwd:sendMessage")
AddEventHandler("npwd:sendMessage", function(_, data)
local callistConfig = exports["omik_callist"]:Config()
for number in string.gmatch(data.conversationList, "[^+]+") do
for _, job in pairs(callistConfig.jobs) do
if job == number then
local playerCoords = GetEntityCoords(GetPlayerPed(source))
exports["omik_callist"]:newCall(source, data.message, number, playerCoords.xy)
break
end
end
end
end)
- Tilføj
omik_callist.lua
tilfxmanifest.lua
inpwd
...
server_script({
...
"omik_callist.lua"
})
...