diff --git a/saco/game/util.cpp b/saco/game/util.cpp index 9f15d13..cb4fb97 100644 --- a/saco/game/util.cpp +++ b/saco/game/util.cpp @@ -1936,5 +1936,32 @@ DWORD unnamed_100B6100(char *szString, int nMaxLen) return 0; } +UINT GetVehicleSubtypeFromVehiclePtr(VEHICLE_TYPE *pVehicle) +{ + if(!pVehicle) return 0; + if(pVehicle->entity.vtable == 0x871120) { + return VEHICLE_SUBTYPE_CAR; + } + else if(pVehicle->entity.vtable == 0x8721A0) { + return VEHICLE_SUBTYPE_BOAT; + } + else if(pVehicle->entity.vtable == 0x871360) { + return VEHICLE_SUBTYPE_BIKE; + } + else if(pVehicle->entity.vtable == 0x871948) { + return VEHICLE_SUBTYPE_PLANE; + } + else if(pVehicle->entity.vtable == 0x871680) { + return VEHICLE_SUBTYPE_HELI; + } + else if(pVehicle->entity.vtable == 0x871528) { + return VEHICLE_SUBTYPE_PUSHBIKE; + } + else if(pVehicle->entity.vtable == 0x872370) { + return VEHICLE_SUBTYPE_TRAIN; + } + return 0; +} + diff --git a/saco/game/util.h b/saco/game/util.h index 5cfd7be..7c6b93f 100644 --- a/saco/game/util.h +++ b/saco/game/util.h @@ -70,3 +70,6 @@ BOOL IsHexChar(wchar_t c); DWORD GetColorFromEmbedCode(char *szString); DWORD GetColorFromEmbedCode(wchar_t *szString); void RemoveColorEmbedsFromString(char *szString); + +UINT GetVehicleSubtypeFromVehiclePtr(VEHICLE_TYPE *pVehicle); + diff --git a/saco/game/vehicle.cpp b/saco/game/vehicle.cpp index 772d99f..f95302c 100644 --- a/saco/game/vehicle.cpp +++ b/saco/game/vehicle.cpp @@ -139,6 +139,16 @@ void CVehicle::UpdateColor() //----------------------------------------------------------- +UINT CVehicle::GetVehicleSubtype() +{ + if(m_pVehicle) { + return GetVehicleSubtypeFromVehiclePtr(m_pVehicle); + } + return 0; +} + +//----------------------------------------------------------- + BOOL CVehicle::HasSunk() { if(!m_pVehicle) return FALSE; diff --git a/saco/game/vehicle.h b/saco/game/vehicle.h index 7a226f9..762a0dd 100644 --- a/saco/game/vehicle.h +++ b/saco/game/vehicle.h @@ -31,6 +31,7 @@ public: void ResetPointers(); void SetLockedState(int iLocked); + UINT GetVehicleSubtype(); float GetHealth(); void SetHealth(float fHealth);