57 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
local isInVehicle = false
 | 
						|
local isEnteringVehicle = false
 | 
						|
local currentVehicle = 0
 | 
						|
local currentSeat = 0
 | 
						|
 | 
						|
Citizen.CreateThread(function()
 | 
						|
	while true do
 | 
						|
		Citizen.Wait(0)
 | 
						|
 | 
						|
		local ped = PlayerPedId()
 | 
						|
 | 
						|
		if not isInVehicle and not IsPlayerDead(PlayerId()) then
 | 
						|
			if DoesEntityExist(GetVehiclePedIsTryingToEnter(ped)) and not isEnteringVehicle then
 | 
						|
				-- trying to enter a vehicle!
 | 
						|
				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
 | 
						|
				-- vehicle entering aborted
 | 
						|
				TriggerServerEvent('baseevents:enteringAborted')
 | 
						|
				isEnteringVehicle = false
 | 
						|
			elseif IsPedInAnyVehicle(ped, false) then
 | 
						|
				-- suddenly appeared in a vehicle, possible teleport
 | 
						|
				isEnteringVehicle = false
 | 
						|
				isInVehicle = true
 | 
						|
				currentVehicle = GetVehiclePedIsUsing(ped)
 | 
						|
				currentSeat = GetPedVehicleSeat(ped)
 | 
						|
				local model = GetEntityModel(currentVehicle)
 | 
						|
				local name = GetDisplayNameFromVehicleModel()
 | 
						|
				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
 | 
						|
				-- bye, vehicle
 | 
						|
				local model = GetEntityModel(currentVehicle)
 | 
						|
				local name = GetDisplayNameFromVehicleModel()
 | 
						|
				local netId = VehToNet(currentVehicle)
 | 
						|
				TriggerServerEvent('baseevents:leftVehicle', currentVehicle, currentSeat, GetDisplayNameFromVehicleModel(GetEntityModel(currentVehicle)), netId)
 | 
						|
				isInVehicle = false
 | 
						|
				currentVehicle = 0
 | 
						|
				currentSeat = 0
 | 
						|
			end
 | 
						|
		end
 | 
						|
		Citizen.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
 |