Scripts/resources/[ps]/ps-dispatch/client/cl_commands.lua

240 lines
9.9 KiB
Lua
Raw Permalink Normal View History

2024-12-29 20:28:24 +00:00
local playAnim = false
local phoneProp = 0
local phoneModel = Config.PhoneModel
-- Item checks to return whether or not the client has a phone or not
local function HasPhone()
return QBCore.Functions.HasItem("phone")
end
-- Loads the animdict so we can execute it on the ped
local function loadAnimDict(dict)
RequestAnimDict(dict)
while not HasAnimDictLoaded(dict) do
Wait(0)
end
end
local function DeletePhone()
if phoneProp ~= 0 then
DeleteObject(phoneProp)
phoneProp = 0
end
end
local function NewPropWhoDis()
DeletePhone()
RequestModel(phoneModel)
while not HasModelLoaded(phoneModel) do
Wait(1)
end
phoneProp = CreateObject(phoneModel, 1.0, 1.0, 1.0, 1, 1, 0)
local bone = GetPedBoneIndex(PlayerPedId(), 28422)
if phoneModel == Config.PhoneModel then
AttachEntityToEntity(phoneProp, PlayerPedId(), bone, 0.0, 0.0, 0.0, 15.0, 0.0, 0.0, 1, 1, 0, 0, 2, 1)
else
AttachEntityToEntity(phoneProp, PlayerPedId(), bone, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 1, 0, 0, 2, 1)
end
end
-- Does the actual animation of the animation when calling 911
local function PhoneCallAnim()
loadAnimDict("cellphone@")
local ped = PlayerPedId()
CreateThread(function()
NewPropWhoDis()
playAnim = true
while playAnim do
if not IsEntityPlayingAnim(ped, "cellphone@", 'cellphone_text_to_call', 3) then
TaskPlayAnim(ped, "cellphone@", 'cellphone_text_to_call', 3.0, 3.0, -1, 50, 0, false, false, false)
end
Wait(100)
end
end)
end
-- Regular 911 call that goes straight to the Police
RegisterCommand('114', function(source, args, rawCommand)
local msg = rawCommand:sub(5)
if string.len(msg) > 0 then
if not exports['qb-policejob']:IsHandcuffed() then
if HasPhone() then
PhoneCallAnim()
Wait(math.random(3,8) * 1000)
playAnim = false
local plyData = QBCore.Functions.GetPlayerData()
local currentPos = GetEntityCoords(PlayerPedId())
local locationInfo = getStreetandZone(currentPos)
local gender = GetPedGender()
TriggerServerEvent("dispatch:server:notify",{
dispatchcodename = "114call", -- has to match the codes in sv_dispatchcodes.lua so that it generates the right blip
dispatchCode = "114",
firstStreet = locationInfo,
priority = 2, -- priority
name = plyData.charinfo.firstname:sub(1,1):upper()..plyData.charinfo.firstname:sub(2).. " ".. plyData.charinfo.lastname:sub(1,1):upper()..plyData.charinfo.lastname:sub(2),
number = plyData.charinfo.phone,
origin = {
x = currentPos.x,
y = currentPos.y,
z = currentPos.z
},
dispatchMessage = "Ingående opkald", -- message
information = msg,
job = {"police", "ambulance"} -- jobs that will get the alerts
})
Wait(1000)
DeletePhone()
StopEntityAnim(PlayerPedId(), 'cellphone_text_to_call', "cellphone@", 3)
else
QBCore.Functions.Notify("Du kan ikke ringe uden en telefon!", "error", 4500)
end
else
QBCore.Functions.Notify("Du kan ikke ringe når du er i håndjern..", "error", 4500)
end
else
QBCore.Functions.Notify('Angiv en årsag efter 114', "success")
end
end, false)
RegisterCommand('114a', function(source, args, rawCommand)
local msg = rawCommand:sub(5)
if string.len(msg) > 0 then
if not exports['qb-policejob']:IsHandcuffed() then
if HasPhone() then
PhoneCallAnim()
Wait(math.random(3,8) * 1000)
playAnim = false
local plyData = QBCore.Functions.GetPlayerData()
local currentPos = GetEntityCoords(PlayerPedId())
local locationInfo = getStreetandZone(currentPos)
local gender = GetPedGender()
TriggerServerEvent("dispatch:server:notify",{
dispatchcodename = "114call", -- has to match the codes in sv_dispatchcodes.lua so that it generates the right blip
dispatchCode = "114",
firstStreet = locationInfo,
priority = 2, -- priority
name = "Anonym",
number = "Skjult Nummer",
origin = {
x = currentPos.x,
y = currentPos.y,
z = currentPos.z
},
dispatchMessage = "Ingående anonymt opkald", -- message
information = msg,
job = {"police", "ambulance"} -- jobs that will get the alerts
})
Wait(1000)
DeletePhone()
StopEntityAnim(PlayerPedId(), 'cellphone_text_to_call', "cellphone@", 3)
else
QBCore.Functions.Notify("Du kan ikke ringe uden en telefon!", "error", 4500)
end
else
QBCore.Functions.Notify("Du kan ikke ringe når du er i håndjern..", "error", 4500)
end
else
QBCore.Functions.Notify('Angiv en årsag efter 114', "success")
end
end, false)
-- Regular 311 call that goes straight to the Police
RegisterCommand('112', function(source, args, rawCommand)
local msg = rawCommand:sub(5)
if string.len(msg) > 0 then
if not exports['qb-policejob']:IsHandcuffed() then
if HasPhone() then
PhoneCallAnim()
Wait(math.random(3,8) * 1000)
playAnim = false
local plyData = QBCore.Functions.GetPlayerData()
local currentPos = GetEntityCoords(PlayerPedId())
local locationInfo = getStreetandZone(currentPos)
local gender = GetPedGender()
TriggerServerEvent("dispatch:server:notify",{
dispatchcodename = "112call", -- has to match the codes in sv_dispatchcodes.lua so that it generates the right blip
dispatchCode = "112",
firstStreet = locationInfo,
priority = 2, -- priority
name = plyData.charinfo.firstname:sub(1,1):upper()..plyData.charinfo.firstname:sub(2).. " ".. plyData.charinfo.lastname:sub(1,1):upper()..plyData.charinfo.lastname:sub(2),
number = plyData.charinfo.phone,
origin = {
x = currentPos.x,
y = currentPos.y,
z = currentPos.z
},
dispatchMessage = "Ingående opkald", -- message
information = msg,
job = {"police", "ambulance"} -- jobs that will get the alerts
})
Wait(1000)
DeletePhone()
StopEntityAnim(PlayerPedId(), 'cellphone_text_to_call', "cellphone@", 3)
else
QBCore.Functions.Notify("Du kan ikke ringe uden en telefon!", "error", 4500)
end
else
QBCore.Functions.Notify("Du kan ikke ringe når du er i håndjern..", "error", 4500)
end
else
QBCore.Functions.Notify('Angiv en årsag efter 112', "success")
end
end, false)
-- Regular 311 call that goes straight to the Police
RegisterCommand('112a', function(source, args, rawCommand)
local msg = rawCommand:sub(5)
if string.len(msg) > 0 then
if not exports['qb-policejob']:IsHandcuffed() then
if HasPhone() then
PhoneCallAnim()
Wait(math.random(3,8) * 1000)
playAnim = false
local plyData = QBCore.Functions.GetPlayerData()
local currentPos = GetEntityCoords(PlayerPedId())
local locationInfo = getStreetandZone(currentPos)
local gender = GetPedGender()
TriggerServerEvent("dispatch:server:notify",{
dispatchcodename = "112call", -- has to match the codes in sv_dispatchcodes.lua so that it generates the right blip
dispatchCode = "112",
firstStreet = locationInfo,
priority = 2, -- priority
name = "Anonym",
number = "Skjult Nummer",
origin = {
x = currentPos.x,
y = currentPos.y,
z = currentPos.z
},
dispatchMessage = "Ingående anonymt opkald", -- message
information = msg,
job = {"police", "ambulance"} -- jobs that will get the alerts
})
Wait(1000)
DeletePhone()
StopEntityAnim(PlayerPedId(), 'cellphone_text_to_call', "cellphone@", 3)
else
QBCore.Functions.Notify("Du kan ikke ringe uden en telefon!", "error", 4500)
end
else
QBCore.Functions.Notify("Du kan ikke ringe når du er i håndjern..", "error", 4500)
end
else
QBCore.Functions.Notify('Angiv en årsag efter 112a', "success")
end
end, false)
Citizen.CreateThread(function()
TriggerEvent('chat:addSuggestion', '/114', 'Send en besked til politiet.', {{ name="besked", help="Besked til politiet."}})
TriggerEvent('chat:addSuggestion', '/114a', 'Send en anonym besked til politiet.', {{ name="besked", help="Anonym besked til politiet."}})
TriggerEvent('chat:addSuggestion', '/112', 'Send en besked til EMS.', {{ name="besked", help="Besked til EMS."}})
TriggerEvent('chat:addSuggestion', '/112a', 'Send en anonym besked til EMS.', {{ name="besked", help="Anonym besked til EMS."}})
end)