From dd9af3f7ea533818a20d96855ca5b296d46c006a Mon Sep 17 00:00:00 2001 From: Cocodrulo <142546774+Cocodrulo@users.noreply.github.com> Date: Sat, 20 Sep 2025 20:00:47 +0100 Subject: [PATCH] Add baseevents fallback for vehicle event triggers Implements client-side detection and server event triggers for entering, aborting, entering, and leaving vehicles when the 'baseevents' resource is not started. This ensures vehicle-related events are still handled even if the baseevents resource is unavailable. --- client/events.lua | 49 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/client/events.lua b/client/events.lua index f08e0195e..52d7ceb95 100644 --- a/client/events.lua +++ b/client/events.lua @@ -277,3 +277,52 @@ end) RegisterNetEvent('QBCore:Client:SharedUpdate', function(table) QBCore.Shared = table end) + +if GetResourceState('baseevents') ~= 'started' then + local isInVehicle = false + local isEnteringVehicle = false + local currentVehicle = 0 + local currentSeat = 0 + + CreateThread(function() + while true do + local ped = PlayerPedId() + if not isInVehicle and not IsPlayerDead(PlayerId()) then + if DoesEntityExist(GetVehiclePedIsTryingToEnter(ped)) and not isEnteringVehicle then + local vehicle = GetVehiclePedIsTryingToEnter(ped) + local seat = GetSeatPedIsTryingToEnter(ped) + local netId = VehToNet(vehicle) + isEnteringVehicle = true + TriggerServerEvent('baseevents:enteringVehicle', vehicle, seat, GetDisplayNameFromVehicleModel(GetEntityModel(vehicle)), netId) + elseif not DoesEntityExist(GetVehiclePedIsTryingToEnter(ped)) and not IsPedInAnyVehicle(ped, true) and isEnteringVehicle then + TriggerServerEvent('baseevents:enteringAborted') + isEnteringVehicle = false + elseif IsPedInAnyVehicle(ped, false) then + isEnteringVehicle = false + isInVehicle = true + currentVehicle = GetVehiclePedIsUsing(ped) + currentSeat = GetPedVehicleSeat(ped) + local netId = VehToNet(currentVehicle) + TriggerServerEvent('baseevents:enteredVehicle', currentVehicle, currentSeat, GetDisplayNameFromVehicleModel(GetEntityModel(currentVehicle)), netId) + end + elseif isInVehicle then + if not IsPedInAnyVehicle(ped, false) or IsPlayerDead(PlayerId()) then + local netId = VehToNet(currentVehicle) + TriggerServerEvent('baseevents:leftVehicle', currentVehicle, currentSeat, GetDisplayNameFromVehicleModel(GetEntityModel(currentVehicle)), netId) + isInVehicle = false + currentVehicle = 0 + currentSeat = 0 + end + end + Wait(50) + end + end) + + function GetPedVehicleSeat(ped) + local vehicle = GetVehiclePedIsIn(ped, false) + for i=-2,GetVehicleMaxNumberOfPassengers(vehicle) do + if(GetPedInVehicleSeat(vehicle, i) == ped) then return i end + end + return -2 + end +end