UNPKG

@nativewrappers/fivem

Version:

Native wrappers and utilities for use with FiveM.

597 lines (596 loc) 16.4 kB
var __defProp = Object.defineProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); import { ClassTypes } from "../common/utils/ClassTypes"; import { Vector3 } from "../common/utils/Vector"; import { GameConstants } from "../GameConstants"; import { VehicleRoofState, VehicleSeat } from "../enums/Vehicle"; import { GetEntityClassFromId } from "../utils/GetEntityFromEntityIds"; import { BaseEntity } from "./BaseEntity"; import { EntityBoneCollection } from "./EntityBoneCollection"; import { Ped } from "./Ped"; import { VehicleDoorCollection } from "./VehicleDoorCollection"; import { VehicleModCollection } from "./VehicleModCollection"; import { VehicleWheelCollection } from "./VehicleWheelCollection"; import { VehicleWindowCollection } from "./VehicleWindowCollection"; class Vehicle extends BaseEntity { static { __name(this, "Vehicle"); } static getModelDisplayName(vehicleModel) { return GetDisplayNameFromVehicleModel(vehicleModel.Hash); } static getModelClass(vehicleModel) { return GetVehicleClassFromName(vehicleModel.Hash); } static getClassDisplayName(vehicleClass) { return `VEH_CLASS_${vehicleClass}`; } static exists(vehicle) { return typeof vehicle !== "undefined" && vehicle.exists(); } static fromHandle(handle) { if (handle === 0 || !DoesEntityExist(handle)) { return null; } return new Vehicle(handle); } static fromNetworkId(networkId) { if (!NetworkDoesEntityExistWithNetworkId(networkId)) { return null; } return new Vehicle(NetworkGetEntityFromNetworkId(networkId)); } _doors; _mods; _wheels; _windows; type = ClassTypes.Vehicle; bones; constructor(handle) { super(handle); } get Bones() { if (!this.bones) { this.bones = new EntityBoneCollection(this); } return this.bones; } exists() { return super.exists() && GetEntityType(this.handle) === 2; } get DisplayName() { return Vehicle.getModelDisplayName(this.Model); } get ClassDisplayName() { return Vehicle.getClassDisplayName(this.ClassType); } get NumberPlate() { return GetVehicleNumberPlateText(this.handle); } set NumberPlate(value) { SetVehicleNumberPlateText(this.handle, value.substring(0, 8)); } get ClassType() { return GetVehicleClass(this.handle); } get BodyHealth() { return GetVehicleBodyHealth(this.handle); } set BodyHealth(value) { SetVehicleBodyHealth(this.handle, value); } get EngineHealth() { return GetVehicleEngineHealth(this.handle); } set EngineHealth(value) { SetVehicleEngineHealth(this.handle, value); } get PetrolTankHealth() { return GetVehiclePetrolTankHealth(this.handle); } set PetrolTankHealth(value) { SetVehiclePetrolTankHealth(this.handle, value); } get FuelLevel() { return GetVehicleFuelLevel(this.handle); } set FuelLevel(value) { SetVehicleFuelLevel(this.handle, value); } get OilLevel() { return GetVehicleOilLevel(this.handle); } set OilLevel(value) { SetVehicleOilLevel(this.handle, value); } get Gravity() { return GetVehicleGravityAmount(this.handle); } set Gravity(value) { SetVehicleGravityAmount(this.handle, value); } get IsEngineRunning() { return GetIsVehicleEngineRunning(this.handle); } set IsEngineRunning(value) { SetVehicleEngineOn(this.handle, value, true, true); } get IsEngineStarting() { return IsVehicleEngineStarting(this.handle); } set IsEngineStarting(value) { if ((this.IsEngineStarting || this.IsEngineRunning) && value) { return; } SetVehicleEngineOn(this.handle, value, !value, true); } get IsRadioEnabled() { if (GameConstants.Player.Character.isInVehicle(this)) { return IsPlayerVehicleRadioEnabled(); } return false; } set IsRadioEnabled(value) { SetVehicleRadioEnabled(this.handle, value); } set RadioStation(value) { this.IsRadioEnabled = true; SetVehRadioStation(this.handle, value); } set Speed(value) { if (this.Model.IsTrain) { SetTrainSpeed(this.handle, value); SetTrainCruiseSpeed(this.handle, value); } else { SetVehicleForwardSpeed(this.handle, value); } } get WheelSpeed() { return GetVehicleDashboardSpeed(this.handle); } get EstimatedMaxSpeed() { return GetVehicleEstimatedMaxSpeed(this.handle); } get Acceleration() { return GetVehicleCurrentAcceleration(this.handle); } get CurrentRPM() { return GetVehicleCurrentRpm(this.handle); } set CurrentRPM(value) { SetVehicleCurrentRpm(this.handle, value); } get HighGear() { return GetVehicleHighGear(this.handle); } set HighGear(value) { SetVehicleHighGear(this.handle, value); } get CurrentGear() { return GetVehicleCurrentGear(this.handle); } get SteeringAngle() { return GetVehicleSteeringAngle(this.handle); } set SteeringAngle(value) { SetVehicleSteeringAngle(this.handle, value); } get SteeringScale() { return GetVehicleSteeringScale(this.handle); } set SteeringScale(value) { SetVehicleSteeringScale(this.handle, value); } get IsAlarmSet() { return IsVehicleAlarmSet(this.handle); } set IsAlarmSet(value) { SetVehicleAlarm(this.handle, value); } get IsAlarmSounding() { return IsVehicleAlarmActivated(this.handle); } get AlarmTimeLeft() { return GetVehicleAlarmTimeLeft(this.handle); } set AlarmTimeLeft(value) { SetVehicleAlarmTimeLeft(this.handle, value); } startAlarm() { StartVehicleAlarm(this.handle); } get IsSirenActive() { return IsVehicleSirenOn(this.handle); } set IsSirenActive(value) { SetVehicleSiren(this.handle, value); } set HasMutedSirens(value) { SetVehicleHasMutedSirens(this.handle, value); } soundHorn(duration, mode = GetHashKey("HELDDOWN")) { StartVehicleHorn(this.handle, duration, mode, false); } get IsWanted() { return IsVehicleWanted(this.handle); } set IsWanted(value) { SetVehicleIsWanted(this.handle, value); } set ProvidesCover(value) { SetVehicleProvidesCover(this.handle, value); } set DropsMoneyOnExplosion(value) { SetVehicleCreatesMoneyPickupsWhenExploded(this.handle, value); } get PreviouslyOwnedByPlayer() { return IsVehiclePreviouslyOwnedByPlayer(this.handle); } set PreviouslyOwnedByPlayer(value) { SetVehicleHasBeenOwnedByPlayer(this.handle, value); } get NeedsToBeHotwired() { return IsVehicleNeedsToBeHotwired(this.handle); } set NeedsToBeHotwired(value) { SetVehicleNeedsToBeHotwired(this.handle, value); } get AreLightsOn() { return GetVehicleLightsState(this.handle)[0]; } set AreLightsOn(value) { SetVehicleLights(this.handle, value ? 3 : 4); } get AreHighBeamsOn() { return GetVehicleLightsState(this.handle)[1]; } set AreHighBeamsOn(value) { SetVehicleFullbeam(this.handle, value); } get IsInteriorLightOn() { return IsVehicleInteriorLightOn(this.handle); } set IsInteriorLightOn(value) { SetVehicleInteriorlight(this.handle, value); } get IsSearchLightOn() { return IsVehicleSearchlightOn(this.handle); } set IsSearchLightOn(value) { SetVehicleSearchlight(this.handle, value, false); } get IsTaxiLightOn() { return IsTaxiLightOn(this.handle); } set IsTaxiLightOn(value) { SetTaxiLights(this.handle, value); } get IsLeftIndicatorLightOn() { const val = GetVehicleIndicatorLights(this.handle); return val === 1 || val === 3; } set IsLeftIndicatorLightOn(value) { SetVehicleIndicatorLights(this.handle, 1, value); } get IsRightIndicatorLightOn() { return GetVehicleIndicatorLights(this.handle) >= 2; } set IsRightIndicatorLightOn(value) { SetVehicleIndicatorLights(this.handle, 0, value); } get IsHandbrakeForcedOn() { return GetVehicleHandbrake(this.handle); } set IsHandbrakeForcedOn(value) { SetVehicleHandbrake(this.handle, value); } set AreBrakeLightsOn(value) { SetVehicleBrakeLights(this.handle, value); } set LightsMultiplier(value) { SetVehicleLightMultiplier(this.handle, value); } set CanBeVisiblyDamaged(value) { SetVehicleCanBeVisiblyDamaged(this.handle, value); } set Strong(toggle) { SetVehicleStrong(this.handle, toggle); } set CanBreak(toggle) { SetVehicleCanBreak(this.handle, toggle); } get IsDamaged() { return IsVehicleDamaged(this.handle); } get IsDriveable() { return IsVehicleDriveable(this.handle, false); } set IsDriveable(value) { SetVehicleUndriveable(this.handle, !value); } get IsEngineOnFire() { return IsVehicleEngineOnFire(this.handle); } get HasRoof() { return DoesVehicleHaveRoof(this.handle); } get IsLeftHeadLightBroken() { return GetIsLeftVehicleHeadlightDamaged(this.handle); } get IsRightHeadLightBroken() { return GetIsRightVehicleHeadlightDamaged(this.handle); } get IsRearBumperBrokenOff() { return IsVehicleBumperBrokenOff(this.handle, false); } get IsFrontBumperBrokenOff() { return IsVehicleBumperBrokenOff(this.handle, true); } set IsAxlesStrong(value) { SetVehicleHasStrongAxles(this.handle, value); } set CanEngineDegrade(value) { SetVehicleEngineCanDegrade(this.handle, value); } set EnginePowerMultiplier(value) { SetVehicleEnginePowerMultiplier(this.handle, value); } set EngineTorqueMultiplier(value) { SetVehicleEngineTorqueMultiplier(this.handle, value); } get LandingGearState() { return GetLandingGearState(this.handle); } set LandingGearState(value) { SetVehicleLandingGear(this.handle, value); } get RoofState() { return GetConvertibleRoofState(this.handle); } set RoofState(value) { switch (value) { case VehicleRoofState.Closed: RaiseConvertibleRoof(this.handle, true); RaiseConvertibleRoof(this.handle, false); break; case VehicleRoofState.Closing: RaiseConvertibleRoof(this.handle, false); break; case VehicleRoofState.Opened: LowerConvertibleRoof(this.handle, true); LowerConvertibleRoof(this.handle, false); break; case VehicleRoofState.Opening: LowerConvertibleRoof(this.handle, false); break; } } get LockStatus() { return GetVehicleDoorLockStatus(this.handle); } set LockStatus(value) { SetVehicleDoorsLocked(this.handle, value); } get MaxBraking() { return GetVehicleMaxBraking(this.handle); } get MaxTraction() { return GetVehicleMaxTraction(this.handle); } get IsOnAllWheels() { return IsVehicleOnAllWheels(this.handle); } get IsStopped() { return IsVehicleStopped(this.handle); } get IsStoppedAtTrafficLights() { return IsVehicleStoppedAtTrafficLights(this.handle); } get IsStolen() { return IsVehicleStolen(this.handle); } set IsStolen(value) { SetVehicleIsStolen(this.handle, value); } get IsConvertible() { return IsVehicleAConvertible(this.handle, false); } set IsBurnoutForced(value) { SetVehicleBurnout(this.handle, value); } get IsInBurnout() { return IsVehicleInBurnout(this.handle); } get Driver() { return this.getPedOnSeat(VehicleSeat.Driver); } // while ghosted use entity index, it doesn't look like you can ghost // anything but players and vehicles get Ghosted() { return IsEntityGhostedToLocalPlayer(this.handle); } set GhostedForGhostPlayers(isGhostedForGhostPlayers) { NetworkSetEntityGhostedWithOwner(this.handle, isGhostedForGhostPlayers); } set Ghosted(isGhosted) { SetNetworkVehicleAsGhost(this.Handle, isGhosted); } static set GhostAlpha(alpha) { SetGhostedEntityAlpha(alpha); } get IsInGhostCollision() { return N_0x7ef7649b64d7ff10(this.handle); } static resetGhostAlpha() { ResetGhostedEntityAlpha(); } get Occupants() { const driver = this.Driver; if (driver === null) { return this.Passengers; } return [driver, ...this.Passengers]; } get Passengers() { const passengerCount = this.PassengerCount; if (passengerCount === 0) { return []; } const result = []; for (let i = 0; i < this.PassengerCapacity; i++) { if (!this.isSeatFree(i)) { result.push(this.getPedOnSeat(i)); if (result.length === passengerCount) { break; } } } return result; } get Doors() { if (!this._doors) { this._doors = new VehicleDoorCollection(this); } return this._doors; } get Mods() { if (!this._mods) { this._mods = new VehicleModCollection(this); } return this._mods; } get Wheels() { if (!this._wheels) { this._wheels = new VehicleWheelCollection(this); } return this._wheels; } get Windows() { if (!this._windows) { this._windows = new VehicleWindowCollection(this); } return this._windows; } extraExists(extra) { return DoesExtraExist(this.handle, extra); } isExtraOn(extra) { return this.extraExists(extra) ? IsVehicleExtraTurnedOn(this.handle, extra) : false; } toggleExtra(extra, toggle) { if (this.extraExists(extra)) { SetVehicleExtra(this.handle, extra, !toggle); } } getPedOnSeat(seat) { return Ped.fromHandle(GetPedInVehicleSeat(this.handle, seat)); } isSeatFree(seat) { return IsVehicleSeatFree(this.handle, seat); } wash() { this.DirtLevel = 0; } get DirtLevel() { return GetVehicleDirtLevel(this.handle); } set DirtLevel(value) { SetVehicleDirtLevel(this.handle, value); } placeOnGround() { SetVehicleOnGroundProperly(this.handle); } repair() { SetVehicleFixed(this.handle); } explode() { ExplodeVehicle(this.handle, true, false); } explodeNetworked() { NetworkExplodeVehicle(this.handle, true, false, false); } get CanTiresBurst() { return GetVehicleTyresCanBurst(this.handle); } set CanTiresBurst(value) { SetVehicleTyresCanBurst(this.handle, value); } set CanWheelsBreak(value) { SetVehicleWheelsCanBreak(this.handle, value); } set CanDeformWheels(value) { SetVehicleCanDeformWheels(this.handle, value); } get HasBombBay() { return this.Bones ? this.Bones.hasBone("door_hatch_1") && this.Bones.hasBone("door_hatch_r") : false; } openBombBay() { if (this.HasBombBay) { OpenBombBayDoors(this.handle); } } closeBombBay() { if (this.HasBombBay) { CloseBombBayDoors(this.handle); } } setHeliYawPitchRollMult(mult) { if (this.Model.IsHelicopter && mult >= 0 && mult <= 1) { SetHelicopterRollPitchYawMult(this.handle, mult); } } set TowingCraneRaisedAmount(value) { SetTowTruckCraneHeight(this.handle, value); } get TowedVehicle() { return new Vehicle(GetEntityAttachedToTowTruck(this.handle)); } towVehicle(vehicle, rear) { AttachVehicleToTowTruck(this.handle, vehicle.Handle, rear, 0, 0, 0); } detachFromTowTruck() { DetachVehicleFromAnyTowTruck(this.handle); } detachTowedVehicle() { const vehicle = this.TowedVehicle; if (Vehicle.exists(this.TowedVehicle)) { DetachVehicleFromTowTruck(this.handle, vehicle.Handle); } } deform(position, damageAmount, radius) { SetVehicleDamage(this.handle, position.x, position.y, position.z, damageAmount, radius, false); } get PassengerCapacity() { return GetVehicleMaxNumberOfPassengers(this.handle); } get PassengerCount() { return GetVehicleNumberOfPassengers(this.handle); } set RespotTimer(time) { SetNetworkVehicleRespotTimer(this.NetworkId, time); } getHandlingFloat(fieldName) { return GetVehicleHandlingFloat(this.handle, "CHandlingData", fieldName); } setHandlingFloat(fieldName, value) { SetVehicleHandlingFloat(this.handle, "CHandlingData", fieldName, value); } getHandlingInt(fieldName) { return GetVehicleHandlingInt(this.handle, "CHandlingData", fieldName); } setHandlingInt(fieldName, value) { SetVehicleHandlingInt(this.handle, "CHandlingData", fieldName, Math.ceil(value)); } getHandlingVector(fieldName) { return Vector3.fromArray(GetVehicleHandlingVector(this.handle, "CHandlingData", fieldName)); } getEntityAttachedTo() { return GetEntityClassFromId(this.handle); } } export { Vehicle };