实体
载具 CVehicle
修车、司机乘客、部件与姿态
CVehicle.h
逻辑帧改状态。先 FindPlayerVehicle 判空。
修复车辆
Fix / m_fHealth
车血约 1000 满,0 炸。逻辑帧。
void Fix();
float m_fHealth;司机乘客与车色
m_pDriver / m_apPassengers / m_nPrimaryColor
CPed* m_pDriver;
CPed* m_apPassengers[8];
unsigned char m_nPrimaryColor;
void SetDriver(CPed* driver);
bool AddPassenger(CPed* passenger);
bool AddPassenger(CPed* passenger, unsigned char seatNumber);
void RemovePassenger(CPed* passenger);
bool IsDriver(CPed* ped);
bool IsPassenger(CPed* ped);炸车与灭火
BlowUpCar / ExtinguishCarFire
damager 可 null。
void BlowUpCar(CEntity* damager, bool bHideExplosion);
void ExtinguishCarFire();贴图与升级件
SetRemap / AddVehicleUpgrade
void SetRemap(int remapIndex);
void SetRemapTexDictionary(int txdId);
void AddVehicleUpgrade(int modelId);
int GetRemapIndex();是否可上车
CanPedEnterCar / CanPedOpenLocks
bool CanPedEnterCar();
bool CanPedOpenLocks(CPed* ped);
bool CanPedStepOutCar(bool arg0);
bool CanPedJumpOutCar(CPed* ped);引擎灯光锁
bEngineOn / bLightsOn / bIsLocked
// CVehicle bitfields
// bool bEngineOn; bool bLightsOn; bool bIsLocked; ...门与部件
OpenDoor / IsDoorReady / GetComponentWorldPosition
void OpenDoor(CPed* ped, int componentId, eDoors door, float doorOpenRatio, bool playSound);
bool IsDoorReady(eDoors door);
bool IsDoorFullyOpen(eDoors door);
bool IsDoorClosed(eDoors door);
bool IsDoorMissing(eDoors door);
void GetComponentWorldPosition(int componentId, CVector& posnOut);
bool IsComponentPresent(int componentId);车身姿态
IsUpsideDown / IsOnItsSide / IsLawEnforcementVehicle
bool IsUpsideDown();
bool IsOnItsSide();
bool IsLawEnforcementVehicle();
int GetVehicleAppearance();轮胎损坏
BurstTyre
bool BurstTyre(unsigned char tyreComponentId, bool bPhysicalEffect);在车上每帧逻辑
plugin::Events::processScriptsEvent += [] {
CVehicle* veh = FindPlayerVehicle();
if (!veh) {
return;
}
veh->m_fHealth = 1000.0f;
};