105 lines
		
	
	
		
			No EOL
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			No EOL
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| ---@enum VehicleDoorIndex
 | |
| VehicleDoorIndex = {
 | |
|   FrontLeftDoor = 0,
 | |
|   FrontRightDoor = 1,
 | |
|   BackLeftDoor = 2,
 | |
|   BackRightDoor = 3,
 | |
|   Hood = 4,
 | |
|   Trunk = 5
 | |
| }
 | |
| 
 | |
| ---@enum VehicleRoofState
 | |
| VehicleRoofState = {
 | |
|      Closed = 0,
 | |
|      Closing = 1,
 | |
|      Open = 2,
 | |
|      Opening = 3,
 | |
|      Broken = 6
 | |
| };
 | |
| 
 | |
| ---@enum VehicleSeat
 | |
| VehicleSeat = {
 | |
|   Driver = -1,
 | |
|   Passenger = 0,
 | |
|   BackDriverSide = 1,
 | |
|   BackPassengerSide = 2,
 | |
| }
 | |
| 
 | |
| ---@class Vehicle
 | |
| ---@field Handle integer
 | |
| ---@field IsConvertible boolean
 | |
| ---@field RoofState integer
 | |
| ---@field Doors {Length: number, GetAll: fun(): {Index: integer, IsBroken: boolean, IsOpen: boolean}}
 | |
| ---@field Windows {AreAllIntact: boolean}
 | |
| Vehicle = {}
 | |
| Vehicle.__index = Vehicle
 | |
| 
 | |
| function Vehicle.new(vehicleHandle)
 | |
|   local self = setmetatable({}, Vehicle)
 | |
|   local metatable = {
 | |
|       __index = function(list, key)
 | |
|         if list.vehicle[key] then
 | |
|             return list.vehicle[key]()
 | |
|         else
 | |
|             return nil
 | |
|         end
 | |
|       end
 | |
|   }
 | |
|   setmetatable(self, metatable)
 | |
| 
 | |
|   self.vehicle = {}
 | |
|   self.vehicle.Handle = function ()
 | |
|     return vehicleHandle
 | |
|   end
 | |
|   self.vehicle.IsConvertible = function ()
 | |
|     return IsVehicleAConvertible(self.Handle, false)
 | |
|   end
 | |
|   self.vehicle.RoofState = function ()
 | |
|     return GetConvertibleRoofState(self.Handle)
 | |
|   end
 | |
|   
 | |
|   self.vehicle.Doors = function ()
 | |
|     return {
 | |
|       Length = GetNumberOfVehicleDoors(self.Handle),
 | |
|       GetAll = function ()
 | |
|         local doors = {}
 | |
|         for i=0, GetNumberOfVehicleDoors(self.Handle) do
 | |
|           if GetIsDoorValid(self.Handle, i) then
 | |
|             table.insert(doors, {
 | |
|               Index = i,
 | |
|               IsBroken = IsVehicleDoorDamaged(self.Handle, i),
 | |
|               IsOpen = IsVehicleDoorFullyOpen(self.Handle, i)
 | |
|             })
 | |
|           end
 | |
|         end
 | |
|         return doors
 | |
|       end
 | |
|     }
 | |
|   end
 | |
| 
 | |
|   self.vehicle.Windows = function ()
 | |
|     return {
 | |
|       AreAllIntact = AreAllVehicleWindowsIntact(self.Handle),
 | |
|       GetAllWindows = function ()
 | |
|         local windows = {}
 | |
|         for i = 0, GetNumberOfVehicleDoors(self.Handle) do
 | |
|           if GetIsDoorValid(self.Handle, i) then
 | |
|             if i ~= VehicleDoorIndex.Hood and i ~= VehicleDoorIndex.Trunk then
 | |
|               table.insert(windows, {
 | |
|                 Intact = IsVehicleWindowIntact(self.Handle, i)
 | |
|               })
 | |
|             end
 | |
|           end
 | |
|         end
 | |
| 
 | |
|         for i = 6, 7 do
 | |
|           table.insert(windows, {
 | |
|             Intact = IsVehicleWindowIntact(self.Handle, i)
 | |
|           })
 | |
|         end
 | |
|         return windows
 | |
|       end
 | |
|     }
 | |
|   end
 | |
|   return self
 | |
| end | 
