vRP = nil ESX = nil if Config.Notifications.Enabled and Config.Notifications.Framework.vRP then local Tunnel = module("vrp", "lib/Tunnel") local Proxy = module("vrp", "lib/Proxy") vRP = Proxy.getInterface("vRP") end if Config.Notifications.Enabled and Config.Notifications.Framework.ESX then ESX = exports["es_extended"]:getSharedObject() end if Config.EnablePositioningCommand then TriggerEvent('chat:addSuggestion', '/'.."findhosepositioning", "Find positioning of the hose/supply line on your fire truck") RegisterCommand("findhosepositioning", function(source, args) local ped = PlayerPedId() local targetVehicle = GetVehiclePedIsIn(ped, false) if targetVehicle == nil or targetVehicle == 0 then Notify("No vehicle found!") else local model = `p_ld_soc_ball_01` SetEntityAlpha(targetVehicle, 150, false) RequestModel(model) while not HasModelLoaded(model) do Wait(0) end local ballProp = CreateObject(model, coords, false, false, false) while not DoesEntityExist(ballProp) do Wait(0) end SetModelAsNoLongerNeeded(model) local offSet = {0.0, 0.0, 0.0} local rotation = {0.0, 0.0, 0.0} local offSetComplete = false while not offSetComplete do if targetVehicle ~= nil and targetVehicle ~= 0 then DetachEntity(ballProp, true, false) AttachEntityToEntity(ballProp, targetVehicle, -1, offSet[1], offSet[2], offSet[3], rotation[1], rotation[2], rotation[3], true, false, true, false, 1, true) if not IsControlReleased(0, 207) then --page down offSet = {offSet[1], offSet[2], offSet[3] - 0.01} end if not IsControlReleased(0, 208) then --page up offSet = {offSet[1], offSet[2], offSet[3] + 0.01} end if not IsControlReleased(0, 173) then --arrow down offSet = {offSet[1], offSet[2] - 0.01, offSet[3]} end if not IsControlReleased(0, 172) then --arrow up offSet = {offSet[1], offSet[2] + 0.01, offSet[3]} end if not IsControlReleased(0, 174) then --arrow left offSet = {offSet[1] - 0.01, offSet[2], offSet[3]} end if not IsControlReleased(0, 175) then --arrow right offSet = {offSet[1] + 0.01, offSet[2], offSet[3]} end if IsControlJustPressed(0, 191) then -- enter - finish offSetComplete = true end end Wait(0) end Notify("OffSet Values are now printed in your console") print("OffSet: {"..offSet[1]..", "..offSet[2]..", "..offSet[3].."}") DeleteEntity(ballProp) ResetEntityAlpha(targetVehicle) end end, false) end function Notify(text) if not Config.Notifications.Enabled then return end if Config.Notifications.Framework.ESX then if ESX ~= nil then ESX.ShowNotification(text) end elseif Config.Notifications.Framework.QBCore then TriggerEvent('QBCore:Notify', text, 'info') elseif Config.Notifications.Framework.QBX then exports.qbx_core:Notify(text, 'primary') elseif Config.Notifications.Framework.vRP then vRP.notify(source, {text}) elseif Config.Notifications.Framework.okok then exports['okokNotify']:Alert("Supply Line", text, 2000, 'info', true) else showBaseNotification(text) end end function showBaseNotification(message) -- Base game notifications SetNotificationTextEntry("STRING") AddTextComponentString(message) DrawNotification(0,1) end function DisplayHelpText(text) SetTextComponentFormat("STRING") AddTextComponentString(text) DisplayHelpTextFromStringLabel(0, 0, ConfigHose.Notifications.HelpTextSound, -1) end function drawInstructionalText(msg, coords) AddTextEntry('instructionalText', msg) SetFloatingHelpTextWorldPosition(1, coords.x, coords.y, coords.z) SetFloatingHelpTextStyle(1, 1, 2, -1, 3, 0) BeginTextCommandDisplayHelp('instructionalText') AddTextComponentSubstringPlayerName(msg) EndTextCommandDisplayHelp(2, false, false, -1) end function DrawTextOnScreen(text, x, y, scale, r, g, b, a, center) SetTextFont(0) SetTextProportional(1) SetTextScale(scale, scale) SetTextColour(r, g, b, a) SetTextDropshadow(0, 0, 0, 0, 255) SetTextEdge(2, 0, 0, 0, 150) SetTextDropShadow() SetTextOutline() SetTextEntry("STRING") if center then SetTextCentre(1) end AddTextComponentString(text) DrawText(x, y) end