From 5698387687aa9ae4d0b78922c9ffc79fb5d54831 Mon Sep 17 00:00:00 2001 From: Uladzislau Nikalayevich Date: Sun, 30 Jan 2022 19:14:33 +0300 Subject: [PATCH 01/51] Some basic progress --- Client/game_sa/CModelInfoSA.cpp | 4 +- Client/mods/deathmatch/logic/CClientModel.cpp | 14 +- Client/mods/deathmatch/logic/CClientModel.h | 13 +- .../deathmatch/logic/CClientModelManager.cpp | 18 +- .../deathmatch/logic/CClientModelManager.h | 4 +- .../deathmatch/logic/CClientObjectManager.cpp | 2 +- .../mods/deathmatch/logic/CPacketHandler.cpp | 45 +- .../logic/lua/CLuaFunctionDefs.Util.cpp | 2 +- .../logic/lua/CLuaFunctionParseHelpers.cpp | 8 +- .../logic/lua/CLuaFunctionParseHelpers.h | 2 +- .../logic/luadefs/CLuaEngineDefs.cpp | 8 +- .../mods/deathmatch/logic/rpc/CModelRPCs.cpp | 29 ++ Client/mods/deathmatch/logic/rpc/CModelRPCs.h | 22 + .../deathmatch/logic/rpc/CRPCFunctions.cpp | 2 + Client/sdk/game/CModelInfo.h | 3 +- Server/mods/deathmatch/StdInc.h | 9 + Server/mods/deathmatch/logic/CGame.cpp | 8 + Server/mods/deathmatch/logic/CGame.h | 6 + .../deathmatch/logic/CHandlingManager.cpp | 54 +-- .../mods/deathmatch/logic/CHandlingManager.h | 5 - Server/mods/deathmatch/logic/CVehicle.cpp | 2 +- .../mods/deathmatch/logic/CVehicleManager.cpp | 418 +++--------------- .../logic/lua/CLuaFunctionParseHelpers.cpp | 13 + .../logic/lua/CLuaFunctionParseHelpers.h | 2 + .../mods/deathmatch/logic/lua/CLuaManager.cpp | 1 + .../logic/luadefs/CLuaModelDefs.cpp | 41 ++ .../deathmatch/logic/luadefs/CLuaModelDefs.h | 24 + .../deathmatch/logic/models/CModelAtomic.cpp | 31 ++ .../deathmatch/logic/models/CModelAtomic.h | 34 ++ .../deathmatch/logic/models/CModelBase.cpp | 21 + .../mods/deathmatch/logic/models/CModelBase.h | 62 +++ .../deathmatch/logic/models/CModelLoader.cpp | 156 +++++++ .../deathmatch/logic/models/CModelLoader.h | 32 ++ .../deathmatch/logic/models/CModelManager.cpp | 115 +++++ .../deathmatch/logic/models/CModelManager.h | 45 ++ .../deathmatch/logic/models/CModelVehicle.cpp | 43 ++ .../deathmatch/logic/models/CModelVehicle.h | 46 ++ .../logic/packets/CEntityAddPacket.cpp | 19 +- .../packets/CPlayerJoinCompletePacket.cpp | 14 + Server/mods/deathmatch/vehicles.conf | 212 +++++++++ Shared/sdk/net/bitstream.h | 4 + Shared/sdk/net/rpc_enums.h | 2 + 42 files changed, 1129 insertions(+), 466 deletions(-) create mode 100644 Client/mods/deathmatch/logic/rpc/CModelRPCs.cpp create mode 100644 Client/mods/deathmatch/logic/rpc/CModelRPCs.h create mode 100644 Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp create mode 100644 Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.h create mode 100644 Server/mods/deathmatch/logic/models/CModelAtomic.cpp create mode 100644 Server/mods/deathmatch/logic/models/CModelAtomic.h create mode 100644 Server/mods/deathmatch/logic/models/CModelBase.cpp create mode 100644 Server/mods/deathmatch/logic/models/CModelBase.h create mode 100644 Server/mods/deathmatch/logic/models/CModelLoader.cpp create mode 100644 Server/mods/deathmatch/logic/models/CModelLoader.h create mode 100644 Server/mods/deathmatch/logic/models/CModelManager.cpp create mode 100644 Server/mods/deathmatch/logic/models/CModelManager.h create mode 100644 Server/mods/deathmatch/logic/models/CModelVehicle.cpp create mode 100644 Server/mods/deathmatch/logic/models/CModelVehicle.h create mode 100644 Server/mods/deathmatch/vehicles.conf diff --git a/Client/game_sa/CModelInfoSA.cpp b/Client/game_sa/CModelInfoSA.cpp index 97a46692cb..432f340394 100644 --- a/Client/game_sa/CModelInfoSA.cpp +++ b/Client/game_sa/CModelInfoSA.cpp @@ -1242,7 +1242,7 @@ void CModelInfoSA::SetCustomModel(RpClump* pClump) return pGame->GetRenderWare()->ReplaceWeaponModel(pClump, static_cast(m_dwModelID)); case eModelInfoType::VEHICLE: return pGame->GetRenderWare()->ReplaceVehicleModel(pClump, static_cast(m_dwModelID)); - case eModelInfoType::ATOMIC: + case eModelInfoType::OBJECT: case eModelInfoType::LOD_ATOMIC: case eModelInfoType::TIME: return pGame->GetRenderWare()->ReplaceAllAtomicsInModel(pClump, static_cast(m_dwModelID)); @@ -1518,7 +1518,7 @@ void CModelInfoSA::DeallocateModel(void) case eModelInfoType::PED: delete reinterpret_cast(ppModelInfo[m_dwModelID]); break; - case eModelInfoType::ATOMIC: + case eModelInfoType::OBJECT: delete reinterpret_cast(ppModelInfo[m_dwModelID]); break; default: diff --git a/Client/mods/deathmatch/logic/CClientModel.cpp b/Client/mods/deathmatch/logic/CClientModel.cpp index 1bb9b86b96..0ea997ee2f 100644 --- a/Client/mods/deathmatch/logic/CClientModel.cpp +++ b/Client/mods/deathmatch/logic/CClientModel.cpp @@ -10,7 +10,7 @@ #include "StdInc.h" -CClientModel::CClientModel(CClientManager* pManager, int iModelID, eClientModelType eModelType) +CClientModel::CClientModel(CClientManager* pManager, int iModelID, eModelInfoType eModelType) { m_pManager = pManager; m_iModelID = iModelID; @@ -40,17 +40,17 @@ bool CClientModel::Allocate(ushort usParentID) switch (m_eModelType) { - case eClientModelType::PED: + case eModelInfoType::PED: pModelInfo->MakePedModel("PSYCHO"); return true; - case eClientModelType::OBJECT: + case eModelInfoType::OBJECT: if (g_pClientGame->GetObjectManager()->IsValidModel(usParentID)) { pModelInfo->MakeObjectModel(usParentID); return true; } break; - case eClientModelType::VEHICLE: + case eModelInfoType::VEHICLE: if (g_pClientGame->GetVehicleManager()->IsValidModel(usParentID)) { pModelInfo->MakeVehicleAutomobile(usParentID); @@ -99,7 +99,7 @@ void CClientModel::RestoreEntitiesUsingThisModel() switch (m_eModelType) { - case eClientModelType::PED: + case eModelInfoType::PED: { // If some ped is using this ID, change him to CJ CClientPedManager* pPedManager = g_pClientGame->GetManager()->GetPedManager(); @@ -107,7 +107,7 @@ void CClientModel::RestoreEntitiesUsingThisModel() unloadModelsAndCallEvents(pPedManager->IterBegin(), pPedManager->IterEnd(), 0, [](auto& element) { element.SetModel(0); }); break; } - case eClientModelType::OBJECT: + case eModelInfoType::OBJECT: { const auto& objects = &g_pClientGame->GetManager()->GetObjectManager()->GetObjects(); unsigned short usParentID = g_pGame->GetModelInfo(m_iModelID)->GetParentID(); @@ -123,7 +123,7 @@ void CClientModel::RestoreEntitiesUsingThisModel() g_pClientGame->GetManager()->GetColModelManager()->RestoreModel(m_iModelID); break; } - case eClientModelType::VEHICLE: + case eModelInfoType::VEHICLE: { CClientVehicleManager* pVehicleManager = g_pClientGame->GetManager()->GetVehicleManager(); unsigned short usParentID = g_pGame->GetModelInfo(m_iModelID)->GetParentID(); diff --git a/Client/mods/deathmatch/logic/CClientModel.h b/Client/mods/deathmatch/logic/CClientModel.h index 4e52e1b749..3077a490f4 100644 --- a/Client/mods/deathmatch/logic/CClientModel.h +++ b/Client/mods/deathmatch/logic/CClientModel.h @@ -14,13 +14,6 @@ class CClientModel; #include -enum class eClientModelType -{ - PED, - OBJECT, - VEHICLE, -}; - class CResource; class CClientManager; @@ -29,11 +22,11 @@ class CClientModel final friend class CClientModelManager; public: - CClientModel(CClientManager* pManager, int iModelID, eClientModelType eModelType); + CClientModel(CClientManager* pManager, int iModelID, eModelInfoType eModelType); ~CClientModel(void); int GetModelID(void) const { return m_iModelID; }; - eClientModelType GetModelType(void) const { return m_eModelType; }; + eModelInfoType GetModelType(void) const { return m_eModelType; }; bool Allocate(ushort usParentID); bool Deallocate(void); void RestoreEntitiesUsingThisModel(); @@ -44,7 +37,7 @@ class CClientModel final CClientManager* m_pManager; int m_iModelID; - eClientModelType m_eModelType; + eModelInfoType m_eModelType; bool m_bAllocatedByUs = false; CResource* m_pParentResource = nullptr; // Resource that allocated model }; diff --git a/Client/mods/deathmatch/logic/CClientModelManager.cpp b/Client/mods/deathmatch/logic/CClientModelManager.cpp index bc1bd0ecc0..cfc775f0e0 100644 --- a/Client/mods/deathmatch/logic/CClientModelManager.cpp +++ b/Client/mods/deathmatch/logic/CClientModelManager.cpp @@ -83,7 +83,7 @@ std::shared_ptr CClientModelManager::FindModelByID(int iModelID) return nullptr; } -std::vector> CClientModelManager::GetModelsByType(eClientModelType type, const unsigned int minModelID) +std::vector> CClientModelManager::GetModelsByType(eModelInfoType type, const unsigned int minModelID) { std::vector> found; found.reserve(m_modelCount); @@ -109,3 +109,19 @@ void CClientModelManager::DeallocateModelsAllocatedByResource(CResource* pResour Remove(m_Models[i]); } } + +void CClientModelManager::AllocateModelFromParent(uint32_t uiNewModelID, uint32_t uiParentModelID) +{ + eModelInfoType eModelType = g_pGame->GetModelInfo(uiParentModelID)->GetModelType(); + + std::shared_ptr pModel = FindModelByID(uiNewModelID); + if (pModel == nullptr) + pModel = std::make_shared(g_pClientGame->GetManager(), uiNewModelID, eModelType); + + Add(pModel); + + if (pModel->Allocate(uiParentModelID)) + return; + + assert("Can not allocateModel"); +} diff --git a/Client/mods/deathmatch/logic/CClientModelManager.h b/Client/mods/deathmatch/logic/CClientModelManager.h index 59fb3f36c2..088b624696 100644 --- a/Client/mods/deathmatch/logic/CClientModelManager.h +++ b/Client/mods/deathmatch/logic/CClientModelManager.h @@ -34,9 +34,11 @@ class CClientModelManager std::shared_ptr FindModelByID(int iModelID); - std::vector> GetModelsByType(eClientModelType type, const unsigned int minModelID = 0); + std::vector> GetModelsByType(eModelInfoType type, const unsigned int minModelID = 0); void DeallocateModelsAllocatedByResource(CResource* pResource); + void AllocateModelFromParent(uint32_t usModelID, uint32_t usParentModel); + private: std::unique_ptr[]> m_Models; diff --git a/Client/mods/deathmatch/logic/CClientObjectManager.cpp b/Client/mods/deathmatch/logic/CClientObjectManager.cpp index 8147fe9762..344b26a16b 100644 --- a/Client/mods/deathmatch/logic/CClientObjectManager.cpp +++ b/Client/mods/deathmatch/logic/CClientObjectManager.cpp @@ -110,7 +110,7 @@ bool CClientObjectManager::IsValidModel(unsigned long ulObjectModel) return false; eModelInfoType eType = pModelInfo->GetModelType(); - return (eType == eModelInfoType::CLUMP || eType == eModelInfoType::ATOMIC || eType == eModelInfoType::WEAPON || eType == eModelInfoType::TIME); + return (eType == eModelInfoType::CLUMP || eType == eModelInfoType::OBJECT || eType == eModelInfoType::WEAPON || eType == eModelInfoType::TIME); } bool CClientObjectManager::IsBreakableModel(unsigned long ulObjectModel) diff --git a/Client/mods/deathmatch/logic/CPacketHandler.cpp b/Client/mods/deathmatch/logic/CPacketHandler.cpp index 55e8e14b05..1adf18df73 100644 --- a/Client/mods/deathmatch/logic/CPacketHandler.cpp +++ b/Client/mods/deathmatch/logic/CPacketHandler.cpp @@ -409,6 +409,19 @@ void CPacketHandler::Packet_ServerJoined(NetBitStreamInterface& bitStream) bitStream.ReadString(strExternalHTTPDownloadURL); } + if (bitStream.Can(eBitStreamVersion::SimpleModelAllocationg)) + { + uint32_t modelsCount = 0; + bitStream.Read(modelsCount); + for (int i = 0; i < modelsCount; i++) + { + uint32_t usModelID, usParentID; + bitStream.Read(usModelID); + bitStream.Read(usParentID); + g_pClientGame->GetManager()->GetModelManager()->AllocateModelFromParent(usModelID, usParentID); + } + } + // // Add servers to use // @@ -3186,17 +3199,27 @@ void CPacketHandler::Packet_EntityAdd(NetBitStreamInterface& bitStream) bitStream.Read(&rotationDegrees); // Read out the vehicle value as a char, then convert - unsigned char ucModel = 0xFF; - bitStream.Read(ucModel); - - // The server appears to subtract 400 from the vehicle id before - // sending it to us, as to allow the value to fit into an unsigned - // char. - // - // Too bad this was never documented. - // - // --slush - unsigned short usModel = ucModel + 400; + unsigned short usModel = 0xFFFF; + + if (bitStream.Can(eBitStreamVersion::SimpleModelAllocationg)) + { + bitStream.Read(usModel); + } + else + { + // The server appears to subtract 400 from the vehicle id before + // sending it to us, as to allow the value to fit into an unsigned + // char. + // + // Too bad this was never documented. + // + // --slush + unsigned char ucModel = 0xFF; + + bitStream.Read(ucModel); + unsigned short usModel = ucModel + 400; + } + if (!CClientVehicleManager::IsValidModel(usModel)) { RaiseEntityAddError(39); diff --git a/Client/mods/deathmatch/logic/lua/CLuaFunctionDefs.Util.cpp b/Client/mods/deathmatch/logic/lua/CLuaFunctionDefs.Util.cpp index 641a76b04b..ec932b58e1 100644 --- a/Client/mods/deathmatch/logic/lua/CLuaFunctionDefs.Util.cpp +++ b/Client/mods/deathmatch/logic/lua/CLuaFunctionDefs.Util.cpp @@ -28,7 +28,7 @@ int CLuaFunctionDefs::GetValidPedModels(lua_State* luaVM) // Gather our custom skin model IDs allocated with engineRequestModel // (there might be some < 313 as well, and since we don't want duplicates, we start at 313, others are already included by the loop above) - for (const auto& model : m_pManager->GetModelManager()->GetModelsByType(eClientModelType::PED, 313)) + for (const auto& model : m_pManager->GetModelManager()->GetModelsByType(eModelInfoType::PED, 313)) { lua_pushnumber(luaVM, ++iIndex); lua_pushnumber(luaVM, model->GetModelID()); diff --git a/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp b/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp index caa1129f08..3580891bb5 100644 --- a/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp +++ b/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp @@ -661,10 +661,10 @@ ADD_ENUM(SURFACE_ADHESION_GROUP_SAND, "sand") ADD_ENUM(SURFACE_ADHESION_GROUP_WET, "wet") IMPLEMENT_ENUM_END("surface-adhesion-group") -IMPLEMENT_ENUM_CLASS_BEGIN(eClientModelType) -ADD_ENUM(eClientModelType::PED, "ped") -ADD_ENUM(eClientModelType::OBJECT, "object") -ADD_ENUM(eClientModelType::VEHICLE, "vehicle") +IMPLEMENT_ENUM_CLASS_BEGIN(eModelInfoType) +ADD_ENUM(eModelInfoType::PED, "ped") +ADD_ENUM(eModelInfoType::OBJECT, "object") +ADD_ENUM(eModelInfoType::VEHICLE, "vehicle") IMPLEMENT_ENUM_CLASS_END("client-model-type") // Sound effects diff --git a/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h b/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h index 9b687fb41e..d829c2db43 100644 --- a/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h +++ b/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h @@ -65,7 +65,7 @@ DECLARE_ENUM(eSurfaceBulletEffect); DECLARE_ENUM(eSurfaceWheelEffect); DECLARE_ENUM(eSurfaceSkidMarkType); DECLARE_ENUM(eSurfaceAdhesionGroup); -DECLARE_ENUM_CLASS(eClientModelType); +DECLARE_ENUM_CLASS(eModelInfoType); DECLARE_ENUM(eSoundEffectType); DECLARE_ENUM_CLASS(eSoundEffectParams::Chorus); DECLARE_ENUM_CLASS(eSoundEffectParams::Compressor); diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp b/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp index 12f3832738..6b68f34b6d 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp +++ b/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp @@ -580,7 +580,7 @@ int CLuaEngineDefs::EngineRestoreModel(lua_State* luaVM) int CLuaEngineDefs::EngineRequestModel(lua_State* luaVM) { - eClientModelType eModelType; + eModelInfoType eModelType; CScriptArgReader argStream(luaVM); argStream.ReadEnumString(eModelType); @@ -608,13 +608,13 @@ int CLuaEngineDefs::EngineRequestModel(lua_State* luaVM) { switch (eModelType) { - case eClientModelType::PED: + case eModelInfoType::PED: usParentID = 7; // male01 break; - case eClientModelType::OBJECT: + case eModelInfoType::OBJECT: usParentID = 1337; // BinNt07_LA (trash can) break; - case eClientModelType::VEHICLE: + case eModelInfoType::VEHICLE: usParentID = VT_LANDSTAL; break; default: diff --git a/Client/mods/deathmatch/logic/rpc/CModelRPCs.cpp b/Client/mods/deathmatch/logic/rpc/CModelRPCs.cpp new file mode 100644 index 0000000000..3f2b167bd4 --- /dev/null +++ b/Client/mods/deathmatch/logic/rpc/CModelRPCs.cpp @@ -0,0 +1,29 @@ +/***************************************************************************** + * + * PROJECT: Multi Theft Auto v1.0 + * LICENSE: See LICENSE in the top level directory + * FILE: mods/deathmatch/logic/rpc/CMarkerRPCs.cpp + * PURPOSE: Marker remote procedure calls + * + * Multi Theft Auto is available from http://www.multitheftauto.com/ + * + *****************************************************************************/ + +#include +#include "CModelRPCs.h" + +void CModelRPCs::LoadFunctions() +{ + AddHandler(ALLOCATE_MODEL_FROM_PARENT, AllocateModelFromParent, "AllocateModelFromParent"); +} + +void CModelRPCs::AllocateModelFromParent(NetBitStreamInterface& bitStream) +{ + uint32_t uiNewModelID; + uint32_t uiParentModelID; + + if (bitStream.Read(uiNewModelID) && bitStream.Read(uiParentModelID)) + { + m_pManager->GetModelManager()->AllocateModelFromParent(uiNewModelID, uiParentModelID); + } +} diff --git a/Client/mods/deathmatch/logic/rpc/CModelRPCs.h b/Client/mods/deathmatch/logic/rpc/CModelRPCs.h new file mode 100644 index 0000000000..625e4a7a0a --- /dev/null +++ b/Client/mods/deathmatch/logic/rpc/CModelRPCs.h @@ -0,0 +1,22 @@ +/***************************************************************************** + * + * PROJECT: Multi Theft Auto v1.0 + * LICENSE: See LICENSE in the top level directory + * FILE: mods/deathmatch/logic/rpc/CMarkerRPCs.h + * PURPOSE: Header for marker RPC class + * + * Multi Theft Auto is available from http://www.multitheftauto.com/ + * + *****************************************************************************/ + +#pragma once + +#include "CRPCFunctions.h" + +class CModelRPCs : public CRPCFunctions +{ +public: + static void LoadFunctions(); + + DECLARE_RPC(AllocateModelFromParent); +}; diff --git a/Client/mods/deathmatch/logic/rpc/CRPCFunctions.cpp b/Client/mods/deathmatch/logic/rpc/CRPCFunctions.cpp index cae23c7404..8eb8249c88 100644 --- a/Client/mods/deathmatch/logic/rpc/CRPCFunctions.cpp +++ b/Client/mods/deathmatch/logic/rpc/CRPCFunctions.cpp @@ -31,6 +31,7 @@ #include "CWaterRPCs.h" #include "CWorldRPCs.h" #include "CColShapeRPCs.h" +#include "CModelRPCs.h" CClientManager* CRPCFunctions::m_pManager; CClientCamera* CRPCFunctions::m_pCamera; @@ -100,6 +101,7 @@ void CRPCFunctions::AddHandlers() CWaterRPCs::LoadFunctions(); CWorldRPCs::LoadFunctions(); CColShapeRPCs::LoadFunctions(); + CModelRPCs::LoadFunctions(); } void CRPCFunctions::AddHandler(unsigned char ucID, pfnRPCHandler Callback, const char* szName) diff --git a/Client/sdk/game/CModelInfo.h b/Client/sdk/game/CModelInfo.h index 7fdeba200c..784db9a955 100644 --- a/Client/sdk/game/CModelInfo.h +++ b/Client/sdk/game/CModelInfo.h @@ -31,7 +31,8 @@ class CBoundingBox enum class eModelInfoType : unsigned char { - ATOMIC = 1, + INVALID = 0, + OBJECT = 1, TIME = 3, WEAPON = 4, CLUMP = 5, diff --git a/Server/mods/deathmatch/StdInc.h b/Server/mods/deathmatch/StdInc.h index 53a0aaaf5f..f535f41ce6 100644 --- a/Server/mods/deathmatch/StdInc.h +++ b/Server/mods/deathmatch/StdInc.h @@ -147,6 +147,7 @@ struct SAclRequest; #include "luadefs/CLuaVoiceDefs.h" #include "luadefs/CLuaWaterDefs.h" #include "luadefs/CLuaWorldDefs.h" +#include "luadefs/CLuaModelDefs.h" // Lua includes #include "lua/LuaCommon.h" @@ -302,6 +303,14 @@ struct SAclRequest; #include "CStaticFunctionDefinitions.h" +// Serverside model includes +#include "models/CModelBase.h" +#include "models/CModelAtomic.h" +#include "models/CModelVehicle.h" +#include "models/CModelManager.h" +#include "models/CModelLoader.h" +#include "models/CModelVehicle.h" + // Utility includes #include "utils/CZipMaker.h" diff --git a/Server/mods/deathmatch/logic/CGame.cpp b/Server/mods/deathmatch/logic/CGame.cpp index e8d88cf2c7..48ce6e5ab1 100644 --- a/Server/mods/deathmatch/logic/CGame.cpp +++ b/Server/mods/deathmatch/logic/CGame.cpp @@ -141,6 +141,8 @@ CGame::CGame() : m_FloodProtect(4, 30000, 30000) // Max of 4 connecti m_pBuildingRemovalManager = NULL; m_pCustomWeaponManager = NULL; m_pFunctionUseLogger = NULL; + m_pModelLoader = NULL; + m_pModelManager = NULL; #ifdef WITH_OBJECT_SYNC m_pObjectSync = NULL; #endif @@ -328,6 +330,8 @@ CGame::~CGame() SAFE_DELETE(m_pMasterServerAnnouncer); SAFE_DELETE(m_pASE); SAFE_RELEASE(m_pHqComms); + SAFE_DELETE(m_pModelLoader); + SAFE_DELETE(m_pModelManager) CSimControl::Shutdown(); // Clear our global pointer @@ -533,6 +537,10 @@ bool CGame::Start(int iArgumentCount, char* szArguments[]) m_pTrainTrackManager = std::make_shared(); + m_pModelManager = new CModelManager(); + m_pModelLoader = new CModelLoader(); + m_pModelLoader->loadDefaultData(); + // Parse the commandline if (!m_CommandLineParser.Parse(iArgumentCount, szArguments)) { diff --git a/Server/mods/deathmatch/logic/CGame.h b/Server/mods/deathmatch/logic/CGame.h index ec70b9abc9..0ea0f8cada 100644 --- a/Server/mods/deathmatch/logic/CGame.h +++ b/Server/mods/deathmatch/logic/CGame.h @@ -105,6 +105,8 @@ class CWaterManager; class CTrainTrackManager; class CWeaponStatManager; class CBuildingRemovalManager; +class CModelManager; +class CModelLoader; class CCustomWeaponManager; class COpenPortsTester; @@ -252,6 +254,8 @@ class CGame CFunctionUseLogger* GetFunctionUseLogger() { return m_pFunctionUseLogger; } CMasterServerAnnouncer* GetMasterServerAnnouncer() { return m_pMasterServerAnnouncer; } SharedUtil::CAsyncTaskScheduler* GetAsyncTaskScheduler() { return m_pAsyncTaskScheduler; } + CModelManager* GetModelManager() { return m_pModelManager; } + CModelLoader* GetModelLoader() { return m_pModelLoader; } std::shared_ptr GetTrainTrackManager() { return m_pTrainTrackManager; } @@ -556,6 +560,8 @@ class CGame CRPCFunctions* m_pRPCFunctions; CLanBroadcast* m_pLanBroadcast; CWaterManager* m_pWaterManager; + CModelManager* m_pModelManager; + CModelLoader* m_pModelLoader; CWeaponStatManager* m_pWeaponStatsManager; CBuildingRemovalManager* m_pBuildingRemovalManager; diff --git a/Server/mods/deathmatch/logic/CHandlingManager.cpp b/Server/mods/deathmatch/logic/CHandlingManager.cpp index 487458ebeb..4a06b223d8 100644 --- a/Server/mods/deathmatch/logic/CHandlingManager.cpp +++ b/Server/mods/deathmatch/logic/CHandlingManager.cpp @@ -14,7 +14,6 @@ SFixedArray CHandlingManager::m_OriginalHandlingData; SFixedArray CHandlingManager::m_pOriginalEntries; -SFixedArray CHandlingManager::m_pModelEntries; CHandlingManager::CHandlingManager() { @@ -27,13 +26,6 @@ CHandlingManager::CHandlingManager() m_pOriginalEntries[i] = new CHandlingEntry(&m_OriginalHandlingData[i]); } - // Create a handling entry for every model - for (int i = 0; i < HT_MAX; i++) - { - m_pModelEntries[i] = new CHandlingEntry(&m_OriginalHandlingData[i]); - m_bModelHandlingChanged[i] = false; - } - // http://www.gtamodding.com/index.php?title=Handling.cfg#GTA_San_Andreas // http://projectcerbera.com/gta/sa/tutorials/handling @@ -80,12 +72,6 @@ CHandlingManager::~CHandlingManager() { delete m_pOriginalEntries[i]; } - - // Destroy all model handling entries - for (int i = 0; i < HT_MAX; i++) - { - delete m_pModelEntries[i]; - } } CHandlingEntry* CHandlingManager::CreateHandlingData() @@ -96,18 +82,8 @@ CHandlingEntry* CHandlingManager::CreateHandlingData() bool CHandlingManager::ApplyHandlingData(eVehicleTypes eModel, CHandlingEntry* pEntry) { - // Within range? - if (eModel >= 400 && eModel < VT_MAX) - { - // Get our Handling ID - eHandlingTypes eHandling = GetHandlingID(eModel); - // Apply the data and return success - m_pModelEntries[eHandling]->ApplyHandlingData(pEntry); - return true; - } - - // Failed - return false; + g_pGame->GetModelManager()->GetVehicleModel(eModel)->GetVehicleHandling()->ApplyHandlingData(pEntry); + return true; } const CHandlingEntry* CHandlingManager::GetOriginalHandlingData(eVehicleTypes eModel) @@ -126,16 +102,7 @@ const CHandlingEntry* CHandlingManager::GetOriginalHandlingData(eVehicleTypes eM const CHandlingEntry* CHandlingManager::GetModelHandlingData(eVehicleTypes eModel) { - // Within range? - if (eModel >= 400 && eModel < VT_MAX) - { - // Get our Handling ID - eHandlingTypes eHandling = GetHandlingID(eModel); - // Return it - return m_pModelEntries[eHandling]; - } - - return NULL; + return g_pGame->GetModelManager()->GetVehicleModel(eModel)->GetVehicleHandling(); } eHandlingProperty CHandlingManager::GetPropertyEnumFromName(std::string strName) @@ -153,23 +120,12 @@ eHandlingProperty CHandlingManager::GetPropertyEnumFromName(std::string strName) bool CHandlingManager::HasModelHandlingChanged(eVehicleTypes eModel) { - // Within range? - if (eModel >= 400 && eModel < VT_MAX) - { - // Get our Handling ID - eHandlingTypes eHandling = GetHandlingID(eModel); - // Return if we have changed - return m_bModelHandlingChanged[eHandling]; - } - return false; + return g_pGame->GetModelManager()->GetVehicleModel(eModel)->HasVehicleHandlingChanged(); } void CHandlingManager::SetModelHandlingHasChanged(eVehicleTypes eModel, bool bChanged) { - // Get our Handling ID - eHandlingTypes eHandling = GetHandlingID(eModel); - // Return if we have changed. - m_bModelHandlingChanged[eHandling] = bChanged; + g_pGame->GetModelManager()->GetVehicleModel(eModel)->SetVehicleHandlingChanged(bChanged); } // Return the handling manager id diff --git a/Server/mods/deathmatch/logic/CHandlingManager.h b/Server/mods/deathmatch/logic/CHandlingManager.h index bac0fbfd71..eee1f02a61 100644 --- a/Server/mods/deathmatch/logic/CHandlingManager.h +++ b/Server/mods/deathmatch/logic/CHandlingManager.h @@ -45,9 +45,4 @@ class CHandlingManager // Array with the original handling entries static SFixedArray m_pOriginalEntries; - - // Array with the model handling entries - static SFixedArray m_pModelEntries; - - SFixedArray m_bModelHandlingChanged; }; diff --git a/Server/mods/deathmatch/logic/CVehicle.cpp b/Server/mods/deathmatch/logic/CVehicle.cpp index 1dd35dd9de..4c055d9577 100644 --- a/Server/mods/deathmatch/logic/CVehicle.cpp +++ b/Server/mods/deathmatch/logic/CVehicle.cpp @@ -843,7 +843,7 @@ void CVehicle::GenerateHandlingData() if (m_pHandlingEntry == NULL) m_pHandlingEntry = g_pGame->GetHandlingManager()->CreateHandlingData(); // Apply the model handling info - m_pHandlingEntry->ApplyHandlingData(g_pGame->GetHandlingManager()->GetModelHandlingData(static_cast(m_usModel))); + m_pHandlingEntry->ApplyHandlingData(g_pGame->GetModelManager()->GetVehicleModel(m_usModel)->GetVehicleHandling()); m_bHandlingChanged = false; } diff --git a/Server/mods/deathmatch/logic/CVehicleManager.cpp b/Server/mods/deathmatch/logic/CVehicleManager.cpp index 9f8cfcec59..037c49eb98 100644 --- a/Server/mods/deathmatch/logic/CVehicleManager.cpp +++ b/Server/mods/deathmatch/logic/CVehicleManager.cpp @@ -11,21 +11,6 @@ #include "StdInc.h" -static const SFixedArray g_ucMaxPassengers = {{3, 1, 1, 1, 3, 3, 0, 1, 1, 3, 1, 1, 1, 3, 1, 1, // 400->415 - 3, 1, 3, 1, 3, 3, 1, 1, 1, 0, 3, 3, 3, 1, 0, 8, // 416->431 - 0, 1, 1, 255, 1, 8, 3, 1, 3, 0, 1, 1, 1, 3, 0, 1, // 432->447 - 0, 1, 255, 1, 0, 0, 0, 1, 1, 1, 3, 3, 1, 1, 1, // 448->462 - 1, 1, 1, 3, 3, 1, 1, 3, 1, 0, 0, 1, 1, 0, 1, 1, // 463->478 - 3, 1, 0, 3, 1, 0, 0, 0, 3, 1, 1, 3, 1, 3, 0, 1, // 479->494 - 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 0, 0, // 495->510 - 1, 0, 0, 1, 1, 3, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, // 511->526 - 1, 1, 3, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 3, 1, // 527->541 - 1, 1, 1, 1, 3, 3, 1, 1, 3, 3, 1, 0, 1, 1, 1, 1, // 542->557 - 1, 1, 3, 3, 1, 1, 0, 1, 3, 3, 0, 255, 1, 0, 0, // 558->572 - 1, 0, 1, 1, 1, 1, 3, 3, 1, 3, 0, 255, 3, 1, 1, 1, // 573->588 - 1, 255, 255, 1, 1, 1, 0, 3, 3, 3, 1, 1, 1, 1, 1, // 589->604 - 3, 1, 255, 255, 255, 3, 255, 255}}; // 605->611 - // List over all vehicles with their special attributes #define VEHICLE_HAS_TURRENT 0x001UL //1 #define VEHICLE_HAS_SIRENS 0x002UL //2 @@ -36,338 +21,19 @@ static const SFixedArray g_ucMaxPassengers = {{3, 1, 1, #define VEHICLE_HAS_SEARCH_LIGHT 0x040UL //64 // Generated by MTA10\utils\gentable\gentable_vehattr.cpp -static const SFixedArray g_ulVehicleAttributes = { - {0, 0, 0, 0, 0, 0, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 32, 0, 0, 2, 0, // 400-424 - 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, // 425-449 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 450-474 - 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 64, 0, 0, // 475-499 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 0, 0, 0, 0, 0, 4, 12, 0, 0, 2, 8, // 500-524 - 8, 0, 0, 2, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, // 525-549 - 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 550-574 - 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 2, 2, 2, 2, // 575-599 - 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; - -static const SFixedArray gs_vehicleTypes = { - {VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_MONSTERTRUCK, VEHICLE_CAR, - VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, - VEHICLE_CAR, VEHICLE_HELI, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, - VEHICLE_CAR, VEHICLE_HELI, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_BOAT, VEHICLE_CAR, - VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_TRAILER, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, - VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_MONSTERTRUCK, VEHICLE_CAR, VEHICLE_BOAT, VEHICLE_HELI, - VEHICLE_BIKE, VEHICLE_TRAIN, VEHICLE_TRAILER, VEHICLE_CAR, VEHICLE_BOAT, VEHICLE_BOAT, VEHICLE_BOAT, VEHICLE_CAR, - VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_PLANE, VEHICLE_BIKE, VEHICLE_BIKE, VEHICLE_BIKE, - VEHICLE_PLANE, VEHICLE_HELI, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_BIKE, VEHICLE_HELI, VEHICLE_CAR, VEHICLE_QUADBIKE, - VEHICLE_BOAT, VEHICLE_BOAT, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_PLANE, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, - VEHICLE_CAR, VEHICLE_BMX, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_BOAT, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_HELI, - VEHICLE_HELI, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_BOAT, VEHICLE_CAR, VEHICLE_CAR, - VEHICLE_CAR, VEHICLE_HELI, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_HELI, VEHICLE_CAR, VEHICLE_CAR, - VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_BMX, VEHICLE_BMX, VEHICLE_PLANE, - VEHICLE_PLANE, VEHICLE_PLANE, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_PLANE, - VEHICLE_PLANE, VEHICLE_BIKE, VEHICLE_BIKE, VEHICLE_BIKE, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, - VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, - VEHICLE_CAR, VEHICLE_TRAIN, VEHICLE_TRAIN, VEHICLE_PLANE, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, - VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_HELI, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, - VEHICLE_CAR, VEHICLE_PLANE, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_MONSTERTRUCK, VEHICLE_MONSTERTRUCK, VEHICLE_CAR, VEHICLE_CAR, - VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_HELI, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, - VEHICLE_CAR, VEHICLE_TRAIN, VEHICLE_TRAIN, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_MONSTERTRUCK, VEHICLE_CAR, VEHICLE_CAR, - VEHICLE_CAR, VEHICLE_PLANE, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_BIKE, VEHICLE_CAR, VEHICLE_CAR, - VEHICLE_TRAILER, VEHICLE_CAR, VEHICLE_BIKE, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_TRAIN, VEHICLE_TRAILER, - VEHICLE_PLANE, VEHICLE_PLANE, VEHICLE_CAR, VEHICLE_BOAT, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, - VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_CAR, VEHICLE_TRAILER, VEHICLE_TRAILER, - VEHICLE_TRAILER, VEHICLE_CAR, VEHICLE_TRAILER, VEHICLE_TRAILER}}; - -static SFixedArray g_ucVariants; +//static const SFixedArray g_ulVehicleAttributes = { +// {0, 0, 0, 0, 0, 0, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 32, 0, 0, 2, 0, // 400-424 +// 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, // 425-449 +// 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 450-474 +// 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 64, 0, 0, // 475-499 +// 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 0, 0, 0, 0, 0, 4, 12, 0, 0, 2, 8, // 500-524 +// 8, 0, 0, 2, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, // 525-549 +// 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 550-574 +// 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 2, 2, 2, 2, // 575-599 +// 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; CVehicleManager::CVehicleManager() { - assert(NUMELMS(g_ucMaxPassengers) == 212); - assert(NUMELMS(g_ulVehicleAttributes) == 212); - assert(NUMELMS(gs_vehicleTypes) == 212); - - int iVehicleID = 0; - for (int i = 0; i < 212; i++) - { - g_ucVariants[i] = 255; - iVehicleID = i + 400; - switch (iVehicleID) - { - case 416: - { - g_ucVariants[i] = 1; - break; - } - case 435: - { - g_ucVariants[i] = 5; - break; - } - case 450: - { - g_ucVariants[i] = 0; - break; - } - case 607: - { - g_ucVariants[i] = 2; - break; - } - case 485: - { - g_ucVariants[i] = 2; - break; - } - case 433: - { - g_ucVariants[i] = 1; - break; - } - case 499: - { - g_ucVariants[i] = 3; - break; - } - case 581: - { - g_ucVariants[i] = 4; - break; - } - case 424: - { - g_ucVariants[i] = 1; - break; - } - case 504: - { - g_ucVariants[i] = 5; - break; - } - case 422: - { - g_ucVariants[i] = 1; - break; - } - case 482: - { - g_ucVariants[i] = 0; - break; - } - case 457: - { - g_ucVariants[i] = 5; - break; - } - case 483: - { - g_ucVariants[i] = 1; - break; - } - case 415: - { - g_ucVariants[i] = 1; - break; - } - case 437: - { - g_ucVariants[i] = 1; - break; - } - case 472: - { - g_ucVariants[i] = 2; - break; - } - case 521: - { - g_ucVariants[i] = 4; - break; - } - case 407: - { - g_ucVariants[i] = 2; - break; - } - case 455: - { - g_ucVariants[i] = 2; - break; - } - case 434: - { - g_ucVariants[i] = 0; - break; - } - case 502: - { - g_ucVariants[i] = 5; - break; - } - case 503: - { - g_ucVariants[i] = 5; - break; - } - case 571: - { - g_ucVariants[i] = 1; - break; - } - case 595: - { - g_ucVariants[i] = 1; - break; - } - case 484: - { - g_ucVariants[i] = 0; - break; - } - case 500: - { - g_ucVariants[i] = 1; - break; - } - case 556: - { - g_ucVariants[i] = 2; - break; - } - case 557: - { - g_ucVariants[i] = 1; - break; - } - case 423: - { - g_ucVariants[i] = 1; - break; - } - case 414: - { - g_ucVariants[i] = 3; - break; - } - case 522: - { - g_ucVariants[i] = 4; - break; - } - case 470: - { - g_ucVariants[i] = 2; - break; - } - case 404: - { - g_ucVariants[i] = 0; - break; - } - case 600: - { - g_ucVariants[i] = 1; - break; - } - case 413: - { - g_ucVariants[i] = 0; - break; - } - case 453: - { - g_ucVariants[i] = 1; - break; - } - case 442: - { - g_ucVariants[i] = 2; - break; - } - case 440: - { - g_ucVariants[i] = 5; - break; - } - case 543: - { - g_ucVariants[i] = 3; - break; - } - case 605: - { - g_ucVariants[i] = 3; - break; - } - case 428: - { - g_ucVariants[i] = 1; - break; - } - case 535: - { - g_ucVariants[i] = 1; - break; - } - case 439: - { - g_ucVariants[i] = 2; - break; - } - case 506: - { - g_ucVariants[i] = 0; - break; - } - case 601: - { - g_ucVariants[i] = 3; - break; - } - case 459: - { - g_ucVariants[i] = 0; - break; - } - case 449: - { - g_ucVariants[i] = 3; - break; - } - case 408: - { - g_ucVariants[i] = 0; - break; - } - case 583: - { - g_ucVariants[i] = 1; - break; - } - case 552: - { - g_ucVariants[i] = 1; - break; - } - case 478: - { - g_ucVariants[i] = 2; - break; - } - case 555: - { - g_ucVariants[i] = 0; - break; - } - case 456: - { - g_ucVariants[i] = 3; - break; - } - case 477: - { - g_ucVariants[i] = 0; - break; - } - } - } } CVehicleManager::~CVehicleManager() @@ -418,17 +84,21 @@ bool CVehicleManager::Exists(CVehicle* pVehicle) return ListContains(m_List, pVehicle); } -bool CVehicleManager::IsValidModel(unsigned int ulVehicleModel) +bool CVehicleManager::IsValidModel(unsigned int uiVehicleModel) { - return ulVehicleModel >= 400 && ulVehicleModel <= 611; + if (g_pGame->GetModelManager()->GetVehicleModel(uiVehicleModel)) + return true; + + return false; } eVehicleType CVehicleManager::GetVehicleType(unsigned short usModel) { - if (!IsValidModel(usModel)) - return VEHICLE_NONE; + CModelVehicle* pModel = g_pGame->GetModelManager()->GetVehicleModel(usModel); + if (pModel) + return pModel->GetVehicleType(); - return gs_vehicleTypes[usModel - 400]; + return VEHICLE_NONE; } bool CVehicleManager::IsValidUpgrade(unsigned short usUpgrade) @@ -438,9 +108,10 @@ bool CVehicleManager::IsValidUpgrade(unsigned short usUpgrade) unsigned int CVehicleManager::GetMaxPassengers(unsigned int uiVehicleModel) { - if (IsValidModel(uiVehicleModel)) + CModelVehicle* pModel = g_pGame->GetModelManager()->GetVehicleModel(uiVehicleModel); + if (pModel) { - return g_ucMaxPassengers[uiVehicleModel - 400]; + return pModel->GetPassengesCount(); } return 0xFF; @@ -452,7 +123,8 @@ void CVehicleManager::GetRandomVariation(unsigned short usModel, unsigned char& ucVariant = 255; ucVariant2 = 255; // Valid model? - if (IsValidModel(usModel) && g_ucVariants[usModel - 400] != 255) + char cVariants = g_pGame->GetModelManager()->GetVehicleModel(usModel)->GetVariantsCount(); + if (IsValidModel(usModel) && cVariants != 255) { // caddy || cropduster if (usModel == 457 || usModel == 512) @@ -469,7 +141,7 @@ void CVehicleManager::GetRandomVariation(unsigned short usModel, unsigned char& else if (usModel == 535) { // Slamvan has steering wheel "extras" we want one of those so default cannot be an option. - ucVariant = (rand() % (g_ucVariants[usModel - 400] + 1)); + ucVariant = (rand() % (cVariants + 1)); return; } // NRG 500 || BF400 @@ -490,43 +162,67 @@ void CVehicleManager::GetRandomVariation(unsigned short usModel, unsigned char& // e.g. ( rand () % ( 5 + 2 ) ) - 1 // Can generate 6 then minus 1 = 5 // Can generate 0 then minus 1 = -1 (255) (default model with nothing) - ucVariant = (rand() % (g_ucVariants[usModel - 400] + 2)) - 1; + ucVariant = (rand() % (cVariants + 2)) - 1; } } bool CVehicleManager::HasTurret(unsigned int uiModel) { - return (IsValidModel(uiModel) && (g_ulVehicleAttributes[uiModel - 400] & VEHICLE_HAS_TURRENT)); + CModelVehicle* pModel = g_pGame->GetModelManager()->GetVehicleModel(uiModel); + if (pModel) + return pModel->GetAttributes() & VEHICLE_HAS_TURRENT; + + return false; } bool CVehicleManager::HasSirens(unsigned int uiModel) { - return (IsValidModel(uiModel) && (g_ulVehicleAttributes[uiModel - 400] & VEHICLE_HAS_SIRENS)); + CModelVehicle* pModel = g_pGame->GetModelManager()->GetVehicleModel(uiModel); + if (pModel) + return pModel->GetAttributes() & VEHICLE_HAS_SIRENS; + + return false; } bool CVehicleManager::HasTaxiLight(unsigned int uiModel) { - return (IsValidModel(uiModel) && (g_ulVehicleAttributes[uiModel - 400] & VEHICLE_HAS_TAXI_LIGHTS)); + CModelVehicle* pModel = g_pGame->GetModelManager()->GetVehicleModel(uiModel); + if (pModel) + return pModel->GetAttributes() & VEHICLE_HAS_TAXI_LIGHTS; + + return false; } bool CVehicleManager::HasLandingGears(unsigned int uiModel) { - return (IsValidModel(uiModel) && (g_ulVehicleAttributes[uiModel - 400] & VEHICLE_HAS_LANDING_GEARS)); + CModelVehicle* pModel = g_pGame->GetModelManager()->GetVehicleModel(uiModel); + if (pModel) + return pModel->GetAttributes() & VEHICLE_HAS_LANDING_GEARS; + + return false; } bool CVehicleManager::HasAdjustableProperty(unsigned int uiModel) { - return (IsValidModel(uiModel) && (g_ulVehicleAttributes[uiModel - 400] & VEHICLE_HAS_ADJUSTABLE_PROPERTY)); + CModelVehicle* pModel = g_pGame->GetModelManager()->GetVehicleModel(uiModel); + if (pModel) + return pModel->GetAttributes() & VEHICLE_HAS_ADJUSTABLE_PROPERTY; + + return false; } bool CVehicleManager::HasSmokeTrail(unsigned int uiModel) { - return (IsValidModel(uiModel) && (g_ulVehicleAttributes[uiModel - 400] & VEHICLE_HAS_SMOKE_TRAIL)); + CModelVehicle* pModel = g_pGame->GetModelManager()->GetVehicleModel(uiModel); + if (pModel) + return pModel->GetAttributes() & VEHICLE_HAS_SMOKE_TRAIL; + + return false; } bool CVehicleManager::IsTrailer(unsigned int uiVehicleModel) { - return (IsValidModel(uiVehicleModel) && (gs_vehicleTypes[uiVehicleModel - 400] == VEHICLE_TRAILER)); + return GetVehicleType(uiVehicleModel) == VEHICLE_TRAILER; } bool CVehicleManager::HasDamageModel(unsigned short usModel) diff --git a/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp b/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp index 45ab52f0cd..c2343c5be9 100644 --- a/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp +++ b/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp @@ -277,6 +277,19 @@ ADD_ENUM(ESyncType::LOCAL, "local") ADD_ENUM(ESyncType::SUBSCRIBE, "subscribe") IMPLEMENT_ENUM_CLASS_END("sync-mode") +IMPLEMENT_ENUM_CLASS_BEGIN(eModelInfoType) +ADD_ENUM(eModelInfoType::INVALID, "invalid") +ADD_ENUM(eModelInfoType::ATOMIC, "atomic") +ADD_ENUM(eModelInfoType::UNKNOWN, "unknown") +ADD_ENUM(eModelInfoType::TIME, "time") +ADD_ENUM(eModelInfoType::WEAPON, "weapon") +ADD_ENUM(eModelInfoType::CLUMP, "clump") +ADD_ENUM(eModelInfoType::VEHICLE, "vehicle") +ADD_ENUM(eModelInfoType::PED, "ped") +ADD_ENUM(eModelInfoType::LOD_ATOMIC, "lod-atomic") +IMPLEMENT_ENUM_CLASS_END("model-info-type") + + // // Get best guess at name of userdata type // diff --git a/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h b/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h index fb6fd31794..d0bce134bb 100644 --- a/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h +++ b/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h @@ -10,6 +10,7 @@ #pragma once #include "CElementIDs.h" #include "CConsoleClient.h" +#include "models/CModelBase.h" // Forward declare enum reflection stuff enum eLuaType @@ -28,6 +29,7 @@ DECLARE_ENUM(CAccessControlListRight::ERightType); DECLARE_ENUM(CElement::EElementType); DECLARE_ENUM(CAccountPassword::EAccountPasswordType); DECLARE_ENUM_CLASS(ESyncType); +DECLARE_ENUM_CLASS(eModelInfoType); enum eHudComponent { diff --git a/Server/mods/deathmatch/logic/lua/CLuaManager.cpp b/Server/mods/deathmatch/logic/lua/CLuaManager.cpp index 07f5f82202..be0927ad33 100644 --- a/Server/mods/deathmatch/logic/lua/CLuaManager.cpp +++ b/Server/mods/deathmatch/logic/lua/CLuaManager.cpp @@ -184,6 +184,7 @@ void CLuaManager::LoadCFunctions() CLuaWorldDefs::LoadFunctions(); CLuaXMLDefs::LoadFunctions(); CLuaGenericDefs::LoadFunctions(); + CLuaModelDefs::LoadFunctions(); // Backward compatibility functions at the end, so the new function name is used in ACL CLuaCompatibilityDefs::LoadFunctions(); } diff --git a/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp b/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp new file mode 100644 index 0000000000..1bbf0e02b6 --- /dev/null +++ b/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp @@ -0,0 +1,41 @@ +/***************************************************************************** + * + * PROJECT: Multi Theft Auto + * LICENSE: See LICENSE in the top level directory + * FILE: Shared/mods/logic/luadefs/CLuaModelDefs.cpp + * + * Multi Theft Auto is available from http://www.multitheftauto.com/ + * + *****************************************************************************/ +#include "StdInc.h" +#include + +void CLuaModelDefs::LoadFunctions() +{ + constexpr static const std::pair functions[]{ + {"allocateModel", ArgumentParserWarn}, + {"getAllocatedModels", ArgumentParserWarn}, + {"allocateModelFromParent", ArgumentParserWarn}, + }; + + // Add functions + for (const auto& [name, func] : functions) + CLuaCFunctions::AddFunction(name, func); +} + +uint CLuaModelDefs::AllocateModel(eModelInfoType eModel, std::optional uiParentModel, std::optional uiModelID) +{ + return -1; +} + +boolean CLuaModelDefs::AllocateModelFromParent(uint32_t uiModelID, uint32_t uiParentModelID) +{ + g_pGame->GetModelManager()->AllocateModelFromParent(uiModelID, uiParentModelID); + return true; +} + +std::vector CLuaModelDefs::GetAllocatedModels(std::optional eType) +{ + std::vector o; + return o; +} diff --git a/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.h b/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.h new file mode 100644 index 0000000000..1ba43aaddb --- /dev/null +++ b/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.h @@ -0,0 +1,24 @@ +/***************************************************************************** + * + * PROJECT: Multi Theft Auto + * LICENSE: See LICENSE in the top level directory + * FILE: Shared/mods/logic/luadefs/CLuaModelDefs.h + * + * Multi Theft Auto is available from http://www.multitheftauto.com/ + * + *****************************************************************************/ + +#pragma once +#include "StdInc.h" +#include "luadefs/CLuaDefs.h" + +class CLuaModelDefs : public CLuaDefs +{ +public: + static void LoadFunctions(); + + static uint AllocateModel(eModelInfoType eModel, std::optional uiParentModel, std::optional uiModelID); + static boolean AllocateModelFromParent(uint32_t uiModelID, uint32_t uiParentModelID); + + static std::vector GetAllocatedModels(std::optional eType); +}; diff --git a/Server/mods/deathmatch/logic/models/CModelAtomic.cpp b/Server/mods/deathmatch/logic/models/CModelAtomic.cpp new file mode 100644 index 0000000000..b7249c27fe --- /dev/null +++ b/Server/mods/deathmatch/logic/models/CModelAtomic.cpp @@ -0,0 +1,31 @@ +/***************************************************************************** + * + * PROJECT: Multi Theft Auto v1.0 + * LICENSE: See LICENSE in the top level directory + * FILE: mods/deathmatch/logic/models/CModelAtomic.cpp + * PURPOSE: Atomic model class + * + * Multi Theft Auto is available from http://www.multitheftauto.com/ + * + *****************************************************************************/ + +#include "StdInc.h" + +CModelAtomic::CModelAtomic(uint32_t uiModelID, char strName[22], char strTextureName[22], uint32_t uiDrawDistance, uint32_t uiFlags) : CModelBase(uiModelID) +{ + strcpy(m_modelName, strName); + strcpy(m_strTextureName, strTextureName); + SetDrawDistance(uiDrawDistance); + SetFlags(uiFlags); +} + +CModelAtomic::~CModelAtomic() +{ + +} + +void CModelAtomic::Unload() +{ + return; +} + diff --git a/Server/mods/deathmatch/logic/models/CModelAtomic.h b/Server/mods/deathmatch/logic/models/CModelAtomic.h new file mode 100644 index 0000000000..64e59f79f2 --- /dev/null +++ b/Server/mods/deathmatch/logic/models/CModelAtomic.h @@ -0,0 +1,34 @@ +/***************************************************************************** + * + * PROJECT: Multi Theft Auto v1.0 + * LICENSE: See LICENSE in the top level directory + * FILE: mods/deathmatch/logic/models/CModelAtomic.h + * PURPOSE: Atomic model class + * + * Multi Theft Auto is available from http://www.multitheftauto.com/ + * + *****************************************************************************/ + +class CModelAtomic; + +#pragma once + +class CModelAtomic : public CModelBase +{ +public: + CModelAtomic(uint32_t uiModelID, char strName[22], char strTextureName[22], uint32_t uiDrawDistance, uint32_t uiFlags); + ~CModelAtomic(); + + eModelInfoType GetType() { return eModelInfoType::ATOMIC; }; + void Unload(); + + uint32_t GetDrawDistance() { return m_uiDrawDistance; }; + void SetDrawDistance(uint32_t uiDistance) { m_uiDrawDistance = uiDistance; }; + void SetFlags(uint32_t uiFlags) { m_uiDrawDistance = uiFlags; }; + uint32_t GetFlags() { return m_uiFlags; }; + +private: + char m_strTextureName[22]; + uint32_t m_uiDrawDistance; + uint32_t m_uiFlags; +}; diff --git a/Server/mods/deathmatch/logic/models/CModelBase.cpp b/Server/mods/deathmatch/logic/models/CModelBase.cpp new file mode 100644 index 0000000000..e7f4f09788 --- /dev/null +++ b/Server/mods/deathmatch/logic/models/CModelBase.cpp @@ -0,0 +1,21 @@ +/***************************************************************************** + * + * PROJECT: Multi Theft Auto v1.0 + * LICENSE: See LICENSE in the top level directory + * FILE: mods/deathmatch/logic/models/CModelBase.cpp + * PURPOSE: Base model info class + * + * Multi Theft Auto is available from http://www.multitheftauto.com/ + * + *****************************************************************************/ + +#include "StdInc.h" + +//CModelBase::CModelBase(){ +// +//}; + + +CModelBase::~CModelBase() +{ +} diff --git a/Server/mods/deathmatch/logic/models/CModelBase.h b/Server/mods/deathmatch/logic/models/CModelBase.h new file mode 100644 index 0000000000..388a2ac486 --- /dev/null +++ b/Server/mods/deathmatch/logic/models/CModelBase.h @@ -0,0 +1,62 @@ +/***************************************************************************** + * + * PROJECT: Multi Theft Auto v1.0 + * LICENSE: See LICENSE in the top level directory + * FILE: mods/deathmatch/logic/models/CModelBase.h + * PURPOSE: Base model info class header + * + * Multi Theft Auto is available from http://www.multitheftauto.com/ + * + *****************************************************************************/ + +class CModelBase; +#pragma once + +#include + +enum class eModelInfoType : unsigned char +{ + INVALID = 0, + ATOMIC = 1, + UNKNOWN = 2, + TIME = 3, + WEAPON = 4, + CLUMP = 5, + VEHICLE = 6, + PED = 7, + LOD_ATOMIC = 8, +}; + +class CModelBase +{ +public: + CModelBase(uint32_t uiModelID): + m_uiModelID(uiModelID) + {}; + + ~CModelBase(); + + virtual CModelBase* Clone(uint32_t uiModelID) = 0; + + CResource* GetCreatorResource() { return m_pCreatorResouce; }; + uint32_t GetModelID() { return m_uiModelID; }; + uint32_t GetParentModel() { return m_uiParentID; }; + void SetParentModel(uint32_t uiParentModel) { m_uiParentID = uiParentModel; }; + std::string_view GetName() { return m_modelName; }; + virtual bool SetName(std::string_view strName) { return false; }; + virtual bool IsCustom() { return true; }; + virtual void Unload() = 0; + + eModelInfoType GetType() { return m_type; }; + +protected: + eModelInfoType m_type = eModelInfoType::INVALID; + // Model id + uint32_t m_uiModelID; + + // Model prototype + uint32_t m_uiParentID; + + CResource* m_pCreatorResouce; + char m_modelName[22]; +}; diff --git a/Server/mods/deathmatch/logic/models/CModelLoader.cpp b/Server/mods/deathmatch/logic/models/CModelLoader.cpp new file mode 100644 index 0000000000..7081a3812a --- /dev/null +++ b/Server/mods/deathmatch/logic/models/CModelLoader.cpp @@ -0,0 +1,156 @@ +/***************************************************************************** + * + * PROJECT: Multi Theft Auto v1.0 + * LICENSE: See LICENSE in the top level directory + * FILE: mods/deathmatch/logic/models/CModelLoader.cpp + * PURPOSE: Model info loader class + * + * Multi Theft Auto is available from http://www.multitheftauto.com/ + * + *****************************************************************************/ + +#include "StdInc.h" + +#include +#include + +CModelLoader::CModelLoader() +{ + // Should be replaced + loadDefaultData(); +} + +CModelLoader::~CModelLoader() +{ +} + +void CModelLoader::loadDefaultData() +{ + filesystem::path modPath = filesystem::path(g_pServerInterface->GetServerModPath()); + + loadObjectDefs(modPath / "objects.conf"); + loadVehicleDefs(modPath / "vehicles.conf"); +} + +void CModelLoader::unloadDefaultData() +{ + +} + +void CModelLoader::loadVehicleHandling(std::string_view strData) +{ +} + +void CModelLoader::loadObjectDefs(const std::filesystem::path path) +{ + auto parseLineFunction = [](std::vector lineParams) + { + uint32_t uiModelID = atoi(lineParams[0]); + char* strModelName = lineParams[1]; + char* strTextureName = lineParams[2]; + uint32_t iDrawDistance = atoi(lineParams[3]); + uint32_t iFlags = atoi(lineParams[4]); + + //CModelAtomic* pNewObjectModel = new CModelAtomic(*strModelName, *strTextureName, iDrawDistance, iFlags); + //g_pGame->GetModelManager()->RegisterModel(pNewObjectModel); + }; + + parseConfigCSV(path, parseLineFunction); +} + +void CModelLoader::loadVehicleDefs(const std::filesystem::path path) +{ + auto parseLineFunction = [](std::vector lineParams) { + uint32_t uiModelID = atoi(lineParams[0]); + char* strModelName = lineParams[1]; + char* strTextureName = lineParams[2]; + char* strType = lineParams[3]; + uint8_t cModelVaiants = atoi(lineParams[4]); + uint8_t cAtributes = atoi(lineParams[5]); + uint8_t cPassengers = atoi(lineParams[6]); + //char* strName = lineParams[4]; + //char* strAnims = lineParams[5]; + //char* strClass = lineParams[6]; + //uint32_t iFlags = atoi(lineParams[7]); + //char* strComprutes = lineParams[8]; + //uint32_t uiWheelsID = atoi(lineParams[9]); + //float fWheelSizeF = atof(lineParams[10]); + //float fWheelSizeR = atof(lineParams[11]); + //uint32_t uiWheelUpgradeClass = atoi(lineParams[12]); + + eVehicleType eType; + if (strcmp(strType, "car") == 0) + { + eType = eVehicleType::VEHICLE_CAR; + } + else if (strcmp(strType, "mtruck") == 0) + { + eType = eVehicleType::VEHICLE_MONSTERTRUCK; + } + else if (strcmp(strType, "heli") == 0) + { + eType = eVehicleType::VEHICLE_HELI; + } + else if (strcmp(strType, "boat") == 0) + { + eType = eVehicleType::VEHICLE_BOAT; + } + else if (strcmp(strType, "trailer") == 0) + { + eType = eVehicleType::VEHICLE_TRAILER; + } + else if (strcmp(strType, "train") == 0) + { + eType = eVehicleType::VEHICLE_TRAIN; + } + else if (strcmp(strType, "plane") == 0) + { + eType = eVehicleType::VEHICLE_PLANE; + } + else if (strcmp(strType, "bike") == 0) + { + eType = eVehicleType::VEHICLE_BIKE; + } + else if (strcmp(strType, "quad") == 0) + { + eType = eVehicleType::VEHICLE_QUADBIKE; + } + else if (strcmp(strType, "bmx") == 0) + { + eType = eVehicleType::VEHICLE_BMX; + } + + // Handling is still hardcoded + const CHandlingEntry* pHandling = g_pGame->GetHandlingManager()->GetOriginalHandlingData((eVehicleTypes)uiModelID); + + CModelVehicle* pModelData = new CModelVehicle(uiModelID, pHandling, eType, cModelVaiants, cAtributes, cPassengers); + + g_pGame->GetModelManager()->RegisterModel(pModelData); + }; + + parseConfigCSV(path, parseLineFunction); +} + +void CModelLoader::parseConfigCSV(const std::filesystem::path path, std::function lineParams)> parseLineFun) +{ + std::ifstream pFile(path.c_str(), std::ifstream::out); + if (pFile.is_open()) + { + std::string line; + while (std::getline(pFile, line)) + { + std::vector splittedParams; + + const char* delimiters = ", \t"; + char* token = std::strtok(line.data(), delimiters); + while (token) + { + splittedParams.push_back(token); + token = std::strtok(nullptr, delimiters); + } + + parseLineFun(splittedParams); + } + pFile.close(); + } +} diff --git a/Server/mods/deathmatch/logic/models/CModelLoader.h b/Server/mods/deathmatch/logic/models/CModelLoader.h new file mode 100644 index 0000000000..758e52b865 --- /dev/null +++ b/Server/mods/deathmatch/logic/models/CModelLoader.h @@ -0,0 +1,32 @@ +/***************************************************************************** + * + * PROJECT: Multi Theft Auto v1.0 + * LICENSE: See LICENSE in the top level directory + * FILE: mods/deathmatch/logic/models/CModelLoader.h + * PURPOSE: Model info loader class header + * + * Multi Theft Auto is available from http://www.multitheftauto.com/ + * + *****************************************************************************/ + +#pragma once + +#include +#include + +class CModelLoader +{ +public: + CModelLoader(); + ~CModelLoader(); + + void loadDefaultData(); + void unloadDefaultData(); + + void loadVehicleHandling(std::string_view strData); + void loadObjectDefs(const std::filesystem::path path); + void loadVehicleDefs(const std::filesystem::path path); + +private: + void parseConfigCSV(const std::filesystem::path path, std::function lineParams)> parseLineFun); +}; diff --git a/Server/mods/deathmatch/logic/models/CModelManager.cpp b/Server/mods/deathmatch/logic/models/CModelManager.cpp new file mode 100644 index 0000000000..7219ca1b5b --- /dev/null +++ b/Server/mods/deathmatch/logic/models/CModelManager.cpp @@ -0,0 +1,115 @@ +/***************************************************************************** + * + * PROJECT: Multi Theft Auto v1.0 + * LICENSE: See LICENSE in the top level directory + * FILE: mods/deathmatch/logic/CModelManager.cpp + * PURPOSE: Model manager class + * + * Multi Theft Auto is available from http://www.multitheftauto.com/ + * + *****************************************************************************/ + +#include "StdInc.h" + +CModelManager::CModelManager() +{ + m_vModels.resize(25500); +} + +CModelManager::~CModelManager() +{ + for (auto* pModel : m_vModels) + { + if (pModel) + { + RemoveModel(pModel); + } + } +} + +void CModelManager::RegisterModel(CModelBase* pModelHandler) +{ + uint16_t iModelID = pModelHandler->GetModelID(); + + if (m_vModels[iModelID]) + assert("Model currently allocated"); + + m_vModels[iModelID] = pModelHandler; +} + +CModelBase* CModelManager::CreateModel(uint iModelID, eModelInfoType eType) +{ + // Model is curently allocated, skip it + if (m_vModels[iModelID]) + { + return nullptr; + } + + CModelBase* pModelInfo; + + switch (eType) + { + //case eModelInfoType::VEHICLE: + // break; + case eModelInfoType::ATOMIC: + //pModelInfo = new CModelAtomic(); + break; + default: + return nullptr; + } + + m_vModels[iModelID] = pModelInfo; + + return pModelInfo; +} + +void CModelManager::CleanResourceModels(CResource* pResource) +{ + for (auto* pModel : m_vModels) + { + if (pModel->GetCreatorResource() == pResource) + { + RemoveModel(pModel); + } + } +} + +void CModelManager::AllocateModelFromParent(uint32_t uiNewModelID, uint32_t uiParentModel) +{ + CModelBase* pParentModel = m_vModels[uiParentModel]; + + if (!pParentModel) + return; + + if (m_vModels[uiNewModelID]) + return; + + CModelBase* pNewModel = pParentModel->Clone(uiNewModelID); + RegisterModel(pNewModel); + + // Save in simple allocated list + m_vSimpleAllocatedModels.push_back(pNewModel); + + // Send network event + CBitStream BitStream; + BitStream.pBitStream->Write(uiNewModelID); + BitStream.pBitStream->Write(uiParentModel); + g_pGame->GetPlayerManager()->BroadcastOnlyJoined(CLuaPacket(ALLOCATE_MODEL_FROM_PARENT, *BitStream.pBitStream)); +} + +void CModelManager::RemoveModel(CModelBase* pModel) +{ + pModel->Unload(); + + switch (pModel->GetType()) + { + case eModelInfoType::ATOMIC: + delete dynamic_cast(pModel); + break; + case eModelInfoType::VEHICLE: + delete dynamic_cast(pModel); + break; + default: + break; + } +} diff --git a/Server/mods/deathmatch/logic/models/CModelManager.h b/Server/mods/deathmatch/logic/models/CModelManager.h new file mode 100644 index 0000000000..97ef851b5d --- /dev/null +++ b/Server/mods/deathmatch/logic/models/CModelManager.h @@ -0,0 +1,45 @@ +/***************************************************************************** + * + * PROJECT: Multi Theft Auto v1.0 + * LICENSE: See LICENSE in the top level directory + * FILE: mods/deathmatch/logic/models/CModelManager.h + * PURPOSE: Model manager class + * + * Multi Theft Auto is available from http://www.multitheftauto.com/ + * + *****************************************************************************/ + +class CModelManager; + +#pragma once + +#include "StdInc.h" +#include + +class CModelManager +{ +public: + CModelManager::CModelManager(); + ~CModelManager(); + + // Register generic GTA:SA model info + void RegisterModel(CModelBase* pModelHandler); + + // Create new GTA:SA model info + CModelBase* CreateModel(uint32_t iModelID, eModelInfoType eType); + + void CleanResourceModels(CResource* pResource); + void AllocateModelFromParent(uint32_t uiNewModelID, uint32_t uiParentModel); + + CModelVehicle* GetVehicleModel(uint32_t iModelID) { return dynamic_cast(m_vModels[iModelID]); }; + + std::list GetSimpleAllocatedModels() { return m_vSimpleAllocatedModels; }; + +private: + void RemoveModel(CModelBase* pModel); + +private: + // modelID - CModelBase + std::vector m_vModels; + std::list m_vSimpleAllocatedModels; +}; diff --git a/Server/mods/deathmatch/logic/models/CModelVehicle.cpp b/Server/mods/deathmatch/logic/models/CModelVehicle.cpp new file mode 100644 index 0000000000..e5d437ea0c --- /dev/null +++ b/Server/mods/deathmatch/logic/models/CModelVehicle.cpp @@ -0,0 +1,43 @@ +/***************************************************************************** + * + * PROJECT: Multi Theft Auto v1.0 + * LICENSE: See LICENSE in the top level directory + * FILE: mods/deathmatch/logic/models/CModelVehicle.cpp + * PURPOSE: Vehicle model info class + * + * Multi Theft Auto is available from http://www.multitheftauto.com/ + * + *****************************************************************************/ + +#pragma once +#include "StdInc.h" + +CModelVehicle::CModelVehicle(uint32_t uiModelID, const CHandlingEntry* pHandling, eVehicleType eType, uint8_t cVariantsCount, uint8_t cAttributes, + uint8_t cPassengesCount) + : CModelBase(uiModelID) +{ + m_pOriginalVehicleHandling = pHandling; + m_pVehicleHandling = new CHandlingEntry(); + m_pVehicleHandling->ApplyHandlingData(pHandling); + m_eVehicleType = eType; + m_cVariantsCount = cVariantsCount; + m_cAttributes = cAttributes; + m_cPassengesCount = cPassengesCount; +} + +CModelVehicle::~CModelVehicle() +{ +} + +CModelVehicle* CModelVehicle::Clone(uint32_t uiModelID) +{ + CModelVehicle* pNewModel = new CModelVehicle(uiModelID, m_pOriginalVehicleHandling, m_eVehicleType, m_cVariantsCount, m_cAttributes, m_cPassengesCount); + + pNewModel->SetParentModel(m_uiModelID); + + return pNewModel; +} + +void CModelVehicle::Unload() +{ +} diff --git a/Server/mods/deathmatch/logic/models/CModelVehicle.h b/Server/mods/deathmatch/logic/models/CModelVehicle.h new file mode 100644 index 0000000000..fb9d664d33 --- /dev/null +++ b/Server/mods/deathmatch/logic/models/CModelVehicle.h @@ -0,0 +1,46 @@ +/***************************************************************************** + * + * PROJECT: Multi Theft Auto v1.0 + * LICENSE: See LICENSE in the top level directory + * FILE: mods/deathmatch/logic/CModelAtomic.h + * PURPOSE: Atomic model class + * + * Multi Theft Auto is available from http://www.multitheftauto.com/ + * + *****************************************************************************/ + +class CModelVehicle; + +#pragma once + +class CModelVehicle : public CModelBase +{ +public: + // CModelVehicle(){}; + CModelVehicle(uint32_t uiModelID, const CHandlingEntry* pHandling, eVehicleType eType, uint8_t cVariantsCount, uint8_t cAttributes, uint8_t cPassengesCount); + ~CModelVehicle(); + + virtual CModelVehicle* Clone(uint32_t uiModelID); + CHandlingEntry* GetVehicleHandling() { return m_pVehicleHandling; }; + const CHandlingEntry* GetOriginalHandling() { return m_pOriginalVehicleHandling; }; + void SetVehicleHandling(CHandlingEntry* pEntry) { m_pVehicleHandling = pEntry; }; + void SetVehicleHandlingChanged(bool bState) { m_bVehicleHandlingChanged = bState; }; + bool HasVehicleHandlingChanged() { return m_bVehicleHandlingChanged; }; + + eVehicleType GetVehicleType() { return m_eVehicleType; }; + uint8_t GetVariantsCount() { return m_cVariantsCount; }; + uint8_t GetAttributes() { return m_cAttributes; }; + uint8_t GetPassengesCount() { return m_cPassengesCount; }; + + eModelInfoType GetType() { return eModelInfoType::VEHICLE; }; + void Unload(); + +private: + CHandlingEntry* m_pVehicleHandling; + const CHandlingEntry* m_pOriginalVehicleHandling; + bool m_bVehicleHandlingChanged = false; + eVehicleType m_eVehicleType; + uint8_t m_cVariantsCount; + uint8_t m_cAttributes; + uint8_t m_cPassengesCount; +}; diff --git a/Server/mods/deathmatch/logic/packets/CEntityAddPacket.cpp b/Server/mods/deathmatch/logic/packets/CEntityAddPacket.cpp index fb852c9389..7c671fba9a 100644 --- a/Server/mods/deathmatch/logic/packets/CEntityAddPacket.cpp +++ b/Server/mods/deathmatch/logic/packets/CEntityAddPacket.cpp @@ -428,12 +428,19 @@ bool CEntityAddPacket::Write(NetBitStreamInterface& BitStream) const BitStream.Write(&position); BitStream.Write(&rotationDegrees); - // Vehicle id as a char - // I'm assuming the "-400" is for adjustment so that all car values can - // fit into a char? Why doesn't someone document this? - // - // --slush - BitStream.Write(static_cast(pVehicle->GetModel() - 400)); + if (BitStream.Can(eBitStreamVersion::SimpleModelAllocationg)) + { + BitStream.Write(pVehicle->GetModel()); + } + else + { + // Vehicle id as a char + // I'm assuming the "-400" is for adjustment so that all car values can + // fit into a char? Why doesn't someone document this? + // + // --slush + BitStream.Write(static_cast(pVehicle->GetModel() - 400)); + } // Health SVehicleHealthSync health; diff --git a/Server/mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.cpp b/Server/mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.cpp index 11af1c20c7..ec6401d100 100644 --- a/Server/mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.cpp +++ b/Server/mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.cpp @@ -116,5 +116,19 @@ bool CPlayerJoinCompletePacket::Write(NetBitStreamInterface& BitStream) const break; } + std::list listSimpleAllocatedModels = g_pGame->GetModelManager()->GetSimpleAllocatedModels(); + + if (BitStream.Can(eBitStreamVersion::SimpleModelAllocationg)) + { + uint32_t uiModelsCount = listSimpleAllocatedModels.size(); + BitStream.Write(uiModelsCount); + + for (auto model : listSimpleAllocatedModels) + { + BitStream.Write(model->GetModelID()); + BitStream.Write(model->GetParentModel()); + } + } + return true; } diff --git a/Server/mods/deathmatch/vehicles.conf b/Server/mods/deathmatch/vehicles.conf new file mode 100644 index 0000000000..c7a7806baf --- /dev/null +++ b/Server/mods/deathmatch/vehicles.conf @@ -0,0 +1,212 @@ +400, landstal, landstal, car, LANDSTK, null, 0, 0, -1, 0.768, 0.768, 0 +401, bravura, bravura, car, BRAVURA, null, 0, 0, -1, 0.74, 0.74, 0 +402, buffalo, buffalo, car, BUFFALO, null, 0, 0, -1, 0.7, 0.7, 0 +403, linerun, linerun, car, LINERUN, truck, 0, 0, -1, 1.1, 1.1, -1 +404, peren, peren, car, PEREN, null, 0, 0, -1, 0.66, 0.66, 0 +405, sentinel, sentinel, car, SENTINL, null, 0, 0, -1, 0.7, 0.7, 0 +406, dumper, dumper, mtruck, DUMPER, truck, 1, 0, -1, 2.28, 2.28, -1 +407, firetruk, firetruk, car, FIRETRK, truck, 0, 0, -1, 1.0, 1.0, -1 +408, trash, trash, car, TRASHM, null, 0, 0, -1, 1.06, 1.06, -1 +409, stretch, stretch, car, STRETCH, null, 0, 0, -1, 0.75, 0.75, 0 +410, manana, manana, car, MANANA, null, 0, 0, -1, 0.62, 0.62, 0 +411, infernus, infernus, car, INFERNU, null, 0, 0, -1, 0.7, 0.7, 0 +412, voodoo, voodoo, car, VOODOO, null, 0, 0, -1, 0.7, 0.7, 0 +413, pony, pony, car, PONY, van, 0, 0, -1, 0.72, 0.72, -1 +414, mule, mule, car, MULE, null, 0, 0, -1, 0.76, 0.76, -1 +415, cheetah, cheetah, car, CHEETAH, null, 0, 0, -1, 0.68, 0.68, 0 +416, ambulan, ambulan, car, AMBULAN, van, 0, 0, -1, 0.864, 0.864, -1 +417, leviathn, leviathn, heli, LEVIATH, null, 0, 0, -1, 0.54, 0.4, -1 +418, moonbeam, moonbeam, car, MOONBM, null, 0, 0, -1, 0.7, 0.7, 0 +419, esperant, esperant, car, ESPERAN, null, 0, 0, -1, 0.64, 0.64, 0 +420, taxi, taxi, car, TAXI, null, 0, 1f10, -1, 0.7, 0.7, 0 +421, washing, washing, car, WASHING, null, 0, 0, -1, 0.65, 0.65, 0 +422, bobcat, bobcat, car, BOBCAT, null, 0, 0, -1, 0.7, 0.7, 0 +423, mrwhoop, mrwhoop, car, WHOOPEE, null, 1, 0, -1, 0.7, 0.7, -1 +424, bfinject, bfinject, car, BFINJC, BF_injection, 0, 0, -1, 0.84, 0.92, -1 +425, hunter, hunter, heli, HUNTER, rustler,0, 0, -1, 0.64, 0.4, -1 +426, premier, premier, car, PREMIER, null, 0, 0, -1, 0.7, 0.7, 0 +427, enforcer, enforcer, car, ENFORCR, van, 0, 0, -1, 0.936, 0.936, -1 +428, securica, securica, car, SECURI, van, 0, 3f10, -1, 0.914, 0.914, -1 +429, banshee, banshee, car, BANSHEE, null, 0, 0, -1, 0.7, 0.7, 0 +430, predator, predator, boat, PREDATR, null, 0, 0 +431, bus, bus, car, BUS, bus, 0, 0, -1, 1, 1, -1 +432, rhino, rhino, car, RHINO, tank, 0, 0, -1, 1.3, 1.3, -1 +433, barracks, barracks, car, BARRCKS, truck, 0, 1f10, -1, 1.2, 1.2, -1 +434, hotknife, hotknife, car, HOTKNIF, null, 0, 0, -1, 0.72, 0.8, -1 +435, artict1, artict1, trailer, ARTICT1, null, 0, 0, -1, 1.1, 1.1, -1 +436, previon, previon, car, PREVION, null, 0, 0, -1, 0.7, 0.7, 0 +437, coach, coach, car, COACH, coach, 0, 1f10, -1, 1.0, 1.0, -1 +438, cabbie, cabbie, car, CABBIE, null, 0, 1f10, -1, 0.7, 0.7, 0 +439, stallion, stallion, car, STALION, null, 0, 3210, -1, 0.7, 0.7, 0 +440, rumpo, rumpo, car, RUMPO, van, 0, 0, -1, 0.7, 0.7, -1 +441, rcbandit, rcbandit, car, RCBANDT, null, 0, 0, -1, 0.25, 0.25, -1 +442, romero, romero, car, ROMERO, null, 0, 0, -1, 0.68, 0.68, 0 +443, packer, packer, car, PACKER, truck, 0, 0, -1, 1.082, 1.082, -1 +444, monster, monster, mtruck, MONSTER, truck, 0, 0, -1, 1.5, 1.5, -1 +445, admiral, admiral, car, ADMIRAL, null, 0, 0, -1, 0.68, 0.68, 0 +446, squalo, squalo, boat, SQUALO, null, 0, 0, +447, seaspar, seaspar, heli, SEASPAR, null, 0, 0, -1, 0.7, 0.7, -1 +448, pizzaboy, pizzaboy, bike, PIZZABO, bikev, 1, 0, 16, 0.464, 0.464, -1 +449, tram, tram, train, TRAM, van, 0, 1012, -1, 0.78, 0.78, -1 +450, artict2, artict2, trailer, ARTICT2, null, 0, 0, -1, 1.1, 1.1, -1 +451, turismo, turismo, car, TURISMO, null, 0, 0, -1, 0.7, 0.75, 0 +452, speeder, speeder, boat, SPEEDER, null, 0, 4fff +453, reefer, reefer, boat, REEFER, null, 0, 3f01 +454, tropic, tropic, boat, TROPIC, null, 0, 4fff +455, flatbed, flatbed, car, FLATBED, truck, 0, 4fff, -1, 1.2, 1.2, -1 +456, yankee, yankee, car, YANKEE, null, 0, 0, -1, 0.84, 0.84, -1 +457, caddy, caddy, car, CADDY, null, 0, 30123345, -1, 0.5, 0.5, -1 +458, solair, solair, car, SOLAIR, null, 0, 0, -1, 0.72, 0.72, 0 +459, topfun, topfun, car, TOPFUN, van, 0, 0, -1, 0.7, 0.7, -1 +460, skimmer, skimmer, plane, SKIMMER, null, 0, 0 +461, pcj600, pcj600, bike, PCJ600, bikes, 0, 0, 16, 0.67, 0.67, -1 +462, faggio, faggio, bike, FAGGIO, bikev, 0, 0, 16, 0.464, 0.464, -1 +463, freeway, freeway, bike, FREEWAY, bikeh, 0, 0, 23, 0.654, 0.654, -1 +464, rcbaron, rcbaron, plane, RCBARON, null, 0, 0, -1, 0.25, 0.25, -1 +465, rcraider, rcraider, heli, RCRAIDE, null, 0, 0, -1, 0.25, 0.25, -1 +466, glendale, glendale, car, GLENDAL, null, 0, 0, -1, 0.7, 0.7, 0 +467, oceanic, oceanic, car, OCEANIC, null, 0, 0, -1, 0.7, 0.7, 0 +468, sanchez, sanchez, bike, SANCHEZ, biked, 0, 0, 23, 0.68, 0.62, -1 +469, sparrow, sparrow, heli, SPARROW, null, 0, 0, -1, 0.7, 0.7, -1 +470, patriot, patriot, car, PATRIOT, null, 0, 0, -1, 0.894, 0.894, -1 +471, quad, quad, quad, QUAD, quad, 0, 0, -1, 0.6, 0.6, -1 +472, coastg, coastg, boat, COASTG, null, 0, 3012 +473, dinghy, dinghy, boat, DINGHY, null, 0, 0 +474, hermes, hermes, car, HERMES, null, 0, 0, -1, 0.7, 0.7, 0 +475, sabre, sabre, car, SABRE, null, 0, 2ff0, -1, 0.7, 0.7, 0 +476, rustler, rustler, plane, RUSTLER, rustler,0, 0, -1, 0.6, 0.3, -1 +477, zr350, zr350, car, ZR350, null, 0, 0, -1, 0.76, 0.76, 0 +478, walton, walton, car, WALTON, null, 0, 0, -1, 0.7, 0.7, 0 +479, regina, regina, car, REGINA, null, 0, 0, -1, 0.7, 0.7, 0 +480, comet, comet, car, COMET, null, 0, 2ff0, -1, 0.7, 0.7, 0 +481, bmx, bmx, bmx, BMX, bmx, 0, 0, 23, 0.54, 0.54, -1 +482, burrito, burrito, car, BURRITO, van, 0, 0, -1, 0.7, 0.7, -1 +483, camper, camper, car, CAMPER, van, 0, 0, -1, 0.66, 0.66, -1 +484, marquis, marquis, boat, MARQUIS, null, 0, 0 +485, baggage, baggage, car, BAGGAGE, null, 0, 0, -1, 0.6, 0.6, -1 +486, dozer, dozer, car, DOZER, dozer, 0, 0, -1, 1.5, 1.5, -1 +487, maverick, maverick, heli, MAVERIC, null, 0, 0, -1, 0.7, 0.7, -1 +488, vcnmav, vcnmav, heli, SANMAV, null, 0, 0, -1, 0.7, 0.7, -1 +489, rancher, rancher, car, RANCHER, null, 0, 0, -1, 0.9, 0.9, 0 +490, fbiranch, fbiranch, car, FBIRANC, null, 0, 0, -1, 0.92, 0.92, -1 +491, virgo, virgo, car, VIRGO, null, 0, 0, -1, 0.65, 0.65, 0 +492, greenwoo, greenwoo, car, GREENWO, null, 0, 0, -1, 0.7, 0.7, 0 +493, jetmax, jetmax, boat, JETMAX, null, 0, 0 +494, hotring, hotring, car, HOTRING, null, 0, 0, -1, 0.82, 0.82, -1 +495, sandking, sandking, car, SANDKIN, null, 0, 0, -1, 0.972, 0.972, -1 +496, blistac, blistac, car, BLISTAC, null, 0, 0, -1, 0.7, 0.7, 0 +497, polmav, polmav, heli, POLMAV, null, 0, 0, -1, 0.7, 0.7, -1 +498, boxville, boxville, car, BOXVILL, van, 0, 0, -1, 0.76, 0.76, -1 +499, benson, benson, car, BENSON, null, 0, 0, -1, 0.8, 0.8, -1 +500, mesa, mesa, car, MESAA, null, 0, 0, -1, 0.8, 0.8, 0 +501, rcgoblin, rcgoblin, heli, RCGOBLI, null, 0, 0, -1, 0.25, 0.25, -1 +502, hotrina, hotrina, car, HOTRINA, null, 0, 4fff, -1, 0.82, 0.82, -1 +503, hotrinb, hotrinb, car, HOTRINB, null, 0, 4fff, -1, 0.82, 0.82, -1 +504, bloodra, bloodra, car, BLOODRA, BF_injection, 0, 4fff, -1, 0.7, 0.7, -1 +505, rnchlure, rnchlure, car, RANCHER, null, 0, 0, -1, 0.9, 0.9, -1 +506, supergt, supergt, car, SUPERGT, null, 0, 0, -1, 0.7, 0.7, 0 +507, elegant, elegant, car, ELEGANT, null, 0, 0, -1, 0.7, 0.7, 0 +508, journey, journey, car, JOURNEY, null, 0, 0, -1, 0.8, 0.8, -1 +509, bike, bike, bmx, BIKE, choppa, 0, 0, 23, 0.526, 0.612, -1 +510, mtbike, mtbike, bmx, MTBIKE, mtb, 0, 0, 23, 0.68, 0.68, -1 +511, beagle, beagle, plane, BEAGLE, van, 0, 0, -1, 0.52, 0.52, -1 +512, cropdust, cropdust, plane, CROPDST, rustler, 0, 0, -1, 0.7, 0.3, -1 +513, stunt, stunt, plane, STUNT, rustler, 0, 0, -1, 0.48, 0.48, -1 +514, petro, petro, car, PETROL, truck, 0, 0, -1, 1.106, 1.106, -1 +515, rdtrain, rdtrain, car, RDTRAIN, truck, 0, 0, -1, 1.18, 1.18, -1 +516, nebula, nebula, car, NEBULA, null, 0, 0, -1, 0.75, 0.75, 0 +517, majestic, majestic, car, MAJESTC, null, 0, 0, -1, 0.75, 0.75, 0 +518, buccanee, buccanee, car, BUCCANE, null, 0, 0, -1, 0.66, 0.66, 0 +519, shamal, shamal, plane, SHAMAL, shamal, 0, 0, -1, 0.62, 0.62, -1 +520, hydra, hydra, plane, HYDRA, rustler, 0, 0, -1, 0.7, 0.3, -1 +521, fcr900, fcr900, bike, FCR900, bikes, 0, 3f341210, 16, 0.68, 0.68, -1 +522, nrg500, nrg500, bike, NRG500, bikes, 0, 1f341210, 16, 0.68, 0.68, -1 +523, copbike, copbike, bike, HPV1000, bikes, 0, 0, 16, 0.68, 0.68, -1 +524, cement, cement, car, CEMENT, null, 0, 0, -1, 1.12, 1, -1 +525, towtruck, towtruck, car, TOWTRUK, van, 0, 0, -1, 0.92, 0.92, -1 +526, fortune, fortune, car, FORTUNE, null, 0, 0, -1, 0.7, 0.7, 0 +527, cadrona, cadrona, car, CADRONA, null, 0, 0, -1, 0.7, 0.7, 0 +528, fbitruck, fbitruck, car, FBITRUK, van, 0, 0, -1, 0.85, 0.85, -1 +529, willard, willard, car, WILLARD, null, 0, 0, -1, 0.7, 0.7, 0 +530, forklift, forklift, car, FORKLFT, null, 0, 0, -1, 0.45, 0.45, -1 +531, tractor, tractor, car, TRACTOR, null, 0, 0, -1, 0.68, 1.3, -1 +532, combine, combine, car, COMBINE, truck, 0, 0, -1, 0.588, 1, -1 +533, feltzer, feltzer, car, FELTZER, null, 0, 0, -1, 0.7, 0.7, 0 +534, remingtn, remingtn, car, REMING, null, 0, 0, -1, 0.7, 0.7, 2 +535, slamvan, slamvan, car, SLAMVAN, null, 0, 1f10, -1, 0.74, 0.74, 2 +536, blade, blade, car, BLADE, null, 0, 0, -1, 0.7, 0.7, 2 +537, freight, freight, train, FREIGHT, truck, 0, 0, -1, 1.06, 1.06, -1 +538, streak, streak, train, STREAK, truck, 0, 0, -1, 1.06, 1.06, -1 +539, vortex, vortex, plane, VORTEX, vortex, 0, 0, -1, 0.7, 0.7, -1 +540, vincent, vincent, car, VINCENT, null, 0, 0, -1, 0.7, 0.7, 0 +541, bullet, bullet, car, BULLET, null, 0, 0, -1, 0.7, 0.75, 0 +542, clover, clover, car, CLOVER, null, 0, 0, -1, 0.74, 0.74, 0 +543, sadler, sadler, car, SADLER, null, 0, 0, -1, 0.7, 0.7, -1 +544, firela, firela, car, FIRELA, truck, 0, 0, -1, 1.0, 1.0, -1 +545, hustler, hustler, car, HUSTLER, null, 0, 0, -1, 0.7, 0.7, 0 +546, intruder, intruder, car, INTRUDR, null, 0, 0, -1, 0.7, 0.7, 0 +547, primo, primo, car, PRIMO, null, 0, 0, -1, 0.7, 0.7, 0 +548, cargobob, cargobob, heli, CARGOBB, null, 0, 0, -1, 0.74, 0.74, -1 +549, tampa, tampa, car, TAMPA, null, 0, 0, -1, 0.684, 0.684, 0 +550, sunrise, sunrise, car, SUNRISE, null, 0, 0, -1, 0.76, 0.76, 0 +551, merit, merit, car, MERIT, null, 0, 0, -1, 0.75, 0.75, 0 +552, utility, utility, car, UTILITY, van, 0, 0, -1, 0.84, 0.84, -1 +553, nevada, nevada, plane, NEVADA, nevada, 0, 0, -1, 0.85, 0.4, -1 +554, yosemite, yosemite, car, YOSEMIT, null, 0, 0, -1, 0.84, 0.84, -1 +555, windsor, windsor, car, WINDSOR, null, 0, 0, -1, 0.7, 0.7, 0 +556, monstera, monstera, mtruck, MONSTA, truck, 0, 0, -1, 1.5, 1.5, -1 +557, monsterb, monsterb, mtruck, MONSTB, truck, 0, 0, -1, 1.5, 1.5, -1 +558, uranus, uranus, car, URANUS, null, 0, 0, -1, 0.7, 0.7, 1 +559, jester, jester, car, JESTER, null, 0, 0, -1, 0.7, 0.7, 1 +560, sultan, sultan, car, SULTAN, null, 0, 0, -1, 0.7, 0.7, 1 +561, stratum, stratum, car, STRATUM, null, 0, 0, -1, 0.7, 0.7, 1 +562, elegy, elegy, car, ELEGY, null, 0, 0, -1, 0.68, 0.68, 1 +563, raindanc, raindanc, heli, RAINDNC, null, 0, 0, -1, 0.64, 0.64, -1 +564, rctiger, rctiger, car, RCTIGER, null, 0, 0, -1, 0.25, 0.25, -1 +565, flash, flash, car, FLASH, null, 0, 0, -1, 0.64, 0.64, 1 +566, tahoma, tahoma, car, TAHOMA, null, 0, 0, -1, 0.7, 0.7, 0 +567, savanna, savanna, car, SAVANNA, null, 0, 2ff0, -1, 0.7, 0.7, 2 +568, bandito, bandito, car, BANDITO, null, 0, 0, -1, 0.55, 0.7, -1 +569, freiflat, freiflat, train, FRFLAT, null, 0, 0, -1, 1.06, 1.06, -1 +570, streakc, streakc, train, STREAKC, coach, 0, 0, -1, 1.06, 1.06, -1 +571, kart, kart, car, KART, KART, 0, 0, -1, 0.26, 0.26, -1 +572, mower, mower, car, MOWER, null, 0, 0, -1, 0.48, 0.56, -1 +573, duneride, duneride, mtruck, DUNE, truck, 0, 0, -1, 1.14, 1.14, -1 +574, sweeper, sweeper, car, SWEEPER, null, 0, 0, -1, 0.5, 0.5, -1 +575, broadway, broadway, car, BROADWY, null, 0, 2ff0, -1, 0.7, 0.7, 2 +576, tornado, tornado, car, TORNADO, null, 0, 2ff0, -1, 0.7, 0.7, 2 +577, at400, at400, plane, AT400, coach, 0, 0, -1, 1.12, 1.12, -1 +578, dft30, dft30, car, DFT30, truck, 0, 4fff, -1, 1, 1, -1 +579, huntley, huntley, car, HUNTLEY, null, 7, 0, -1, 0.90, 0.90, 0 +580, stafford, stafford, car, STAFFRD, null, 0, 0, -1, 0.78, 0.78, 0 +581, bf400, bf400, bike, BF400, bikes, 0, 3f341210, 16, 0.68, 0.68, -1 +582, newsvan, newsvan, car, NEWSVAN, van, 0, 0, -1, 0.77, 0.77, -1 +583, tug, tug, car, TUG, null, 0, 0, -1, 0.66, 0.75, -1 +584, petrotr, petrotr, trailer, PETROTR, null, 0, 0, -1, 1.12, 1.12, -1 +585, emperor emperor, car, EMPEROR, null, 0, 0, -1, 0.74, 0.74, 0 +586, wayfarer wayfarer, bike, WAYFARE, wayfarer,0, 0, 23, 0.654, 0.654, -1 +587, euros, euros, car, EUROS, null, 0, 0, -1, 0.7, 0.7, 0 +588, hotdog, hotdog, car, HOTDOG, van, 0, 0, -1, 0.86, 0.86, -1 +589, club, club, car, CLUB, null, 0, 0, -1, 0.74, 0.74, 0 +590, freibox, freibox, train, FRBOX, null, 0, 0, -1, 1.06, 1.06, -1 +591, artict3, artict3, trailer, ARTICT3, null, 0, 0, -1, 1.1, 1.1, -1 +592, androm, androm, plane, ANDROM, null, 0, 0, -1, 0.95, 0.95, -1 +593, dodo dodo, plane, DODO, van, 0, 0, -1, 0.56, 0.56, -1 +594, rccam, rccam, car, RCCAM, null, 0, 0, -1, 0.25, 0.25, -1 +595, launch, launch, boat, LAUNCH, null, 0, 0 +596, copcarla, copcarla, car, POLICAR, null, 0, 0, -1, 0.7, 0.7, -1 +597, copcarsf, copcarsf, car, POLICAR, null, 0, 0, -1, 0.7, 0.7, -1 +598, copcarvg, copcarvg, car, POLICAR, null, 0, 0, -1, 0.7, 0.7, -1 +599, copcarru, copcarru, car, RANGER, null, 0, 0, -1, 0.95, 0.95, -1 +600, picador, picador, car, PICADOR, null, 0, 0, -1, 0.7, 0.7, 0 +601, swatvan, swatvan, car, SWATVAN, van, 0, 0, -1, 1.366, 1.366, -1 +602, alpha, alpha, car, ALPHA, null, 0, 0, -1, 0.7, 0.7, 0 +603, phoenix, phoenix, car, PHOENIX, null, 0, 0, -1, 0.7, 0.7, 0 +604, glenshit, glenshit, car, GLENSHI, null, 0, 0, -1, 0.7, 0.7, -1 +605, sadlshit, sadlshit, car, SADLSHI, null, 0, 0, -1, 0.7, 0.7, -1 +606, bagboxa, bagboxa, trailer, BAGBOXA, null, 0, 0, -1, 0.6, 0.6, -1 +607, bagboxb, bagboxb, trailer, BAGBOXB, null, 0, 0, -1, 0.6, 0.6, -1 +608, tugstair, tugstair, trailer, TUGSTAI, null, 0, 0, -1, 0.6, 0.6, -1 +609, boxburg, boxburg, car, BOXBURG, van, 0, 0, -1, 0.76, 0.76, -1 +610, farmtr1, farmtr1, trailer, FARMTR1, null, 0, 0, -1, 0.32, 0.32, -1 +611, utiltr1, utiltr1, trailer, UTILTR1, null, 0, 0, -1, 0.68, 0.68, -1 diff --git a/Shared/sdk/net/bitstream.h b/Shared/sdk/net/bitstream.h index 069b84158e..5ea9c45718 100644 --- a/Shared/sdk/net/bitstream.h +++ b/Shared/sdk/net/bitstream.h @@ -473,6 +473,10 @@ enum class eBitStreamVersion : unsigned short // 2021-08-30 0x75 OnPlayerResourceStart, + // Implement simple serverside model allocating + // yyyy-mm-dd 0xFF add date later ;-) + SimpleModelAllocationg, + // This allows us to automatically increment the BitStreamVersion when things are added to this enum. // Make sure you only add things above this comment. Next, diff --git a/Shared/sdk/net/rpc_enums.h b/Shared/sdk/net/rpc_enums.h index f5c3017eb6..b303d3b04d 100644 --- a/Shared/sdk/net/rpc_enums.h +++ b/Shared/sdk/net/rpc_enums.h @@ -273,5 +273,7 @@ enum eElementRPCFunctions SET_TRANSFER_BOX_VISIBILITY, SET_COLPOLYGON_HEIGHT, + ALLOCATE_MODEL_FROM_PARENT, + NUM_RPC_FUNCS // Add above this line }; From e4bfd86d6f3a100636f20c46b7a54c412d89dffd Mon Sep 17 00:00:00 2001 From: Uladzislau Nikalayevich Date: Mon, 23 May 2022 01:56:48 +0300 Subject: [PATCH 02/51] Refactor handling, vehicle manager --- .../logic/CStaticFunctionDefinitions.cpp | 2 +- Server/mods/deathmatch/handling.conf | 213 + Server/mods/deathmatch/logic/CCommon.h | 223 - Server/mods/deathmatch/logic/CGame.cpp | 4 +- .../deathmatch/logic/CHandlingManager.cpp | 8059 +---------------- .../mods/deathmatch/logic/CHandlingManager.h | 9 +- .../logic/CStaticFunctionDefinitions.cpp | 34 +- Server/mods/deathmatch/logic/CVehicle.h | 24 +- .../mods/deathmatch/logic/CVehicleManager.cpp | 19 +- .../mods/deathmatch/logic/CVehicleManager.h | 1 - .../mods/deathmatch/logic/CVehicleNames.cpp | 22 +- .../deathmatch/logic/CVehicleUpgrades.cpp | 6 +- .../logic/luadefs/CLuaVehicleDefs.cpp | 4 +- .../deathmatch/logic/models/CModelLoader.cpp | 81 +- .../deathmatch/logic/models/CModelLoader.h | 1 + .../deathmatch/logic/models/CModelVehicle.cpp | 29 +- .../deathmatch/logic/models/CModelVehicle.h | 31 +- .../logic/net/CSimPlayerManager.cpp | 2 +- .../logic/net/CSimVehiclePuresyncPacket.cpp | 2 +- .../logic/packets/CEntityAddPacket.cpp | 2 +- .../logic/packets/CKeysyncPacket.cpp | 4 +- .../logic/packets/CVehiclePuresyncPacket.cpp | 8 +- 22 files changed, 394 insertions(+), 8386 deletions(-) create mode 100644 Server/mods/deathmatch/handling.conf diff --git a/Client/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp b/Client/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp index 8b4c094b05..9be94918ba 100644 --- a/Client/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp +++ b/Client/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp @@ -8887,7 +8887,7 @@ bool CStaticFunctionDefinitions::ResetVehicleHandling(CClientVehicle* pVehicle) pEntry->SetAnimGroup(pNewEntry->GetAnimGroup()); // Lower and Upper limits cannot match or LSOD (unless boat) - // if ( eModel != VEHICLE_BOAT ) // Commented until fully tested + // if ( eModel != eVehicleType::BOAT ) // Commented until fully tested { float fSuspensionLimitSize = pEntry->GetSuspensionUpperLimit() - pEntry->GetSuspensionLowerLimit(); if (fSuspensionLimitSize > -0.1f && fSuspensionLimitSize < 0.1f) diff --git a/Server/mods/deathmatch/handling.conf b/Server/mods/deathmatch/handling.conf new file mode 100644 index 0000000000..d575a592bf --- /dev/null +++ b/Server/mods/deathmatch/handling.conf @@ -0,0 +1,213 @@ +400, 1700, 5008.3, 2.5, 0, 0, -0.3, 85, 0.75, 4, D, 5, 5242882, 10, 20, 160, 6.2, 0.6, 0, 35, 0.85, 0.5, 2.4, 0.08, 0, 0.28, -0.14, 0.5, 0.25, 0.23, 32, 5242882, 0.27, 25000, 0, 1, 0 +401, 1300, 2200, 1.7, 0, 0.3, 0, 70, 0.65, F, P, 5, 1, 6, 10, 160, 8, 0.8, 0, 30, 0.8, 0.52, 1.3, 0.08, 0, 0.31, -0.15, 0.57, 0, 0.5, 1, 1, 0.26, 9000, 0, 0, 0 +402, 1500, 4000, 2, 0, 0, -0.1, 85, 0.7, R, P, 5, 270532608, 11.2, 5, 200, 11, 0.45, 0, 30, 0.9, 0.5, 1.2, 0.12, 0, 0.28, -0.24, 0.5, 0.4, 0.5, 10240, 270532608, 0.25, 35000, 1, 1, 0 +403, 3800, 19953.2, 5, 0, 0, -0.2, 90, 0.95, R, D, 5, 512, 10, 30, 120, 8, 0.3, 0, 25, 0.65, 0.4, 1.6, 0.06, 0, 0.4, -0.2, 0.5, 0, 0.25, 24576, 512, 0.65, 35000, 0, 1, 2 +404, 1200, 3000, 2.5, 0, 0.1, 0, 70, 0.7, F, P, 5, 0, 7.2, 20, 150, 4, 0.8, 0, 30, 0.9, 0.48, 1.4, 0.1, 0, 0.37, -0.17, 0.5, 0, 0.6, 32, 0, 0.2, 10000, 1, 1, 0 +405, 1600, 4000, 2.2, 0, 0, -0.2, 75, 0.65, R, P, 5, 4194304, 9.6, 10, 165, 10, 0.5, 0, 27, 0.75, 0.5, 1, 0.08, 0, 0.3, -0.2, 0.5, 0.3, 0.56, 0, 4194304, 0.2, 35000, 0, 1, 0 +406, 20000, 200000, 4, 0, 0.5, -0.4, 90, 0.78, R, D, 4, 20185601, 10, 30, 110, 3.17, 0.4, 0, 30, 0.8, 0.55, 0.8, 0.06, 0, 0.2, -0.3, 0.55, 0, 0.2, 49160, 20185601, 0.45, 5000, 0, 1, 20 +407, 6500, 36670.8, 3, 0, 0, 0, 90, 0.55, R, D, 5, 0, 10.8, 10, 170, 10, 0.45, 0, 27, 0.8, 0.5, 1.2, 0.08, 0, 0.47, -0.17, 0.5, 0, 0.26, 16536, 0, 0.2, 15000, 0, 1, 2 +408, 5500, 33187.9, 5, 0, 0, -0.2, 90, 0.6, R, D, 4, 512, 8, 30, 110, 3.5, 0.4, 0, 30, 0.9, 0.5, 1, 0.06, 0, 0.45, -0.25, 0.55, 0.3, 0.2, 16392, 512, 0.45, 5000, 0, 1, 0 +409, 2200, 10000, 1.8, 0, 0, 0, 75, 0.6, R, P, 5, 272629761, 7.2, 25, 180, 10, 0.4, 0, 30, 0.8, 0.5, 1.1, 0.07, 0, 0.35, -0.2, 0.5, 0, 0.72, 2629632, 272629761, 0.2, 40000, 1, 1, 0 +410, 1000, 1400, 2.8, 0, 0.2, 0, 70, 0.8, F, P, 3, 0, 7.6, 15, 160, 8, 0.8, 0, 30, 0.8, 0.5, 1.2, 0.1, 5, 0.31, -0.15, 0.5, 0.2, 0.5, 0, 0, 0.26, 9000, 0, 0, 0 +411, 1400, 2725.3, 1.5, 0, 0, -0.25, 70, 0.7, 4, P, 5, 12599296, 12, 10, 240, 11, 0.51, 0, 30, 0.8, 0.5, 1.2, 0.19, 0, 0.25, -0.1, 0.5, 0.4, 0.72, 1073750020, 12599296, 0.37, 95000, 1, 1, 1 +412, 1800, 4411.5, 2, 0, -0.1, -0.2, 70, 0.95, R, P, 5, 37814280, 9.2, 5, 160, 6.5, 0.5, 0, 30, 0.8, 0.45, 1, 0.08, 0, 0.2, -0.25, 0.5, 0.6, 0.41, 0, 37814280, 0.26, 30000, 1, 1, 0 +413, 2600, 8666.7, 3, 0, 0, -0.25, 80, 0.55, R, D, 5, 1, 6, 25, 160, 6, 0.8, 0, 30, 0.9, 0.5, 2.6, 0.07, 0, 0.35, -0.15, 0.25, 0, 0.5, 16385, 1, 0.2, 20000, 0, 3, 13 +414, 3500, 14000, 4, 0, 0, 0.1, 80, 0.55, R, D, 5, 0, 7.2, 20, 140, 4.5, 0.6, 0, 30, 0.85, 0.46, 2, 0.07, 5, 0.3, -0.15, 0.5, 0, 0.53, 16520, 0, 0.46, 22000, 0, 3, 0 +415, 1200, 3000, 2, 0, -0.2, -0.2, 70, 0.8, R, P, 5, 2129920, 12, 10, 230, 11.1, 0.48, 0, 35, 0.9, 0.5, 0.8, 0.2, 0, 0.1, -0.15, 0.5, 0.6, 0.54, 3221233668, 2129920, 0.4, 105000, 0, 0, 1 +416, 2600, 10202.8, 2.5, 0, 0, -0.1, 90, 0.75, 4, D, 5, 4, 9.6, 10, 155, 7, 0.55, 0, 35, 0.8, 0.47, 1, 0.07, 0, 0.4, -0.2, 0.5, 0, 0.33, 16385, 4, 0.58, 10000, 0, 1, 13 +417, 15000, 200000, 0.1, 0, 0, 0, 30, 0.65, 4, P, 1, 4194304, 6.4, 5, 200, 5, 0.45, 0, 30, 0.9, 0.5, 1, 0.05, 0, 0.5, -0.2, 0.9, 0, 0.5, 33570816, 4194304, 0.3, 25000, 0, 1, 0 +418, 2000, 5848.3, 2.8, 0, 0.2, -0.1, 85, 0.6, R, D, 5, 0, 6, 15, 150, 5.5, 0.6, 0, 30, 0.8, 0.5, 1.4, 0.1, 0, 0.35, -0.15, 0.55, 0, 0.75, 32, 0, 0.2, 16000, 1, 3, 0 +419, 1800, 4350, 2, 0, 0, 0, 70, 0.55, R, P, 5, 268435456, 7.2, 5, 160, 4, 0.6, 0, 28, 0.88, 0.52, 1, 0.05, 1, 0.35, -0.18, 0.5, 0, 0.54, 1073741824, 268435456, 0.36, 19000, 0, 3, 0 +420, 1450, 4056.4, 2.2, 0, 0.3, -0.25, 75, 0.8, F, P, 5, 2097152, 7.6, 10, 180, 9.1, 0.6, 0, 35, 0.75, 0.45, 1.4, 0.1, 0, 0.25, -0.15, 0.54, 0, 0.51, 0, 2097152, 0.2, 20000, 0, 1, 0 +421, 1850, 5000, 2.2, 0, 0, -0.1, 75, 0.75, R, P, 5, 272629760, 8.4, 10, 180, 7.5, 0.65, 0, 30, 0.65, 0.52, 1, 0.2, 0, 0.27, -0.2, 0.5, 0.35, 0.6, 0, 272629760, 0.24, 18000, 1, 1, 0 +422, 1700, 4000, 2.5, 0, 0.05, -0.2, 75, 0.65, 4, D, 5, 1064964, 8, 15, 165, 8.5, 0.5, 0, 35, 0.85, 0.57, 1.5, 0.1, 5, 0.35, -0.18, 0.4, 0, 0.2, 64, 1064964, 0.26, 26000, 0, 1, 0 +423, 1700, 4108.3, 3.5, 0, 0, 0, 85, 0.75, R, D, 5, 2, 5.6, 50, 145, 4.17, 0.8, 0, 35, 0.75, 0.5, 1.2, 0.1, 0, 0.35, -0.15, 0.5, 0, 0.77, 136, 2, 0.24, 29000, 0, 1, 0 +424, 1200, 2000, 4, 0, -0.1, -0.1, 80, 0.75, R, P, 4, 3179008, 12, 10, 170, 6, 0.5, 0, 35, 0.85, 0.5, 1, 0.07, 5, 0.2, -0.15, 0.45, 0, 0.4, 2103556, 3179008, 0.38, 15000, 1, 2, 25 +425, 10000, 150000, 0.2, 0, 0, 0, 75, 0.65, 4, P, 1, 4194304, 6.4, 5, 200, 5, 0.45, 0, 30, 0.9, 0.5, 1, 0.05, 0, 0.2, -0.15, 0.85, 0, 0.5, 33603584, 4194304, 0.4, 99000, 0, 1, 14 +426, 1600, 3921.3, 1.8, 0, -0.4, 0, 75, 0.75, R, P, 5, 270532616, 8.8, 10, 200, 10, 0.53, 0, 35, 0.85, 0.52, 1.3, 0.12, 0, 0.28, -0.12, 0.38, 0, 0.24, 1073741824, 270532616, 0.2, 25000, 0, 1, 0 +427, 4000, 17333.3, 1.8, 0, 0.1, 0, 85, 0.55, R, D, 5, 0, 8, 20, 170, 5.4, 0.45, 0, 27, 0.8, 0.48, 1.4, 0.1, 0, 0.4, -0.25, 0.5, 0, 0.16, 16401, 0, 0.32, 40000, 0, 1, 13 +428, 7000, 30916.7, 1.5, 0, 0, 0, 90, 0.5, R, D, 5, 4, 6, 30, 170, 8.4, 0.45, 0, 27, 0.7, 0.46, 1, 0.06, 0, 0.35, -0.15, 0.5, 0, 0.35, 16385, 4, 0.27, 40000, 1, 1, 13 +429, 1400, 3000, 2, 0, 0, -0.2, 70, 0.75, R, P, 5, 2097152, 13.2, 10, 200, 8, 0.52, 0, 34, 0.89, 0.5, 1.6, 0.1, 5, 0.3, -0.15, 0.5, 0.3, 0.49, 8196, 2097152, 0.15, 45000, 1, 1, 1 +430, 2200, 29333.3, 1, 0, 0, 0, 14, 2.3, R, P, 5, 0, 0.68, 5, 190, 0.05, 0.01, 0, 24, 15, 0.58, 1, 3, 0, 0.1, 0.1, 0, 0, 0.33, 134217728, 0, 0.2, 40000, 0, 1, 0 +431, 5500, 33187.9, 2, 0, 0.5, 0, 90, 0.75, R, D, 4, 0, 5.6, 50, 130, 4.17, 0.4, 0, 30, 0.85, 0.4, 1.2, 0.07, 0, 0.45, -0.25, 0.45, 0, 0.75, 16386, 0, 0.2, 15000, 1, 1, 16 +432, 25000, 250000, 5, 0, 0, 0, 90, 2.5, 4, D, 4, 3180608, 16, 150, 80, 5, 0.5, 0, 35, 0.8, 0.5, 0.4, 0.02, 0, 0.35, -0.1, 0.5, 0, 0.09, 1073774600, 3180608, 0.22, 110000, 0, 1, 24 +433, 10500, 61407.5, 4, 0, 0, 0, 90, 0.65, 4, D, 5, 1048576, 8, 25, 180, 4, 0.4, 0, 27, 0.7, 0.47, 1.2, 0.05, 0, 0.47, -0.17, 0.5, 0, 0.26, 2099209, 1048576, 0.62, 10000, 0, 1, 2 +434, 1400, 3400, 2.5, 0, 0.3, -0.3, 75, 0.75, R, P, 5, 32768, 11.2, 5, 200, 11, 0.45, 0, 30, 0.8, 0.5, 0.8, 0.08, 0, 0.28, -0.2, 0.4, 0.3, 0.6, 1073768448, 32768, 0.2, 35000, 1, 1, 0 +435, 3800, 30000, 2, 0, 0, -0.5, 90, 0.45, R, D, 5, 0, 7.2, 5, 120, 8, 0.3, 0, 25, 0.75, 0.5, 1.5, 0.05, 0, 0.3, -0.15, 0.5, 0, 0.25, 536879104, 0, 0.65, 35000, 0, 1, 0 +436, 1400, 3000, 2, 0, 0.3, -0.1, 70, 0.7, F, P, 4, 0, 7.2, 7, 160, 8, 0.65, 0, 35, 0.8, 0.45, 1.1, 0.08, 2, 0.31, -0.18, 0.55, 0.3, 0.5, 0, 0, 0.21, 9000, 0, 0, 0 +437, 9500, 57324.6, 1.8, 0, 0, 0, 90, 0.65, R, D, 5, 2097152, 7.2, 10, 160, 5.7, 0.35, 0, 30, 0.85, 0.35, 1.5, 0.04, 0, 0.45, -0.25, 0.5, 0, 0.48, 2, 2097152, 0.45, 20000, 0, 1, 15 +438, 1750, 4351.7, 2.9, 0, 0.1, -0.15, 75, 0.75, R, P, 4, 0, 9.6, 6, 160, 7, 0.44, 0, 40, 0.85, 0.51, 0.7, 0.06, 2, 0.25, -0.3, 0.5, 0.5, 0.4, 0, 0, 0.2, 10000, 1, 1, 0 +439, 1600, 3921.3, 2, 0, 0, -0.15, 70, 0.8, R, P, 4, 4, 9.2, 5, 160, 8.17, 0.52, 0, 35, 0.75, 0.55, 1.2, 0.1, 0, 0.3, -0.2, 0.5, 0, 0.64, 10240, 4, 0.3, 19000, 1, 1, 0 +440, 2000, 4901.7, 2.4, 0, 0.4, -0.1, 85, 0.6, F, P, 5, 0, 7.2, 15, 160, 5.5, 0.45, 0, 30, 0.75, 0.52, 1.4, 0.05, 0, 0.43, -0.11, 0.5, 0, 0.6, 1, 0, 0.2, 26000, 0, 1, 13 +441, 100, 24.1, 6, 0, 0.05, -0.1, 70, 0.8, 4, E, 1, 0, 14, 5, 75, 5.5, 0.5, 0, 25, 0.9, 0.49, 1.6, 0.1, 0, 0.28, -0.08, 0.5, 0, 0.05, 4456448, 0, 0.2, 500, 0, 1, 0 +442, 2500, 5960.4, 2, 0, -0.8, 0.2, 70, 0.75, R, P, 5, 0, 6.4, 15, 150, 4, 0.8, 0, 30, 0.8, 0.5, 1, 0.1, 0, 0.35, -0.15, 0.4, 0, 1.25, 1073741856, 0, 0.2, 10000, 0, 1, 0 +443, 8000, 48273.3, 2, 0, 0, 0, 90, 0.65, R, D, 5, 4456448, 5.2, 5, 150, 5.7, 0.35, 0, 30, 0.85, 0.35, 1.5, 0.04, 0, 0.45, -0.25, 0.5, 0, 0.4, 16384, 4456448, 0.56, 20000, 0, 1, 2 +444, 5000, 20000, 3, 0, 0, -0.35, 80, 0.65, 4, P, 5, 19923013, 18, 25, 110, 7, 0.45, 0, 35, 0.85, 0.55, 1.5, 0.07, 0, 0.45, -0.3, 0.5, 0.3, 0.35, 40, 19923013, 0.44, 40000, 0, 1, 20 +445, 1650, 3851.4, 2, 0, 0, -0.05, 75, 0.65, F, P, 5, 4194304, 8.8, 8, 165, 8.5, 0.52, 0, 30, 0.9, 0.51, 1, 0.15, 0, 0.27, -0.19, 0.5, 0.55, 0.56, 0, 4194304, 0.2, 35000, 0, 1, 0 +446, 2200, 29333.3, 1, 0, 0, 0, 42, 3, R, P, 5, 0, 1.2, 5, 190, 0.02, 0, 0, 24, 15, 0.65, 0.45, 5, 0, 0.1, 0.05, 0, 0, 0.33, 134218752, 0, 0.2, 60000, 0, 1, 0 +447, 3000, 7250, 0.1, 0, 0, -0.1, 5, 0.65, 4, P, 1, 4194304, 6.4, 5, 200, 5, 0.45, 0, 30, 0.9, 0.5, 2, 0.1, 0, 0.5, -0.2, 0.5, 0, 0.6, 33570816, 4194304, 0.3, 28000, 0, 1, 0 +448, 350, 119.6, 5, 0, 0.05, -0.1, 103, 1.8, R, P, 3, 0, 12, 5, 190, 14, 0.5, 0, 35, 0.9, 0.48, 1, 0.15, 0, 0.12, -0.17, 0.5, 0, 0.11, 16777216, 0, 0, 10000, 1, 1, 5 +449, 1900, 4795.9, 1, 0, -0.3, 0, 85, 0.97, R, P, 5, 4194304, 10, 5, 150, 8.5, 0.45, 0, 30, 0.77, 0.51, 1.3, 0.08, 0, 0, -1, 0.4, 0.5, 0.5, 1, 4194304, 0.2, 26000, 0, 1, 13 +450, 3800, 30000, 2, 0, 0, -0.5, 90, 0.45, R, D, 5, 0, 7.2, 5, 120, 8, 0.3, 0, 25, 0.75, 0.5, 1.5, 0.05, 0, 0.3, -0.15, 0.5, 0, 0.25, 536879104, 0, 0.65, 35000, 0, 1, 0 +451, 1400, 3000, 2, 0, -0.3, -0.2, 70, 0.75, 4, P, 5, 12616705, 12, 10, 240, 11, 0.51, 0, 30, 0.85, 0.45, 1.2, 0.13, 0, 0.15, -0.2, 0.5, 0.4, 0.72, 1073750020, 12616705, 0.17, 95000, 1, 1, 1 +452, 2200, 20210.7, 1, 0, 0, 0, 22, 2.5, R, P, 5, 0, 1, 5, 190, 0.04, 0.01, 0, 20, 15, 0.65, 1.3, 3, 0, 0.1, 0.5, 2, 0, 0.39, 134218752, 0, 0.7, 30000, 0, 1, 0 +453, 5000, 25520.8, 1, 0, 0, 0, 15, -1.5, R, P, 5, 0, 0.28, 5, 190, 0.02, 0.02, 0, 25, 15, 0.45, 1, 3, 0, 0.1, 0.1, 0, 0, 0.38, 134217728, 0, 0.2, 25000, 0, 1, 0 +454, 2200, 29333.3, 1, 0, 0, 0, 10, 2.2, R, P, 5, 0, 0.56, 5, 190, 0.05, 0.01, 0, 24, 12, 0.45, 1.8, 3, 0, 0.1, 0.1, 0, 0, 0.33, 134218752, 0, 0.2, 73000, 0, 1, 0 +455, 8500, 48804.2, 2.5, 0, 0, 0.3, 90, 0.7, R, D, 5, 0, 10, 80, 140, 10, 0.45, 0, 27, 0.7, 0.46, 1.2, 0.05, 0, 0.47, -0.17, 0.5, 0, 0.43, 2049, 0, 0.62, 10000, 0, 1, 2 +456, 4500, 18003.7, 3, 0, 0, 0, 80, 0.55, R, D, 5, 1, 5.6, 40, 160, 4.5, 0.8, 0, 30, 0.7, 0.48, 1.8, 0.12, 0, 0.3, -0.25, 0.5, 0, 0.45, 16520, 1, 0.35, 22000, 0, 1, 0 +457, 1000, 1354.2, 4, 0, 0, -0.1, 70, 0.55, 4, E, 3, 34820, 6, 30, 160, 13, 0.5, 0, 30, 0.85, 0.5, 1, 0.09, 0, 0.28, -0.13, 0.5, 0, 0.5, 4352, 34820, 0.26, 9000, 1, 1, 0 +458, 2000, 5500, 2, 0, 0, 0, 75, 0.75, R, P, 4, 0, 8, 10, 165, 5, 0.6, 0, 30, 0.8, 0.52, 1.2, 0.1, 0, 0.27, -0.17, 0.5, 0.2, 0.48, 32, 0, 0.24, 18000, 1, 1, 0 +459, 1900, 6333.3, 2, 0, 0, -0.2, 80, 0.85, R, D, 5, 1, 6, 25, 160, 6, 0.8, 0, 30, 0.7, 0.46, 1.5, 0.07, 2, 0.35, -0.15, 0.4, 0, 0.43, 1, 1, 0.2, 20000, 0, 3, 13 +460, 5000, 27083.3, 12, 0, 0, 0, 9, 0.83, 4, P, 1, 0, 0.68, 5, 200, 0.01, 0.05, 0, 24, 45, 0.5, 1.5, 0.75, 0, 0.1, 0, 2, 0, 0.05, 67109888, 0, 1, 10000, 0, 1, 0 +461, 500, 161.7, 4, 0, 0.05, -0.09, 103, 1.6, R, P, 5, 0, 20, 5, 190, 15, 0.5, 0, 35, 0.9, 0.48, 0.85, 0.15, 0, 0.15, -0.16, 0.5, 0, 0.15, 16785408, 0, 0, 10000, 1, 1, 4 +462, 350, 119.6, 5, 0, 0.05, -0.1, 103, 1.8, R, P, 3, 0, 12, 5, 190, 14, 0.5, 0, 35, 0.9, 0.48, 1, 0.15, 0, 0.12, -0.17, 0.5, 0, 0.11, 16777216, 0, 0, 10000, 1, 1, 5 +463, 800, 403.3, 4, 0, 0.1, 0, 103, 1.2, R, P, 4, 0, 16, 5, 190, 10, 0.55, 0, 35, 0.82, 0.51, 0.65, 0.2, 0, 0.09, -0.11, 0.55, 0, 0.24, 16785408, 0, 0, 10000, 1, 1, 6 +464, 100, 50, 120, 0, 0, 0, 99, 0.2, F, P, 1, 32, 0.4, 5, 75, 0.5, 0.5, 0, 45, 0.9, 0.5, 0.6, 0.1, 0, 0.25, -0, 0.8, 0, 0.08, 67108864, 32, 0.2, 300, 0, 1, 0 +465, 100, 24.1, 0.2, 0, 0, -0.1, 70, 1.1, 4, P, 1, 0, 14, 5, 75, 5.5, 0.5, 0, 25, 0.75, 0.5, 1.6, 0.1, 0, 0.28, -0.08, 0.5, 0, 0.1, 33554432, 0, 0.2, 500, 0, 1, 0 +466, 1600, 4000, 2.5, 0, 0, 0.05, 75, 0.6, R, P, 5, 276824066, 8.8, 15, 160, 6.2, 0.55, 0, 30, 0.84, 0.52, 0.8, 0.07, 0, 0.35, -0.22, 0.5, 0.5, 0.4, 0, 276824066, 0.23, 20000, 1, 1, 0 +467, 1900, 4529.9, 2, 0, 0, 0, 75, 0.67, R, P, 5, 276824064, 6.4, 5, 160, 5, 0.55, 0, 30, 0.75, 0.52, 1, 0.1, 0, 0.35, -0.17, 0.5, 0.5, 0.45, 0, 276824064, 0.23, 20000, 2, 1, 0 +468, 500, 195, 5, 0, 0.05, -0.09, 103, 1.6, R, P, 5, 0, 20, 5, 190, 14, 0.5, 0, 35, 0.9, 0.48, 0.85, 0.15, 0, 0.15, -0.16, 0.5, 0, 0.15, 16777216, 0, 0, 10000, 1, 1, 7 +469, 2500, 6041.7, 0.2, 0, 0, -0.1, 75, 0.65, 4, P, 1, 4194304, 6.4, 5, 200, 5, 0.45, 0, 30, 0.9, 0.5, 2, 0.1, 0, 0.5, -0.2, 0.5, 0, 0.5, 33570816, 4194304, 0.3, 25000, 0, 1, 0 +470, 2500, 7968.7, 2.5, 0, 0, 0, 80, 0.7, 4, P, 5, 3145728, 10, 20, 170, 8, 0.5, 0, 30, 0.85, 0.5, 1.5, 0.08, 4, 0.35, -0.35, 0.5, 0, 0.25, 8, 3145728, 0.28, 40000, 0, 1, 0 +471, 400, 300, 5, 0, 0.05, -0.2, 70, 0.7, 4, P, 4, 517, 10, 5, 160, 8, 0.5, 0, 35, 0.9, 0.49, 0.8, 0.1, 0, 0.15, -0.15, 0.5, 0, 0.5, 2626304, 517, 0.2, 9000, 1, 1, 12 +472, 1200, 6525, 1, 0, -0.3, 0, 14, 2, R, P, 5, 0, 0.64, 5, 190, 0.05, 0.01, 0, 24, 4.2, 0.7, 1, 3, 0, 3.2, 0.1, 2.5, 0, 0.18, 134217728, 0, 0.2, 10000, 0, 1, 0 +473, 800, 1483.3, 1, 0, 0, 0, 16, 3.5, R, P, 5, 0, 0.48, 5, 190, 0.07, 0.01, 0, 30, 3.5, 1, 1, 4.5, 0, 3.5, 0.1, 0.7, 0, 0.12, 134217728, 0, 0.2, 5000, 0, 1, 0 +474, 1950, 4712.5, 2, 0, 0.3, 0, 70, 0.7, F, P, 5, 1, 7.2, 15, 160, 3.5, 0.6, 0, 28, 0.75, 0.51, 1, 0.05, 0, 0.35, -0.2, 0.58, 0, 0.42, 1073750016, 1, 0.25, 19000, 1, 3, 0 +475, 1700, 4000, 2, 0, 0.1, 0, 70, 0.7, R, P, 4, 268435462, 9.6, 10, 160, 8, 0.52, 0, 35, 0.8, 0.53, 1.3, 0.08, 5, 0.3, -0.2, 0.5, 0.25, 0.52, 0, 268435462, 0.25, 19000, 1, 1, 0 +476, 5000, 27083.3, 10, 0, 0, 0, 75, 0.65, 4, P, 1, 4194336, 6.4, 5, 200, 1.5, 0.45, 0, 45, 0.9, 0.5, 2, 0.15, 0, 0.5, -0.2, 0.5, 0, 0.75, 67141896, 4194336, 0.3, 45000, 0, 1, 14 +477, 1400, 2979.7, 2, 0, 0.2, -0.1, 70, 0.8, R, P, 5, 12582912, 11.2, 10, 200, 11.1, 0.52, 0, 30, 0.8, 0.51, 1.2, 0.1, 0, 0.31, -0.15, 0.5, 0.3, 0.6, 0, 12582912, 0.24, 45000, 1, 1, 0 +478, 1850, 3534, 2.5, 0, 0, 0, 75, 0.7, 4, D, 4, 268435462, 5.6, 25, 150, 6.5, 0.5, 0, 35, 0.7, 0.5, 1.6, 0.12, 0, 0.35, -0.18, 0.4, 0, 0.19, 64, 268435462, 0.26, 26000, 1, 1, 0 +479, 1500, 3800, 2, 0, 0.2, 0, 75, 0.65, F, P, 4, 1, 6.4, 25, 165, 5, 0.6, 0, 30, 0.85, 0.52, 1, 0.1, 0, 0.27, -0.17, 0.5, 0.2, 0.48, 32, 1, 0.24, 18000, 1, 1, 0 +480, 1400, 2200, 2.2, 0, 0.1, -0.2, 75, 0.7, 4, P, 5, 0, 12, 10, 200, 11, 0.45, 0, 30, 0.9, 0.5, 1.4, 0.14, 3, 0.28, -0.15, 0.5, 0.3, 0.6, 1073743872, 0, 0.25, 35000, 1, 1, 19 +481, 100, 39, 7, 0, 0.05, -0.09, 103, 1.6, R, P, 5, 0, 7.2, 5, 120, 19, 0.5, 0, 35, 0.9, 0.48, 0.8, 0.15, 0, 0.2, -0.1, 0.5, 0, 0.15, 1090519040, 0, 0, 10000, 1, 1, 9 +482, 1900, 5000, 2.5, 0, 0, -0.2, 85, 0.6, R, P, 5, 4194304, 10, 20, 150, 8.5, 0.45, 0, 30, 0.87, 0.51, 1.3, 0.07, 2, 0.4, -0.25, 0.4, 0.5, 0.5, 1, 4194304, 0.2, 26000, 0, 1, 13 +483, 1900, 4000, 2.6, 0, -0.5, -0.4, 85, 0.6, R, P, 5, 4194304, 6.4, 20, 120, 8.5, 0.45, 0, 30, 0.8, 0.46, 1.1, 0.08, 0, 0.35, -0.1, 0.4, 0.5, 0.5, 1073790976, 4194304, 0.2, 26000, 0, 1, 0 +484, 5000, 155521, 1, 0, 0, 0, 10, -3.5, R, P, 5, 0, 0.2, 5, 190, 0.04, 0.03, 0, 38, 25, 0.4, 1, 3, 0, 0.1, 0, 1, 0, 0.38, 134217728, 0, 0.2, 99000, 0, 1, 0 +485, 1000, 1354.2, 5, 0, 0.4, -0.2, 70, 1, R, E, 3, 4, 8, 30, 160, 5, 0.5, 0, 30, 0.85, 0.5, 2, 0.09, 0, 0.25, -0.1, 0.5, 0, 0.5, 13056, 4, 0.26, 9000, 1, 1, 0 +486, 10000, 35000, 20, 0, -0.5, -0.5, 90, 0.85, 4, D, 5, 3408416, 14, 150, 100, 5, 0.4, 0, 45, 0.8, 0.6, 1.4, 0.15, 0, 0.25, -0.2, 0.35, 0, 0.2, 776, 3408416, 0.45, 5000, 0, 1, 17 +487, 5000, 29270.8, 0.2, 0, 0, -0.1, 75, 0.65, 4, P, 1, 4194304, 6.4, 5, 200, 5, 0.45, 0, 30, 0.9, 0.5, 2, 0.15, 0, 0.5, -0.2, 0.5, 0, 0.75, 33570816, 4194304, 0.3, 45000, 0, 1, 0 +488, 3500, 8458.3, 0.2, 0, 0, -0.1, 75, 0.65, 4, P, 1, 4194304, 6.4, 5, 200, 5, 0.45, 0, 30, 0.9, 0.5, 2, 0.1, 0, 0.5, -0.2, 0.5, 0, 0.65, 33570816, 4194304, 0.3, 50000, 0, 1, 0 +489, 2500, 7604.2, 2.5, 0, 0, -0.35, 80, 0.7, 4, P, 5, 1048580, 8, 5, 170, 7, 0.45, 0, 35, 0.85, 0.54, 0.8, 0.08, 0, 0.45, -0.25, 0.45, 0.3, 0.35, 16416, 1048580, 0.44, 40000, 0, 1, 0 +490, 3500, 11156.2, 2.2, 0, 0, -0.2, 80, 0.8, 4, P, 5, 5242880, 8.8, 5, 170, 8.5, 0.5, 0, 30, 0.8, 0.52, 0.7, 0.15, 0, 0.34, -0.2, 0.5, 0.5, 0.3, 16416, 5242880, 0.44, 40000, 0, 1, 0 +491, 1700, 3435.4, 2, 0, 0, -0.1, 70, 0.7, R, P, 4, 268435456, 7.2, 15, 160, 7, 0.5, 0, 32, 0.86, 0.5, 0.8, 0.1, 0, 0.31, -0.15, 0.5, 0.5, 0.85, 1073741824, 268435456, 0.26, 9000, 0, 0, 0 +492, 1600, 4000, 2.5, 0, 0, 0, 70, 0.7, R, P, 4, 268435457, 8, 20, 160, 5.4, 0.6, 0, 30, 0.8, 0.52, 1.1, 0.12, 5, 0.32, -0.2, 0.5, 0, 0.54, 0, 268435457, 0.22, 19000, 0, 3, 0 +493, 3000, 40000, 1, 0, 0, 0, 35, 2, R, P, 5, 0, 1.2, 5, 190, 0.02, 0, 0, 24, 15, 0.5, 0.75, 4, 0, 0.1, 0.3, 1.5, 0, 0.45, 134218752, 0, 0.2, 48000, 0, 1, 0 +494, 1600, 4500, 1.4, 0, 0.2, -0.4, 70, 0.85, R, P, 5, 12582912, 10.4, 5, 220, 10, 0.52, 0, 30, 0.8, 0.48, 1.5, 0.1, 10, 0.29, -0.16, 0.6, 0.4, 0.56, 1073750020, 12582912, 0.2, 45000, 1, 1, 0 +495, 2000, 4000, 2.2, 0, 0, -0.6, 80, 0.75, 4, P, 5, 3246080, 11.2, 10, 170, 8, 0.5, 0, 30, 0.85, 0.5, 0.8, 0.08, 0, 0.35, -0.31, 0.5, 0, 0.35, 0, 3246080, 0.38, 40000, 0, 1, 22 +496, 1000, 2141.7, 2.4, 0, 0, -0.1, 50, 0.85, F, P, 5, 12582912, 10.4, 5, 200, 11, 0.45, 0, 30, 0.85, 0.5, 1.4, 0.1, 0, 0.28, -0.12, 0.5, 0, 0.5, 3221225472, 12582912, 0.25, 35000, 1, 1, 0 +497, 4500, 26343.7, 0.2, 0, 0, -0.1, 75, 0.65, 4, P, 1, 4194304, 6.4, 5, 200, 5, 0.45, 0, 30, 0.9, 0.5, 2, 0.1, 0, 0.5, -0.2, 0.5, 0, 0.65, 33570816, 4194304, 0.3, 52000, 0, 1, 0 +498, 5500, 23489.6, 3, 0, 0, 0, 80, 0.82, R, D, 5, 513, 5.6, 25, 140, 4.5, 0.6, 0, 30, 0.7, 0.46, 0.9, 0.08, 0, 0.25, -0.25, 0.35, 0.6, 0.4, 16393, 513, 0.26, 22000, 0, 3, 13 +499, 3500, 13865.8, 2.3, 0, 0, -0.2, 80, 0.75, R, D, 5, 1, 5.6, 20, 140, 4.5, 0.6, 0, 30, 0.7, 0.46, 1.2, 0.2, 0, 0.35, -0.15, 0.45, 0, 0.53, 16520, 1, 0.46, 22000, 1, 3, 0 +500, 1300, 1900, 3, 0, 0.2, -0.3, 85, 0.7, 4, D, 5, 0, 9.6, 15, 160, 8, 0.5, 0, 35, 0.8, 0.5, 1.2, 0.08, 0, 0.32, -0.2, 0.35, 0.4, 0.3, 2099264, 0, 0.18, 25000, 0, 1, 0 +501, 100, 24.1, 0.2, 0, 0, -0.1, 70, 1.1, 4, P, 1, 0, 14, 5, 75, 5.5, 0.5, 0, 25, 0.75, 0.5, 1.6, 0.1, 0, 0.28, -0.08, 0.5, 0, 0.05, 33554432, 0, 0.2, 800, 0, 1, 0 +502, 1600, 4500, 1.4, 0, 0.2, -0.4, 70, 0.85, R, P, 5, 12582912, 10.4, 5, 220, 10, 0.52, 0, 30, 0.8, 0.48, 1.5, 0.1, 10, 0.29, -0.16, 0.6, 0.4, 0.56, 1073750020, 12582912, 0.2, 45000, 1, 1, 0 +503, 1600, 4500, 1.4, 0, 0.2, -0.4, 70, 0.85, R, P, 5, 12582912, 10.4, 5, 220, 10, 0.52, 0, 30, 0.8, 0.48, 1.5, 0.1, 10, 0.29, -0.16, 0.6, 0.4, 0.56, 1073750020, 12582912, 0.2, 45000, 1, 1, 0 +504, 2100, 5146.7, 2, 0, 0, 0, 75, 0.75, R, P, 5, 276824576, 9.6, 5, 160, 6.2, 0.55, 0, 35, 0.7, 0.52, 1, 0.06, 3, 0.35, -0.24, 0.5, 0, 0.3, 256, 276824576, 0.28, 500, 1, 1, 25 +505, 2500, 7604.2, 2.5, 0, 0, -0.35, 80, 0.7, 4, P, 5, 1048580, 8, 5, 170, 7, 0.45, 0, 35, 0.85, 0.54, 0.8, 0.08, 0, 0.45, -0.25, 0.45, 0.3, 0.35, 16416, 1048580, 0.44, 40000, 0, 1, 0 +506, 1400, 2800, 2, 0, -0.2, -0.24, 70, 0.75, R, P, 5, 2129920, 10.4, 5, 230, 8, 0.52, 0, 30, 0.86, 0.48, 1, 0.2, 0, 0.25, -0.1, 0.5, 0.3, 0.54, 1073750020, 2129920, 0.4, 105000, 0, 0, 1 +507, 2200, 5000, 1.8, 0, 0.1, -0.1, 75, 0.7, R, P, 5, 272629760, 8, 10, 165, 6, 0.55, 0, 30, 0.8, 0.46, 1, 0.1, 0, 0.35, -0.15, 0.5, 0.3, 0.3, 1073741824, 272629760, 0.2, 35000, 0, 1, 0 +508, 3500, 13865.8, 3, 0, 0, 0, 80, 0.62, R, D, 5, 1, 5.6, 25, 140, 4.5, 0.6, 0, 30, 0.7, 0.46, 1.5, 0.11, 0, 0.3, -0.15, 0.5, 0, 0.53, 136, 1, 0.46, 22000, 0, 3, 0 +509, 100, 39, 6, 0, 0.05, -0.09, 103, 1.6, R, P, 5, 0, 7.2, 5, 120, 19, 0.5, 0, 35, 0.9, 0.48, 0.85, 0.15, 0, 0.2, -0.1, 0.5, 0, 0.15, 1090519040, 0, 0, 10000, 1, 1, 11 +510, 100, 60, 5, 0, 0.05, -0.09, 103, 1.6, R, P, 4, 2, 10, 15, 140, 19, 0.5, 0, 35, 0.9, 0.48, 0.85, 0.15, 0, 0.2, -0.1, 0.5, 0, 0.15, 1090519040, 2, 0, 10000, 1, 1, 10 +511, 10000, 80000, 14, 0, 0, 0, 75, 0.65, 4, P, 1, 4194304, 6.4, 5, 200, 1.5, 0.45, 0, 45, 0.9, 0.5, 2, 0.15, 0, 1, -0.1, 0.35, 0, 0.75, 603979784, 4194304, 0.3, 45000, 0, 1, 13 +512, 5000, 27083.3, 15, 0, 0, 0, 75, 0.65, 4, P, 1, 4194336, 6.4, 5, 200, 1.5, 0.45, 0, 45, 0.9, 0.5, 2, 0.15, 0, 0.55, -0.05, 0.5, 0, 0.75, 67141632, 4194336, 0.3, 45000, 0, 1, 14 +513, 5000, 20000, 14, 0, 0, 0, 75, 0.65, 4, P, 1, 4194336, 6.4, 5, 200, 1.5, 0.45, 0, 45, 0.9, 0.5, 2, 0.15, 0, 0.5, -0.1, 0.9, 0, 0.75, 67141888, 4194336, 0.3, 45000, 0, 1, 14 +514, 3800, 20000, 2, 0, 0, -0.2, 90, 0.85, R, D, 5, 16777217, 10, 20, 120, 8, 0.3, 0, 35, 0.75, 0.4, 1, 0.1, 0, 0.25, -0.2, 0.5, 0, 0.25, 538992648, 16777217, 0.35, 35000, 0, 1, 2 +515, 5000, 28000, 2, 0, 0.5, -0.4, 90, 0.95, R, D, 5, 512, 10, 20, 120, 8, 0.3, 0, 25, 0.65, 0.4, 0.7, 0.1, 0, 0.2, -0.17, 0.5, 0, 0.25, 538968072, 512, 0.65, 35000, 0, 1, 2 +516, 1400, 4000, 2, 0, 0.3, -0.1, 75, 0.65, F, P, 5, 4194304, 8, 10, 165, 8, 0.55, 0, 30, 0.8, 0.5, 1.4, 0.1, 0, 0.27, -0.1, 0.58, 0.3, 0.56, 0, 4194304, 0.2, 35000, 0, 1, 0 +517, 1400, 3267.8, 2.2, 0, 0.1, -0.1, 75, 0.75, R, P, 5, 272629760, 8.8, 10, 165, 7, 0.55, 0, 30, 0.8, 0.52, 1.3, 0.13, 0, 0.27, -0.15, 0.5, 0.3, 0.56, 4194304, 272629760, 0.2, 35000, 0, 1, 0 +518, 1700, 4500, 2.2, 0, 0.3, 0, 70, 0.6, R, P, 4, 4, 9.6, 15, 160, 5, 0.52, 0, 35, 0.86, 0.54, 0.8, 0.08, 0, 0.2, -0.2, 0.54, 0.4, 0.52, 1077936132, 4, 0.3, 19000, 1, 1, 1 +519, 15000, 81250, 8, 0, 0, 0, 75, 0.55, 4, P, 1, 4194304, 6.4, 5, 200, 1.5, 0.15, 0, 45, 0.8, 0.7, 4, 0.15, 0, 1, -0, 0.3, 0, 0.75, 67158280, 4194304, 0.3, 45000, 0, 1, 26 +520, 9000, 48750, 20, 0, 0, 0, 75, 0.65, 4, P, 1, 4194304, 6.4, 5, 200, 1.5, 0.45, 0, 45, 0.9, 0.5, 1, 0.15, 0, 0.5, -0.2, 0.8, 0, 0.75, 67141888, 4194304, 0.6, 45000, 0, 1, 27 +521, 500, 200, 4, 0, 0.05, -0.09, 103, 1.5, R, P, 5, 0, 20, 5, 190, 15, 0.5, 0, 35, 0.9, 0.48, 0.85, 0.15, 0, 0.15, -0.16, 0.5, 0, 0.11, 16777216, 0, 0, 10000, 1, 1, 4 +522, 400, 200, 4, 0, 0.08, -0.09, 103, 1.8, R, P, 5, 2, 24, 5, 190, 15, 0.5, 0, 35, 0.9, 0.48, 0.85, 0.15, 0, 0.15, -0.16, 0.5, 0, 0.15, 16785408, 2, 0, 10000, 1, 1, 4 +523, 500, 240, 4.5, 0, 0.05, -0.09, 103, 1.5, R, P, 5, 0, 20, 5, 190, 15, 0.5, 0, 35, 0.9, 0.46, 0.85, 0.15, 0, 0.15, -0.16, 0.5, 0, 0.15, 16785408, 0, 0, 10000, 1, 1, 4 +524, 5500, 33187.9, 2, 0, 0, 0, 90, 0.58, R, D, 4, 262656, 8, 20, 110, 3.17, 0.4, 0, 30, 0.8, 0.5, 1.4, 0.06, 0, 0.45, -0.25, 0.55, 0, 0.2, 4210696, 262656, 0.45, 5000, 0, 1, 0 +525, 3500, 12000, 2.5, 0, 0.3, -0.25, 80, 0.85, R, D, 5, 18121216, 10, 30, 160, 6, 0.8, 0, 45, 0.7, 0.46, 1.6, 0.07, 0, 0.35, -0.15, 0.25, 0, 0.5, 2359297, 18121216, 0.2, 20000, 0, 3, 13 +526, 1700, 4166.4, 2, 0, 0, -0.2, 70, 0.7, R, P, 4, 4, 8, 10, 160, 8.17, 0.52, 0, 35, 0.84, 0.53, 1.2, 0.15, 0, 0.3, -0.1, 0.5, 0.25, 0.52, 1073741824, 4, 0.3, 19000, 1, 1, 0 +527, 1200, 2000, 2.2, 0, 0.15, -0.1, 70, 0.7, R, P, 4, 2, 8, 5, 160, 8, 0.6, 0, 30, 0.86, 0.5, 1.4, 0.12, 0, 0.3, -0.08, 0.5, 0, 0.5, 1073741824, 2, 0.26, 9000, 0, 0, 0 +528, 4000, 10000, 2, 0, 0, -0.2, 85, 0.65, 4, D, 5, 0, 10, 25, 170, 6, 0.4, 0, 30, 0.85, 0.54, 0.8, 0.1, 0, 0.3, -0.15, 0.5, 0, 0.16, 16385, 0, 0.32, 40000, 0, 1, 13 +529, 1800, 4350, 2, 0, 0, 0, 70, 0.7, R, P, 4, 0, 7.2, 15, 160, 5.4, 0.6, 0, 30, 0.8, 0.52, 1.1, 0.15, 0, 0.32, -0.14, 0.5, 0, 0.54, 1073741824, 0, 0.26, 19000, 0, 3, 0 +530, 1000, 1354.2, 2, 0, -0.2, -0.35, 70, 0.8, F, E, 3, 17039396, 8, 15, 60, 6, 0.5, 0, 30, 0.85, 0.5, 2, 0.14, 0, 0.25, -0.2, 0.5, 0, 0.5, 4864, 17039396, 0.26, 9000, 1, 1, 0 +531, 2000, 5000, 3, 0, 0, -0.2, 70, 0.9, R, D, 4, 20185093, 8, 90, 70, 15, 0.2, 0, 50, 0.85, 0.5, 2, 0.12, 0, 0.25, -0.05, 0.5, 0, 0.5, 2102032, 20185093, 0.26, 9000, 1, 1, 28 +532, 8500, 48804.2, 5, 0, 0.3, -0.2, 90, 0.88, 4, D, 5, 32, 10, 80, 140, 10, 0.45, 0, 27, 0.7, 0.46, 1.2, 0.1, 0, 0.47, -0.11, 0.5, 0, 0.43, 1228808, 32, 1.2, 10000, 0, 1, 20 +533, 1600, 4500, 2.5, 0, 0, -0.15, 75, 0.65, R, P, 5, 0, 11.2, 25, 200, 7, 0.52, 0, 30, 0.9, 0.5, 1.1, 0.09, 0, 0.3, -0.1, 0.5, 0.3, 0.6, 1073752064, 0, 0.25, 35000, 1, 1, 19 +534, 1800, 4000, 2, 0, -0.4, -0.2, 70, 0.75, R, P, 5, 37814272, 9.2, 5, 160, 6.5, 0.5, 0, 30, 0.8, 0.56, 0.5, 0.1, 0, 0, -0.2, 0.4, 0.6, 0.41, 1073750020, 37814272, 0.21, 30000, 1, 1, 1 +535, 1950, 4712.5, 4, 0, 0.1, 0, 70, 0.65, R, P, 5, 33619968, 16, 10, 160, 10, 0.5, 0, 28, 0.9, 0.5, 1.6, 0.12, 0, 0.35, -0.14, 0.5, 0.3, 0.42, 1073750016, 33619968, 0.36, 19000, 1, 3, 0 +536, 1500, 2500, 2, 0, -0.2, 0.1, 70, 0.75, R, P, 4, 302055424, 9.6, 5, 160, 8.17, 0.52, 0, 35, 0.84, 0.53, 1, 0.1, 0, 0.3, -0.15, 0.44, 0.25, 0.52, 1075847168, 302055424, 0.3, 19000, 1, 1, 0 +537, 5500, 65000, 3, 0, 0, 0, 90, 0.58, R, D, 4, 512, 8, 20, 110, 3.17, 0.4, 0, 30, 0.8, 0.5, 1.4, 0.06, 0, 0.45, 0, 0.55, 0, 0.2, 8, 512, 0.45, 5000, 0, 1, 2 +538, 5500, 65000, 3, 0, 0, 0, 90, 0.58, R, D, 4, 512, 8, 20, 110, 3.17, 0.4, 0, 30, 0.8, 0.5, 1.4, 0.06, 0, 0.45, -0.1, 0.55, 0, 0.2, 8, 512, 0.65, 5000, 0, 1, 2 +539, 1900, 4795.9, 20, 0, 0, 0.2, 85, 0.05, R, P, 5, 4194368, 0.8, 5, 150, 1, 0.5, 0, 30, 1, 0.5, 0.5, 0.05, 0, 0.33, -0.25, 0.5, 0.02, 0.5, 769, 4194368, 0.65, 26000, 0, 1, 23 +540, 1800, 3000, 2, 0, 0.3, 0, 70, 0.7, F, P, 4, 2, 7.2, 20, 160, 5.4, 0.6, 0, 30, 0.8, 0.5, 1, 0.09, 0, 0.32, -0.16, 0.56, 0, 0.54, 0, 2, 0.26, 19000, 0, 3, 0 +541, 1200, 2500, 1.8, 0, -0.15, -0.2, 70, 0.75, R, P, 5, 2113536, 12, 10, 230, 8, 0.58, 0, 30, 0.9, 0.48, 1, 0.13, 5, 0.25, -0.1, 0.45, 0.3, 0.54, 3221233668, 2113536, 0.15, 105000, 0, 0, 1 +542, 1600, 3000, 2.2, 0, 0, 0, 70, 0.65, R, P, 4, 268468228, 9.6, 10, 160, 8, 0.5, 0, 35, 0.8, 0.52, 1, 0.1, 0, 0.3, -0.1, 0.5, 0.25, 0.52, 1076363264, 268468228, 0.25, 19000, 1, 1, 0 +543, 1700, 4500, 2.7, 0, 0, -0.05, 75, 0.65, 4, D, 5, 1064964, 10, 20, 165, 8.5, 0.5, 0, 35, 0.7, 0.5, 0.8, 0.08, 3, 0.25, -0.15, 0.4, 0.4, 0.2, 2097216, 1064964, 0.26, 26000, 0, 1, 0 +544, 6500, 36670.8, 3, 0, 0, 0, 90, 0.55, R, D, 5, 0, 10.8, 10, 170, 10, 0.45, 0, 27, 0.8, 0.5, 1.2, 0.08, 0, 0.47, -0.17, 0.5, 0, 0.26, 16536, 0, 0.2, 15000, 0, 1, 2 +545, 1700, 4000, 2.5, 0, 0, -0.05, 75, 0.75, R, P, 5, 8388608, 8.8, 10, 160, 8, 0.5, 0, 30, 0.75, 0.52, 0.45, 0.1, 0, 0.1, -0.15, 0.5, 0.5, 0.45, 0, 8388608, 0.18, 20000, 2, 1, 0 +546, 1800, 4350, 2, 0, 0, 0, 70, 0.7, R, P, 5, 2, 7.2, 25, 160, 5.4, 0.6, 0, 30, 0.8, 0.49, 1, 0.09, 0, 0.32, -0.15, 0.54, 0, 0.54, 0, 2, 0.26, 19000, 0, 3, 0 +547, 1600, 3300, 2.2, 0, 0, 0, 70, 0.7, R, P, 4, 0, 7.2, 7, 160, 5.4, 0.6, 0, 30, 0.8, 0.54, 1.1, 0.14, 0, 0.32, -0.14, 0.5, 0, 0.54, 0, 0, 0.26, 19000, 0, 3, 0 +548, 20000, 48333.3, 0.2, 0, 0, -0.1, 75, 0.65, 4, P, 1, 4194304, 6.4, 5, 200, 5, 0.45, 0, 30, 0.9, 0.5, 0.6, 0.05, 0, 0.5, -0.1, 0.3, 0, 0.5, 570441728, 4194304, 0.3, 25000, 0, 1, 0 +549, 1700, 4166.4, 2.5, 0, 0.15, 0, 70, 0.6, R, P, 4, 4, 9.6, 10, 160, 8.17, 0.52, 0, 35, 0.85, 0.52, 0.7, 0.08, 3, 0.3, -0.16, 0.5, 0.5, 0.52, 1073741828, 4, 0.3, 19000, 1, 1, 1 +550, 1600, 3550, 2, 0, 0.3, 0, 70, 0.7, F, P, 5, 1, 6.8, 5, 160, 5.4, 0.6, 0, 30, 0.8, 0.52, 1, 0.09, 0, 0.3, -0.12, 0.55, 0, 0.54, 1073741824, 1, 0.26, 19000, 0, 3, 0 +551, 1800, 4500, 2.2, 0, 0.2, -0.1, 75, 0.65, R, P, 5, 4194305, 8.8, 10, 165, 9, 0.55, 0, 30, 0.8, 0.49, 1.1, 0.15, 0, 0.27, -0.08, 0.54, 0.3, 0.56, 1073741824, 4194305, 0.2, 35000, 0, 1, 0 +552, 2600, 8666.7, 3, 0, 0, 0, 80, 0.85, R, D, 5, 0, 7.2, 10, 160, 6, 0.8, 0, 30, 0.7, 0.46, 1.8, 0.07, 0, 0.35, -0.18, 0.25, 0, 0.5, 1, 0, 0.2, 20000, 0, 3, 13 +553, 25000, 438750, 10, 0, 0, 0, 75, 0.65, 4, P, 1, 4194336, 6.4, 5, 200, 1, 0.45, 0, 45, 0.9, 0.5, 1, 0.1, 0, 0.4, -0.3, 0.5, 0, 0.75, 67158280, 4194336, 0.3, 45000, 0, 1, 29 +554, 3000, 6000, 3, 0, 0.35, 0, 80, 0.6, R, P, 5, 5260288, 10, 15, 170, 8.5, 0.3, 0, 30, 0.8, 0.4, 1, 0.12, 0, 0.24, -0.2, 0.5, 0.5, 0.3, 538968096, 5260288, 0.44, 40000, 0, 1, 0 +555, 1500, 3500, 3, 0, 0.05, -0.2, 75, 0.55, R, P, 5, 0, 12, 10, 180, 8, 0.45, 0, 30, 0.85, 0.5, 0.65, 0.07, 0, 0.15, -0.1, 0.5, 0.3, 0.6, 1076373508, 0, 0.25, 35000, 1, 1, 1 +556, 5000, 20000, 3, 0, 0, -0.35, 80, 0.65, 4, P, 5, 19923013, 18, 25, 110, 7, 0.45, 0, 35, 0.85, 0.55, 1.5, 0.07, 0, 0.45, -0.3, 0.5, 0.3, 0.35, 40, 19923013, 0.44, 40000, 0, 1, 20 +557, 5000, 20000, 3, 0, 0, -0.35, 80, 0.65, 4, P, 5, 19923013, 18, 25, 110, 7, 0.45, 0, 35, 0.85, 0.55, 1.5, 0.07, 0, 0.45, -0.3, 0.5, 0.3, 0.35, 40, 19923013, 0.44, 40000, 0, 1, 20 +558, 1400, 2998.3, 2, 0, 0.1, -0.3, 75, 0.8, R, P, 5, 67108865, 8, 5, 200, 8, 0.45, 0, 30, 0.85, 0.47, 1.3, 0.15, 0, 0.28, -0.1, 0.5, 0.3, 0.6, 3221235712, 67108865, 0.25, 35000, 1, 1, 0 +559, 1500, 3600, 2.2, 0, 0, -0.05, 75, 0.85, F, P, 5, 67108864, 11.2, 10, 200, 10, 0.45, 0, 30, 0.8, 0.5, 1.1, 0.1, 0, 0.28, -0.15, 0.5, 0.3, 0.6, 3221235716, 67108864, 0.25, 35000, 1, 1, 1 +560, 1400, 3400, 2.4, 0, 0.1, -0.1, 75, 0.8, 4, P, 5, 67108866, 11.2, 5, 200, 10, 0.5, 0, 30, 0.8, 0.5, 1.2, 0.15, 0, 0.28, -0.2, 0.5, 0.3, 0.6, 10240, 67108866, 0.25, 35000, 1, 1, 0 +561, 1800, 4500, 2.1, 0, 0.1, -0.1, 75, 0.6, R, P, 5, 67108864, 8, 10, 200, 7, 0.5, 0, 30, 0.85, 0.5, 1, 0.15, 0, 0.28, -0.16, 0.5, 0.3, 0.6, 10240, 67108864, 0.25, 35000, 1, 1, 0 +562, 1500, 3500, 2.2, 0, 0.3, -0.15, 75, 0.65, R, P, 5, 67108865, 11.2, 5, 200, 8, 0.5, 0, 35, 0.9, 0.5, 1, 0.2, 0, 0.28, -0.1, 0.5, 0.3, 0.6, 1073752068, 67108865, 0.25, 35000, 1, 1, 1 +563, 10000, 96666.7, 0.05, 0, 0, -1, 75, 0.65, 4, P, 1, 4194304, 6.4, 5, 200, 5, 0.45, 0, 30, 0.9, 0.5, 1.5, 0.1, 0, 0.2, -0.15, 0.5, 0, 0.5, 33570816, 4194304, 0.7, 99000, 0, 1, 0 +564, 100, 24.1, 5, 0, 0, -0.1, 70, 0.7, 4, E, 1, 64, 14, 15, 75, 5, 0.5, 0, 45, 0.9, 0.49, 1.6, 0.1, 0, 0.28, -0.14, 0.5, 0, 0.05, 0, 64, 0.2, 500, 0, 1, 0 +565, 1400, 2998.3, 2.2, 0, 0.2, -0.1, 75, 0.75, F, P, 5, 67108865, 9.6, 10, 200, 8, 0.55, 0, 30, 0.9, 0.5, 1.4, 0.15, 0, 0.28, -0.1, 0.5, 0.3, 0.6, 10244, 67108865, 0.25, 35000, 1, 1, 1 +566, 1800, 4000, 2.3, 0, -0.3, 0, 75, 0.75, R, P, 5, 302055424, 9.6, 10, 160, 7, 0.5, 0, 35, 0.85, 0.52, 1, 0.08, 0, 0.28, -0.2, 0.45, 0.3, 0.6, 0, 302055424, 0.25, 35000, 1, 1, 0 +567, 1500, 2500, 2, 0, -0.6, 0.1, 70, 0.7, R, P, 4, 33619968, 9.6, 5, 160, 8.17, 0.52, 0, 35, 0.84, 0.55, 1, 0.1, 0, 0.3, -0.15, 0.3, 0.25, 0.52, 2097152, 33619968, 0.3, 19000, 1, 1, 0 +568, 1000, 2500.3, 4, 0, 0, -0.3, 80, 0.7, R, P, 4, 3179520, 14, 5, 170, 6.1, 0.55, 0, 35, 0.88, 0.55, 1, 0.1, 5, 0.25, -0.2, 0.35, 0, 0.4, 1073748740, 3179520, 0.6, 15000, 1, 2, 1 +569, 5500, 33187.9, 1, 0, 0, 0, 90, 0.58, R, D, 4, 512, 8, 20, 110, 3.17, 0.4, 0, 30, 0.8, 0.5, 1.4, 0.06, 0, 0.45, 0, 0.55, 0, 0.2, 8, 512, 0.45, 5000, 0, 1, 0 +570, 5500, 33187.9, 1, 0, 0, 0, 90, 0.58, R, D, 4, 512, 8, 20, 110, 3.17, 0.4, 0, 30, 0.8, 0.5, 1.4, 0.06, 0, 0.45, -0.1, 0.55, 0, 0.2, 8, 512, 0.65, 5000, 0, 1, 21 +571, 300, 150, 5, 0, 0, -0.15, 110, 0.9, R, P, 4, 3179009, 7.2, 5, 90, 15, 0.2, 0, 35, 0.85, 0.48, 1.5, 0.2, 0, 0.25, -0.04, 0.5, 0, 0.4, 1073748736, 3179009, 0.38, 15000, 1, 2, 18 +572, 800, 500, 5, 0, 0, -0.3, 80, 0.7, R, P, 3, 19955713, 4.8, 30, 60, 6.1, 0.55, 0, 35, 0.8, 0.48, 1, 0.15, 0, 0.15, -0.05, 0.5, 0, 0.4, 1073748736, 19955713, 0.38, 15000, 1, 2, 28 +573, 10000, 50000, 2, 0, 0, -0.6, 80, 0.65, 4, P, 5, 19922949, 14, 25, 110, 7, 0.45, 0, 35, 0.85, 0.5, 0.8, 0.1, 0, 0.4, -0.4, 0.5, 0.3, 0.35, 24616, 19922949, 0.29, 40000, 0, 1, 2 +574, 800, 632.7, 5, 0, 0, -0.3, 80, 0.7, R, P, 3, 19956225, 4.8, 30, 60, 6.1, 0.55, 0, 35, 0.8, 0.46, 1.6, 0.15, 0, 0.34, -0.1, 0.5, 0, 0.4, 1073764864, 19956225, 0.3, 15000, 1, 2, 0 +575, 1700, 4166.4, 2, 0, 0.1, 0.1, 70, 0.65, R, P, 4, 33628416, 8, 10, 160, 6, 0.55, 0, 25, 0.75, 0.46, 0.8, 0.07, 0, 0.3, -0.14, 0.5, 0.25, 0.52, 2228224, 33628416, 0.3, 19000, 1, 1, 0 +576, 1700, 4166.4, 2, 0, -0.1, 0.1, 70, 0.75, R, P, 4, 33619968, 8, 10, 160, 6, 0.55, 0, 35, 0.75, 0.52, 0.8, 0.08, 0, 0.3, -0.15, 0.5, 0.25, 0.52, 2228224, 33619968, 0.3, 19000, 1, 1, 0 +577, 60000, 9e+06, 4, 0, 0, 0, 75, 1.5, 4, P, 1, 4194304, 6.4, 5, 200, 1, 0.45, 0, 45, 0.9, 0.85, 1.5, 0.15, 0, 0.5, -0.2, 0.3, 0, 0.75, 604028936, 4194304, 0.7, 45000, 0, 1, 15 +578, 5500, 33187.9, 2, 0, 0, -0.2, 90, 0.65, R, D, 5, 512, 8, 20, 110, 3.5, 0.4, 0, 30, 0.8, 0.4, 1.4, 0.06, 0, 0.45, -0.25, 0.55, 0, 0.2, 16392, 512, 0.45, 5000, 0, 1, 2 +579, 2500, 6000, 2.5, 0, 0, -0.2, 80, 0.62, 4, P, 5, 17412, 10, 25, 160, 7, 0.45, 0, 35, 0.89, 0.5, 1, 0.05, 0, 0.45, -0.21, 0.45, 0.3, 0.35, 32, 17412, 0.44, 40000, 0, 1, 0 +580, 2200, 6000, 2.5, 0, 0, 0, 75, 0.65, R, P, 5, 4194304, 9.6, 15, 165, 5, 0.55, 0, 30, 0.92, 0.5, 1.1, 0.1, 0, 0.27, -0.22, 0.5, 0.3, 0.56, 0, 4194304, 0.2, 35000, 0, 1, 0 +581, 500, 200, 4.5, 0, 0.05, -0.09, 103, 1.4, R, P, 5, 0, 20, 5, 190, 15, 0.5, 0, 35, 0.9, 0.48, 0.85, 0.15, 0, 0.15, -0.2, 0.5, 0, 0.15, 16777216, 0, 0, 10000, 1, 1, 4 +582, 1900, 6333.3, 2, 0, 0, -0.15, 80, 0.85, R, D, 5, 2, 6, 15, 160, 6, 0.8, 0, 30, 0.7, 0.46, 1.3, 0.07, 0, 0.35, -0.15, 0.45, 0, 0.43, 16385, 2, 0.2, 20000, 0, 3, 13 +583, 800, 632.7, 5, 0, 0, -0.1, 80, 0.85, R, P, 4, 3179008, 6, 30, 170, 6.1, 0.55, 0, 35, 0.8, 0.46, 1.2, 0.15, 0, 0.34, -0.1, 0.5, 0, 0.4, 6656, 3179008, 0.38, 15000, 1, 2, 0 +584, 3800, 30000, 2, 0, 0, -0.5, 90, 0.45, R, D, 5, 0, 7.2, 5, 120, 8, 0.3, 0, 25, 0.75, 0.5, 1.5, 0.05, 0, 0.3, -0.15, 0.5, 0, 0.25, 536879104, 0, 0.65, 35000, 0, 1, 0 +585, 1800, 4000, 2.2, 0, 0.2, 0.15, 75, 0.65, R, P, 5, 4194304, 8.4, 20, 165, 8, 0.45, 0, 30, 0.8, 0.52, 0.9, 0.13, 3, 0.3, -0.1, 0.5, 0.3, 0.56, 1073741824, 4194304, 0.2, 35000, 0, 1, 0 +586, 800, 600, 4, 0, 0.1, 0, 103, 1.4, R, P, 4, 0, 16, 5, 190, 10, 0.55, 0, 35, 0.85, 0.48, 0.65, 0.2, 0, 0.09, -0.11, 0.55, 0, 0.24, 1090527232, 0, 0, 10000, 1, 1, 8 +587, 1400, 2998.3, 2.2, 0, 0.1, -0.1, 75, 0.7, 4, P, 5, 0, 9.6, 5, 200, 8, 0.55, 0, 30, 0.8, 0.5, 1.2, 0.15, 0, 0.3, -0.1, 0.5, 0.3, 0.6, 1073752068, 0, 0.25, 35000, 1, 1, 0 +588, 5500, 23489.6, 3, 0, 0, 0.3, 80, 0.72, R, D, 5, 513, 5.6, 25, 140, 4.5, 0.6, 0, 30, 0.7, 0.46, 0.6, 0.08, 0, 0.3, -0.24, 0.4, 0.6, 0.4, 1073741833, 513, 0.36, 22000, 0, 3, 13 +589, 1400, 3000, 2.8, 0, 0, 0, 80, 0.75, F, P, 5, 12582912, 12, 10, 200, 11, 0.45, 0, 30, 0.9, 0.49, 1.7, 0.1, 0, 0.28, -0.12, 0.5, 0, 0.5, 8192, 12582912, 0.25, 35000, 1, 1, 0 +590, 5500, 33187.9, 1, 0, 0, 0, 90, 0.58, R, D, 4, 512, 8, 20, 110, 3.17, 0.4, 0, 30, 0.8, 0.5, 1.4, 0.06, 0, 0.45, 0, 0.55, 0, 0.2, 8, 512, 0.45, 5000, 0, 1, 0 +591, 3800, 30000, 2, 0, 0, -0.5, 90, 0.45, R, D, 5, 0, 7.2, 5, 120, 8, 0.3, 0, 25, 0.75, 0.5, 1.5, 0.05, 0, 0.3, -0.15, 0.5, 0, 0.25, 536879104, 0, 0.65, 35000, 0, 1, 0 +592, 40000, 3e+06, 4, 0, 0, 0, 75, 0.65, 4, P, 1, 4456448, 6.4, 5, 200, 1, 0.45, 0, 45, 0.9, 0.5, 2, 0.15, 0, 0.5, -0.2, 0.5, 0, 0.75, 605110536, 4456448, 0.3, 45000, 0, 1, 0 +593, 5000, 27083.3, 12, 0, 0.3, 0, 75, 0.65, 4, P, 1, 4194304, 6.4, 5, 200, 1.5, 0.45, 0, 45, 0.9, 0.5, 1.5, 0.15, 0, 0.5, -0.05, 0.2, 0, 0.75, 67108864, 4194304, 0.5, 45000, 0, 1, 13 +594, 100, 50, 20, 0, 0.05, -0.2, 70, 0.6, 4, E, 1, 16777216, 20, 10, 60, 5.5, 0.5, 0, 25, 0.9, 0.49, 3, 0.3, 0, 0.15, -0.15, 0.5, 0, 0.05, 0, 16777216, 0.2, 500, 0, 1, 0 +595, 2200, 20210.7, 1, 0, -1, 0, 22, 1.5, R, P, 5, 0, 0.6, 5, 190, 0.03, 0.01, 0, 24, 15, 0.65, 1, 3, 0, 0.1, 0.5, 2, 0, 0.39, 134218752, 0, 0.7, 30000, 0, 1, 0 +596, 1600, 4500, 2, 0, 0.3, -0.1, 75, 0.75, R, P, 5, 270532616, 10, 10, 200, 10, 0.53, 0, 35, 0.85, 0.5, 1, 0.12, 0, 0.28, -0.12, 0.55, 0, 0.24, 1073741824, 270532616, 0.2, 25000, 0, 1, 0 +597, 1600, 4500, 2, 0, 0.3, -0.15, 75, 0.75, R, P, 5, 270532616, 10, 10, 200, 10, 0.53, 0, 35, 0.85, 0.52, 1.1, 0.12, 0, 0.28, -0.17, 0.55, 0, 0.24, 1073741824, 270532616, 0.2, 25000, 0, 1, 0 +598, 1600, 4500, 2, 0, 0.3, -0.1, 75, 0.75, R, P, 5, 270532616, 10, 10, 200, 10, 0.53, 0, 35, 0.85, 0.52, 0.9, 0.08, 0, 0.28, -0.17, 0.55, 0, 0.24, 1073741824, 270532616, 0.2, 25000, 0, 1, 0 +599, 2500, 5500, 3, 0, 0, -0.2, 85, 0.65, 4, D, 5, 3180544, 12, 15, 160, 6.2, 0.6, 0, 35, 0.85, 0.55, 0.7, 0.06, 1, 0.3, -0.25, 0.5, 0.25, 0.23, 2637856, 3180544, 0.27, 25000, 0, 1, 0 +600, 1600, 3800, 2.7, 0, 0.2, 0, 75, 0.65, R, D, 5, 1064964, 10, 20, 165, 8.5, 0.5, 0, 35, 0.7, 0.52, 0.8, 0.08, 2, 0.25, -0.15, 0.4, 0.4, 0.2, 1075839040, 1064964, 0.26, 26000, 0, 1, 0 +601, 5000, 10000, 2.5, 0, 0, -0.1, 85, 0.65, 4, D, 5, 16777216, 9.6, 25, 110, 6.4, 0.45, 0, 27, 0.7, 0.46, 0.7, 0.08, 1, 0.3, -0.18, 0.5, 0, 0.06, 8912912, 16777216, 0.32, 40000, 0, 1, 13 +602, 1500, 3400, 2, 0, 0.1, -0.2, 85, 0.7, R, P, 5, 2097152, 9.2, 5, 200, 7, 0.55, 0, 30, 0.8, 0.5, 1.2, 0.12, 0, 0.3, -0.15, 0.5, 0.4, 0.5, 1073752064, 2097152, 0.25, 35000, 1, 1, 0 +603, 1500, 4000, 2.2, 0, 0.3, -0.15, 85, 0.7, R, P, 5, 2097152, 10.4, 5, 200, 6, 0.55, 0, 30, 0.9, 0.52, 0.8, 0.08, 0, 0.28, -0.24, 0.59, 0.4, 0.5, 10240, 2097152, 0.25, 35000, 1, 1, 0 +604, 1600, 4000, 2.5, 0, 0, 0.05, 75, 0.6, R, P, 5, 276824066, 8.8, 15, 160, 6.2, 0.55, 0, 30, 0.84, 0.52, 0.8, 0.07, 0, 0.35, -0.22, 0.5, 0.5, 0.4, 0, 276824066, 0.23, 20000, 1, 1, 0 +605, 1700, 4500, 2.7, 0, 0, -0.05, 75, 0.65, 4, D, 5, 1064964, 10, 20, 165, 8.5, 0.5, 0, 35, 0.7, 0.5, 0.8, 0.08, 3, 0.25, -0.15, 0.4, 0.4, 0.2, 2097216, 1064964, 0.26, 26000, 0, 1, 0 +606, 1000, 1354.2, 5, 0, 0.4, -0.2, 70, 1, R, E, 3, 4, 8, 30, 160, 5, 0.5, 0, 30, 0.85, 0.5, 2, 0.09, 0, 0.25, -0.1, 0.5, 0, 0.5, 12544, 4, 0.26, 9000, 1, 1, 0 +607, 1000, 1354.2, 5, 0, 0.4, -0.2, 70, 1, R, E, 3, 4, 8, 30, 160, 5, 0.5, 0, 30, 0.85, 0.5, 2, 0.09, 0, 0.25, -0.1, 0.5, 0, 0.5, 12544, 4, 0.26, 9000, 1, 1, 0 +608, 1000, 2500, 5, 0, 0.4, -0.2, 70, 1, R, E, 3, 4, 8, 30, 160, 5, 0.5, 0, 30, 0.85, 0.5, 2, 0.09, 0, 0.25, -0.1, 0.5, 0, 0.5, 12544, 4, 0.26, 9000, 1, 1, 0 +609, 5500, 23489.6, 3, 0, 0, 0, 80, 0.82, R, D, 5, 513, 5.6, 25, 140, 4.5, 0.6, 0, 30, 0.7, 0.46, 0.9, 0.08, 0, 0.25, -0.25, 0.35, 0.6, 0.4, 16393, 513, 0.36, 22000, 0, 3, 13 +610, 400, 400, 5, 0, -0.4, 0, 70, 0.6, R, E, 3, 4, 8, 30, 160, 5, 0.5, 0, 30, 0.85, 0.5, 1, 0.1, 0, 0.25, -0.1, 0.5, 0, 0.5, 12544, 4, 0.26, 9000, 1, 1, 0 +611, 1000, 1354.2, 5, 0, 0, 0, 70, 1, R, E, 3, 4, 8, 30, 160, 5, 0.5, 0, 30, 0.85, 0.5, 2, 0.09, 0, 0.25, -0.1, 0.5, 0, 0.5, 12544, 4, 0.26, 9000, 1, 1, 0 +612, 1700, 5008.3, 2.5, 0, 0, -0.3, 85, 0.75, 4, D, 5, 5242882, 10, 20, 160, 6.2, 0.6, 0, 35, 0.85, 0.5, 2.4, 0.08, 0, 0.28, -0.14, 0.5, 0.25, 0.23, 32, 5242882, 0.27, 25000, 0, 1, 0 \ No newline at end of file diff --git a/Server/mods/deathmatch/logic/CCommon.h b/Server/mods/deathmatch/logic/CCommon.h index 2138fadbf7..aab0282e84 100644 --- a/Server/mods/deathmatch/logic/CCommon.h +++ b/Server/mods/deathmatch/logic/CCommon.h @@ -253,229 +253,6 @@ enum eVehicleTypes VT_MAX }; -enum eHandlingTypes -{ - HT_LANDSTAL, - HT_BRAVURA, - HT_BUFFALO, - HT_LINERUN, - HT_PEREN, - HT_SENTINEL, - HT_DUMPER, - HT_FIRETRUK, - HT_TRASH, - HT_STRETCH, - HT_MANANA, - HT_INFERNUS, - HT_VOODOO, - HT_PONY, - HT_MULE, - HT_CHEETAH, - HT_AMBULAN, - HT_MOONBEAM, - HT_ESPERANT, - HT_TAXI, - HT_WASHING, - HT_BOBCAT, - HT_MRWHOOP, - HT_BFINJECT, - HT_PREMIER, - HT_ENFORCER, - HT_SECURICA, - HT_BANSHEE, - HT_BUS, - HT_RHINO, - HT_BARRACKS, - HT_HOTKNIFE, - HT_ARTICT1, - HT_PREVION, - HT_COACH, - HT_CABBIE, - HT_STALLION, - HT_RUMPO, - HT_RCBANDIT, - HT_ROMERO, - HT_PACKER, - HT_MONSTER, - HT_ADMIRAL, - HT_TRAM, - HT_AIRTRAIN, - HT_ARTICT2, - HT_TURISMO, - HT_FLATBED, - HT_YANKEE, - HT_GOLFCART, - HT_SOLAIR, - HT_TOPFUN, - HT_GLENDALE, - HT_OCEANIC, - HT_PATRIOT, - HT_HERMES, - HT_SABRE, - HT_ZR350, - HT_WALTON, - HT_REGINA, - HT_COMET, - HT_BURRITO, - HT_CAMPER, - HT_BAGGAGE, - HT_DOZER, - HT_RANCHER, - HT_FBIRANCH, - HT_VIRGO, - HT_GREENWOO, - HT_HOTRING, - HT_SANDKING, - HT_BLISTAC, - HT_BOXVILLE, - HT_BENSON, - HT_MESA, - HT_BLOODRA, - HT_BLOODRB, - HT_SUPERGT, - HT_ELEGANT, - HT_JOURNEY, - HT_PETROL, - HT_RDTRAIN, - HT_NEBULA, - HT_MAJESTIC, - HT_BUCCANEE, - HT_CEMENT, - HT_TOWTRUCK, - HT_FORTUNE, - HT_CADRONA, - HT_FBITRUCK, - HT_WILLARD, - HT_FORKLIFT, - HT_TRACTOR, - HT_COMBINE, - HT_FELTZER, - HT_REMINGTN, - HT_SLAMVAN, - HT_BLADE, - HT_FREIGHT, - HT_STREAK, - HT_VINCENT, - HT_BULLET, - HT_CLOVER, - HT_SADLER, - HT_RANGER, - HT_HUSTLER, - HT_INTRUDER, - HT_PRIMO, - HT_TAMPA, - HT_SUNRISE, - HT_MERIT, - HT_UTILITY, - HT_YOSEMITE, - HT_WINDSOR, - HT_MTRUCK_A, - HT_MTRUCK_B, - HT_URANUS, - HT_JESTER, - HT_SULTAN, - HT_STRATUM, - HT_ELEGY, - HT_RCTIGER, - HT_FLASH, - HT_TAHOMA, - HT_SAVANNA, - HT_BANDITO, - HT_FREIFLAT, - HT_CSTREAK, - HT_KART, - HT_MOWER, - HT_DUNE, - HT_SWEEPER, - HT_BROADWAY, - HT_TORNADO, - HT_DFT30, - HT_HUNTLEY, - HT_STAFFORD, - HT_NEWSVAN, - HT_TUG, - HT_PETROTR, - HT_EMPEROR, - HT_FLOAT, - HT_EUROS, - HT_HOTDOG, - HT_CLUB, - HT_ARTICT3, - HT_RCCAM, - HT_POLICE_LA, - HT_POLICE_SF, - HT_POLICE_VG, - HT_POLRANGER, - HT_PICADOR, - HT_SWATVAN, - HT_ALPHA, - HT_PHOENIX, - HT_BAGBOXA, - HT_BAGBOXB, - HT_STAIRS, - HT_BOXBURG, - HT_FARM_TR1, - HT_UTIL_TR1, - HT_ROLLER, - HT_BIKE, - HT_PIZZABOY, - HT_DIRTBIKE, - HT_FCR900, - HT_NRG500, - HT_HPV1000, - HT_BF400, - HT_WAYFARER, - HT_QUADBIKE, - HT_BMX, - HT_CHOPPERB, - HT_MTB, - HT_FREEWAY, - HT_PREDATOR, - HT_SPEEDER, - HT_REEFER, - HT_RIO, - HT_SQUALO, - HT_TROPIC, - HT_COASTGRD, - HT_DINGHY, - HT_MARQUIS, - HT_CUPBOAT, - HT_LAUNCH, - HT_SEAPLANE, - HT_VORTEX, - HT_RUSTLER, - HT_BEAGLE, - HT_CROPDUST, - HT_STUNT, - HT_SHAMAL, - HT_HYDRA, - HT_NEVADA, - HT_AT400, - HT_ANDROM, - HT_DODO, - HT_SPARROW, - HT_SEASPAR, - HT_MAVERICK, - HT_COASTMAV, - HT_POLMAV, - HT_HUNTER, - HT_LEVIATHN, - HT_CARGOBOB, - HT_RAINDANC, - HT_RCBARON, - HT_RCGOBLIN, - HT_RCRAIDER, - HT_HOTRINA, - HT_HOTRINB, - HT_SADLSHIT, - HT_GLENSHIT, - HT_FAGGIO, - HT_FIRELA, - HT_RNCHLURE, - HT_FREIBOX, - HT_MAX -}; - enum eHandlingProperty { HANDLING_MASS = 1, diff --git a/Server/mods/deathmatch/logic/CGame.cpp b/Server/mods/deathmatch/logic/CGame.cpp index 48ce6e5ab1..43e79e22ef 100644 --- a/Server/mods/deathmatch/logic/CGame.cpp +++ b/Server/mods/deathmatch/logic/CGame.cpp @@ -2877,7 +2877,7 @@ void CGame::Packet_Vehicle_InOut(CVehicleInOutPacket& Packet) // Is this vehicle enterable? (not a trailer) unsigned short usVehicleModel = pVehicle->GetModel(); - if (!CVehicleManager::IsTrailer(usVehicleModel)) + if (!g_pGame->GetModelManager()->GetVehicleModel(usVehicleModel)->IsTrailer()) { // He musn't already be doing something if (pPed->GetVehicleAction() == CPed::VEHICLEACTION_NONE) @@ -2914,7 +2914,7 @@ void CGame::Packet_Vehicle_InOut(CVehicleInOutPacket& Packet) // Temp fix: Disable driver seat for train carriages since the whole vehicle sync logic is based on the the // player on the first seat being the vehicle syncer (Todo) - if (pVehicle->GetVehicleType() == VEHICLE_TRAIN && ucSeat == 0 && pVehicle->GetTowedByVehicle()) + if (pVehicle->GetVehicleType() == eVehicleType::TRAIN && ucSeat == 0 && pVehicle->GetTowedByVehicle()) ucSeat++; // Going for driver? diff --git a/Server/mods/deathmatch/logic/CHandlingManager.cpp b/Server/mods/deathmatch/logic/CHandlingManager.cpp index 4a06b223d8..84e5de8657 100644 --- a/Server/mods/deathmatch/logic/CHandlingManager.cpp +++ b/Server/mods/deathmatch/logic/CHandlingManager.cpp @@ -11,21 +11,10 @@ #include "StdInc.h" -SFixedArray CHandlingManager::m_OriginalHandlingData; - -SFixedArray CHandlingManager::m_pOriginalEntries; +std::map CHandlingManager::m_pOriginalEntries; CHandlingManager::CHandlingManager() { - // Initialize all default handlings - InitializeDefaultHandlings(); - - // Create a handling entry for every original handling data - for (int i = 0; i < HT_MAX; i++) - { - m_pOriginalEntries[i] = new CHandlingEntry(&m_OriginalHandlingData[i]); - } - // http://www.gtamodding.com/index.php?title=Handling.cfg#GTA_San_Andreas // http://projectcerbera.com/gta/sa/tutorials/handling @@ -68,9 +57,9 @@ CHandlingManager::CHandlingManager() CHandlingManager::~CHandlingManager() { // Destroy all original handling entries - for (int i = 0; i < HT_MAX; i++) + for (auto pData : m_pOriginalEntries) { - delete m_pOriginalEntries[i]; + delete pData.second; } } @@ -88,16 +77,13 @@ bool CHandlingManager::ApplyHandlingData(eVehicleTypes eModel, CHandlingEntry* p const CHandlingEntry* CHandlingManager::GetOriginalHandlingData(eVehicleTypes eModel) { - // Within range? - if (eModel >= 400 && eModel < VT_MAX) - { - // Get our Handling ID - eHandlingTypes eHandling = GetHandlingID(eModel); - // Return it - return m_pOriginalEntries[eHandling]; - } + return m_pOriginalEntries[eModel]; +} - return NULL; +void CHandlingManager::RehisterHandling(uint32_t uiModelID, tHandlingData& handling) +{ + assert(!m_pOriginalEntries[uiModelID], "Handling data registered twice"); + m_pOriginalEntries[uiModelID] = new CHandlingEntry(&handling); } const CHandlingEntry* CHandlingManager::GetModelHandlingData(eVehicleTypes eModel) @@ -127,8030 +113,3 @@ void CHandlingManager::SetModelHandlingHasChanged(eVehicleTypes eModel, bool bCh { g_pGame->GetModelManager()->GetVehicleModel(eModel)->SetVehicleHandlingChanged(bChanged); } - -// Return the handling manager id -eHandlingTypes CHandlingManager::GetHandlingID(eVehicleTypes eModel) -{ - switch (eModel) - { - case VT_LANDSTAL: - return HT_LANDSTAL; - case VT_BRAVURA: - return HT_BRAVURA; - case VT_BUFFALO: - return HT_BUFFALO; - case VT_LINERUN: - return HT_LINERUN; - case VT_PEREN: - return HT_PEREN; - case VT_SENTINEL: - return HT_SENTINEL; - case VT_DUMPER: - return HT_DUMPER; - case VT_FIRETRUK: - return HT_FIRETRUK; - case VT_TRASH: - return HT_TRASH; - case VT_STRETCH: - return HT_STRETCH; - case VT_MANANA: - return HT_MANANA; - case VT_INFERNUS: - return HT_INFERNUS; - case VT_VOODOO: - return HT_VOODOO; - case VT_PONY: - return HT_PONY; - case VT_MULE: - return HT_MULE; - case VT_CHEETAH: - return HT_CHEETAH; - case VT_AMBULAN: - return HT_AMBULAN; - case VT_LEVIATHN: - return HT_LEVIATHN; - case VT_MOONBEAM: - return HT_MOONBEAM; - case VT_ESPERANT: - return HT_ESPERANT; - case VT_TAXI: - return HT_TAXI; - case VT_WASHING: - return HT_WASHING; - case VT_BOBCAT: - return HT_BOBCAT; - case VT_MRWHOOP: - return HT_MRWHOOP; - case VT_BFINJECT: - return HT_BFINJECT; - case VT_HUNTER: - return HT_HUNTER; - case VT_PREMIER: - return HT_PREMIER; - case VT_ENFORCER: - return HT_ENFORCER; - case VT_SECURICA: - return HT_SECURICA; - case VT_BANSHEE: - return HT_BANSHEE; - case VT_PREDATOR: - return HT_PREDATOR; - case VT_BUS: - return HT_BUS; - case VT_RHINO: - return HT_RHINO; - case VT_BARRACKS: - return HT_BARRACKS; - case VT_HOTKNIFE: - return HT_HOTKNIFE; - case VT_ARTICT1: - return HT_ARTICT1; - case VT_PREVION: - return HT_PREVION; - case VT_COACH: - return HT_COACH; - case VT_CABBIE: - return HT_CABBIE; - case VT_STALLION: - return HT_STALLION; - case VT_RUMPO: - return HT_RUMPO; - case VT_RCBANDIT: - return HT_RCBANDIT; - case VT_ROMERO: - return HT_ROMERO; - case VT_PACKER: - return HT_PACKER; - case VT_MONSTER: - return HT_MONSTER; - case VT_ADMIRAL: - return HT_ADMIRAL; - case VT_SQUALO: - return HT_SQUALO; - case VT_SEASPAR: - return HT_SEASPAR; - case VT_PIZZABOY: - return HT_PIZZABOY; - case VT_TRAM: - return HT_TRAM; - case VT_ARTICT2: - return HT_ARTICT2; - case VT_TURISMO: - return HT_TURISMO; - case VT_SPEEDER: - return HT_SPEEDER; - case VT_REEFER: - return HT_REEFER; - case VT_TROPIC: - return HT_TROPIC; - case VT_FLATBED: - return HT_FLATBED; - case VT_YANKEE: - return HT_YANKEE; - case VT_CADDY: - return HT_GOLFCART; - case VT_SOLAIR: - return HT_SOLAIR; - case VT_TOPFUN: - return HT_TOPFUN; - case VT_SKIMMER: - return HT_SEAPLANE; - case VT_PCJ600: - return HT_BIKE; - case VT_FAGGIO: - return HT_FAGGIO; - case VT_FREEWAY: - return HT_FREEWAY; - case VT_RCBARON: - return HT_RCBARON; - case VT_RCRAIDER: - return HT_RCRAIDER; - case VT_GLENDALE: - return HT_GLENDALE; - case VT_OCEANIC: - return HT_OCEANIC; - case VT_SANCHEZ: - return HT_DIRTBIKE; - case VT_SPARROW: - return HT_SPARROW; - case VT_PATRIOT: - return HT_PATRIOT; - case VT_QUAD: - return HT_QUADBIKE; - case VT_COASTG: - return HT_COASTGRD; - case VT_DINGHY: - return HT_DINGHY; - case VT_HERMES: - return HT_HERMES; - case VT_SABRE: - return HT_SABRE; - case VT_RUSTLER: - return HT_RUSTLER; - case VT_ZR350: - return HT_ZR350; - case VT_WALTON: - return HT_WALTON; - case VT_REGINA: - return HT_REGINA; - case VT_COMET: - return HT_COMET; - case VT_BMX: - return HT_BMX; - case VT_BURRITO: - return HT_BURRITO; - case VT_CAMPER: - return HT_CAMPER; - case VT_MARQUIS: - return HT_MARQUIS; - case VT_BAGGAGE: - return HT_BAGGAGE; - case VT_DOZER: - return HT_DOZER; - case VT_MAVERICK: - return HT_MAVERICK; - case VT_VCNMAV: - return HT_COASTMAV; - case VT_RANCHER: - return HT_RANCHER; - case VT_FBIRANCH: - return HT_FBIRANCH; - case VT_VIRGO: - return HT_VIRGO; - case VT_GREENWOO: - return HT_GREENWOO; - case VT_JETMAX: - return HT_CUPBOAT; - case VT_HOTRING: - return HT_HOTRING; - case VT_SANDKING: - return HT_SANDKING; - case VT_BLISTAC: - return HT_BLISTAC; - case VT_POLMAV: - return HT_POLMAV; - case VT_BOXVILLE: - return HT_BOXVILLE; - case VT_BENSON: - return HT_BENSON; - case VT_MESA: - return HT_MESA; - case VT_RCGOBLIN: - return HT_RCGOBLIN; - case VT_HOTRINA: - return HT_HOTRINA; - case VT_HOTRINB: - return HT_HOTRINB; - case VT_BLOODRA: - return HT_BLOODRA; - case VT_RNCHLURE: - return HT_RNCHLURE; - case VT_SUPERGT: - return HT_SUPERGT; - case VT_ELEGANT: - return HT_ELEGANT; - case VT_JOURNEY: - return HT_JOURNEY; - case VT_BIKE: - return HT_CHOPPERB; - case VT_MTBIKE: - return HT_MTB; - case VT_BEAGLE: - return HT_BEAGLE; - case VT_CROPDUST: - return HT_CROPDUST; - case VT_STUNT: - return HT_STUNT; - case VT_PETRO: - return HT_PETROL; - case VT_RDTRAIN: - return HT_RDTRAIN; - case VT_NEBULA: - return HT_NEBULA; - case VT_MAJESTIC: - return HT_MAJESTIC; - case VT_BUCCANEE: - return HT_BUCCANEE; - case VT_SHAMAL: - return HT_SHAMAL; - case VT_HYDRA: - return HT_HYDRA; - case VT_FCR900: - return HT_FCR900; - case VT_NRG500: - return HT_NRG500; - case VT_COPBIKE: - return HT_HPV1000; - case VT_CEMENT: - return HT_CEMENT; - case VT_TOWTRUCK: - return HT_TOWTRUCK; - case VT_FORTUNE: - return HT_FORTUNE; - case VT_CADRONA: - return HT_CADRONA; - case VT_FBITRUCK: - return HT_FBITRUCK; - case VT_WILLARD: - return HT_WILLARD; - case VT_FORKLIFT: - return HT_FORKLIFT; - case VT_TRACTOR: - return HT_TRACTOR; - case VT_COMBINE: - return HT_COMBINE; - case VT_FELTZER: - return HT_FELTZER; - case VT_REMINGTN: - return HT_REMINGTN; - case VT_SLAMVAN: - return HT_SLAMVAN; - case VT_BLADE: - return HT_BLADE; - case VT_FREIGHT: - return HT_FREIGHT; - case VT_STREAK: - return HT_STREAK; - case VT_VORTEX: - return HT_VORTEX; - case VT_VINCENT: - return HT_VINCENT; - case VT_BULLET: - return HT_BULLET; - case VT_CLOVER: - return HT_CLOVER; - case VT_SADLER: - return HT_SADLER; - case VT_FIRELA: - return HT_FIRELA; - case VT_HUSTLER: - return HT_HUSTLER; - case VT_INTRUDER: - return HT_INTRUDER; - case VT_PRIMO: - return HT_PRIMO; - case VT_CARGOBOB: - return HT_CARGOBOB; - case VT_TAMPA: - return HT_TAMPA; - case VT_SUNRISE: - return HT_SUNRISE; - case VT_MERIT: - return HT_MERIT; - case VT_UTILITY: - return HT_UTILITY; - case VT_NEVADA: - return HT_NEVADA; - case VT_YOSEMITE: - return HT_YOSEMITE; - case VT_WINDSOR: - return HT_WINDSOR; - case VT_MONSTERA: - return HT_MTRUCK_A; - case VT_MONSTERB: - return HT_MTRUCK_B; - case VT_URANUS: - return HT_URANUS; - case VT_JESTER: - return HT_JESTER; - case VT_SULTAN: - return HT_SULTAN; - case VT_STRATUM: - return HT_STRATUM; - case VT_ELEGY: - return HT_ELEGY; - case VT_RAINDANC: - return HT_RAINDANC; - case VT_RCTIGER: - return HT_RCTIGER; - case VT_FLASH: - return HT_FLASH; - case VT_TAHOMA: - return HT_TAHOMA; - case VT_SAVANNA: - return HT_SAVANNA; - case VT_BANDITO: - return HT_BANDITO; - case VT_FREIFLAT: - return HT_FREIFLAT; - case VT_STREAKC: - return HT_CSTREAK; - case VT_KART: - return HT_KART; - case VT_MOWER: - return HT_MOWER; - case VT_DUNERIDE: - return HT_DUNE; - case VT_SWEEPER: - return HT_SWEEPER; - case VT_BROADWAY: - return HT_BROADWAY; - case VT_TORNADO: - return HT_TORNADO; - case VT_AT400: - return HT_AT400; - case VT_DFT30: - return HT_DFT30; - case VT_HUNTLEY: - return HT_HUNTLEY; - case VT_STAFFORD: - return HT_STAFFORD; - case VT_BF400: - return HT_BF400; - case VT_NEWSVAN: - return HT_NEWSVAN; - case VT_TUG: - return HT_TUG; - case VT_PETROTR: - return HT_PETROTR; - case VT_EMPEROR: - return HT_EMPEROR; - case VT_WAYFARER: - return HT_WAYFARER; - case VT_EUROS: - return HT_EUROS; - case VT_HOTDOG: - return HT_HOTDOG; - case VT_CLUB: - return HT_CLUB; - case VT_FREIBOX: - return HT_FREIBOX; - case VT_ARTICT3: - return HT_ARTICT3; - case VT_ANDROM: - return HT_ANDROM; - case VT_DODO: - return HT_DODO; - case VT_RCCAM: - return HT_RCCAM; - case VT_LAUNCH: - return HT_LAUNCH; - case VT_COPCARLA: - return HT_POLICE_LA; - case VT_COPCARSF: - return HT_POLICE_SF; - case VT_COPCARVG: - return HT_POLICE_VG; - case VT_COPCARRU: - return HT_POLRANGER; - case VT_PICADOR: - return HT_PICADOR; - case VT_SWATVAN: - return HT_SWATVAN; - case VT_ALPHA: - return HT_ALPHA; - case VT_PHOENIX: - return HT_PHOENIX; - case VT_GLENSHIT: - return HT_GLENSHIT; - case VT_SADLSHIT: - return HT_SADLSHIT; - case VT_BAGBOXA: - return HT_BAGBOXA; - case VT_BAGBOXB: - return HT_BAGBOXB; - case VT_TUGSTAIR: - return HT_STAIRS; - case VT_BOXBURG: - return HT_BOXBURG; - case VT_FARMTR1: - return HT_FARM_TR1; - case VT_UTILTR1: - return HT_UTIL_TR1; - default: - break; - } - return HT_LANDSTAL; -} - -void CHandlingManager::InitializeDefaultHandlings() -{ - // Reset - memset(&m_OriginalHandlingData[0], 0, sizeof(m_OriginalHandlingData)); - - // NB: Don't waste your time changing this manually. Use the dumping code - // commented out at the bottom :) - m_OriginalHandlingData[0].iVehicleID = 0; - m_OriginalHandlingData[0].fMass = 1700.000000f; - m_OriginalHandlingData[0].fTurnMass = 5008.299805f; - m_OriginalHandlingData[0].fDragCoeff = 2.500000f; - m_OriginalHandlingData[0].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.300000f); - m_OriginalHandlingData[0].uiPercentSubmerged = 85; - m_OriginalHandlingData[0].fTractionMultiplier = 0.750000f; - m_OriginalHandlingData[0].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[0].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[0].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[0].Transmission.uiHandlingFlags = 5242882; - m_OriginalHandlingData[0].Transmission.fEngineAcceleration = 10.000000f; - m_OriginalHandlingData[0].Transmission.fEngineInertia = 20.000000f; - m_OriginalHandlingData[0].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[0].fBrakeDeceleration = 6.200000f; - m_OriginalHandlingData[0].fBrakeBias = 0.600000f; - m_OriginalHandlingData[0].bABS = false; - m_OriginalHandlingData[0].fSteeringLock = 35.000000f; - m_OriginalHandlingData[0].fTractionLoss = 0.850000f; - m_OriginalHandlingData[0].fTractionBias = 0.500000f; - m_OriginalHandlingData[0].fSuspensionForceLevel = 2.400000f; - m_OriginalHandlingData[0].fSuspensionDamping = 0.080000f; - m_OriginalHandlingData[0].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[0].fSuspensionUpperLimit = 0.280000f; - m_OriginalHandlingData[0].fSuspensionLowerLimit = -0.140000f; - m_OriginalHandlingData[0].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[0].fSuspensionAntiDiveMultiplier = 0.250000f; - m_OriginalHandlingData[0].fCollisionDamageMultiplier = 0.230000f; - m_OriginalHandlingData[0].uiModelFlags = 0x20; - m_OriginalHandlingData[0].uiHandlingFlags = 0x500002; - m_OriginalHandlingData[0].fSeatOffsetDistance = 0.270000f; - m_OriginalHandlingData[0].uiMonetary = 25000; - m_OriginalHandlingData[0].ucHeadLight = 0; - m_OriginalHandlingData[0].ucTailLight = 1; - m_OriginalHandlingData[0].ucAnimGroup = 0; - - m_OriginalHandlingData[1].iVehicleID = 1; - m_OriginalHandlingData[1].fMass = 1300.000000f; - m_OriginalHandlingData[1].fTurnMass = 2200.000000f; - m_OriginalHandlingData[1].fDragCoeff = 1.700000f; - m_OriginalHandlingData[1].vecCenterOfMass = CVector(0.000000f, 0.300000f, 0.000000f); - m_OriginalHandlingData[1].uiPercentSubmerged = 70; - m_OriginalHandlingData[1].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[1].Transmission.ucDriveType = 'F'; - m_OriginalHandlingData[1].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[1].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[1].Transmission.uiHandlingFlags = 1; - m_OriginalHandlingData[1].Transmission.fEngineAcceleration = 6.000000f; - m_OriginalHandlingData[1].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[1].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[1].fBrakeDeceleration = 8.000000f; - m_OriginalHandlingData[1].fBrakeBias = 0.800000f; - m_OriginalHandlingData[1].bABS = false; - m_OriginalHandlingData[1].fSteeringLock = 30.000000f; - m_OriginalHandlingData[1].fTractionLoss = 0.800000f; - m_OriginalHandlingData[1].fTractionBias = 0.520000f; - m_OriginalHandlingData[1].fSuspensionForceLevel = 1.300000f; - m_OriginalHandlingData[1].fSuspensionDamping = 0.080000f; - m_OriginalHandlingData[1].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[1].fSuspensionUpperLimit = 0.310000f; - m_OriginalHandlingData[1].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[1].fSuspensionFrontRearBias = 0.570000f; - m_OriginalHandlingData[1].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[1].fCollisionDamageMultiplier = 0.500000f; - m_OriginalHandlingData[1].uiModelFlags = 0x1; - m_OriginalHandlingData[1].uiHandlingFlags = 0x1; - m_OriginalHandlingData[1].fSeatOffsetDistance = 0.260000f; - m_OriginalHandlingData[1].uiMonetary = 9000; - m_OriginalHandlingData[1].ucHeadLight = 0; - m_OriginalHandlingData[1].ucTailLight = 0; - m_OriginalHandlingData[1].ucAnimGroup = 0; - - m_OriginalHandlingData[2].iVehicleID = 2; - m_OriginalHandlingData[2].fMass = 1500.000000f; - m_OriginalHandlingData[2].fTurnMass = 4000.000000f; - m_OriginalHandlingData[2].fDragCoeff = 2.000000f; - m_OriginalHandlingData[2].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.100000f); - m_OriginalHandlingData[2].uiPercentSubmerged = 85; - m_OriginalHandlingData[2].fTractionMultiplier = 0.700000f; - m_OriginalHandlingData[2].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[2].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[2].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[2].Transmission.uiHandlingFlags = 270532608; - m_OriginalHandlingData[2].Transmission.fEngineAcceleration = 11.200000f; - m_OriginalHandlingData[2].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[2].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[2].fBrakeDeceleration = 11.000000f; - m_OriginalHandlingData[2].fBrakeBias = 0.450000f; - m_OriginalHandlingData[2].bABS = false; - m_OriginalHandlingData[2].fSteeringLock = 30.000000f; - m_OriginalHandlingData[2].fTractionLoss = 0.900000f; - m_OriginalHandlingData[2].fTractionBias = 0.500000f; - m_OriginalHandlingData[2].fSuspensionForceLevel = 1.200000f; - m_OriginalHandlingData[2].fSuspensionDamping = 0.120000f; - m_OriginalHandlingData[2].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[2].fSuspensionUpperLimit = 0.280000f; - m_OriginalHandlingData[2].fSuspensionLowerLimit = -0.240000f; - m_OriginalHandlingData[2].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[2].fSuspensionAntiDiveMultiplier = 0.400000f; - m_OriginalHandlingData[2].fCollisionDamageMultiplier = 0.500000f; - m_OriginalHandlingData[2].uiModelFlags = 0x2800; - m_OriginalHandlingData[2].uiHandlingFlags = 0x10200000; - m_OriginalHandlingData[2].fSeatOffsetDistance = 0.250000f; - m_OriginalHandlingData[2].uiMonetary = 35000; - m_OriginalHandlingData[2].ucHeadLight = 1; - m_OriginalHandlingData[2].ucTailLight = 1; - m_OriginalHandlingData[2].ucAnimGroup = 0; - - m_OriginalHandlingData[3].iVehicleID = 3; - m_OriginalHandlingData[3].fMass = 3800.000000f; - m_OriginalHandlingData[3].fTurnMass = 19953.199219f; - m_OriginalHandlingData[3].fDragCoeff = 5.000000f; - m_OriginalHandlingData[3].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.200000f); - m_OriginalHandlingData[3].uiPercentSubmerged = 90; - m_OriginalHandlingData[3].fTractionMultiplier = 0.950000f; - m_OriginalHandlingData[3].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[3].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[3].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[3].Transmission.uiHandlingFlags = 512; - m_OriginalHandlingData[3].Transmission.fEngineAcceleration = 10.000000f; - m_OriginalHandlingData[3].Transmission.fEngineInertia = 30.000000f; - m_OriginalHandlingData[3].Transmission.fMaxVelocity = 120.000000f; - m_OriginalHandlingData[3].fBrakeDeceleration = 8.000000f; - m_OriginalHandlingData[3].fBrakeBias = 0.300000f; - m_OriginalHandlingData[3].bABS = false; - m_OriginalHandlingData[3].fSteeringLock = 25.000000f; - m_OriginalHandlingData[3].fTractionLoss = 0.650000f; - m_OriginalHandlingData[3].fTractionBias = 0.400000f; - m_OriginalHandlingData[3].fSuspensionForceLevel = 1.600000f; - m_OriginalHandlingData[3].fSuspensionDamping = 0.060000f; - m_OriginalHandlingData[3].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[3].fSuspensionUpperLimit = 0.400000f; - m_OriginalHandlingData[3].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[3].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[3].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[3].fCollisionDamageMultiplier = 0.250000f; - m_OriginalHandlingData[3].uiModelFlags = 0x6000; - m_OriginalHandlingData[3].uiHandlingFlags = 0x200; - m_OriginalHandlingData[3].fSeatOffsetDistance = 0.650000f; - m_OriginalHandlingData[3].uiMonetary = 35000; - m_OriginalHandlingData[3].ucHeadLight = 0; - m_OriginalHandlingData[3].ucTailLight = 1; - m_OriginalHandlingData[3].ucAnimGroup = 2; - - m_OriginalHandlingData[4].iVehicleID = 4; - m_OriginalHandlingData[4].fMass = 1200.000000f; - m_OriginalHandlingData[4].fTurnMass = 3000.000000f; - m_OriginalHandlingData[4].fDragCoeff = 2.500000f; - m_OriginalHandlingData[4].vecCenterOfMass = CVector(0.000000f, 0.100000f, 0.000000f); - m_OriginalHandlingData[4].uiPercentSubmerged = 70; - m_OriginalHandlingData[4].fTractionMultiplier = 0.700000f; - m_OriginalHandlingData[4].Transmission.ucDriveType = 'F'; - m_OriginalHandlingData[4].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[4].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[4].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[4].Transmission.fEngineAcceleration = 7.200000f; - m_OriginalHandlingData[4].Transmission.fEngineInertia = 20.000000f; - m_OriginalHandlingData[4].Transmission.fMaxVelocity = 150.000000f; - m_OriginalHandlingData[4].fBrakeDeceleration = 4.000000f; - m_OriginalHandlingData[4].fBrakeBias = 0.800000f; - m_OriginalHandlingData[4].bABS = false; - m_OriginalHandlingData[4].fSteeringLock = 30.000000f; - m_OriginalHandlingData[4].fTractionLoss = 0.900000f; - m_OriginalHandlingData[4].fTractionBias = 0.480000f; - m_OriginalHandlingData[4].fSuspensionForceLevel = 1.400000f; - m_OriginalHandlingData[4].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[4].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[4].fSuspensionUpperLimit = 0.370000f; - m_OriginalHandlingData[4].fSuspensionLowerLimit = -0.170000f; - m_OriginalHandlingData[4].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[4].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[4].fCollisionDamageMultiplier = 0.600000f; - m_OriginalHandlingData[4].uiModelFlags = 0x20; - m_OriginalHandlingData[4].uiHandlingFlags = 0x0; - m_OriginalHandlingData[4].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[4].uiMonetary = 10000; - m_OriginalHandlingData[4].ucHeadLight = 1; - m_OriginalHandlingData[4].ucTailLight = 1; - m_OriginalHandlingData[4].ucAnimGroup = 0; - - m_OriginalHandlingData[5].iVehicleID = 5; - m_OriginalHandlingData[5].fMass = 1600.000000f; - m_OriginalHandlingData[5].fTurnMass = 4000.000000f; - m_OriginalHandlingData[5].fDragCoeff = 2.200000f; - m_OriginalHandlingData[5].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.200000f); - m_OriginalHandlingData[5].uiPercentSubmerged = 75; - m_OriginalHandlingData[5].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[5].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[5].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[5].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[5].Transmission.uiHandlingFlags = 4194304; - m_OriginalHandlingData[5].Transmission.fEngineAcceleration = 9.600000f; - m_OriginalHandlingData[5].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[5].Transmission.fMaxVelocity = 165.000000f; - m_OriginalHandlingData[5].fBrakeDeceleration = 10.000000f; - m_OriginalHandlingData[5].fBrakeBias = 0.500000f; - m_OriginalHandlingData[5].bABS = false; - m_OriginalHandlingData[5].fSteeringLock = 27.000000f; - m_OriginalHandlingData[5].fTractionLoss = 0.750000f; - m_OriginalHandlingData[5].fTractionBias = 0.500000f; - m_OriginalHandlingData[5].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[5].fSuspensionDamping = 0.080000f; - m_OriginalHandlingData[5].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[5].fSuspensionUpperLimit = 0.300000f; - m_OriginalHandlingData[5].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[5].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[5].fSuspensionAntiDiveMultiplier = 0.300000f; - m_OriginalHandlingData[5].fCollisionDamageMultiplier = 0.560000f; - m_OriginalHandlingData[5].uiModelFlags = 0x0; - m_OriginalHandlingData[5].uiHandlingFlags = 0x400000; - m_OriginalHandlingData[5].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[5].uiMonetary = 35000; - m_OriginalHandlingData[5].ucHeadLight = 0; - m_OriginalHandlingData[5].ucTailLight = 1; - m_OriginalHandlingData[5].ucAnimGroup = 0; - - m_OriginalHandlingData[6].iVehicleID = 6; - m_OriginalHandlingData[6].fMass = 20000.000000f; - m_OriginalHandlingData[6].fTurnMass = 200000.000000f; - m_OriginalHandlingData[6].fDragCoeff = 4.000000f; - m_OriginalHandlingData[6].vecCenterOfMass = CVector(0.000000f, 0.500000f, -0.400000f); - m_OriginalHandlingData[6].uiPercentSubmerged = 90; - m_OriginalHandlingData[6].fTractionMultiplier = 0.780000f; - m_OriginalHandlingData[6].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[6].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[6].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[6].Transmission.uiHandlingFlags = 20185601; - m_OriginalHandlingData[6].Transmission.fEngineAcceleration = 10.000000f; - m_OriginalHandlingData[6].Transmission.fEngineInertia = 30.000000f; - m_OriginalHandlingData[6].Transmission.fMaxVelocity = 110.000000f; - m_OriginalHandlingData[6].fBrakeDeceleration = 3.170000f; - m_OriginalHandlingData[6].fBrakeBias = 0.400000f; - m_OriginalHandlingData[6].bABS = false; - m_OriginalHandlingData[6].fSteeringLock = 30.000000f; - m_OriginalHandlingData[6].fTractionLoss = 0.800000f; - m_OriginalHandlingData[6].fTractionBias = 0.550000f; - m_OriginalHandlingData[6].fSuspensionForceLevel = 0.800000f; - m_OriginalHandlingData[6].fSuspensionDamping = 0.060000f; - m_OriginalHandlingData[6].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[6].fSuspensionUpperLimit = 0.200000f; - m_OriginalHandlingData[6].fSuspensionLowerLimit = -0.300000f; - m_OriginalHandlingData[6].fSuspensionFrontRearBias = 0.550000f; - m_OriginalHandlingData[6].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[6].fCollisionDamageMultiplier = 0.200000f; - m_OriginalHandlingData[6].uiModelFlags = 0xC008; - m_OriginalHandlingData[6].uiHandlingFlags = 0x1340201; - m_OriginalHandlingData[6].fSeatOffsetDistance = 0.450000f; - m_OriginalHandlingData[6].uiMonetary = 5000; - m_OriginalHandlingData[6].ucHeadLight = 0; - m_OriginalHandlingData[6].ucTailLight = 1; - m_OriginalHandlingData[6].ucAnimGroup = 20; - - m_OriginalHandlingData[7].iVehicleID = 7; - m_OriginalHandlingData[7].fMass = 6500.000000f; - m_OriginalHandlingData[7].fTurnMass = 36670.800781f; - m_OriginalHandlingData[7].fDragCoeff = 3.000000f; - m_OriginalHandlingData[7].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[7].uiPercentSubmerged = 90; - m_OriginalHandlingData[7].fTractionMultiplier = 0.550000f; - m_OriginalHandlingData[7].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[7].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[7].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[7].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[7].Transmission.fEngineAcceleration = 10.800000f; - m_OriginalHandlingData[7].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[7].Transmission.fMaxVelocity = 170.000000f; - m_OriginalHandlingData[7].fBrakeDeceleration = 10.000000f; - m_OriginalHandlingData[7].fBrakeBias = 0.450000f; - m_OriginalHandlingData[7].bABS = false; - m_OriginalHandlingData[7].fSteeringLock = 27.000000f; - m_OriginalHandlingData[7].fTractionLoss = 0.800000f; - m_OriginalHandlingData[7].fTractionBias = 0.500000f; - m_OriginalHandlingData[7].fSuspensionForceLevel = 1.200000f; - m_OriginalHandlingData[7].fSuspensionDamping = 0.080000f; - m_OriginalHandlingData[7].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[7].fSuspensionUpperLimit = 0.470000f; - m_OriginalHandlingData[7].fSuspensionLowerLimit = -0.170000f; - m_OriginalHandlingData[7].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[7].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[7].fCollisionDamageMultiplier = 0.260000f; - m_OriginalHandlingData[7].uiModelFlags = 0x4098; - m_OriginalHandlingData[7].uiHandlingFlags = 0x0; - m_OriginalHandlingData[7].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[7].uiMonetary = 15000; - m_OriginalHandlingData[7].ucHeadLight = 0; - m_OriginalHandlingData[7].ucTailLight = 1; - m_OriginalHandlingData[7].ucAnimGroup = 2; - - m_OriginalHandlingData[8].iVehicleID = 8; - m_OriginalHandlingData[8].fMass = 5500.000000f; - m_OriginalHandlingData[8].fTurnMass = 33187.898438f; - m_OriginalHandlingData[8].fDragCoeff = 5.000000f; - m_OriginalHandlingData[8].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.200000f); - m_OriginalHandlingData[8].uiPercentSubmerged = 90; - m_OriginalHandlingData[8].fTractionMultiplier = 0.600000f; - m_OriginalHandlingData[8].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[8].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[8].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[8].Transmission.uiHandlingFlags = 512; - m_OriginalHandlingData[8].Transmission.fEngineAcceleration = 8.000000f; - m_OriginalHandlingData[8].Transmission.fEngineInertia = 30.000000f; - m_OriginalHandlingData[8].Transmission.fMaxVelocity = 110.000000f; - m_OriginalHandlingData[8].fBrakeDeceleration = 3.500000f; - m_OriginalHandlingData[8].fBrakeBias = 0.400000f; - m_OriginalHandlingData[8].bABS = false; - m_OriginalHandlingData[8].fSteeringLock = 30.000000f; - m_OriginalHandlingData[8].fTractionLoss = 0.900000f; - m_OriginalHandlingData[8].fTractionBias = 0.500000f; - m_OriginalHandlingData[8].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[8].fSuspensionDamping = 0.060000f; - m_OriginalHandlingData[8].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[8].fSuspensionUpperLimit = 0.450000f; - m_OriginalHandlingData[8].fSuspensionLowerLimit = -0.250000f; - m_OriginalHandlingData[8].fSuspensionFrontRearBias = 0.550000f; - m_OriginalHandlingData[8].fSuspensionAntiDiveMultiplier = 0.300000f; - m_OriginalHandlingData[8].fCollisionDamageMultiplier = 0.200000f; - m_OriginalHandlingData[8].uiModelFlags = 0x4008; - m_OriginalHandlingData[8].uiHandlingFlags = 0x200; - m_OriginalHandlingData[8].fSeatOffsetDistance = 0.450000f; - m_OriginalHandlingData[8].uiMonetary = 5000; - m_OriginalHandlingData[8].ucHeadLight = 0; - m_OriginalHandlingData[8].ucTailLight = 1; - m_OriginalHandlingData[8].ucAnimGroup = 0; - - m_OriginalHandlingData[9].iVehicleID = 9; - m_OriginalHandlingData[9].fMass = 2200.000000f; - m_OriginalHandlingData[9].fTurnMass = 10000.000000f; - m_OriginalHandlingData[9].fDragCoeff = 1.800000f; - m_OriginalHandlingData[9].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[9].uiPercentSubmerged = 75; - m_OriginalHandlingData[9].fTractionMultiplier = 0.600000f; - m_OriginalHandlingData[9].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[9].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[9].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[9].Transmission.uiHandlingFlags = 272629761; - m_OriginalHandlingData[9].Transmission.fEngineAcceleration = 7.200000f; - m_OriginalHandlingData[9].Transmission.fEngineInertia = 25.000000f; - m_OriginalHandlingData[9].Transmission.fMaxVelocity = 180.000000f; - m_OriginalHandlingData[9].fBrakeDeceleration = 10.000000f; - m_OriginalHandlingData[9].fBrakeBias = 0.400000f; - m_OriginalHandlingData[9].bABS = false; - m_OriginalHandlingData[9].fSteeringLock = 30.000000f; - m_OriginalHandlingData[9].fTractionLoss = 0.800000f; - m_OriginalHandlingData[9].fTractionBias = 0.500000f; - m_OriginalHandlingData[9].fSuspensionForceLevel = 1.100000f; - m_OriginalHandlingData[9].fSuspensionDamping = 0.070000f; - m_OriginalHandlingData[9].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[9].fSuspensionUpperLimit = 0.350000f; - m_OriginalHandlingData[9].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[9].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[9].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[9].fCollisionDamageMultiplier = 0.720000f; - m_OriginalHandlingData[9].uiModelFlags = 0x282000; - m_OriginalHandlingData[9].uiHandlingFlags = 0x10400001; - m_OriginalHandlingData[9].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[9].uiMonetary = 40000; - m_OriginalHandlingData[9].ucHeadLight = 1; - m_OriginalHandlingData[9].ucTailLight = 1; - m_OriginalHandlingData[9].ucAnimGroup = 0; - - m_OriginalHandlingData[10].iVehicleID = 10; - m_OriginalHandlingData[10].fMass = 1000.000000f; - m_OriginalHandlingData[10].fTurnMass = 1400.000000f; - m_OriginalHandlingData[10].fDragCoeff = 2.800000f; - m_OriginalHandlingData[10].vecCenterOfMass = CVector(0.000000f, 0.200000f, 0.000000f); - m_OriginalHandlingData[10].uiPercentSubmerged = 70; - m_OriginalHandlingData[10].fTractionMultiplier = 0.800000f; - m_OriginalHandlingData[10].Transmission.ucDriveType = 'F'; - m_OriginalHandlingData[10].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[10].Transmission.ucNumberOfGears = 3; - m_OriginalHandlingData[10].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[10].Transmission.fEngineAcceleration = 7.600000f; - m_OriginalHandlingData[10].Transmission.fEngineInertia = 15.000000f; - m_OriginalHandlingData[10].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[10].fBrakeDeceleration = 8.000000f; - m_OriginalHandlingData[10].fBrakeBias = 0.800000f; - m_OriginalHandlingData[10].bABS = false; - m_OriginalHandlingData[10].fSteeringLock = 30.000000f; - m_OriginalHandlingData[10].fTractionLoss = 0.800000f; - m_OriginalHandlingData[10].fTractionBias = 0.500000f; - m_OriginalHandlingData[10].fSuspensionForceLevel = 1.200000f; - m_OriginalHandlingData[10].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[10].fSuspensionHighSpdDamping = 5.000000f; - m_OriginalHandlingData[10].fSuspensionUpperLimit = 0.310000f; - m_OriginalHandlingData[10].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[10].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[10].fSuspensionAntiDiveMultiplier = 0.200000f; - m_OriginalHandlingData[10].fCollisionDamageMultiplier = 0.500000f; - m_OriginalHandlingData[10].uiModelFlags = 0x0; - m_OriginalHandlingData[10].uiHandlingFlags = 0x0; - m_OriginalHandlingData[10].fSeatOffsetDistance = 0.260000f; - m_OriginalHandlingData[10].uiMonetary = 9000; - m_OriginalHandlingData[10].ucHeadLight = 0; - m_OriginalHandlingData[10].ucTailLight = 0; - m_OriginalHandlingData[10].ucAnimGroup = 0; - - m_OriginalHandlingData[11].iVehicleID = 11; - m_OriginalHandlingData[11].fMass = 1400.000000f; - m_OriginalHandlingData[11].fTurnMass = 2725.300049f; - m_OriginalHandlingData[11].fDragCoeff = 1.500000f; - m_OriginalHandlingData[11].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.250000f); - m_OriginalHandlingData[11].uiPercentSubmerged = 70; - m_OriginalHandlingData[11].fTractionMultiplier = 0.700000f; - m_OriginalHandlingData[11].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[11].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[11].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[11].Transmission.uiHandlingFlags = 12599296; - m_OriginalHandlingData[11].Transmission.fEngineAcceleration = 12.000000f; - m_OriginalHandlingData[11].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[11].Transmission.fMaxVelocity = 240.000000f; - m_OriginalHandlingData[11].fBrakeDeceleration = 11.000000f; - m_OriginalHandlingData[11].fBrakeBias = 0.510000f; - m_OriginalHandlingData[11].bABS = false; - m_OriginalHandlingData[11].fSteeringLock = 30.000000f; - m_OriginalHandlingData[11].fTractionLoss = 0.800000f; - m_OriginalHandlingData[11].fTractionBias = 0.500000f; - m_OriginalHandlingData[11].fSuspensionForceLevel = 1.200000f; - m_OriginalHandlingData[11].fSuspensionDamping = 0.190000f; - m_OriginalHandlingData[11].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[11].fSuspensionUpperLimit = 0.250000f; - m_OriginalHandlingData[11].fSuspensionLowerLimit = -0.100000f; - m_OriginalHandlingData[11].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[11].fSuspensionAntiDiveMultiplier = 0.400000f; - m_OriginalHandlingData[11].fCollisionDamageMultiplier = 0.720000f; - m_OriginalHandlingData[11].uiModelFlags = 0x40002004; - m_OriginalHandlingData[11].uiHandlingFlags = 0xC04000; - m_OriginalHandlingData[11].fSeatOffsetDistance = 0.370000f; - m_OriginalHandlingData[11].uiMonetary = 95000; - m_OriginalHandlingData[11].ucHeadLight = 1; - m_OriginalHandlingData[11].ucTailLight = 1; - m_OriginalHandlingData[11].ucAnimGroup = 1; - - m_OriginalHandlingData[12].iVehicleID = 12; - m_OriginalHandlingData[12].fMass = 1800.000000f; - m_OriginalHandlingData[12].fTurnMass = 4411.500000f; - m_OriginalHandlingData[12].fDragCoeff = 2.000000f; - m_OriginalHandlingData[12].vecCenterOfMass = CVector(0.000000f, -0.100000f, -0.200000f); - m_OriginalHandlingData[12].uiPercentSubmerged = 70; - m_OriginalHandlingData[12].fTractionMultiplier = 0.950000f; - m_OriginalHandlingData[12].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[12].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[12].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[12].Transmission.uiHandlingFlags = 37814280; - m_OriginalHandlingData[12].Transmission.fEngineAcceleration = 9.200000f; - m_OriginalHandlingData[12].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[12].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[12].fBrakeDeceleration = 6.500000f; - m_OriginalHandlingData[12].fBrakeBias = 0.500000f; - m_OriginalHandlingData[12].bABS = false; - m_OriginalHandlingData[12].fSteeringLock = 30.000000f; - m_OriginalHandlingData[12].fTractionLoss = 0.800000f; - m_OriginalHandlingData[12].fTractionBias = 0.450000f; - m_OriginalHandlingData[12].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[12].fSuspensionDamping = 0.080000f; - m_OriginalHandlingData[12].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[12].fSuspensionUpperLimit = 0.200000f; - m_OriginalHandlingData[12].fSuspensionLowerLimit = -0.250000f; - m_OriginalHandlingData[12].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[12].fSuspensionAntiDiveMultiplier = 0.600000f; - m_OriginalHandlingData[12].fCollisionDamageMultiplier = 0.410000f; - m_OriginalHandlingData[12].uiModelFlags = 0x0; - m_OriginalHandlingData[12].uiHandlingFlags = 0x2410008; - m_OriginalHandlingData[12].fSeatOffsetDistance = 0.260000f; - m_OriginalHandlingData[12].uiMonetary = 30000; - m_OriginalHandlingData[12].ucHeadLight = 1; - m_OriginalHandlingData[12].ucTailLight = 1; - m_OriginalHandlingData[12].ucAnimGroup = 0; - - m_OriginalHandlingData[13].iVehicleID = 13; - m_OriginalHandlingData[13].fMass = 2600.000000f; - m_OriginalHandlingData[13].fTurnMass = 8666.700195f; - m_OriginalHandlingData[13].fDragCoeff = 3.000000f; - m_OriginalHandlingData[13].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.250000f); - m_OriginalHandlingData[13].uiPercentSubmerged = 80; - m_OriginalHandlingData[13].fTractionMultiplier = 0.550000f; - m_OriginalHandlingData[13].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[13].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[13].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[13].Transmission.uiHandlingFlags = 1; - m_OriginalHandlingData[13].Transmission.fEngineAcceleration = 6.000000f; - m_OriginalHandlingData[13].Transmission.fEngineInertia = 25.000000f; - m_OriginalHandlingData[13].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[13].fBrakeDeceleration = 6.000000f; - m_OriginalHandlingData[13].fBrakeBias = 0.800000f; - m_OriginalHandlingData[13].bABS = false; - m_OriginalHandlingData[13].fSteeringLock = 30.000000f; - m_OriginalHandlingData[13].fTractionLoss = 0.900000f; - m_OriginalHandlingData[13].fTractionBias = 0.500000f; - m_OriginalHandlingData[13].fSuspensionForceLevel = 2.600000f; - m_OriginalHandlingData[13].fSuspensionDamping = 0.070000f; - m_OriginalHandlingData[13].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[13].fSuspensionUpperLimit = 0.350000f; - m_OriginalHandlingData[13].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[13].fSuspensionFrontRearBias = 0.250000f; - m_OriginalHandlingData[13].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[13].fCollisionDamageMultiplier = 0.500000f; - m_OriginalHandlingData[13].uiModelFlags = 0x4001; - m_OriginalHandlingData[13].uiHandlingFlags = 0x1; - m_OriginalHandlingData[13].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[13].uiMonetary = 20000; - m_OriginalHandlingData[13].ucHeadLight = 0; - m_OriginalHandlingData[13].ucTailLight = 3; - m_OriginalHandlingData[13].ucAnimGroup = 13; - - m_OriginalHandlingData[14].iVehicleID = 14; - m_OriginalHandlingData[14].fMass = 3500.000000f; - m_OriginalHandlingData[14].fTurnMass = 14000.000000f; - m_OriginalHandlingData[14].fDragCoeff = 4.000000f; - m_OriginalHandlingData[14].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.100000f); - m_OriginalHandlingData[14].uiPercentSubmerged = 80; - m_OriginalHandlingData[14].fTractionMultiplier = 0.550000f; - m_OriginalHandlingData[14].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[14].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[14].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[14].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[14].Transmission.fEngineAcceleration = 7.200000f; - m_OriginalHandlingData[14].Transmission.fEngineInertia = 20.000000f; - m_OriginalHandlingData[14].Transmission.fMaxVelocity = 140.000000f; - m_OriginalHandlingData[14].fBrakeDeceleration = 4.500000f; - m_OriginalHandlingData[14].fBrakeBias = 0.600000f; - m_OriginalHandlingData[14].bABS = false; - m_OriginalHandlingData[14].fSteeringLock = 30.000000f; - m_OriginalHandlingData[14].fTractionLoss = 0.850000f; - m_OriginalHandlingData[14].fTractionBias = 0.460000f; - m_OriginalHandlingData[14].fSuspensionForceLevel = 2.000000f; - m_OriginalHandlingData[14].fSuspensionDamping = 0.070000f; - m_OriginalHandlingData[14].fSuspensionHighSpdDamping = 5.000000f; - m_OriginalHandlingData[14].fSuspensionUpperLimit = 0.300000f; - m_OriginalHandlingData[14].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[14].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[14].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[14].fCollisionDamageMultiplier = 0.530000f; - m_OriginalHandlingData[14].uiModelFlags = 0x4088; - m_OriginalHandlingData[14].uiHandlingFlags = 0x0; - m_OriginalHandlingData[14].fSeatOffsetDistance = 0.460000f; - m_OriginalHandlingData[14].uiMonetary = 22000; - m_OriginalHandlingData[14].ucHeadLight = 0; - m_OriginalHandlingData[14].ucTailLight = 3; - m_OriginalHandlingData[14].ucAnimGroup = 0; - - m_OriginalHandlingData[15].iVehicleID = 15; - m_OriginalHandlingData[15].fMass = 1200.000000f; - m_OriginalHandlingData[15].fTurnMass = 3000.000000f; - m_OriginalHandlingData[15].fDragCoeff = 2.000000f; - m_OriginalHandlingData[15].vecCenterOfMass = CVector(0.000000f, -0.200000f, -0.200000f); - m_OriginalHandlingData[15].uiPercentSubmerged = 70; - m_OriginalHandlingData[15].fTractionMultiplier = 0.800000f; - m_OriginalHandlingData[15].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[15].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[15].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[15].Transmission.uiHandlingFlags = 2129920; - m_OriginalHandlingData[15].Transmission.fEngineAcceleration = 12.000000f; - m_OriginalHandlingData[15].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[15].Transmission.fMaxVelocity = 230.000000f; - m_OriginalHandlingData[15].fBrakeDeceleration = 11.100000f; - m_OriginalHandlingData[15].fBrakeBias = 0.480000f; - m_OriginalHandlingData[15].bABS = false; - m_OriginalHandlingData[15].fSteeringLock = 35.000000f; - m_OriginalHandlingData[15].fTractionLoss = 0.900000f; - m_OriginalHandlingData[15].fTractionBias = 0.500000f; - m_OriginalHandlingData[15].fSuspensionForceLevel = 0.800000f; - m_OriginalHandlingData[15].fSuspensionDamping = 0.200000f; - m_OriginalHandlingData[15].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[15].fSuspensionUpperLimit = 0.100000f; - m_OriginalHandlingData[15].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[15].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[15].fSuspensionAntiDiveMultiplier = 0.600000f; - m_OriginalHandlingData[15].fCollisionDamageMultiplier = 0.540000f; - m_OriginalHandlingData[15].uiModelFlags = 0xC0002004; - m_OriginalHandlingData[15].uiHandlingFlags = 0x208000; - m_OriginalHandlingData[15].fSeatOffsetDistance = 0.400000f; - m_OriginalHandlingData[15].uiMonetary = 105000; - m_OriginalHandlingData[15].ucHeadLight = 0; - m_OriginalHandlingData[15].ucTailLight = 0; - m_OriginalHandlingData[15].ucAnimGroup = 1; - - m_OriginalHandlingData[16].iVehicleID = 16; - m_OriginalHandlingData[16].fMass = 2600.000000f; - m_OriginalHandlingData[16].fTurnMass = 10202.799805f; - m_OriginalHandlingData[16].fDragCoeff = 2.500000f; - m_OriginalHandlingData[16].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.100000f); - m_OriginalHandlingData[16].uiPercentSubmerged = 90; - m_OriginalHandlingData[16].fTractionMultiplier = 0.750000f; - m_OriginalHandlingData[16].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[16].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[16].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[16].Transmission.uiHandlingFlags = 4; - m_OriginalHandlingData[16].Transmission.fEngineAcceleration = 9.600000f; - m_OriginalHandlingData[16].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[16].Transmission.fMaxVelocity = 155.000000f; - m_OriginalHandlingData[16].fBrakeDeceleration = 7.000000f; - m_OriginalHandlingData[16].fBrakeBias = 0.550000f; - m_OriginalHandlingData[16].bABS = false; - m_OriginalHandlingData[16].fSteeringLock = 35.000000f; - m_OriginalHandlingData[16].fTractionLoss = 0.800000f; - m_OriginalHandlingData[16].fTractionBias = 0.470000f; - m_OriginalHandlingData[16].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[16].fSuspensionDamping = 0.070000f; - m_OriginalHandlingData[16].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[16].fSuspensionUpperLimit = 0.400000f; - m_OriginalHandlingData[16].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[16].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[16].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[16].fCollisionDamageMultiplier = 0.330000f; - m_OriginalHandlingData[16].uiModelFlags = 0x4001; - m_OriginalHandlingData[16].uiHandlingFlags = 0x4; - m_OriginalHandlingData[16].fSeatOffsetDistance = 0.580000f; - m_OriginalHandlingData[16].uiMonetary = 10000; - m_OriginalHandlingData[16].ucHeadLight = 0; - m_OriginalHandlingData[16].ucTailLight = 1; - m_OriginalHandlingData[16].ucAnimGroup = 13; - - m_OriginalHandlingData[17].iVehicleID = 17; - m_OriginalHandlingData[17].fMass = 2000.000000f; - m_OriginalHandlingData[17].fTurnMass = 5848.299805f; - m_OriginalHandlingData[17].fDragCoeff = 2.800000f; - m_OriginalHandlingData[17].vecCenterOfMass = CVector(0.000000f, 0.200000f, -0.100000f); - m_OriginalHandlingData[17].uiPercentSubmerged = 85; - m_OriginalHandlingData[17].fTractionMultiplier = 0.600000f; - m_OriginalHandlingData[17].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[17].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[17].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[17].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[17].Transmission.fEngineAcceleration = 6.000000f; - m_OriginalHandlingData[17].Transmission.fEngineInertia = 15.000000f; - m_OriginalHandlingData[17].Transmission.fMaxVelocity = 150.000000f; - m_OriginalHandlingData[17].fBrakeDeceleration = 5.500000f; - m_OriginalHandlingData[17].fBrakeBias = 0.600000f; - m_OriginalHandlingData[17].bABS = false; - m_OriginalHandlingData[17].fSteeringLock = 30.000000f; - m_OriginalHandlingData[17].fTractionLoss = 0.800000f; - m_OriginalHandlingData[17].fTractionBias = 0.500000f; - m_OriginalHandlingData[17].fSuspensionForceLevel = 1.400000f; - m_OriginalHandlingData[17].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[17].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[17].fSuspensionUpperLimit = 0.350000f; - m_OriginalHandlingData[17].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[17].fSuspensionFrontRearBias = 0.550000f; - m_OriginalHandlingData[17].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[17].fCollisionDamageMultiplier = 0.750000f; - m_OriginalHandlingData[17].uiModelFlags = 0x20; - m_OriginalHandlingData[17].uiHandlingFlags = 0x0; - m_OriginalHandlingData[17].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[17].uiMonetary = 16000; - m_OriginalHandlingData[17].ucHeadLight = 1; - m_OriginalHandlingData[17].ucTailLight = 3; - m_OriginalHandlingData[17].ucAnimGroup = 0; - - m_OriginalHandlingData[18].iVehicleID = 18; - m_OriginalHandlingData[18].fMass = 1800.000000f; - m_OriginalHandlingData[18].fTurnMass = 4350.000000f; - m_OriginalHandlingData[18].fDragCoeff = 2.000000f; - m_OriginalHandlingData[18].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[18].uiPercentSubmerged = 70; - m_OriginalHandlingData[18].fTractionMultiplier = 0.550000f; - m_OriginalHandlingData[18].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[18].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[18].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[18].Transmission.uiHandlingFlags = 268435456; - m_OriginalHandlingData[18].Transmission.fEngineAcceleration = 7.200000f; - m_OriginalHandlingData[18].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[18].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[18].fBrakeDeceleration = 4.000000f; - m_OriginalHandlingData[18].fBrakeBias = 0.600000f; - m_OriginalHandlingData[18].bABS = false; - m_OriginalHandlingData[18].fSteeringLock = 28.000000f; - m_OriginalHandlingData[18].fTractionLoss = 0.880000f; - m_OriginalHandlingData[18].fTractionBias = 0.520000f; - m_OriginalHandlingData[18].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[18].fSuspensionDamping = 0.050000f; - m_OriginalHandlingData[18].fSuspensionHighSpdDamping = 1.000000f; - m_OriginalHandlingData[18].fSuspensionUpperLimit = 0.350000f; - m_OriginalHandlingData[18].fSuspensionLowerLimit = -0.180000f; - m_OriginalHandlingData[18].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[18].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[18].fCollisionDamageMultiplier = 0.540000f; - m_OriginalHandlingData[18].uiModelFlags = 0x40000000; - m_OriginalHandlingData[18].uiHandlingFlags = 0x10000000; - m_OriginalHandlingData[18].fSeatOffsetDistance = 0.360000f; - m_OriginalHandlingData[18].uiMonetary = 19000; - m_OriginalHandlingData[18].ucHeadLight = 0; - m_OriginalHandlingData[18].ucTailLight = 3; - m_OriginalHandlingData[18].ucAnimGroup = 0; - - m_OriginalHandlingData[19].iVehicleID = 19; - m_OriginalHandlingData[19].fMass = 1450.000000f; - m_OriginalHandlingData[19].fTurnMass = 4056.399902f; - m_OriginalHandlingData[19].fDragCoeff = 2.200000f; - m_OriginalHandlingData[19].vecCenterOfMass = CVector(0.000000f, 0.300000f, -0.250000f); - m_OriginalHandlingData[19].uiPercentSubmerged = 75; - m_OriginalHandlingData[19].fTractionMultiplier = 0.800000f; - m_OriginalHandlingData[19].Transmission.ucDriveType = 'F'; - m_OriginalHandlingData[19].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[19].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[19].Transmission.uiHandlingFlags = 2097152; - m_OriginalHandlingData[19].Transmission.fEngineAcceleration = 7.600000f; - m_OriginalHandlingData[19].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[19].Transmission.fMaxVelocity = 180.000000f; - m_OriginalHandlingData[19].fBrakeDeceleration = 9.100000f; - m_OriginalHandlingData[19].fBrakeBias = 0.600000f; - m_OriginalHandlingData[19].bABS = false; - m_OriginalHandlingData[19].fSteeringLock = 35.000000f; - m_OriginalHandlingData[19].fTractionLoss = 0.750000f; - m_OriginalHandlingData[19].fTractionBias = 0.450000f; - m_OriginalHandlingData[19].fSuspensionForceLevel = 1.400000f; - m_OriginalHandlingData[19].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[19].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[19].fSuspensionUpperLimit = 0.250000f; - m_OriginalHandlingData[19].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[19].fSuspensionFrontRearBias = 0.540000f; - m_OriginalHandlingData[19].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[19].fCollisionDamageMultiplier = 0.510000f; - m_OriginalHandlingData[19].uiModelFlags = 0x0; - m_OriginalHandlingData[19].uiHandlingFlags = 0x200000; - m_OriginalHandlingData[19].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[19].uiMonetary = 20000; - m_OriginalHandlingData[19].ucHeadLight = 0; - m_OriginalHandlingData[19].ucTailLight = 1; - m_OriginalHandlingData[19].ucAnimGroup = 0; - - m_OriginalHandlingData[20].iVehicleID = 20; - m_OriginalHandlingData[20].fMass = 1850.000000f; - m_OriginalHandlingData[20].fTurnMass = 5000.000000f; - m_OriginalHandlingData[20].fDragCoeff = 2.200000f; - m_OriginalHandlingData[20].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.100000f); - m_OriginalHandlingData[20].uiPercentSubmerged = 75; - m_OriginalHandlingData[20].fTractionMultiplier = 0.750000f; - m_OriginalHandlingData[20].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[20].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[20].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[20].Transmission.uiHandlingFlags = 272629760; - m_OriginalHandlingData[20].Transmission.fEngineAcceleration = 8.400000f; - m_OriginalHandlingData[20].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[20].Transmission.fMaxVelocity = 180.000000f; - m_OriginalHandlingData[20].fBrakeDeceleration = 7.500000f; - m_OriginalHandlingData[20].fBrakeBias = 0.650000f; - m_OriginalHandlingData[20].bABS = false; - m_OriginalHandlingData[20].fSteeringLock = 30.000000f; - m_OriginalHandlingData[20].fTractionLoss = 0.650000f; - m_OriginalHandlingData[20].fTractionBias = 0.520000f; - m_OriginalHandlingData[20].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[20].fSuspensionDamping = 0.200000f; - m_OriginalHandlingData[20].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[20].fSuspensionUpperLimit = 0.270000f; - m_OriginalHandlingData[20].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[20].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[20].fSuspensionAntiDiveMultiplier = 0.350000f; - m_OriginalHandlingData[20].fCollisionDamageMultiplier = 0.600000f; - m_OriginalHandlingData[20].uiModelFlags = 0x0; - m_OriginalHandlingData[20].uiHandlingFlags = 0x10400000; - m_OriginalHandlingData[20].fSeatOffsetDistance = 0.240000f; - m_OriginalHandlingData[20].uiMonetary = 18000; - m_OriginalHandlingData[20].ucHeadLight = 1; - m_OriginalHandlingData[20].ucTailLight = 1; - m_OriginalHandlingData[20].ucAnimGroup = 0; - - m_OriginalHandlingData[21].iVehicleID = 21; - m_OriginalHandlingData[21].fMass = 1700.000000f; - m_OriginalHandlingData[21].fTurnMass = 4000.000000f; - m_OriginalHandlingData[21].fDragCoeff = 2.500000f; - m_OriginalHandlingData[21].vecCenterOfMass = CVector(0.000000f, 0.050000f, -0.200000f); - m_OriginalHandlingData[21].uiPercentSubmerged = 75; - m_OriginalHandlingData[21].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[21].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[21].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[21].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[21].Transmission.uiHandlingFlags = 1064964; - m_OriginalHandlingData[21].Transmission.fEngineAcceleration = 8.000000f; - m_OriginalHandlingData[21].Transmission.fEngineInertia = 15.000000f; - m_OriginalHandlingData[21].Transmission.fMaxVelocity = 165.000000f; - m_OriginalHandlingData[21].fBrakeDeceleration = 8.500000f; - m_OriginalHandlingData[21].fBrakeBias = 0.500000f; - m_OriginalHandlingData[21].bABS = false; - m_OriginalHandlingData[21].fSteeringLock = 35.000000f; - m_OriginalHandlingData[21].fTractionLoss = 0.850000f; - m_OriginalHandlingData[21].fTractionBias = 0.570000f; - m_OriginalHandlingData[21].fSuspensionForceLevel = 1.500000f; - m_OriginalHandlingData[21].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[21].fSuspensionHighSpdDamping = 5.000000f; - m_OriginalHandlingData[21].fSuspensionUpperLimit = 0.350000f; - m_OriginalHandlingData[21].fSuspensionLowerLimit = -0.180000f; - m_OriginalHandlingData[21].fSuspensionFrontRearBias = 0.400000f; - m_OriginalHandlingData[21].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[21].fCollisionDamageMultiplier = 0.200000f; - m_OriginalHandlingData[21].uiModelFlags = 0x40; - m_OriginalHandlingData[21].uiHandlingFlags = 0x104004; - m_OriginalHandlingData[21].fSeatOffsetDistance = 0.260000f; - m_OriginalHandlingData[21].uiMonetary = 26000; - m_OriginalHandlingData[21].ucHeadLight = 0; - m_OriginalHandlingData[21].ucTailLight = 1; - m_OriginalHandlingData[21].ucAnimGroup = 0; - - m_OriginalHandlingData[22].iVehicleID = 22; - m_OriginalHandlingData[22].fMass = 1700.000000f; - m_OriginalHandlingData[22].fTurnMass = 4108.299805f; - m_OriginalHandlingData[22].fDragCoeff = 3.500000f; - m_OriginalHandlingData[22].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[22].uiPercentSubmerged = 85; - m_OriginalHandlingData[22].fTractionMultiplier = 0.750000f; - m_OriginalHandlingData[22].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[22].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[22].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[22].Transmission.uiHandlingFlags = 2; - m_OriginalHandlingData[22].Transmission.fEngineAcceleration = 5.600000f; - m_OriginalHandlingData[22].Transmission.fEngineInertia = 50.000000f; - m_OriginalHandlingData[22].Transmission.fMaxVelocity = 145.000000f; - m_OriginalHandlingData[22].fBrakeDeceleration = 4.170000f; - m_OriginalHandlingData[22].fBrakeBias = 0.800000f; - m_OriginalHandlingData[22].bABS = false; - m_OriginalHandlingData[22].fSteeringLock = 35.000000f; - m_OriginalHandlingData[22].fTractionLoss = 0.750000f; - m_OriginalHandlingData[22].fTractionBias = 0.500000f; - m_OriginalHandlingData[22].fSuspensionForceLevel = 1.200000f; - m_OriginalHandlingData[22].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[22].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[22].fSuspensionUpperLimit = 0.350000f; - m_OriginalHandlingData[22].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[22].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[22].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[22].fCollisionDamageMultiplier = 0.770000f; - m_OriginalHandlingData[22].uiModelFlags = 0x88; - m_OriginalHandlingData[22].uiHandlingFlags = 0x2; - m_OriginalHandlingData[22].fSeatOffsetDistance = 0.240000f; - m_OriginalHandlingData[22].uiMonetary = 29000; - m_OriginalHandlingData[22].ucHeadLight = 0; - m_OriginalHandlingData[22].ucTailLight = 1; - m_OriginalHandlingData[22].ucAnimGroup = 0; - - m_OriginalHandlingData[23].iVehicleID = 23; - m_OriginalHandlingData[23].fMass = 1200.000000f; - m_OriginalHandlingData[23].fTurnMass = 2000.000000f; - m_OriginalHandlingData[23].fDragCoeff = 4.000000f; - m_OriginalHandlingData[23].vecCenterOfMass = CVector(0.000000f, -0.100000f, -0.100000f); - m_OriginalHandlingData[23].uiPercentSubmerged = 80; - m_OriginalHandlingData[23].fTractionMultiplier = 0.750000f; - m_OriginalHandlingData[23].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[23].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[23].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[23].Transmission.uiHandlingFlags = 3179008; - m_OriginalHandlingData[23].Transmission.fEngineAcceleration = 12.000000f; - m_OriginalHandlingData[23].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[23].Transmission.fMaxVelocity = 170.000000f; - m_OriginalHandlingData[23].fBrakeDeceleration = 6.000000f; - m_OriginalHandlingData[23].fBrakeBias = 0.500000f; - m_OriginalHandlingData[23].bABS = false; - m_OriginalHandlingData[23].fSteeringLock = 35.000000f; - m_OriginalHandlingData[23].fTractionLoss = 0.850000f; - m_OriginalHandlingData[23].fTractionBias = 0.500000f; - m_OriginalHandlingData[23].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[23].fSuspensionDamping = 0.070000f; - m_OriginalHandlingData[23].fSuspensionHighSpdDamping = 5.000000f; - m_OriginalHandlingData[23].fSuspensionUpperLimit = 0.200000f; - m_OriginalHandlingData[23].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[23].fSuspensionFrontRearBias = 0.450000f; - m_OriginalHandlingData[23].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[23].fCollisionDamageMultiplier = 0.400000f; - m_OriginalHandlingData[23].uiModelFlags = 0x201904; - m_OriginalHandlingData[23].uiHandlingFlags = 0x308200; - m_OriginalHandlingData[23].fSeatOffsetDistance = 0.380000f; - m_OriginalHandlingData[23].uiMonetary = 15000; - m_OriginalHandlingData[23].ucHeadLight = 1; - m_OriginalHandlingData[23].ucTailLight = 2; - m_OriginalHandlingData[23].ucAnimGroup = 25; - - m_OriginalHandlingData[24].iVehicleID = 24; - m_OriginalHandlingData[24].fMass = 1600.000000f; - m_OriginalHandlingData[24].fTurnMass = 3921.300049f; - m_OriginalHandlingData[24].fDragCoeff = 1.800000f; - m_OriginalHandlingData[24].vecCenterOfMass = CVector(0.000000f, -0.400000f, 0.000000f); - m_OriginalHandlingData[24].uiPercentSubmerged = 75; - m_OriginalHandlingData[24].fTractionMultiplier = 0.750000f; - m_OriginalHandlingData[24].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[24].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[24].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[24].Transmission.uiHandlingFlags = 270532616; - m_OriginalHandlingData[24].Transmission.fEngineAcceleration = 8.800000f; - m_OriginalHandlingData[24].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[24].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[24].fBrakeDeceleration = 10.000000f; - m_OriginalHandlingData[24].fBrakeBias = 0.530000f; - m_OriginalHandlingData[24].bABS = false; - m_OriginalHandlingData[24].fSteeringLock = 35.000000f; - m_OriginalHandlingData[24].fTractionLoss = 0.850000f; - m_OriginalHandlingData[24].fTractionBias = 0.520000f; - m_OriginalHandlingData[24].fSuspensionForceLevel = 1.300000f; - m_OriginalHandlingData[24].fSuspensionDamping = 0.120000f; - m_OriginalHandlingData[24].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[24].fSuspensionUpperLimit = 0.280000f; - m_OriginalHandlingData[24].fSuspensionLowerLimit = -0.120000f; - m_OriginalHandlingData[24].fSuspensionFrontRearBias = 0.380000f; - m_OriginalHandlingData[24].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[24].fCollisionDamageMultiplier = 0.240000f; - m_OriginalHandlingData[24].uiModelFlags = 0x40000000; - m_OriginalHandlingData[24].uiHandlingFlags = 0x10200008; - m_OriginalHandlingData[24].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[24].uiMonetary = 25000; - m_OriginalHandlingData[24].ucHeadLight = 0; - m_OriginalHandlingData[24].ucTailLight = 1; - m_OriginalHandlingData[24].ucAnimGroup = 0; - - m_OriginalHandlingData[25].iVehicleID = 25; - m_OriginalHandlingData[25].fMass = 4000.000000f; - m_OriginalHandlingData[25].fTurnMass = 17333.300781f; - m_OriginalHandlingData[25].fDragCoeff = 1.800000f; - m_OriginalHandlingData[25].vecCenterOfMass = CVector(0.000000f, 0.100000f, 0.000000f); - m_OriginalHandlingData[25].uiPercentSubmerged = 85; - m_OriginalHandlingData[25].fTractionMultiplier = 0.550000f; - m_OriginalHandlingData[25].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[25].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[25].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[25].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[25].Transmission.fEngineAcceleration = 8.000000f; - m_OriginalHandlingData[25].Transmission.fEngineInertia = 20.000000f; - m_OriginalHandlingData[25].Transmission.fMaxVelocity = 170.000000f; - m_OriginalHandlingData[25].fBrakeDeceleration = 5.400000f; - m_OriginalHandlingData[25].fBrakeBias = 0.450000f; - m_OriginalHandlingData[25].bABS = false; - m_OriginalHandlingData[25].fSteeringLock = 27.000000f; - m_OriginalHandlingData[25].fTractionLoss = 0.800000f; - m_OriginalHandlingData[25].fTractionBias = 0.480000f; - m_OriginalHandlingData[25].fSuspensionForceLevel = 1.400000f; - m_OriginalHandlingData[25].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[25].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[25].fSuspensionUpperLimit = 0.400000f; - m_OriginalHandlingData[25].fSuspensionLowerLimit = -0.250000f; - m_OriginalHandlingData[25].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[25].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[25].fCollisionDamageMultiplier = 0.160000f; - m_OriginalHandlingData[25].uiModelFlags = 0x4011; - m_OriginalHandlingData[25].uiHandlingFlags = 0x0; - m_OriginalHandlingData[25].fSeatOffsetDistance = 0.320000f; - m_OriginalHandlingData[25].uiMonetary = 40000; - m_OriginalHandlingData[25].ucHeadLight = 0; - m_OriginalHandlingData[25].ucTailLight = 1; - m_OriginalHandlingData[25].ucAnimGroup = 13; - - m_OriginalHandlingData[26].iVehicleID = 26; - m_OriginalHandlingData[26].fMass = 7000.000000f; - m_OriginalHandlingData[26].fTurnMass = 30916.699219f; - m_OriginalHandlingData[26].fDragCoeff = 1.500000f; - m_OriginalHandlingData[26].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[26].uiPercentSubmerged = 90; - m_OriginalHandlingData[26].fTractionMultiplier = 0.500000f; - m_OriginalHandlingData[26].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[26].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[26].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[26].Transmission.uiHandlingFlags = 4; - m_OriginalHandlingData[26].Transmission.fEngineAcceleration = 6.000000f; - m_OriginalHandlingData[26].Transmission.fEngineInertia = 30.000000f; - m_OriginalHandlingData[26].Transmission.fMaxVelocity = 170.000000f; - m_OriginalHandlingData[26].fBrakeDeceleration = 8.400000f; - m_OriginalHandlingData[26].fBrakeBias = 0.450000f; - m_OriginalHandlingData[26].bABS = false; - m_OriginalHandlingData[26].fSteeringLock = 27.000000f; - m_OriginalHandlingData[26].fTractionLoss = 0.700000f; - m_OriginalHandlingData[26].fTractionBias = 0.460000f; - m_OriginalHandlingData[26].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[26].fSuspensionDamping = 0.060000f; - m_OriginalHandlingData[26].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[26].fSuspensionUpperLimit = 0.350000f; - m_OriginalHandlingData[26].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[26].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[26].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[26].fCollisionDamageMultiplier = 0.350000f; - m_OriginalHandlingData[26].uiModelFlags = 0x4001; - m_OriginalHandlingData[26].uiHandlingFlags = 0x4; - m_OriginalHandlingData[26].fSeatOffsetDistance = 0.270000f; - m_OriginalHandlingData[26].uiMonetary = 40000; - m_OriginalHandlingData[26].ucHeadLight = 1; - m_OriginalHandlingData[26].ucTailLight = 1; - m_OriginalHandlingData[26].ucAnimGroup = 13; - - m_OriginalHandlingData[27].iVehicleID = 27; - m_OriginalHandlingData[27].fMass = 1400.000000f; - m_OriginalHandlingData[27].fTurnMass = 3000.000000f; - m_OriginalHandlingData[27].fDragCoeff = 2.000000f; - m_OriginalHandlingData[27].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.200000f); - m_OriginalHandlingData[27].uiPercentSubmerged = 70; - m_OriginalHandlingData[27].fTractionMultiplier = 0.750000f; - m_OriginalHandlingData[27].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[27].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[27].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[27].Transmission.uiHandlingFlags = 2097152; - m_OriginalHandlingData[27].Transmission.fEngineAcceleration = 13.200000f; - m_OriginalHandlingData[27].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[27].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[27].fBrakeDeceleration = 8.000000f; - m_OriginalHandlingData[27].fBrakeBias = 0.520000f; - m_OriginalHandlingData[27].bABS = false; - m_OriginalHandlingData[27].fSteeringLock = 34.000000f; - m_OriginalHandlingData[27].fTractionLoss = 0.890000f; - m_OriginalHandlingData[27].fTractionBias = 0.500000f; - m_OriginalHandlingData[27].fSuspensionForceLevel = 1.600000f; - m_OriginalHandlingData[27].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[27].fSuspensionHighSpdDamping = 5.000000f; - m_OriginalHandlingData[27].fSuspensionUpperLimit = 0.300000f; - m_OriginalHandlingData[27].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[27].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[27].fSuspensionAntiDiveMultiplier = 0.300000f; - m_OriginalHandlingData[27].fCollisionDamageMultiplier = 0.490000f; - m_OriginalHandlingData[27].uiModelFlags = 0x2004; - m_OriginalHandlingData[27].uiHandlingFlags = 0x200000; - m_OriginalHandlingData[27].fSeatOffsetDistance = 0.150000f; - m_OriginalHandlingData[27].uiMonetary = 45000; - m_OriginalHandlingData[27].ucHeadLight = 1; - m_OriginalHandlingData[27].ucTailLight = 1; - m_OriginalHandlingData[27].ucAnimGroup = 1; - - m_OriginalHandlingData[28].iVehicleID = 28; - m_OriginalHandlingData[28].fMass = 5500.000000f; - m_OriginalHandlingData[28].fTurnMass = 33187.898438f; - m_OriginalHandlingData[28].fDragCoeff = 2.000000f; - m_OriginalHandlingData[28].vecCenterOfMass = CVector(0.000000f, 0.500000f, 0.000000f); - m_OriginalHandlingData[28].uiPercentSubmerged = 90; - m_OriginalHandlingData[28].fTractionMultiplier = 0.750000f; - m_OriginalHandlingData[28].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[28].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[28].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[28].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[28].Transmission.fEngineAcceleration = 5.600000f; - m_OriginalHandlingData[28].Transmission.fEngineInertia = 50.000000f; - m_OriginalHandlingData[28].Transmission.fMaxVelocity = 130.000000f; - m_OriginalHandlingData[28].fBrakeDeceleration = 4.170000f; - m_OriginalHandlingData[28].fBrakeBias = 0.400000f; - m_OriginalHandlingData[28].bABS = false; - m_OriginalHandlingData[28].fSteeringLock = 30.000000f; - m_OriginalHandlingData[28].fTractionLoss = 0.850000f; - m_OriginalHandlingData[28].fTractionBias = 0.400000f; - m_OriginalHandlingData[28].fSuspensionForceLevel = 1.200000f; - m_OriginalHandlingData[28].fSuspensionDamping = 0.070000f; - m_OriginalHandlingData[28].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[28].fSuspensionUpperLimit = 0.450000f; - m_OriginalHandlingData[28].fSuspensionLowerLimit = -0.250000f; - m_OriginalHandlingData[28].fSuspensionFrontRearBias = 0.450000f; - m_OriginalHandlingData[28].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[28].fCollisionDamageMultiplier = 0.750000f; - m_OriginalHandlingData[28].uiModelFlags = 0x4002; - m_OriginalHandlingData[28].uiHandlingFlags = 0x0; - m_OriginalHandlingData[28].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[28].uiMonetary = 15000; - m_OriginalHandlingData[28].ucHeadLight = 1; - m_OriginalHandlingData[28].ucTailLight = 1; - m_OriginalHandlingData[28].ucAnimGroup = 16; - - m_OriginalHandlingData[29].iVehicleID = 29; - m_OriginalHandlingData[29].fMass = 25000.000000f; - m_OriginalHandlingData[29].fTurnMass = 250000.000000f; - m_OriginalHandlingData[29].fDragCoeff = 5.000000f; - m_OriginalHandlingData[29].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[29].uiPercentSubmerged = 90; - m_OriginalHandlingData[29].fTractionMultiplier = 2.500000f; - m_OriginalHandlingData[29].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[29].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[29].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[29].Transmission.uiHandlingFlags = 3180608; - m_OriginalHandlingData[29].Transmission.fEngineAcceleration = 16.000000f; - m_OriginalHandlingData[29].Transmission.fEngineInertia = 150.000000f; - m_OriginalHandlingData[29].Transmission.fMaxVelocity = 80.000000f; - m_OriginalHandlingData[29].fBrakeDeceleration = 5.000000f; - m_OriginalHandlingData[29].fBrakeBias = 0.500000f; - m_OriginalHandlingData[29].bABS = false; - m_OriginalHandlingData[29].fSteeringLock = 35.000000f; - m_OriginalHandlingData[29].fTractionLoss = 0.800000f; - m_OriginalHandlingData[29].fTractionBias = 0.500000f; - m_OriginalHandlingData[29].fSuspensionForceLevel = 0.400000f; - m_OriginalHandlingData[29].fSuspensionDamping = 0.020000f; - m_OriginalHandlingData[29].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[29].fSuspensionUpperLimit = 0.350000f; - m_OriginalHandlingData[29].fSuspensionLowerLimit = -0.100000f; - m_OriginalHandlingData[29].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[29].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[29].fCollisionDamageMultiplier = 0.090000f; - m_OriginalHandlingData[29].uiModelFlags = 0x40008008; - m_OriginalHandlingData[29].uiHandlingFlags = 0x308840; - m_OriginalHandlingData[29].fSeatOffsetDistance = 0.220000f; - m_OriginalHandlingData[29].uiMonetary = 110000; - m_OriginalHandlingData[29].ucHeadLight = 0; - m_OriginalHandlingData[29].ucTailLight = 1; - m_OriginalHandlingData[29].ucAnimGroup = 24; - - m_OriginalHandlingData[30].iVehicleID = 30; - m_OriginalHandlingData[30].fMass = 10500.000000f; - m_OriginalHandlingData[30].fTurnMass = 61407.500000f; - m_OriginalHandlingData[30].fDragCoeff = 4.000000f; - m_OriginalHandlingData[30].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[30].uiPercentSubmerged = 90; - m_OriginalHandlingData[30].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[30].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[30].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[30].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[30].Transmission.uiHandlingFlags = 1048576; - m_OriginalHandlingData[30].Transmission.fEngineAcceleration = 8.000000f; - m_OriginalHandlingData[30].Transmission.fEngineInertia = 25.000000f; - m_OriginalHandlingData[30].Transmission.fMaxVelocity = 180.000000f; - m_OriginalHandlingData[30].fBrakeDeceleration = 4.000000f; - m_OriginalHandlingData[30].fBrakeBias = 0.400000f; - m_OriginalHandlingData[30].bABS = false; - m_OriginalHandlingData[30].fSteeringLock = 27.000000f; - m_OriginalHandlingData[30].fTractionLoss = 0.700000f; - m_OriginalHandlingData[30].fTractionBias = 0.470000f; - m_OriginalHandlingData[30].fSuspensionForceLevel = 1.200000f; - m_OriginalHandlingData[30].fSuspensionDamping = 0.050000f; - m_OriginalHandlingData[30].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[30].fSuspensionUpperLimit = 0.470000f; - m_OriginalHandlingData[30].fSuspensionLowerLimit = -0.170000f; - m_OriginalHandlingData[30].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[30].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[30].fCollisionDamageMultiplier = 0.260000f; - m_OriginalHandlingData[30].uiModelFlags = 0x200809; - m_OriginalHandlingData[30].uiHandlingFlags = 0x100000; - m_OriginalHandlingData[30].fSeatOffsetDistance = 0.620000f; - m_OriginalHandlingData[30].uiMonetary = 10000; - m_OriginalHandlingData[30].ucHeadLight = 0; - m_OriginalHandlingData[30].ucTailLight = 1; - m_OriginalHandlingData[30].ucAnimGroup = 2; - - m_OriginalHandlingData[31].iVehicleID = 31; - m_OriginalHandlingData[31].fMass = 1400.000000f; - m_OriginalHandlingData[31].fTurnMass = 3400.000000f; - m_OriginalHandlingData[31].fDragCoeff = 2.500000f; - m_OriginalHandlingData[31].vecCenterOfMass = CVector(0.000000f, 0.300000f, -0.300000f); - m_OriginalHandlingData[31].uiPercentSubmerged = 75; - m_OriginalHandlingData[31].fTractionMultiplier = 0.750000f; - m_OriginalHandlingData[31].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[31].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[31].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[31].Transmission.uiHandlingFlags = 32768; - m_OriginalHandlingData[31].Transmission.fEngineAcceleration = 11.200000f; - m_OriginalHandlingData[31].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[31].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[31].fBrakeDeceleration = 11.000000f; - m_OriginalHandlingData[31].fBrakeBias = 0.450000f; - m_OriginalHandlingData[31].bABS = false; - m_OriginalHandlingData[31].fSteeringLock = 30.000000f; - m_OriginalHandlingData[31].fTractionLoss = 0.800000f; - m_OriginalHandlingData[31].fTractionBias = 0.500000f; - m_OriginalHandlingData[31].fSuspensionForceLevel = 0.800000f; - m_OriginalHandlingData[31].fSuspensionDamping = 0.080000f; - m_OriginalHandlingData[31].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[31].fSuspensionUpperLimit = 0.280000f; - m_OriginalHandlingData[31].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[31].fSuspensionFrontRearBias = 0.400000f; - m_OriginalHandlingData[31].fSuspensionAntiDiveMultiplier = 0.300000f; - m_OriginalHandlingData[31].fCollisionDamageMultiplier = 0.600000f; - m_OriginalHandlingData[31].uiModelFlags = 0x40006800; - m_OriginalHandlingData[31].uiHandlingFlags = 0x8000; - m_OriginalHandlingData[31].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[31].uiMonetary = 35000; - m_OriginalHandlingData[31].ucHeadLight = 1; - m_OriginalHandlingData[31].ucTailLight = 1; - m_OriginalHandlingData[31].ucAnimGroup = 0; - - m_OriginalHandlingData[32].iVehicleID = 32; - m_OriginalHandlingData[32].fMass = 3800.000000f; - m_OriginalHandlingData[32].fTurnMass = 30000.000000f; - m_OriginalHandlingData[32].fDragCoeff = 2.000000f; - m_OriginalHandlingData[32].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.500000f); - m_OriginalHandlingData[32].uiPercentSubmerged = 90; - m_OriginalHandlingData[32].fTractionMultiplier = 0.450000f; - m_OriginalHandlingData[32].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[32].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[32].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[32].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[32].Transmission.fEngineAcceleration = 7.200000f; - m_OriginalHandlingData[32].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[32].Transmission.fMaxVelocity = 120.000000f; - m_OriginalHandlingData[32].fBrakeDeceleration = 8.000000f; - m_OriginalHandlingData[32].fBrakeBias = 0.300000f; - m_OriginalHandlingData[32].bABS = false; - m_OriginalHandlingData[32].fSteeringLock = 25.000000f; - m_OriginalHandlingData[32].fTractionLoss = 0.750000f; - m_OriginalHandlingData[32].fTractionBias = 0.500000f; - m_OriginalHandlingData[32].fSuspensionForceLevel = 1.500000f; - m_OriginalHandlingData[32].fSuspensionDamping = 0.050000f; - m_OriginalHandlingData[32].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[32].fSuspensionUpperLimit = 0.300000f; - m_OriginalHandlingData[32].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[32].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[32].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[32].fCollisionDamageMultiplier = 0.250000f; - m_OriginalHandlingData[32].uiModelFlags = 0x20002000; - m_OriginalHandlingData[32].uiHandlingFlags = 0x0; - m_OriginalHandlingData[32].fSeatOffsetDistance = 0.650000f; - m_OriginalHandlingData[32].uiMonetary = 35000; - m_OriginalHandlingData[32].ucHeadLight = 0; - m_OriginalHandlingData[32].ucTailLight = 1; - m_OriginalHandlingData[32].ucAnimGroup = 0; - - m_OriginalHandlingData[33].iVehicleID = 33; - m_OriginalHandlingData[33].fMass = 1400.000000f; - m_OriginalHandlingData[33].fTurnMass = 3000.000000f; - m_OriginalHandlingData[33].fDragCoeff = 2.000000f; - m_OriginalHandlingData[33].vecCenterOfMass = CVector(0.000000f, 0.300000f, -0.100000f); - m_OriginalHandlingData[33].uiPercentSubmerged = 70; - m_OriginalHandlingData[33].fTractionMultiplier = 0.700000f; - m_OriginalHandlingData[33].Transmission.ucDriveType = 'F'; - m_OriginalHandlingData[33].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[33].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[33].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[33].Transmission.fEngineAcceleration = 7.200000f; - m_OriginalHandlingData[33].Transmission.fEngineInertia = 7.000000f; - m_OriginalHandlingData[33].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[33].fBrakeDeceleration = 8.000000f; - m_OriginalHandlingData[33].fBrakeBias = 0.650000f; - m_OriginalHandlingData[33].bABS = false; - m_OriginalHandlingData[33].fSteeringLock = 35.000000f; - m_OriginalHandlingData[33].fTractionLoss = 0.800000f; - m_OriginalHandlingData[33].fTractionBias = 0.450000f; - m_OriginalHandlingData[33].fSuspensionForceLevel = 1.100000f; - m_OriginalHandlingData[33].fSuspensionDamping = 0.080000f; - m_OriginalHandlingData[33].fSuspensionHighSpdDamping = 2.000000f; - m_OriginalHandlingData[33].fSuspensionUpperLimit = 0.310000f; - m_OriginalHandlingData[33].fSuspensionLowerLimit = -0.180000f; - m_OriginalHandlingData[33].fSuspensionFrontRearBias = 0.550000f; - m_OriginalHandlingData[33].fSuspensionAntiDiveMultiplier = 0.300000f; - m_OriginalHandlingData[33].fCollisionDamageMultiplier = 0.500000f; - m_OriginalHandlingData[33].uiModelFlags = 0x0; - m_OriginalHandlingData[33].uiHandlingFlags = 0x0; - m_OriginalHandlingData[33].fSeatOffsetDistance = 0.210000f; - m_OriginalHandlingData[33].uiMonetary = 9000; - m_OriginalHandlingData[33].ucHeadLight = 0; - m_OriginalHandlingData[33].ucTailLight = 0; - m_OriginalHandlingData[33].ucAnimGroup = 0; - - m_OriginalHandlingData[34].iVehicleID = 34; - m_OriginalHandlingData[34].fMass = 9500.000000f; - m_OriginalHandlingData[34].fTurnMass = 57324.601563f; - m_OriginalHandlingData[34].fDragCoeff = 1.800000f; - m_OriginalHandlingData[34].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[34].uiPercentSubmerged = 90; - m_OriginalHandlingData[34].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[34].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[34].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[34].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[34].Transmission.uiHandlingFlags = 2097152; - m_OriginalHandlingData[34].Transmission.fEngineAcceleration = 7.200000f; - m_OriginalHandlingData[34].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[34].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[34].fBrakeDeceleration = 5.700000f; - m_OriginalHandlingData[34].fBrakeBias = 0.350000f; - m_OriginalHandlingData[34].bABS = false; - m_OriginalHandlingData[34].fSteeringLock = 30.000000f; - m_OriginalHandlingData[34].fTractionLoss = 0.850000f; - m_OriginalHandlingData[34].fTractionBias = 0.350000f; - m_OriginalHandlingData[34].fSuspensionForceLevel = 1.500000f; - m_OriginalHandlingData[34].fSuspensionDamping = 0.040000f; - m_OriginalHandlingData[34].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[34].fSuspensionUpperLimit = 0.450000f; - m_OriginalHandlingData[34].fSuspensionLowerLimit = -0.250000f; - m_OriginalHandlingData[34].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[34].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[34].fCollisionDamageMultiplier = 0.480000f; - m_OriginalHandlingData[34].uiModelFlags = 0x2; - m_OriginalHandlingData[34].uiHandlingFlags = 0x200000; - m_OriginalHandlingData[34].fSeatOffsetDistance = 0.450000f; - m_OriginalHandlingData[34].uiMonetary = 20000; - m_OriginalHandlingData[34].ucHeadLight = 0; - m_OriginalHandlingData[34].ucTailLight = 1; - m_OriginalHandlingData[34].ucAnimGroup = 15; - - m_OriginalHandlingData[35].iVehicleID = 35; - m_OriginalHandlingData[35].fMass = 1750.000000f; - m_OriginalHandlingData[35].fTurnMass = 4351.700195f; - m_OriginalHandlingData[35].fDragCoeff = 2.900000f; - m_OriginalHandlingData[35].vecCenterOfMass = CVector(0.000000f, 0.100000f, -0.150000f); - m_OriginalHandlingData[35].uiPercentSubmerged = 75; - m_OriginalHandlingData[35].fTractionMultiplier = 0.750000f; - m_OriginalHandlingData[35].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[35].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[35].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[35].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[35].Transmission.fEngineAcceleration = 9.600000f; - m_OriginalHandlingData[35].Transmission.fEngineInertia = 6.000000f; - m_OriginalHandlingData[35].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[35].fBrakeDeceleration = 7.000000f; - m_OriginalHandlingData[35].fBrakeBias = 0.440000f; - m_OriginalHandlingData[35].bABS = false; - m_OriginalHandlingData[35].fSteeringLock = 40.000000f; - m_OriginalHandlingData[35].fTractionLoss = 0.850000f; - m_OriginalHandlingData[35].fTractionBias = 0.510000f; - m_OriginalHandlingData[35].fSuspensionForceLevel = 0.700000f; - m_OriginalHandlingData[35].fSuspensionDamping = 0.060000f; - m_OriginalHandlingData[35].fSuspensionHighSpdDamping = 2.000000f; - m_OriginalHandlingData[35].fSuspensionUpperLimit = 0.250000f; - m_OriginalHandlingData[35].fSuspensionLowerLimit = -0.300000f; - m_OriginalHandlingData[35].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[35].fSuspensionAntiDiveMultiplier = 0.500000f; - m_OriginalHandlingData[35].fCollisionDamageMultiplier = 0.400000f; - m_OriginalHandlingData[35].uiModelFlags = 0x0; - m_OriginalHandlingData[35].uiHandlingFlags = 0x0; - m_OriginalHandlingData[35].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[35].uiMonetary = 10000; - m_OriginalHandlingData[35].ucHeadLight = 1; - m_OriginalHandlingData[35].ucTailLight = 1; - m_OriginalHandlingData[35].ucAnimGroup = 0; - - m_OriginalHandlingData[36].iVehicleID = 36; - m_OriginalHandlingData[36].fMass = 1600.000000f; - m_OriginalHandlingData[36].fTurnMass = 3921.300049f; - m_OriginalHandlingData[36].fDragCoeff = 2.000000f; - m_OriginalHandlingData[36].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.150000f); - m_OriginalHandlingData[36].uiPercentSubmerged = 70; - m_OriginalHandlingData[36].fTractionMultiplier = 0.800000f; - m_OriginalHandlingData[36].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[36].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[36].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[36].Transmission.uiHandlingFlags = 4; - m_OriginalHandlingData[36].Transmission.fEngineAcceleration = 9.200000f; - m_OriginalHandlingData[36].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[36].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[36].fBrakeDeceleration = 8.170000f; - m_OriginalHandlingData[36].fBrakeBias = 0.520000f; - m_OriginalHandlingData[36].bABS = false; - m_OriginalHandlingData[36].fSteeringLock = 35.000000f; - m_OriginalHandlingData[36].fTractionLoss = 0.750000f; - m_OriginalHandlingData[36].fTractionBias = 0.550000f; - m_OriginalHandlingData[36].fSuspensionForceLevel = 1.200000f; - m_OriginalHandlingData[36].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[36].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[36].fSuspensionUpperLimit = 0.300000f; - m_OriginalHandlingData[36].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[36].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[36].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[36].fCollisionDamageMultiplier = 0.640000f; - m_OriginalHandlingData[36].uiModelFlags = 0x2800; - m_OriginalHandlingData[36].uiHandlingFlags = 0x4; - m_OriginalHandlingData[36].fSeatOffsetDistance = 0.300000f; - m_OriginalHandlingData[36].uiMonetary = 19000; - m_OriginalHandlingData[36].ucHeadLight = 1; - m_OriginalHandlingData[36].ucTailLight = 1; - m_OriginalHandlingData[36].ucAnimGroup = 0; - - m_OriginalHandlingData[37].iVehicleID = 37; - m_OriginalHandlingData[37].fMass = 2000.000000f; - m_OriginalHandlingData[37].fTurnMass = 4901.700195f; - m_OriginalHandlingData[37].fDragCoeff = 2.400000f; - m_OriginalHandlingData[37].vecCenterOfMass = CVector(0.000000f, 0.400000f, -0.100000f); - m_OriginalHandlingData[37].uiPercentSubmerged = 85; - m_OriginalHandlingData[37].fTractionMultiplier = 0.600000f; - m_OriginalHandlingData[37].Transmission.ucDriveType = 'F'; - m_OriginalHandlingData[37].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[37].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[37].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[37].Transmission.fEngineAcceleration = 7.200000f; - m_OriginalHandlingData[37].Transmission.fEngineInertia = 15.000000f; - m_OriginalHandlingData[37].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[37].fBrakeDeceleration = 5.500000f; - m_OriginalHandlingData[37].fBrakeBias = 0.450000f; - m_OriginalHandlingData[37].bABS = false; - m_OriginalHandlingData[37].fSteeringLock = 30.000000f; - m_OriginalHandlingData[37].fTractionLoss = 0.750000f; - m_OriginalHandlingData[37].fTractionBias = 0.520000f; - m_OriginalHandlingData[37].fSuspensionForceLevel = 1.400000f; - m_OriginalHandlingData[37].fSuspensionDamping = 0.050000f; - m_OriginalHandlingData[37].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[37].fSuspensionUpperLimit = 0.430000f; - m_OriginalHandlingData[37].fSuspensionLowerLimit = -0.110000f; - m_OriginalHandlingData[37].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[37].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[37].fCollisionDamageMultiplier = 0.600000f; - m_OriginalHandlingData[37].uiModelFlags = 0x1; - m_OriginalHandlingData[37].uiHandlingFlags = 0x0; - m_OriginalHandlingData[37].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[37].uiMonetary = 26000; - m_OriginalHandlingData[37].ucHeadLight = 0; - m_OriginalHandlingData[37].ucTailLight = 1; - m_OriginalHandlingData[37].ucAnimGroup = 13; - - m_OriginalHandlingData[38].iVehicleID = 38; - m_OriginalHandlingData[38].fMass = 100.000000f; - m_OriginalHandlingData[38].fTurnMass = 24.100000f; - m_OriginalHandlingData[38].fDragCoeff = 6.000000f; - m_OriginalHandlingData[38].vecCenterOfMass = CVector(0.000000f, 0.050000f, -0.100000f); - m_OriginalHandlingData[38].uiPercentSubmerged = 70; - m_OriginalHandlingData[38].fTractionMultiplier = 0.800000f; - m_OriginalHandlingData[38].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[38].Transmission.ucEngineType = 'E'; - m_OriginalHandlingData[38].Transmission.ucNumberOfGears = 1; - m_OriginalHandlingData[38].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[38].Transmission.fEngineAcceleration = 14.000000f; - m_OriginalHandlingData[38].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[38].Transmission.fMaxVelocity = 75.000000f; - m_OriginalHandlingData[38].fBrakeDeceleration = 5.500000f; - m_OriginalHandlingData[38].fBrakeBias = 0.500000f; - m_OriginalHandlingData[38].bABS = false; - m_OriginalHandlingData[38].fSteeringLock = 25.000000f; - m_OriginalHandlingData[38].fTractionLoss = 0.900000f; - m_OriginalHandlingData[38].fTractionBias = 0.490000f; - m_OriginalHandlingData[38].fSuspensionForceLevel = 1.600000f; - m_OriginalHandlingData[38].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[38].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[38].fSuspensionUpperLimit = 0.280000f; - m_OriginalHandlingData[38].fSuspensionLowerLimit = -0.080000f; - m_OriginalHandlingData[38].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[38].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[38].fCollisionDamageMultiplier = 0.050000f; - m_OriginalHandlingData[38].uiModelFlags = 0x440000; - m_OriginalHandlingData[38].uiHandlingFlags = 0x0; - m_OriginalHandlingData[38].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[38].uiMonetary = 500; - m_OriginalHandlingData[38].ucHeadLight = 0; - m_OriginalHandlingData[38].ucTailLight = 1; - m_OriginalHandlingData[38].ucAnimGroup = 0; - - m_OriginalHandlingData[39].iVehicleID = 39; - m_OriginalHandlingData[39].fMass = 2500.000000f; - m_OriginalHandlingData[39].fTurnMass = 5960.399902f; - m_OriginalHandlingData[39].fDragCoeff = 2.000000f; - m_OriginalHandlingData[39].vecCenterOfMass = CVector(0.000000f, -0.800000f, 0.200000f); - m_OriginalHandlingData[39].uiPercentSubmerged = 70; - m_OriginalHandlingData[39].fTractionMultiplier = 0.750000f; - m_OriginalHandlingData[39].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[39].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[39].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[39].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[39].Transmission.fEngineAcceleration = 6.400000f; - m_OriginalHandlingData[39].Transmission.fEngineInertia = 15.000000f; - m_OriginalHandlingData[39].Transmission.fMaxVelocity = 150.000000f; - m_OriginalHandlingData[39].fBrakeDeceleration = 4.000000f; - m_OriginalHandlingData[39].fBrakeBias = 0.800000f; - m_OriginalHandlingData[39].bABS = false; - m_OriginalHandlingData[39].fSteeringLock = 30.000000f; - m_OriginalHandlingData[39].fTractionLoss = 0.800000f; - m_OriginalHandlingData[39].fTractionBias = 0.500000f; - m_OriginalHandlingData[39].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[39].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[39].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[39].fSuspensionUpperLimit = 0.350000f; - m_OriginalHandlingData[39].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[39].fSuspensionFrontRearBias = 0.400000f; - m_OriginalHandlingData[39].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[39].fCollisionDamageMultiplier = 1.250000f; - m_OriginalHandlingData[39].uiModelFlags = 0x40000020; - m_OriginalHandlingData[39].uiHandlingFlags = 0x0; - m_OriginalHandlingData[39].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[39].uiMonetary = 10000; - m_OriginalHandlingData[39].ucHeadLight = 0; - m_OriginalHandlingData[39].ucTailLight = 1; - m_OriginalHandlingData[39].ucAnimGroup = 0; - - m_OriginalHandlingData[40].iVehicleID = 40; - m_OriginalHandlingData[40].fMass = 8000.000000f; - m_OriginalHandlingData[40].fTurnMass = 48273.300781f; - m_OriginalHandlingData[40].fDragCoeff = 2.000000f; - m_OriginalHandlingData[40].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[40].uiPercentSubmerged = 90; - m_OriginalHandlingData[40].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[40].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[40].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[40].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[40].Transmission.uiHandlingFlags = 4456448; - m_OriginalHandlingData[40].Transmission.fEngineAcceleration = 5.200000f; - m_OriginalHandlingData[40].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[40].Transmission.fMaxVelocity = 150.000000f; - m_OriginalHandlingData[40].fBrakeDeceleration = 5.700000f; - m_OriginalHandlingData[40].fBrakeBias = 0.350000f; - m_OriginalHandlingData[40].bABS = false; - m_OriginalHandlingData[40].fSteeringLock = 30.000000f; - m_OriginalHandlingData[40].fTractionLoss = 0.850000f; - m_OriginalHandlingData[40].fTractionBias = 0.350000f; - m_OriginalHandlingData[40].fSuspensionForceLevel = 1.500000f; - m_OriginalHandlingData[40].fSuspensionDamping = 0.040000f; - m_OriginalHandlingData[40].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[40].fSuspensionUpperLimit = 0.450000f; - m_OriginalHandlingData[40].fSuspensionLowerLimit = -0.250000f; - m_OriginalHandlingData[40].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[40].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[40].fCollisionDamageMultiplier = 0.400000f; - m_OriginalHandlingData[40].uiModelFlags = 0x4000; - m_OriginalHandlingData[40].uiHandlingFlags = 0x440000; - m_OriginalHandlingData[40].fSeatOffsetDistance = 0.560000f; - m_OriginalHandlingData[40].uiMonetary = 20000; - m_OriginalHandlingData[40].ucHeadLight = 0; - m_OriginalHandlingData[40].ucTailLight = 1; - m_OriginalHandlingData[40].ucAnimGroup = 2; - - m_OriginalHandlingData[41].iVehicleID = 41; - m_OriginalHandlingData[41].fMass = 5000.000000f; - m_OriginalHandlingData[41].fTurnMass = 20000.000000f; - m_OriginalHandlingData[41].fDragCoeff = 3.000000f; - m_OriginalHandlingData[41].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.350000f); - m_OriginalHandlingData[41].uiPercentSubmerged = 80; - m_OriginalHandlingData[41].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[41].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[41].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[41].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[41].Transmission.uiHandlingFlags = 19923013; - m_OriginalHandlingData[41].Transmission.fEngineAcceleration = 18.000000f; - m_OriginalHandlingData[41].Transmission.fEngineInertia = 25.000000f; - m_OriginalHandlingData[41].Transmission.fMaxVelocity = 110.000000f; - m_OriginalHandlingData[41].fBrakeDeceleration = 7.000000f; - m_OriginalHandlingData[41].fBrakeBias = 0.450000f; - m_OriginalHandlingData[41].bABS = false; - m_OriginalHandlingData[41].fSteeringLock = 35.000000f; - m_OriginalHandlingData[41].fTractionLoss = 0.850000f; - m_OriginalHandlingData[41].fTractionBias = 0.550000f; - m_OriginalHandlingData[41].fSuspensionForceLevel = 1.500000f; - m_OriginalHandlingData[41].fSuspensionDamping = 0.070000f; - m_OriginalHandlingData[41].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[41].fSuspensionUpperLimit = 0.450000f; - m_OriginalHandlingData[41].fSuspensionLowerLimit = -0.300000f; - m_OriginalHandlingData[41].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[41].fSuspensionAntiDiveMultiplier = 0.300000f; - m_OriginalHandlingData[41].fCollisionDamageMultiplier = 0.350000f; - m_OriginalHandlingData[41].uiModelFlags = 0x28; - m_OriginalHandlingData[41].uiHandlingFlags = 0x1300045; - m_OriginalHandlingData[41].fSeatOffsetDistance = 0.440000f; - m_OriginalHandlingData[41].uiMonetary = 40000; - m_OriginalHandlingData[41].ucHeadLight = 0; - m_OriginalHandlingData[41].ucTailLight = 1; - m_OriginalHandlingData[41].ucAnimGroup = 20; - - m_OriginalHandlingData[42].iVehicleID = 42; - m_OriginalHandlingData[42].fMass = 1650.000000f; - m_OriginalHandlingData[42].fTurnMass = 3851.399902f; - m_OriginalHandlingData[42].fDragCoeff = 2.000000f; - m_OriginalHandlingData[42].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.050000f); - m_OriginalHandlingData[42].uiPercentSubmerged = 75; - m_OriginalHandlingData[42].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[42].Transmission.ucDriveType = 'F'; - m_OriginalHandlingData[42].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[42].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[42].Transmission.uiHandlingFlags = 4194304; - m_OriginalHandlingData[42].Transmission.fEngineAcceleration = 8.800000f; - m_OriginalHandlingData[42].Transmission.fEngineInertia = 8.000000f; - m_OriginalHandlingData[42].Transmission.fMaxVelocity = 165.000000f; - m_OriginalHandlingData[42].fBrakeDeceleration = 8.500000f; - m_OriginalHandlingData[42].fBrakeBias = 0.520000f; - m_OriginalHandlingData[42].bABS = false; - m_OriginalHandlingData[42].fSteeringLock = 30.000000f; - m_OriginalHandlingData[42].fTractionLoss = 0.900000f; - m_OriginalHandlingData[42].fTractionBias = 0.510000f; - m_OriginalHandlingData[42].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[42].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[42].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[42].fSuspensionUpperLimit = 0.270000f; - m_OriginalHandlingData[42].fSuspensionLowerLimit = -0.190000f; - m_OriginalHandlingData[42].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[42].fSuspensionAntiDiveMultiplier = 0.550000f; - m_OriginalHandlingData[42].fCollisionDamageMultiplier = 0.560000f; - m_OriginalHandlingData[42].uiModelFlags = 0x0; - m_OriginalHandlingData[42].uiHandlingFlags = 0x400000; - m_OriginalHandlingData[42].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[42].uiMonetary = 35000; - m_OriginalHandlingData[42].ucHeadLight = 0; - m_OriginalHandlingData[42].ucTailLight = 1; - m_OriginalHandlingData[42].ucAnimGroup = 0; - - m_OriginalHandlingData[43].iVehicleID = 43; - m_OriginalHandlingData[43].fMass = 1900.000000f; - m_OriginalHandlingData[43].fTurnMass = 4795.899902f; - m_OriginalHandlingData[43].fDragCoeff = 1.000000f; - m_OriginalHandlingData[43].vecCenterOfMass = CVector(0.000000f, -0.300000f, 0.000000f); - m_OriginalHandlingData[43].uiPercentSubmerged = 85; - m_OriginalHandlingData[43].fTractionMultiplier = 0.970000f; - m_OriginalHandlingData[43].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[43].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[43].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[43].Transmission.uiHandlingFlags = 4194304; - m_OriginalHandlingData[43].Transmission.fEngineAcceleration = 10.000000f; - m_OriginalHandlingData[43].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[43].Transmission.fMaxVelocity = 150.000000f; - m_OriginalHandlingData[43].fBrakeDeceleration = 8.500000f; - m_OriginalHandlingData[43].fBrakeBias = 0.450000f; - m_OriginalHandlingData[43].bABS = false; - m_OriginalHandlingData[43].fSteeringLock = 30.000000f; - m_OriginalHandlingData[43].fTractionLoss = 0.770000f; - m_OriginalHandlingData[43].fTractionBias = 0.510000f; - m_OriginalHandlingData[43].fSuspensionForceLevel = 1.300000f; - m_OriginalHandlingData[43].fSuspensionDamping = 0.080000f; - m_OriginalHandlingData[43].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[43].fSuspensionUpperLimit = 0.000000f; - m_OriginalHandlingData[43].fSuspensionLowerLimit = -1.000000f; - m_OriginalHandlingData[43].fSuspensionFrontRearBias = 0.400000f; - m_OriginalHandlingData[43].fSuspensionAntiDiveMultiplier = 0.500000f; - m_OriginalHandlingData[43].fCollisionDamageMultiplier = 0.500000f; - m_OriginalHandlingData[43].uiModelFlags = 0x1; - m_OriginalHandlingData[43].uiHandlingFlags = 0x400000; - m_OriginalHandlingData[43].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[43].uiMonetary = 26000; - m_OriginalHandlingData[43].ucHeadLight = 0; - m_OriginalHandlingData[43].ucTailLight = 1; - m_OriginalHandlingData[43].ucAnimGroup = 13; - - m_OriginalHandlingData[44].iVehicleID = 44; - m_OriginalHandlingData[44].fMass = 25500.000000f; - m_OriginalHandlingData[44].fTurnMass = 139272.500000f; - m_OriginalHandlingData[44].fDragCoeff = 1.000000f; - m_OriginalHandlingData[44].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[44].uiPercentSubmerged = 85; - m_OriginalHandlingData[44].fTractionMultiplier = 0.580000f; - m_OriginalHandlingData[44].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[44].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[44].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[44].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[44].Transmission.fEngineAcceleration = 9.600000f; - m_OriginalHandlingData[44].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[44].Transmission.fMaxVelocity = 140.000000f; - m_OriginalHandlingData[44].fBrakeDeceleration = 10.000000f; - m_OriginalHandlingData[44].fBrakeBias = 0.450000f; - m_OriginalHandlingData[44].bABS = false; - m_OriginalHandlingData[44].fSteeringLock = 27.000000f; - m_OriginalHandlingData[44].fTractionLoss = 0.700000f; - m_OriginalHandlingData[44].fTractionBias = 0.460000f; - m_OriginalHandlingData[44].fSuspensionForceLevel = 1.200000f; - m_OriginalHandlingData[44].fSuspensionDamping = 0.050000f; - m_OriginalHandlingData[44].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[44].fSuspensionUpperLimit = 0.470000f; - m_OriginalHandlingData[44].fSuspensionLowerLimit = -0.170000f; - m_OriginalHandlingData[44].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[44].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[44].fCollisionDamageMultiplier = 1.000000f; - m_OriginalHandlingData[44].uiModelFlags = 0x0; - m_OriginalHandlingData[44].uiHandlingFlags = 0x0; - m_OriginalHandlingData[44].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[44].uiMonetary = 10000; - m_OriginalHandlingData[44].ucHeadLight = 0; - m_OriginalHandlingData[44].ucTailLight = 1; - m_OriginalHandlingData[44].ucAnimGroup = 0; - - m_OriginalHandlingData[45].iVehicleID = 45; - m_OriginalHandlingData[45].fMass = 3800.000000f; - m_OriginalHandlingData[45].fTurnMass = 30000.000000f; - m_OriginalHandlingData[45].fDragCoeff = 2.000000f; - m_OriginalHandlingData[45].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.500000f); - m_OriginalHandlingData[45].uiPercentSubmerged = 90; - m_OriginalHandlingData[45].fTractionMultiplier = 0.450000f; - m_OriginalHandlingData[45].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[45].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[45].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[45].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[45].Transmission.fEngineAcceleration = 7.200000f; - m_OriginalHandlingData[45].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[45].Transmission.fMaxVelocity = 120.000000f; - m_OriginalHandlingData[45].fBrakeDeceleration = 8.000000f; - m_OriginalHandlingData[45].fBrakeBias = 0.300000f; - m_OriginalHandlingData[45].bABS = false; - m_OriginalHandlingData[45].fSteeringLock = 25.000000f; - m_OriginalHandlingData[45].fTractionLoss = 0.750000f; - m_OriginalHandlingData[45].fTractionBias = 0.500000f; - m_OriginalHandlingData[45].fSuspensionForceLevel = 1.500000f; - m_OriginalHandlingData[45].fSuspensionDamping = 0.050000f; - m_OriginalHandlingData[45].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[45].fSuspensionUpperLimit = 0.300000f; - m_OriginalHandlingData[45].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[45].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[45].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[45].fCollisionDamageMultiplier = 0.250000f; - m_OriginalHandlingData[45].uiModelFlags = 0x20002000; - m_OriginalHandlingData[45].uiHandlingFlags = 0x0; - m_OriginalHandlingData[45].fSeatOffsetDistance = 0.650000f; - m_OriginalHandlingData[45].uiMonetary = 35000; - m_OriginalHandlingData[45].ucHeadLight = 0; - m_OriginalHandlingData[45].ucTailLight = 1; - m_OriginalHandlingData[45].ucAnimGroup = 0; - - m_OriginalHandlingData[46].iVehicleID = 46; - m_OriginalHandlingData[46].fMass = 1400.000000f; - m_OriginalHandlingData[46].fTurnMass = 3000.000000f; - m_OriginalHandlingData[46].fDragCoeff = 2.000000f; - m_OriginalHandlingData[46].vecCenterOfMass = CVector(0.000000f, -0.300000f, -0.200000f); - m_OriginalHandlingData[46].uiPercentSubmerged = 70; - m_OriginalHandlingData[46].fTractionMultiplier = 0.750000f; - m_OriginalHandlingData[46].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[46].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[46].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[46].Transmission.uiHandlingFlags = 12616705; - m_OriginalHandlingData[46].Transmission.fEngineAcceleration = 12.000000f; - m_OriginalHandlingData[46].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[46].Transmission.fMaxVelocity = 240.000000f; - m_OriginalHandlingData[46].fBrakeDeceleration = 11.000000f; - m_OriginalHandlingData[46].fBrakeBias = 0.510000f; - m_OriginalHandlingData[46].bABS = false; - m_OriginalHandlingData[46].fSteeringLock = 30.000000f; - m_OriginalHandlingData[46].fTractionLoss = 0.850000f; - m_OriginalHandlingData[46].fTractionBias = 0.450000f; - m_OriginalHandlingData[46].fSuspensionForceLevel = 1.200000f; - m_OriginalHandlingData[46].fSuspensionDamping = 0.130000f; - m_OriginalHandlingData[46].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[46].fSuspensionUpperLimit = 0.150000f; - m_OriginalHandlingData[46].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[46].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[46].fSuspensionAntiDiveMultiplier = 0.400000f; - m_OriginalHandlingData[46].fCollisionDamageMultiplier = 0.720000f; - m_OriginalHandlingData[46].uiModelFlags = 0x40002004; - m_OriginalHandlingData[46].uiHandlingFlags = 0xC08401; - m_OriginalHandlingData[46].fSeatOffsetDistance = 0.170000f; - m_OriginalHandlingData[46].uiMonetary = 95000; - m_OriginalHandlingData[46].ucHeadLight = 1; - m_OriginalHandlingData[46].ucTailLight = 1; - m_OriginalHandlingData[46].ucAnimGroup = 1; - - m_OriginalHandlingData[47].iVehicleID = 47; - m_OriginalHandlingData[47].fMass = 8500.000000f; - m_OriginalHandlingData[47].fTurnMass = 48804.199219f; - m_OriginalHandlingData[47].fDragCoeff = 2.500000f; - m_OriginalHandlingData[47].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.300000f); - m_OriginalHandlingData[47].uiPercentSubmerged = 90; - m_OriginalHandlingData[47].fTractionMultiplier = 0.700000f; - m_OriginalHandlingData[47].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[47].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[47].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[47].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[47].Transmission.fEngineAcceleration = 10.000000f; - m_OriginalHandlingData[47].Transmission.fEngineInertia = 80.000000f; - m_OriginalHandlingData[47].Transmission.fMaxVelocity = 140.000000f; - m_OriginalHandlingData[47].fBrakeDeceleration = 10.000000f; - m_OriginalHandlingData[47].fBrakeBias = 0.450000f; - m_OriginalHandlingData[47].bABS = false; - m_OriginalHandlingData[47].fSteeringLock = 27.000000f; - m_OriginalHandlingData[47].fTractionLoss = 0.700000f; - m_OriginalHandlingData[47].fTractionBias = 0.460000f; - m_OriginalHandlingData[47].fSuspensionForceLevel = 1.200000f; - m_OriginalHandlingData[47].fSuspensionDamping = 0.050000f; - m_OriginalHandlingData[47].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[47].fSuspensionUpperLimit = 0.470000f; - m_OriginalHandlingData[47].fSuspensionLowerLimit = -0.170000f; - m_OriginalHandlingData[47].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[47].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[47].fCollisionDamageMultiplier = 0.430000f; - m_OriginalHandlingData[47].uiModelFlags = 0x801; - m_OriginalHandlingData[47].uiHandlingFlags = 0x0; - m_OriginalHandlingData[47].fSeatOffsetDistance = 0.620000f; - m_OriginalHandlingData[47].uiMonetary = 10000; - m_OriginalHandlingData[47].ucHeadLight = 0; - m_OriginalHandlingData[47].ucTailLight = 1; - m_OriginalHandlingData[47].ucAnimGroup = 2; - - m_OriginalHandlingData[48].iVehicleID = 48; - m_OriginalHandlingData[48].fMass = 4500.000000f; - m_OriginalHandlingData[48].fTurnMass = 18003.699219f; - m_OriginalHandlingData[48].fDragCoeff = 3.000000f; - m_OriginalHandlingData[48].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[48].uiPercentSubmerged = 80; - m_OriginalHandlingData[48].fTractionMultiplier = 0.550000f; - m_OriginalHandlingData[48].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[48].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[48].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[48].Transmission.uiHandlingFlags = 1; - m_OriginalHandlingData[48].Transmission.fEngineAcceleration = 5.600000f; - m_OriginalHandlingData[48].Transmission.fEngineInertia = 40.000000f; - m_OriginalHandlingData[48].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[48].fBrakeDeceleration = 4.500000f; - m_OriginalHandlingData[48].fBrakeBias = 0.800000f; - m_OriginalHandlingData[48].bABS = false; - m_OriginalHandlingData[48].fSteeringLock = 30.000000f; - m_OriginalHandlingData[48].fTractionLoss = 0.700000f; - m_OriginalHandlingData[48].fTractionBias = 0.480000f; - m_OriginalHandlingData[48].fSuspensionForceLevel = 1.800000f; - m_OriginalHandlingData[48].fSuspensionDamping = 0.120000f; - m_OriginalHandlingData[48].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[48].fSuspensionUpperLimit = 0.300000f; - m_OriginalHandlingData[48].fSuspensionLowerLimit = -0.250000f; - m_OriginalHandlingData[48].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[48].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[48].fCollisionDamageMultiplier = 0.450000f; - m_OriginalHandlingData[48].uiModelFlags = 0x4088; - m_OriginalHandlingData[48].uiHandlingFlags = 0x1; - m_OriginalHandlingData[48].fSeatOffsetDistance = 0.350000f; - m_OriginalHandlingData[48].uiMonetary = 22000; - m_OriginalHandlingData[48].ucHeadLight = 0; - m_OriginalHandlingData[48].ucTailLight = 1; - m_OriginalHandlingData[48].ucAnimGroup = 0; - - m_OriginalHandlingData[49].iVehicleID = 49; - m_OriginalHandlingData[49].fMass = 1000.000000f; - m_OriginalHandlingData[49].fTurnMass = 1354.199951f; - m_OriginalHandlingData[49].fDragCoeff = 4.000000f; - m_OriginalHandlingData[49].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.100000f); - m_OriginalHandlingData[49].uiPercentSubmerged = 70; - m_OriginalHandlingData[49].fTractionMultiplier = 0.550000f; - m_OriginalHandlingData[49].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[49].Transmission.ucEngineType = 'E'; - m_OriginalHandlingData[49].Transmission.ucNumberOfGears = 3; - m_OriginalHandlingData[49].Transmission.uiHandlingFlags = 34820; - m_OriginalHandlingData[49].Transmission.fEngineAcceleration = 6.000000f; - m_OriginalHandlingData[49].Transmission.fEngineInertia = 30.000000f; - m_OriginalHandlingData[49].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[49].fBrakeDeceleration = 13.000000f; - m_OriginalHandlingData[49].fBrakeBias = 0.500000f; - m_OriginalHandlingData[49].bABS = false; - m_OriginalHandlingData[49].fSteeringLock = 30.000000f; - m_OriginalHandlingData[49].fTractionLoss = 0.850000f; - m_OriginalHandlingData[49].fTractionBias = 0.500000f; - m_OriginalHandlingData[49].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[49].fSuspensionDamping = 0.090000f; - m_OriginalHandlingData[49].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[49].fSuspensionUpperLimit = 0.280000f; - m_OriginalHandlingData[49].fSuspensionLowerLimit = -0.130000f; - m_OriginalHandlingData[49].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[49].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[49].fCollisionDamageMultiplier = 0.500000f; - m_OriginalHandlingData[49].uiModelFlags = 0x1100; - m_OriginalHandlingData[49].uiHandlingFlags = 0x8804; - m_OriginalHandlingData[49].fSeatOffsetDistance = 0.260000f; - m_OriginalHandlingData[49].uiMonetary = 9000; - m_OriginalHandlingData[49].ucHeadLight = 1; - m_OriginalHandlingData[49].ucTailLight = 1; - m_OriginalHandlingData[49].ucAnimGroup = 0; - - m_OriginalHandlingData[50].iVehicleID = 50; - m_OriginalHandlingData[50].fMass = 2000.000000f; - m_OriginalHandlingData[50].fTurnMass = 5500.000000f; - m_OriginalHandlingData[50].fDragCoeff = 2.000000f; - m_OriginalHandlingData[50].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[50].uiPercentSubmerged = 75; - m_OriginalHandlingData[50].fTractionMultiplier = 0.750000f; - m_OriginalHandlingData[50].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[50].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[50].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[50].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[50].Transmission.fEngineAcceleration = 8.000000f; - m_OriginalHandlingData[50].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[50].Transmission.fMaxVelocity = 165.000000f; - m_OriginalHandlingData[50].fBrakeDeceleration = 5.000000f; - m_OriginalHandlingData[50].fBrakeBias = 0.600000f; - m_OriginalHandlingData[50].bABS = false; - m_OriginalHandlingData[50].fSteeringLock = 30.000000f; - m_OriginalHandlingData[50].fTractionLoss = 0.800000f; - m_OriginalHandlingData[50].fTractionBias = 0.520000f; - m_OriginalHandlingData[50].fSuspensionForceLevel = 1.200000f; - m_OriginalHandlingData[50].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[50].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[50].fSuspensionUpperLimit = 0.270000f; - m_OriginalHandlingData[50].fSuspensionLowerLimit = -0.170000f; - m_OriginalHandlingData[50].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[50].fSuspensionAntiDiveMultiplier = 0.200000f; - m_OriginalHandlingData[50].fCollisionDamageMultiplier = 0.480000f; - m_OriginalHandlingData[50].uiModelFlags = 0x20; - m_OriginalHandlingData[50].uiHandlingFlags = 0x0; - m_OriginalHandlingData[50].fSeatOffsetDistance = 0.240000f; - m_OriginalHandlingData[50].uiMonetary = 18000; - m_OriginalHandlingData[50].ucHeadLight = 1; - m_OriginalHandlingData[50].ucTailLight = 1; - m_OriginalHandlingData[50].ucAnimGroup = 0; - - m_OriginalHandlingData[51].iVehicleID = 51; - m_OriginalHandlingData[51].fMass = 1900.000000f; - m_OriginalHandlingData[51].fTurnMass = 6333.299805f; - m_OriginalHandlingData[51].fDragCoeff = 2.000000f; - m_OriginalHandlingData[51].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.200000f); - m_OriginalHandlingData[51].uiPercentSubmerged = 80; - m_OriginalHandlingData[51].fTractionMultiplier = 0.850000f; - m_OriginalHandlingData[51].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[51].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[51].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[51].Transmission.uiHandlingFlags = 1; - m_OriginalHandlingData[51].Transmission.fEngineAcceleration = 6.000000f; - m_OriginalHandlingData[51].Transmission.fEngineInertia = 25.000000f; - m_OriginalHandlingData[51].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[51].fBrakeDeceleration = 6.000000f; - m_OriginalHandlingData[51].fBrakeBias = 0.800000f; - m_OriginalHandlingData[51].bABS = false; - m_OriginalHandlingData[51].fSteeringLock = 30.000000f; - m_OriginalHandlingData[51].fTractionLoss = 0.700000f; - m_OriginalHandlingData[51].fTractionBias = 0.460000f; - m_OriginalHandlingData[51].fSuspensionForceLevel = 1.500000f; - m_OriginalHandlingData[51].fSuspensionDamping = 0.070000f; - m_OriginalHandlingData[51].fSuspensionHighSpdDamping = 2.000000f; - m_OriginalHandlingData[51].fSuspensionUpperLimit = 0.350000f; - m_OriginalHandlingData[51].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[51].fSuspensionFrontRearBias = 0.400000f; - m_OriginalHandlingData[51].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[51].fCollisionDamageMultiplier = 0.430000f; - m_OriginalHandlingData[51].uiModelFlags = 0x1; - m_OriginalHandlingData[51].uiHandlingFlags = 0x1; - m_OriginalHandlingData[51].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[51].uiMonetary = 20000; - m_OriginalHandlingData[51].ucHeadLight = 0; - m_OriginalHandlingData[51].ucTailLight = 3; - m_OriginalHandlingData[51].ucAnimGroup = 13; - - m_OriginalHandlingData[52].iVehicleID = 52; - m_OriginalHandlingData[52].fMass = 1600.000000f; - m_OriginalHandlingData[52].fTurnMass = 4000.000000f; - m_OriginalHandlingData[52].fDragCoeff = 2.500000f; - m_OriginalHandlingData[52].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.050000f); - m_OriginalHandlingData[52].uiPercentSubmerged = 75; - m_OriginalHandlingData[52].fTractionMultiplier = 0.600000f; - m_OriginalHandlingData[52].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[52].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[52].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[52].Transmission.uiHandlingFlags = 276824066; - m_OriginalHandlingData[52].Transmission.fEngineAcceleration = 8.800000f; - m_OriginalHandlingData[52].Transmission.fEngineInertia = 15.000000f; - m_OriginalHandlingData[52].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[52].fBrakeDeceleration = 6.200000f; - m_OriginalHandlingData[52].fBrakeBias = 0.550000f; - m_OriginalHandlingData[52].bABS = false; - m_OriginalHandlingData[52].fSteeringLock = 30.000000f; - m_OriginalHandlingData[52].fTractionLoss = 0.840000f; - m_OriginalHandlingData[52].fTractionBias = 0.520000f; - m_OriginalHandlingData[52].fSuspensionForceLevel = 0.800000f; - m_OriginalHandlingData[52].fSuspensionDamping = 0.070000f; - m_OriginalHandlingData[52].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[52].fSuspensionUpperLimit = 0.350000f; - m_OriginalHandlingData[52].fSuspensionLowerLimit = -0.220000f; - m_OriginalHandlingData[52].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[52].fSuspensionAntiDiveMultiplier = 0.500000f; - m_OriginalHandlingData[52].fCollisionDamageMultiplier = 0.400000f; - m_OriginalHandlingData[52].uiModelFlags = 0x0; - m_OriginalHandlingData[52].uiHandlingFlags = 0x10800002; - m_OriginalHandlingData[52].fSeatOffsetDistance = 0.230000f; - m_OriginalHandlingData[52].uiMonetary = 20000; - m_OriginalHandlingData[52].ucHeadLight = 1; - m_OriginalHandlingData[52].ucTailLight = 1; - m_OriginalHandlingData[52].ucAnimGroup = 0; - - m_OriginalHandlingData[53].iVehicleID = 53; - m_OriginalHandlingData[53].fMass = 1900.000000f; - m_OriginalHandlingData[53].fTurnMass = 4529.899902f; - m_OriginalHandlingData[53].fDragCoeff = 2.000000f; - m_OriginalHandlingData[53].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[53].uiPercentSubmerged = 75; - m_OriginalHandlingData[53].fTractionMultiplier = 0.670000f; - m_OriginalHandlingData[53].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[53].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[53].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[53].Transmission.uiHandlingFlags = 276824064; - m_OriginalHandlingData[53].Transmission.fEngineAcceleration = 6.400000f; - m_OriginalHandlingData[53].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[53].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[53].fBrakeDeceleration = 5.000000f; - m_OriginalHandlingData[53].fBrakeBias = 0.550000f; - m_OriginalHandlingData[53].bABS = false; - m_OriginalHandlingData[53].fSteeringLock = 30.000000f; - m_OriginalHandlingData[53].fTractionLoss = 0.750000f; - m_OriginalHandlingData[53].fTractionBias = 0.520000f; - m_OriginalHandlingData[53].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[53].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[53].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[53].fSuspensionUpperLimit = 0.350000f; - m_OriginalHandlingData[53].fSuspensionLowerLimit = -0.170000f; - m_OriginalHandlingData[53].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[53].fSuspensionAntiDiveMultiplier = 0.500000f; - m_OriginalHandlingData[53].fCollisionDamageMultiplier = 0.450000f; - m_OriginalHandlingData[53].uiModelFlags = 0x0; - m_OriginalHandlingData[53].uiHandlingFlags = 0x10800000; - m_OriginalHandlingData[53].fSeatOffsetDistance = 0.230000f; - m_OriginalHandlingData[53].uiMonetary = 20000; - m_OriginalHandlingData[53].ucHeadLight = 2; - m_OriginalHandlingData[53].ucTailLight = 1; - m_OriginalHandlingData[53].ucAnimGroup = 0; - - m_OriginalHandlingData[54].iVehicleID = 54; - m_OriginalHandlingData[54].fMass = 2500.000000f; - m_OriginalHandlingData[54].fTurnMass = 7968.700195f; - m_OriginalHandlingData[54].fDragCoeff = 2.500000f; - m_OriginalHandlingData[54].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[54].uiPercentSubmerged = 80; - m_OriginalHandlingData[54].fTractionMultiplier = 0.700000f; - m_OriginalHandlingData[54].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[54].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[54].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[54].Transmission.uiHandlingFlags = 3145728; - m_OriginalHandlingData[54].Transmission.fEngineAcceleration = 10.000000f; - m_OriginalHandlingData[54].Transmission.fEngineInertia = 20.000000f; - m_OriginalHandlingData[54].Transmission.fMaxVelocity = 170.000000f; - m_OriginalHandlingData[54].fBrakeDeceleration = 8.000000f; - m_OriginalHandlingData[54].fBrakeBias = 0.500000f; - m_OriginalHandlingData[54].bABS = false; - m_OriginalHandlingData[54].fSteeringLock = 30.000000f; - m_OriginalHandlingData[54].fTractionLoss = 0.850000f; - m_OriginalHandlingData[54].fTractionBias = 0.500000f; - m_OriginalHandlingData[54].fSuspensionForceLevel = 1.500000f; - m_OriginalHandlingData[54].fSuspensionDamping = 0.080000f; - m_OriginalHandlingData[54].fSuspensionHighSpdDamping = 4.000000f; - m_OriginalHandlingData[54].fSuspensionUpperLimit = 0.350000f; - m_OriginalHandlingData[54].fSuspensionLowerLimit = -0.350000f; - m_OriginalHandlingData[54].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[54].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[54].fCollisionDamageMultiplier = 0.250000f; - m_OriginalHandlingData[54].uiModelFlags = 0x8; - m_OriginalHandlingData[54].uiHandlingFlags = 0x300000; - m_OriginalHandlingData[54].fSeatOffsetDistance = 0.280000f; - m_OriginalHandlingData[54].uiMonetary = 40000; - m_OriginalHandlingData[54].ucHeadLight = 0; - m_OriginalHandlingData[54].ucTailLight = 1; - m_OriginalHandlingData[54].ucAnimGroup = 0; - - m_OriginalHandlingData[55].iVehicleID = 55; - m_OriginalHandlingData[55].fMass = 1950.000000f; - m_OriginalHandlingData[55].fTurnMass = 4712.500000f; - m_OriginalHandlingData[55].fDragCoeff = 2.000000f; - m_OriginalHandlingData[55].vecCenterOfMass = CVector(0.000000f, 0.300000f, 0.000000f); - m_OriginalHandlingData[55].uiPercentSubmerged = 70; - m_OriginalHandlingData[55].fTractionMultiplier = 0.700000f; - m_OriginalHandlingData[55].Transmission.ucDriveType = 'F'; - m_OriginalHandlingData[55].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[55].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[55].Transmission.uiHandlingFlags = 1; - m_OriginalHandlingData[55].Transmission.fEngineAcceleration = 7.200000f; - m_OriginalHandlingData[55].Transmission.fEngineInertia = 15.000000f; - m_OriginalHandlingData[55].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[55].fBrakeDeceleration = 3.500000f; - m_OriginalHandlingData[55].fBrakeBias = 0.600000f; - m_OriginalHandlingData[55].bABS = false; - m_OriginalHandlingData[55].fSteeringLock = 28.000000f; - m_OriginalHandlingData[55].fTractionLoss = 0.750000f; - m_OriginalHandlingData[55].fTractionBias = 0.510000f; - m_OriginalHandlingData[55].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[55].fSuspensionDamping = 0.050000f; - m_OriginalHandlingData[55].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[55].fSuspensionUpperLimit = 0.350000f; - m_OriginalHandlingData[55].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[55].fSuspensionFrontRearBias = 0.580000f; - m_OriginalHandlingData[55].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[55].fCollisionDamageMultiplier = 0.420000f; - m_OriginalHandlingData[55].uiModelFlags = 0x40002000; - m_OriginalHandlingData[55].uiHandlingFlags = 0x1; - m_OriginalHandlingData[55].fSeatOffsetDistance = 0.250000f; - m_OriginalHandlingData[55].uiMonetary = 19000; - m_OriginalHandlingData[55].ucHeadLight = 1; - m_OriginalHandlingData[55].ucTailLight = 3; - m_OriginalHandlingData[55].ucAnimGroup = 0; - - m_OriginalHandlingData[56].iVehicleID = 56; - m_OriginalHandlingData[56].fMass = 1700.000000f; - m_OriginalHandlingData[56].fTurnMass = 4000.000000f; - m_OriginalHandlingData[56].fDragCoeff = 2.000000f; - m_OriginalHandlingData[56].vecCenterOfMass = CVector(0.000000f, 0.100000f, 0.000000f); - m_OriginalHandlingData[56].uiPercentSubmerged = 70; - m_OriginalHandlingData[56].fTractionMultiplier = 0.700000f; - m_OriginalHandlingData[56].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[56].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[56].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[56].Transmission.uiHandlingFlags = 268435462; - m_OriginalHandlingData[56].Transmission.fEngineAcceleration = 9.600000f; - m_OriginalHandlingData[56].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[56].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[56].fBrakeDeceleration = 8.000000f; - m_OriginalHandlingData[56].fBrakeBias = 0.520000f; - m_OriginalHandlingData[56].bABS = false; - m_OriginalHandlingData[56].fSteeringLock = 35.000000f; - m_OriginalHandlingData[56].fTractionLoss = 0.800000f; - m_OriginalHandlingData[56].fTractionBias = 0.530000f; - m_OriginalHandlingData[56].fSuspensionForceLevel = 1.300000f; - m_OriginalHandlingData[56].fSuspensionDamping = 0.080000f; - m_OriginalHandlingData[56].fSuspensionHighSpdDamping = 5.000000f; - m_OriginalHandlingData[56].fSuspensionUpperLimit = 0.300000f; - m_OriginalHandlingData[56].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[56].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[56].fSuspensionAntiDiveMultiplier = 0.250000f; - m_OriginalHandlingData[56].fCollisionDamageMultiplier = 0.520000f; - m_OriginalHandlingData[56].uiModelFlags = 0x0; - m_OriginalHandlingData[56].uiHandlingFlags = 0x10000006; - m_OriginalHandlingData[56].fSeatOffsetDistance = 0.250000f; - m_OriginalHandlingData[56].uiMonetary = 19000; - m_OriginalHandlingData[56].ucHeadLight = 1; - m_OriginalHandlingData[56].ucTailLight = 1; - m_OriginalHandlingData[56].ucAnimGroup = 0; - - m_OriginalHandlingData[57].iVehicleID = 57; - m_OriginalHandlingData[57].fMass = 1400.000000f; - m_OriginalHandlingData[57].fTurnMass = 2979.699951f; - m_OriginalHandlingData[57].fDragCoeff = 2.000000f; - m_OriginalHandlingData[57].vecCenterOfMass = CVector(0.000000f, 0.200000f, -0.100000f); - m_OriginalHandlingData[57].uiPercentSubmerged = 70; - m_OriginalHandlingData[57].fTractionMultiplier = 0.800000f; - m_OriginalHandlingData[57].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[57].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[57].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[57].Transmission.uiHandlingFlags = 12582912; - m_OriginalHandlingData[57].Transmission.fEngineAcceleration = 11.200000f; - m_OriginalHandlingData[57].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[57].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[57].fBrakeDeceleration = 11.100000f; - m_OriginalHandlingData[57].fBrakeBias = 0.520000f; - m_OriginalHandlingData[57].bABS = false; - m_OriginalHandlingData[57].fSteeringLock = 30.000000f; - m_OriginalHandlingData[57].fTractionLoss = 0.800000f; - m_OriginalHandlingData[57].fTractionBias = 0.510000f; - m_OriginalHandlingData[57].fSuspensionForceLevel = 1.200000f; - m_OriginalHandlingData[57].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[57].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[57].fSuspensionUpperLimit = 0.310000f; - m_OriginalHandlingData[57].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[57].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[57].fSuspensionAntiDiveMultiplier = 0.300000f; - m_OriginalHandlingData[57].fCollisionDamageMultiplier = 0.600000f; - m_OriginalHandlingData[57].uiModelFlags = 0x0; - m_OriginalHandlingData[57].uiHandlingFlags = 0xC00000; - m_OriginalHandlingData[57].fSeatOffsetDistance = 0.240000f; - m_OriginalHandlingData[57].uiMonetary = 45000; - m_OriginalHandlingData[57].ucHeadLight = 1; - m_OriginalHandlingData[57].ucTailLight = 1; - m_OriginalHandlingData[57].ucAnimGroup = 0; - - m_OriginalHandlingData[58].iVehicleID = 58; - m_OriginalHandlingData[58].fMass = 1850.000000f; - m_OriginalHandlingData[58].fTurnMass = 3534.000000f; - m_OriginalHandlingData[58].fDragCoeff = 2.500000f; - m_OriginalHandlingData[58].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[58].uiPercentSubmerged = 75; - m_OriginalHandlingData[58].fTractionMultiplier = 0.700000f; - m_OriginalHandlingData[58].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[58].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[58].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[58].Transmission.uiHandlingFlags = 268435462; - m_OriginalHandlingData[58].Transmission.fEngineAcceleration = 5.600000f; - m_OriginalHandlingData[58].Transmission.fEngineInertia = 25.000000f; - m_OriginalHandlingData[58].Transmission.fMaxVelocity = 150.000000f; - m_OriginalHandlingData[58].fBrakeDeceleration = 6.500000f; - m_OriginalHandlingData[58].fBrakeBias = 0.500000f; - m_OriginalHandlingData[58].bABS = false; - m_OriginalHandlingData[58].fSteeringLock = 35.000000f; - m_OriginalHandlingData[58].fTractionLoss = 0.700000f; - m_OriginalHandlingData[58].fTractionBias = 0.500000f; - m_OriginalHandlingData[58].fSuspensionForceLevel = 1.600000f; - m_OriginalHandlingData[58].fSuspensionDamping = 0.120000f; - m_OriginalHandlingData[58].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[58].fSuspensionUpperLimit = 0.350000f; - m_OriginalHandlingData[58].fSuspensionLowerLimit = -0.180000f; - m_OriginalHandlingData[58].fSuspensionFrontRearBias = 0.400000f; - m_OriginalHandlingData[58].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[58].fCollisionDamageMultiplier = 0.190000f; - m_OriginalHandlingData[58].uiModelFlags = 0x40; - m_OriginalHandlingData[58].uiHandlingFlags = 0x10000006; - m_OriginalHandlingData[58].fSeatOffsetDistance = 0.260000f; - m_OriginalHandlingData[58].uiMonetary = 26000; - m_OriginalHandlingData[58].ucHeadLight = 1; - m_OriginalHandlingData[58].ucTailLight = 1; - m_OriginalHandlingData[58].ucAnimGroup = 0; - - m_OriginalHandlingData[59].iVehicleID = 59; - m_OriginalHandlingData[59].fMass = 1500.000000f; - m_OriginalHandlingData[59].fTurnMass = 3800.000000f; - m_OriginalHandlingData[59].fDragCoeff = 2.000000f; - m_OriginalHandlingData[59].vecCenterOfMass = CVector(0.000000f, 0.200000f, 0.000000f); - m_OriginalHandlingData[59].uiPercentSubmerged = 75; - m_OriginalHandlingData[59].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[59].Transmission.ucDriveType = 'F'; - m_OriginalHandlingData[59].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[59].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[59].Transmission.uiHandlingFlags = 1; - m_OriginalHandlingData[59].Transmission.fEngineAcceleration = 6.400000f; - m_OriginalHandlingData[59].Transmission.fEngineInertia = 25.000000f; - m_OriginalHandlingData[59].Transmission.fMaxVelocity = 165.000000f; - m_OriginalHandlingData[59].fBrakeDeceleration = 5.000000f; - m_OriginalHandlingData[59].fBrakeBias = 0.600000f; - m_OriginalHandlingData[59].bABS = false; - m_OriginalHandlingData[59].fSteeringLock = 30.000000f; - m_OriginalHandlingData[59].fTractionLoss = 0.850000f; - m_OriginalHandlingData[59].fTractionBias = 0.520000f; - m_OriginalHandlingData[59].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[59].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[59].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[59].fSuspensionUpperLimit = 0.270000f; - m_OriginalHandlingData[59].fSuspensionLowerLimit = -0.170000f; - m_OriginalHandlingData[59].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[59].fSuspensionAntiDiveMultiplier = 0.200000f; - m_OriginalHandlingData[59].fCollisionDamageMultiplier = 0.480000f; - m_OriginalHandlingData[59].uiModelFlags = 0x20; - m_OriginalHandlingData[59].uiHandlingFlags = 0x1; - m_OriginalHandlingData[59].fSeatOffsetDistance = 0.240000f; - m_OriginalHandlingData[59].uiMonetary = 18000; - m_OriginalHandlingData[59].ucHeadLight = 1; - m_OriginalHandlingData[59].ucTailLight = 1; - m_OriginalHandlingData[59].ucAnimGroup = 0; - - m_OriginalHandlingData[60].iVehicleID = 60; - m_OriginalHandlingData[60].fMass = 1400.000000f; - m_OriginalHandlingData[60].fTurnMass = 2200.000000f; - m_OriginalHandlingData[60].fDragCoeff = 2.200000f; - m_OriginalHandlingData[60].vecCenterOfMass = CVector(0.000000f, 0.100000f, -0.200000f); - m_OriginalHandlingData[60].uiPercentSubmerged = 75; - m_OriginalHandlingData[60].fTractionMultiplier = 0.700000f; - m_OriginalHandlingData[60].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[60].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[60].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[60].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[60].Transmission.fEngineAcceleration = 12.000000f; - m_OriginalHandlingData[60].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[60].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[60].fBrakeDeceleration = 11.000000f; - m_OriginalHandlingData[60].fBrakeBias = 0.450000f; - m_OriginalHandlingData[60].bABS = false; - m_OriginalHandlingData[60].fSteeringLock = 30.000000f; - m_OriginalHandlingData[60].fTractionLoss = 0.900000f; - m_OriginalHandlingData[60].fTractionBias = 0.500000f; - m_OriginalHandlingData[60].fSuspensionForceLevel = 1.400000f; - m_OriginalHandlingData[60].fSuspensionDamping = 0.140000f; - m_OriginalHandlingData[60].fSuspensionHighSpdDamping = 3.000000f; - m_OriginalHandlingData[60].fSuspensionUpperLimit = 0.280000f; - m_OriginalHandlingData[60].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[60].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[60].fSuspensionAntiDiveMultiplier = 0.300000f; - m_OriginalHandlingData[60].fCollisionDamageMultiplier = 0.600000f; - m_OriginalHandlingData[60].uiModelFlags = 0x40000800; - m_OriginalHandlingData[60].uiHandlingFlags = 0x0; - m_OriginalHandlingData[60].fSeatOffsetDistance = 0.250000f; - m_OriginalHandlingData[60].uiMonetary = 35000; - m_OriginalHandlingData[60].ucHeadLight = 1; - m_OriginalHandlingData[60].ucTailLight = 1; - m_OriginalHandlingData[60].ucAnimGroup = 19; - - m_OriginalHandlingData[61].iVehicleID = 61; - m_OriginalHandlingData[61].fMass = 1900.000000f; - m_OriginalHandlingData[61].fTurnMass = 5000.000000f; - m_OriginalHandlingData[61].fDragCoeff = 2.500000f; - m_OriginalHandlingData[61].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.200000f); - m_OriginalHandlingData[61].uiPercentSubmerged = 85; - m_OriginalHandlingData[61].fTractionMultiplier = 0.600000f; - m_OriginalHandlingData[61].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[61].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[61].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[61].Transmission.uiHandlingFlags = 4194304; - m_OriginalHandlingData[61].Transmission.fEngineAcceleration = 10.000000f; - m_OriginalHandlingData[61].Transmission.fEngineInertia = 20.000000f; - m_OriginalHandlingData[61].Transmission.fMaxVelocity = 150.000000f; - m_OriginalHandlingData[61].fBrakeDeceleration = 8.500000f; - m_OriginalHandlingData[61].fBrakeBias = 0.450000f; - m_OriginalHandlingData[61].bABS = false; - m_OriginalHandlingData[61].fSteeringLock = 30.000000f; - m_OriginalHandlingData[61].fTractionLoss = 0.870000f; - m_OriginalHandlingData[61].fTractionBias = 0.510000f; - m_OriginalHandlingData[61].fSuspensionForceLevel = 1.300000f; - m_OriginalHandlingData[61].fSuspensionDamping = 0.070000f; - m_OriginalHandlingData[61].fSuspensionHighSpdDamping = 2.000000f; - m_OriginalHandlingData[61].fSuspensionUpperLimit = 0.400000f; - m_OriginalHandlingData[61].fSuspensionLowerLimit = -0.250000f; - m_OriginalHandlingData[61].fSuspensionFrontRearBias = 0.400000f; - m_OriginalHandlingData[61].fSuspensionAntiDiveMultiplier = 0.500000f; - m_OriginalHandlingData[61].fCollisionDamageMultiplier = 0.500000f; - m_OriginalHandlingData[61].uiModelFlags = 0x1; - m_OriginalHandlingData[61].uiHandlingFlags = 0x400000; - m_OriginalHandlingData[61].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[61].uiMonetary = 26000; - m_OriginalHandlingData[61].ucHeadLight = 0; - m_OriginalHandlingData[61].ucTailLight = 1; - m_OriginalHandlingData[61].ucAnimGroup = 13; - - m_OriginalHandlingData[62].iVehicleID = 62; - m_OriginalHandlingData[62].fMass = 1900.000000f; - m_OriginalHandlingData[62].fTurnMass = 4000.000000f; - m_OriginalHandlingData[62].fDragCoeff = 2.600000f; - m_OriginalHandlingData[62].vecCenterOfMass = CVector(0.000000f, -0.500000f, -0.400000f); - m_OriginalHandlingData[62].uiPercentSubmerged = 85; - m_OriginalHandlingData[62].fTractionMultiplier = 0.600000f; - m_OriginalHandlingData[62].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[62].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[62].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[62].Transmission.uiHandlingFlags = 4194304; - m_OriginalHandlingData[62].Transmission.fEngineAcceleration = 6.400000f; - m_OriginalHandlingData[62].Transmission.fEngineInertia = 20.000000f; - m_OriginalHandlingData[62].Transmission.fMaxVelocity = 120.000000f; - m_OriginalHandlingData[62].fBrakeDeceleration = 8.500000f; - m_OriginalHandlingData[62].fBrakeBias = 0.450000f; - m_OriginalHandlingData[62].bABS = false; - m_OriginalHandlingData[62].fSteeringLock = 30.000000f; - m_OriginalHandlingData[62].fTractionLoss = 0.800000f; - m_OriginalHandlingData[62].fTractionBias = 0.460000f; - m_OriginalHandlingData[62].fSuspensionForceLevel = 1.100000f; - m_OriginalHandlingData[62].fSuspensionDamping = 0.080000f; - m_OriginalHandlingData[62].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[62].fSuspensionUpperLimit = 0.350000f; - m_OriginalHandlingData[62].fSuspensionLowerLimit = -0.100000f; - m_OriginalHandlingData[62].fSuspensionFrontRearBias = 0.400000f; - m_OriginalHandlingData[62].fSuspensionAntiDiveMultiplier = 0.500000f; - m_OriginalHandlingData[62].fCollisionDamageMultiplier = 0.500000f; - m_OriginalHandlingData[62].uiModelFlags = 0x4000C000; - m_OriginalHandlingData[62].uiHandlingFlags = 0x400000; - m_OriginalHandlingData[62].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[62].uiMonetary = 26000; - m_OriginalHandlingData[62].ucHeadLight = 0; - m_OriginalHandlingData[62].ucTailLight = 1; - m_OriginalHandlingData[62].ucAnimGroup = 0; - - m_OriginalHandlingData[63].iVehicleID = 63; - m_OriginalHandlingData[63].fMass = 1000.000000f; - m_OriginalHandlingData[63].fTurnMass = 1354.199951f; - m_OriginalHandlingData[63].fDragCoeff = 5.000000f; - m_OriginalHandlingData[63].vecCenterOfMass = CVector(0.000000f, 0.400000f, -0.200000f); - m_OriginalHandlingData[63].uiPercentSubmerged = 70; - m_OriginalHandlingData[63].fTractionMultiplier = 1.000000f; - m_OriginalHandlingData[63].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[63].Transmission.ucEngineType = 'E'; - m_OriginalHandlingData[63].Transmission.ucNumberOfGears = 3; - m_OriginalHandlingData[63].Transmission.uiHandlingFlags = 4; - m_OriginalHandlingData[63].Transmission.fEngineAcceleration = 8.000000f; - m_OriginalHandlingData[63].Transmission.fEngineInertia = 30.000000f; - m_OriginalHandlingData[63].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[63].fBrakeDeceleration = 5.000000f; - m_OriginalHandlingData[63].fBrakeBias = 0.500000f; - m_OriginalHandlingData[63].bABS = false; - m_OriginalHandlingData[63].fSteeringLock = 30.000000f; - m_OriginalHandlingData[63].fTractionLoss = 0.850000f; - m_OriginalHandlingData[63].fTractionBias = 0.500000f; - m_OriginalHandlingData[63].fSuspensionForceLevel = 2.000000f; - m_OriginalHandlingData[63].fSuspensionDamping = 0.090000f; - m_OriginalHandlingData[63].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[63].fSuspensionUpperLimit = 0.250000f; - m_OriginalHandlingData[63].fSuspensionLowerLimit = -0.100000f; - m_OriginalHandlingData[63].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[63].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[63].fCollisionDamageMultiplier = 0.500000f; - m_OriginalHandlingData[63].uiModelFlags = 0x3300; - m_OriginalHandlingData[63].uiHandlingFlags = 0x4; - m_OriginalHandlingData[63].fSeatOffsetDistance = 0.260000f; - m_OriginalHandlingData[63].uiMonetary = 9000; - m_OriginalHandlingData[63].ucHeadLight = 1; - m_OriginalHandlingData[63].ucTailLight = 1; - m_OriginalHandlingData[63].ucAnimGroup = 0; - - m_OriginalHandlingData[64].iVehicleID = 64; - m_OriginalHandlingData[64].fMass = 10000.000000f; - m_OriginalHandlingData[64].fTurnMass = 35000.000000f; - m_OriginalHandlingData[64].fDragCoeff = 20.000000f; - m_OriginalHandlingData[64].vecCenterOfMass = CVector(0.000000f, -0.500000f, -0.500000f); - m_OriginalHandlingData[64].uiPercentSubmerged = 90; - m_OriginalHandlingData[64].fTractionMultiplier = 0.850000f; - m_OriginalHandlingData[64].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[64].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[64].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[64].Transmission.uiHandlingFlags = 3408416; - m_OriginalHandlingData[64].Transmission.fEngineAcceleration = 14.000000f; - m_OriginalHandlingData[64].Transmission.fEngineInertia = 150.000000f; - m_OriginalHandlingData[64].Transmission.fMaxVelocity = 100.000000f; - m_OriginalHandlingData[64].fBrakeDeceleration = 5.000000f; - m_OriginalHandlingData[64].fBrakeBias = 0.400000f; - m_OriginalHandlingData[64].bABS = false; - m_OriginalHandlingData[64].fSteeringLock = 45.000000f; - m_OriginalHandlingData[64].fTractionLoss = 0.800000f; - m_OriginalHandlingData[64].fTractionBias = 0.600000f; - m_OriginalHandlingData[64].fSuspensionForceLevel = 1.400000f; - m_OriginalHandlingData[64].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[64].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[64].fSuspensionUpperLimit = 0.250000f; - m_OriginalHandlingData[64].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[64].fSuspensionFrontRearBias = 0.350000f; - m_OriginalHandlingData[64].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[64].fCollisionDamageMultiplier = 0.200000f; - m_OriginalHandlingData[64].uiModelFlags = 0x308; - m_OriginalHandlingData[64].uiHandlingFlags = 0x340220; - m_OriginalHandlingData[64].fSeatOffsetDistance = 0.450000f; - m_OriginalHandlingData[64].uiMonetary = 5000; - m_OriginalHandlingData[64].ucHeadLight = 0; - m_OriginalHandlingData[64].ucTailLight = 1; - m_OriginalHandlingData[64].ucAnimGroup = 17; - - m_OriginalHandlingData[65].iVehicleID = 65; - m_OriginalHandlingData[65].fMass = 2500.000000f; - m_OriginalHandlingData[65].fTurnMass = 7604.200195f; - m_OriginalHandlingData[65].fDragCoeff = 2.500000f; - m_OriginalHandlingData[65].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.350000f); - m_OriginalHandlingData[65].uiPercentSubmerged = 80; - m_OriginalHandlingData[65].fTractionMultiplier = 0.700000f; - m_OriginalHandlingData[65].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[65].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[65].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[65].Transmission.uiHandlingFlags = 1048580; - m_OriginalHandlingData[65].Transmission.fEngineAcceleration = 8.000000f; - m_OriginalHandlingData[65].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[65].Transmission.fMaxVelocity = 170.000000f; - m_OriginalHandlingData[65].fBrakeDeceleration = 7.000000f; - m_OriginalHandlingData[65].fBrakeBias = 0.450000f; - m_OriginalHandlingData[65].bABS = false; - m_OriginalHandlingData[65].fSteeringLock = 35.000000f; - m_OriginalHandlingData[65].fTractionLoss = 0.850000f; - m_OriginalHandlingData[65].fTractionBias = 0.540000f; - m_OriginalHandlingData[65].fSuspensionForceLevel = 0.800000f; - m_OriginalHandlingData[65].fSuspensionDamping = 0.080000f; - m_OriginalHandlingData[65].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[65].fSuspensionUpperLimit = 0.450000f; - m_OriginalHandlingData[65].fSuspensionLowerLimit = -0.250000f; - m_OriginalHandlingData[65].fSuspensionFrontRearBias = 0.450000f; - m_OriginalHandlingData[65].fSuspensionAntiDiveMultiplier = 0.300000f; - m_OriginalHandlingData[65].fCollisionDamageMultiplier = 0.350000f; - m_OriginalHandlingData[65].uiModelFlags = 0x4020; - m_OriginalHandlingData[65].uiHandlingFlags = 0x100004; - m_OriginalHandlingData[65].fSeatOffsetDistance = 0.440000f; - m_OriginalHandlingData[65].uiMonetary = 40000; - m_OriginalHandlingData[65].ucHeadLight = 0; - m_OriginalHandlingData[65].ucTailLight = 1; - m_OriginalHandlingData[65].ucAnimGroup = 0; - - m_OriginalHandlingData[66].iVehicleID = 66; - m_OriginalHandlingData[66].fMass = 3500.000000f; - m_OriginalHandlingData[66].fTurnMass = 11156.200195f; - m_OriginalHandlingData[66].fDragCoeff = 2.200000f; - m_OriginalHandlingData[66].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.200000f); - m_OriginalHandlingData[66].uiPercentSubmerged = 80; - m_OriginalHandlingData[66].fTractionMultiplier = 0.800000f; - m_OriginalHandlingData[66].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[66].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[66].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[66].Transmission.uiHandlingFlags = 5242880; - m_OriginalHandlingData[66].Transmission.fEngineAcceleration = 8.800000f; - m_OriginalHandlingData[66].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[66].Transmission.fMaxVelocity = 170.000000f; - m_OriginalHandlingData[66].fBrakeDeceleration = 8.500000f; - m_OriginalHandlingData[66].fBrakeBias = 0.500000f; - m_OriginalHandlingData[66].bABS = false; - m_OriginalHandlingData[66].fSteeringLock = 30.000000f; - m_OriginalHandlingData[66].fTractionLoss = 0.800000f; - m_OriginalHandlingData[66].fTractionBias = 0.520000f; - m_OriginalHandlingData[66].fSuspensionForceLevel = 0.700000f; - m_OriginalHandlingData[66].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[66].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[66].fSuspensionUpperLimit = 0.340000f; - m_OriginalHandlingData[66].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[66].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[66].fSuspensionAntiDiveMultiplier = 0.500000f; - m_OriginalHandlingData[66].fCollisionDamageMultiplier = 0.300000f; - m_OriginalHandlingData[66].uiModelFlags = 0x4020; - m_OriginalHandlingData[66].uiHandlingFlags = 0x500000; - m_OriginalHandlingData[66].fSeatOffsetDistance = 0.440000f; - m_OriginalHandlingData[66].uiMonetary = 40000; - m_OriginalHandlingData[66].ucHeadLight = 0; - m_OriginalHandlingData[66].ucTailLight = 1; - m_OriginalHandlingData[66].ucAnimGroup = 0; - - m_OriginalHandlingData[67].iVehicleID = 67; - m_OriginalHandlingData[67].fMass = 1700.000000f; - m_OriginalHandlingData[67].fTurnMass = 3435.399902f; - m_OriginalHandlingData[67].fDragCoeff = 2.000000f; - m_OriginalHandlingData[67].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.100000f); - m_OriginalHandlingData[67].uiPercentSubmerged = 70; - m_OriginalHandlingData[67].fTractionMultiplier = 0.700000f; - m_OriginalHandlingData[67].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[67].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[67].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[67].Transmission.uiHandlingFlags = 268435456; - m_OriginalHandlingData[67].Transmission.fEngineAcceleration = 7.200000f; - m_OriginalHandlingData[67].Transmission.fEngineInertia = 15.000000f; - m_OriginalHandlingData[67].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[67].fBrakeDeceleration = 7.000000f; - m_OriginalHandlingData[67].fBrakeBias = 0.500000f; - m_OriginalHandlingData[67].bABS = false; - m_OriginalHandlingData[67].fSteeringLock = 32.000000f; - m_OriginalHandlingData[67].fTractionLoss = 0.860000f; - m_OriginalHandlingData[67].fTractionBias = 0.500000f; - m_OriginalHandlingData[67].fSuspensionForceLevel = 0.800000f; - m_OriginalHandlingData[67].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[67].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[67].fSuspensionUpperLimit = 0.310000f; - m_OriginalHandlingData[67].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[67].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[67].fSuspensionAntiDiveMultiplier = 0.500000f; - m_OriginalHandlingData[67].fCollisionDamageMultiplier = 0.850000f; - m_OriginalHandlingData[67].uiModelFlags = 0x40000000; - m_OriginalHandlingData[67].uiHandlingFlags = 0x10000000; - m_OriginalHandlingData[67].fSeatOffsetDistance = 0.260000f; - m_OriginalHandlingData[67].uiMonetary = 9000; - m_OriginalHandlingData[67].ucHeadLight = 0; - m_OriginalHandlingData[67].ucTailLight = 0; - m_OriginalHandlingData[67].ucAnimGroup = 0; - - m_OriginalHandlingData[68].iVehicleID = 68; - m_OriginalHandlingData[68].fMass = 1600.000000f; - m_OriginalHandlingData[68].fTurnMass = 4000.000000f; - m_OriginalHandlingData[68].fDragCoeff = 2.500000f; - m_OriginalHandlingData[68].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[68].uiPercentSubmerged = 70; - m_OriginalHandlingData[68].fTractionMultiplier = 0.700000f; - m_OriginalHandlingData[68].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[68].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[68].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[68].Transmission.uiHandlingFlags = 268435457; - m_OriginalHandlingData[68].Transmission.fEngineAcceleration = 8.000000f; - m_OriginalHandlingData[68].Transmission.fEngineInertia = 20.000000f; - m_OriginalHandlingData[68].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[68].fBrakeDeceleration = 5.400000f; - m_OriginalHandlingData[68].fBrakeBias = 0.600000f; - m_OriginalHandlingData[68].bABS = false; - m_OriginalHandlingData[68].fSteeringLock = 30.000000f; - m_OriginalHandlingData[68].fTractionLoss = 0.800000f; - m_OriginalHandlingData[68].fTractionBias = 0.520000f; - m_OriginalHandlingData[68].fSuspensionForceLevel = 1.100000f; - m_OriginalHandlingData[68].fSuspensionDamping = 0.120000f; - m_OriginalHandlingData[68].fSuspensionHighSpdDamping = 5.000000f; - m_OriginalHandlingData[68].fSuspensionUpperLimit = 0.320000f; - m_OriginalHandlingData[68].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[68].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[68].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[68].fCollisionDamageMultiplier = 0.540000f; - m_OriginalHandlingData[68].uiModelFlags = 0x0; - m_OriginalHandlingData[68].uiHandlingFlags = 0x10000001; - m_OriginalHandlingData[68].fSeatOffsetDistance = 0.220000f; - m_OriginalHandlingData[68].uiMonetary = 19000; - m_OriginalHandlingData[68].ucHeadLight = 0; - m_OriginalHandlingData[68].ucTailLight = 3; - m_OriginalHandlingData[68].ucAnimGroup = 0; - - m_OriginalHandlingData[69].iVehicleID = 69; - m_OriginalHandlingData[69].fMass = 1600.000000f; - m_OriginalHandlingData[69].fTurnMass = 4500.000000f; - m_OriginalHandlingData[69].fDragCoeff = 1.400000f; - m_OriginalHandlingData[69].vecCenterOfMass = CVector(0.000000f, 0.200000f, -0.400000f); - m_OriginalHandlingData[69].uiPercentSubmerged = 70; - m_OriginalHandlingData[69].fTractionMultiplier = 0.850000f; - m_OriginalHandlingData[69].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[69].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[69].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[69].Transmission.uiHandlingFlags = 12582912; - m_OriginalHandlingData[69].Transmission.fEngineAcceleration = 10.400000f; - m_OriginalHandlingData[69].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[69].Transmission.fMaxVelocity = 220.000000f; - m_OriginalHandlingData[69].fBrakeDeceleration = 10.000000f; - m_OriginalHandlingData[69].fBrakeBias = 0.520000f; - m_OriginalHandlingData[69].bABS = false; - m_OriginalHandlingData[69].fSteeringLock = 30.000000f; - m_OriginalHandlingData[69].fTractionLoss = 0.800000f; - m_OriginalHandlingData[69].fTractionBias = 0.480000f; - m_OriginalHandlingData[69].fSuspensionForceLevel = 1.500000f; - m_OriginalHandlingData[69].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[69].fSuspensionHighSpdDamping = 10.000000f; - m_OriginalHandlingData[69].fSuspensionUpperLimit = 0.290000f; - m_OriginalHandlingData[69].fSuspensionLowerLimit = -0.160000f; - m_OriginalHandlingData[69].fSuspensionFrontRearBias = 0.600000f; - m_OriginalHandlingData[69].fSuspensionAntiDiveMultiplier = 0.400000f; - m_OriginalHandlingData[69].fCollisionDamageMultiplier = 0.560000f; - m_OriginalHandlingData[69].uiModelFlags = 0x40002004; - m_OriginalHandlingData[69].uiHandlingFlags = 0xC00000; - m_OriginalHandlingData[69].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[69].uiMonetary = 45000; - m_OriginalHandlingData[69].ucHeadLight = 1; - m_OriginalHandlingData[69].ucTailLight = 1; - m_OriginalHandlingData[69].ucAnimGroup = 0; - - m_OriginalHandlingData[70].iVehicleID = 70; - m_OriginalHandlingData[70].fMass = 2000.000000f; - m_OriginalHandlingData[70].fTurnMass = 4000.000000f; - m_OriginalHandlingData[70].fDragCoeff = 2.200000f; - m_OriginalHandlingData[70].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.600000f); - m_OriginalHandlingData[70].uiPercentSubmerged = 80; - m_OriginalHandlingData[70].fTractionMultiplier = 0.750000f; - m_OriginalHandlingData[70].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[70].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[70].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[70].Transmission.uiHandlingFlags = 3246080; - m_OriginalHandlingData[70].Transmission.fEngineAcceleration = 11.200000f; - m_OriginalHandlingData[70].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[70].Transmission.fMaxVelocity = 170.000000f; - m_OriginalHandlingData[70].fBrakeDeceleration = 8.000000f; - m_OriginalHandlingData[70].fBrakeBias = 0.500000f; - m_OriginalHandlingData[70].bABS = false; - m_OriginalHandlingData[70].fSteeringLock = 30.000000f; - m_OriginalHandlingData[70].fTractionLoss = 0.850000f; - m_OriginalHandlingData[70].fTractionBias = 0.500000f; - m_OriginalHandlingData[70].fSuspensionForceLevel = 0.800000f; - m_OriginalHandlingData[70].fSuspensionDamping = 0.080000f; - m_OriginalHandlingData[70].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[70].fSuspensionUpperLimit = 0.350000f; - m_OriginalHandlingData[70].fSuspensionLowerLimit = -0.310000f; - m_OriginalHandlingData[70].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[70].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[70].fCollisionDamageMultiplier = 0.350000f; - m_OriginalHandlingData[70].uiModelFlags = 0x0; - m_OriginalHandlingData[70].uiHandlingFlags = 0x318800; - m_OriginalHandlingData[70].fSeatOffsetDistance = 0.380000f; - m_OriginalHandlingData[70].uiMonetary = 40000; - m_OriginalHandlingData[70].ucHeadLight = 0; - m_OriginalHandlingData[70].ucTailLight = 1; - m_OriginalHandlingData[70].ucAnimGroup = 22; - - m_OriginalHandlingData[71].iVehicleID = 71; - m_OriginalHandlingData[71].fMass = 1000.000000f; - m_OriginalHandlingData[71].fTurnMass = 2141.699951f; - m_OriginalHandlingData[71].fDragCoeff = 2.400000f; - m_OriginalHandlingData[71].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.100000f); - m_OriginalHandlingData[71].uiPercentSubmerged = 50; - m_OriginalHandlingData[71].fTractionMultiplier = 0.850000f; - m_OriginalHandlingData[71].Transmission.ucDriveType = 'F'; - m_OriginalHandlingData[71].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[71].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[71].Transmission.uiHandlingFlags = 12582912; - m_OriginalHandlingData[71].Transmission.fEngineAcceleration = 10.400000f; - m_OriginalHandlingData[71].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[71].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[71].fBrakeDeceleration = 11.000000f; - m_OriginalHandlingData[71].fBrakeBias = 0.450000f; - m_OriginalHandlingData[71].bABS = false; - m_OriginalHandlingData[71].fSteeringLock = 30.000000f; - m_OriginalHandlingData[71].fTractionLoss = 0.850000f; - m_OriginalHandlingData[71].fTractionBias = 0.500000f; - m_OriginalHandlingData[71].fSuspensionForceLevel = 1.400000f; - m_OriginalHandlingData[71].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[71].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[71].fSuspensionUpperLimit = 0.280000f; - m_OriginalHandlingData[71].fSuspensionLowerLimit = -0.120000f; - m_OriginalHandlingData[71].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[71].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[71].fCollisionDamageMultiplier = 0.500000f; - m_OriginalHandlingData[71].uiModelFlags = 0xC0000000; - m_OriginalHandlingData[71].uiHandlingFlags = 0xC00000; - m_OriginalHandlingData[71].fSeatOffsetDistance = 0.250000f; - m_OriginalHandlingData[71].uiMonetary = 35000; - m_OriginalHandlingData[71].ucHeadLight = 1; - m_OriginalHandlingData[71].ucTailLight = 1; - m_OriginalHandlingData[71].ucAnimGroup = 0; - - m_OriginalHandlingData[72].iVehicleID = 72; - m_OriginalHandlingData[72].fMass = 5500.000000f; - m_OriginalHandlingData[72].fTurnMass = 23489.599609f; - m_OriginalHandlingData[72].fDragCoeff = 3.000000f; - m_OriginalHandlingData[72].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[72].uiPercentSubmerged = 80; - m_OriginalHandlingData[72].fTractionMultiplier = 0.820000f; - m_OriginalHandlingData[72].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[72].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[72].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[72].Transmission.uiHandlingFlags = 513; - m_OriginalHandlingData[72].Transmission.fEngineAcceleration = 5.600000f; - m_OriginalHandlingData[72].Transmission.fEngineInertia = 25.000000f; - m_OriginalHandlingData[72].Transmission.fMaxVelocity = 140.000000f; - m_OriginalHandlingData[72].fBrakeDeceleration = 4.500000f; - m_OriginalHandlingData[72].fBrakeBias = 0.600000f; - m_OriginalHandlingData[72].bABS = false; - m_OriginalHandlingData[72].fSteeringLock = 30.000000f; - m_OriginalHandlingData[72].fTractionLoss = 0.700000f; - m_OriginalHandlingData[72].fTractionBias = 0.460000f; - m_OriginalHandlingData[72].fSuspensionForceLevel = 0.900000f; - m_OriginalHandlingData[72].fSuspensionDamping = 0.080000f; - m_OriginalHandlingData[72].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[72].fSuspensionUpperLimit = 0.250000f; - m_OriginalHandlingData[72].fSuspensionLowerLimit = -0.250000f; - m_OriginalHandlingData[72].fSuspensionFrontRearBias = 0.350000f; - m_OriginalHandlingData[72].fSuspensionAntiDiveMultiplier = 0.600000f; - m_OriginalHandlingData[72].fCollisionDamageMultiplier = 0.400000f; - m_OriginalHandlingData[72].uiModelFlags = 0x4009; - m_OriginalHandlingData[72].uiHandlingFlags = 0x201; - m_OriginalHandlingData[72].fSeatOffsetDistance = 0.260000f; - m_OriginalHandlingData[72].uiMonetary = 22000; - m_OriginalHandlingData[72].ucHeadLight = 0; - m_OriginalHandlingData[72].ucTailLight = 3; - m_OriginalHandlingData[72].ucAnimGroup = 13; - - m_OriginalHandlingData[73].iVehicleID = 73; - m_OriginalHandlingData[73].fMass = 3500.000000f; - m_OriginalHandlingData[73].fTurnMass = 13865.799805f; - m_OriginalHandlingData[73].fDragCoeff = 2.300000f; - m_OriginalHandlingData[73].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.200000f); - m_OriginalHandlingData[73].uiPercentSubmerged = 80; - m_OriginalHandlingData[73].fTractionMultiplier = 0.750000f; - m_OriginalHandlingData[73].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[73].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[73].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[73].Transmission.uiHandlingFlags = 1; - m_OriginalHandlingData[73].Transmission.fEngineAcceleration = 5.600000f; - m_OriginalHandlingData[73].Transmission.fEngineInertia = 20.000000f; - m_OriginalHandlingData[73].Transmission.fMaxVelocity = 140.000000f; - m_OriginalHandlingData[73].fBrakeDeceleration = 4.500000f; - m_OriginalHandlingData[73].fBrakeBias = 0.600000f; - m_OriginalHandlingData[73].bABS = false; - m_OriginalHandlingData[73].fSteeringLock = 30.000000f; - m_OriginalHandlingData[73].fTractionLoss = 0.700000f; - m_OriginalHandlingData[73].fTractionBias = 0.460000f; - m_OriginalHandlingData[73].fSuspensionForceLevel = 1.200000f; - m_OriginalHandlingData[73].fSuspensionDamping = 0.200000f; - m_OriginalHandlingData[73].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[73].fSuspensionUpperLimit = 0.350000f; - m_OriginalHandlingData[73].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[73].fSuspensionFrontRearBias = 0.450000f; - m_OriginalHandlingData[73].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[73].fCollisionDamageMultiplier = 0.530000f; - m_OriginalHandlingData[73].uiModelFlags = 0x4088; - m_OriginalHandlingData[73].uiHandlingFlags = 0x1; - m_OriginalHandlingData[73].fSeatOffsetDistance = 0.460000f; - m_OriginalHandlingData[73].uiMonetary = 22000; - m_OriginalHandlingData[73].ucHeadLight = 1; - m_OriginalHandlingData[73].ucTailLight = 3; - m_OriginalHandlingData[73].ucAnimGroup = 0; - - m_OriginalHandlingData[74].iVehicleID = 74; - m_OriginalHandlingData[74].fMass = 1300.000000f; - m_OriginalHandlingData[74].fTurnMass = 1900.000000f; - m_OriginalHandlingData[74].fDragCoeff = 3.000000f; - m_OriginalHandlingData[74].vecCenterOfMass = CVector(0.000000f, 0.200000f, -0.300000f); - m_OriginalHandlingData[74].uiPercentSubmerged = 85; - m_OriginalHandlingData[74].fTractionMultiplier = 0.700000f; - m_OriginalHandlingData[74].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[74].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[74].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[74].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[74].Transmission.fEngineAcceleration = 9.600000f; - m_OriginalHandlingData[74].Transmission.fEngineInertia = 15.000000f; - m_OriginalHandlingData[74].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[74].fBrakeDeceleration = 8.000000f; - m_OriginalHandlingData[74].fBrakeBias = 0.500000f; - m_OriginalHandlingData[74].bABS = false; - m_OriginalHandlingData[74].fSteeringLock = 35.000000f; - m_OriginalHandlingData[74].fTractionLoss = 0.800000f; - m_OriginalHandlingData[74].fTractionBias = 0.500000f; - m_OriginalHandlingData[74].fSuspensionForceLevel = 1.200000f; - m_OriginalHandlingData[74].fSuspensionDamping = 0.080000f; - m_OriginalHandlingData[74].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[74].fSuspensionUpperLimit = 0.320000f; - m_OriginalHandlingData[74].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[74].fSuspensionFrontRearBias = 0.350000f; - m_OriginalHandlingData[74].fSuspensionAntiDiveMultiplier = 0.400000f; - m_OriginalHandlingData[74].fCollisionDamageMultiplier = 0.300000f; - m_OriginalHandlingData[74].uiModelFlags = 0x200840; - m_OriginalHandlingData[74].uiHandlingFlags = 0x0; - m_OriginalHandlingData[74].fSeatOffsetDistance = 0.180000f; - m_OriginalHandlingData[74].uiMonetary = 25000; - m_OriginalHandlingData[74].ucHeadLight = 0; - m_OriginalHandlingData[74].ucTailLight = 1; - m_OriginalHandlingData[74].ucAnimGroup = 0; - - m_OriginalHandlingData[75].iVehicleID = 75; - m_OriginalHandlingData[75].fMass = 2100.000000f; - m_OriginalHandlingData[75].fTurnMass = 5146.700195f; - m_OriginalHandlingData[75].fDragCoeff = 2.000000f; - m_OriginalHandlingData[75].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[75].uiPercentSubmerged = 75; - m_OriginalHandlingData[75].fTractionMultiplier = 0.750000f; - m_OriginalHandlingData[75].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[75].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[75].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[75].Transmission.uiHandlingFlags = 276824576; - m_OriginalHandlingData[75].Transmission.fEngineAcceleration = 9.600000f; - m_OriginalHandlingData[75].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[75].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[75].fBrakeDeceleration = 6.200000f; - m_OriginalHandlingData[75].fBrakeBias = 0.550000f; - m_OriginalHandlingData[75].bABS = false; - m_OriginalHandlingData[75].fSteeringLock = 35.000000f; - m_OriginalHandlingData[75].fTractionLoss = 0.700000f; - m_OriginalHandlingData[75].fTractionBias = 0.520000f; - m_OriginalHandlingData[75].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[75].fSuspensionDamping = 0.060000f; - m_OriginalHandlingData[75].fSuspensionHighSpdDamping = 3.000000f; - m_OriginalHandlingData[75].fSuspensionUpperLimit = 0.350000f; - m_OriginalHandlingData[75].fSuspensionLowerLimit = -0.240000f; - m_OriginalHandlingData[75].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[75].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[75].fCollisionDamageMultiplier = 0.300000f; - m_OriginalHandlingData[75].uiModelFlags = 0x100; - m_OriginalHandlingData[75].uiHandlingFlags = 0x10800200; - m_OriginalHandlingData[75].fSeatOffsetDistance = 0.280000f; - m_OriginalHandlingData[75].uiMonetary = 500; - m_OriginalHandlingData[75].ucHeadLight = 1; - m_OriginalHandlingData[75].ucTailLight = 1; - m_OriginalHandlingData[75].ucAnimGroup = 25; - - m_OriginalHandlingData[76].iVehicleID = 76; - m_OriginalHandlingData[76].fMass = 1600.000000f; - m_OriginalHandlingData[76].fTurnMass = 3866.699951f; - m_OriginalHandlingData[76].fDragCoeff = 2.000000f; - m_OriginalHandlingData[76].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[76].uiPercentSubmerged = 75; - m_OriginalHandlingData[76].fTractionMultiplier = 0.800000f; - m_OriginalHandlingData[76].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[76].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[76].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[76].Transmission.uiHandlingFlags = 8389120; - m_OriginalHandlingData[76].Transmission.fEngineAcceleration = 10.400000f; - m_OriginalHandlingData[76].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[76].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[76].fBrakeDeceleration = 6.200000f; - m_OriginalHandlingData[76].fBrakeBias = 0.550000f; - m_OriginalHandlingData[76].bABS = false; - m_OriginalHandlingData[76].fSteeringLock = 35.000000f; - m_OriginalHandlingData[76].fTractionLoss = 0.700000f; - m_OriginalHandlingData[76].fTractionBias = 0.520000f; - m_OriginalHandlingData[76].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[76].fSuspensionDamping = 0.060000f; - m_OriginalHandlingData[76].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[76].fSuspensionUpperLimit = 0.350000f; - m_OriginalHandlingData[76].fSuspensionLowerLimit = -0.170000f; - m_OriginalHandlingData[76].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[76].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[76].fCollisionDamageMultiplier = 0.300000f; - m_OriginalHandlingData[76].uiModelFlags = 0x0; - m_OriginalHandlingData[76].uiHandlingFlags = 0x800200; - m_OriginalHandlingData[76].fSeatOffsetDistance = 0.280000f; - m_OriginalHandlingData[76].uiMonetary = 500; - m_OriginalHandlingData[76].ucHeadLight = 1; - m_OriginalHandlingData[76].ucTailLight = 1; - m_OriginalHandlingData[76].ucAnimGroup = 0; - - m_OriginalHandlingData[77].iVehicleID = 77; - m_OriginalHandlingData[77].fMass = 1400.000000f; - m_OriginalHandlingData[77].fTurnMass = 2800.000000f; - m_OriginalHandlingData[77].fDragCoeff = 2.000000f; - m_OriginalHandlingData[77].vecCenterOfMass = CVector(0.000000f, -0.200000f, -0.240000f); - m_OriginalHandlingData[77].uiPercentSubmerged = 70; - m_OriginalHandlingData[77].fTractionMultiplier = 0.750000f; - m_OriginalHandlingData[77].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[77].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[77].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[77].Transmission.uiHandlingFlags = 2129920; - m_OriginalHandlingData[77].Transmission.fEngineAcceleration = 10.400000f; - m_OriginalHandlingData[77].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[77].Transmission.fMaxVelocity = 230.000000f; - m_OriginalHandlingData[77].fBrakeDeceleration = 8.000000f; - m_OriginalHandlingData[77].fBrakeBias = 0.520000f; - m_OriginalHandlingData[77].bABS = false; - m_OriginalHandlingData[77].fSteeringLock = 30.000000f; - m_OriginalHandlingData[77].fTractionLoss = 0.860000f; - m_OriginalHandlingData[77].fTractionBias = 0.480000f; - m_OriginalHandlingData[77].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[77].fSuspensionDamping = 0.200000f; - m_OriginalHandlingData[77].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[77].fSuspensionUpperLimit = 0.250000f; - m_OriginalHandlingData[77].fSuspensionLowerLimit = -0.100000f; - m_OriginalHandlingData[77].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[77].fSuspensionAntiDiveMultiplier = 0.300000f; - m_OriginalHandlingData[77].fCollisionDamageMultiplier = 0.540000f; - m_OriginalHandlingData[77].uiModelFlags = 0x40002004; - m_OriginalHandlingData[77].uiHandlingFlags = 0x208000; - m_OriginalHandlingData[77].fSeatOffsetDistance = 0.400000f; - m_OriginalHandlingData[77].uiMonetary = 105000; - m_OriginalHandlingData[77].ucHeadLight = 0; - m_OriginalHandlingData[77].ucTailLight = 0; - m_OriginalHandlingData[77].ucAnimGroup = 1; - - m_OriginalHandlingData[78].iVehicleID = 78; - m_OriginalHandlingData[78].fMass = 2200.000000f; - m_OriginalHandlingData[78].fTurnMass = 5000.000000f; - m_OriginalHandlingData[78].fDragCoeff = 1.800000f; - m_OriginalHandlingData[78].vecCenterOfMass = CVector(0.000000f, 0.100000f, -0.100000f); - m_OriginalHandlingData[78].uiPercentSubmerged = 75; - m_OriginalHandlingData[78].fTractionMultiplier = 0.700000f; - m_OriginalHandlingData[78].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[78].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[78].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[78].Transmission.uiHandlingFlags = 272629760; - m_OriginalHandlingData[78].Transmission.fEngineAcceleration = 8.000000f; - m_OriginalHandlingData[78].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[78].Transmission.fMaxVelocity = 165.000000f; - m_OriginalHandlingData[78].fBrakeDeceleration = 6.000000f; - m_OriginalHandlingData[78].fBrakeBias = 0.550000f; - m_OriginalHandlingData[78].bABS = false; - m_OriginalHandlingData[78].fSteeringLock = 30.000000f; - m_OriginalHandlingData[78].fTractionLoss = 0.800000f; - m_OriginalHandlingData[78].fTractionBias = 0.460000f; - m_OriginalHandlingData[78].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[78].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[78].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[78].fSuspensionUpperLimit = 0.350000f; - m_OriginalHandlingData[78].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[78].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[78].fSuspensionAntiDiveMultiplier = 0.300000f; - m_OriginalHandlingData[78].fCollisionDamageMultiplier = 0.300000f; - m_OriginalHandlingData[78].uiModelFlags = 0x40000000; - m_OriginalHandlingData[78].uiHandlingFlags = 0x10400000; - m_OriginalHandlingData[78].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[78].uiMonetary = 35000; - m_OriginalHandlingData[78].ucHeadLight = 0; - m_OriginalHandlingData[78].ucTailLight = 1; - m_OriginalHandlingData[78].ucAnimGroup = 0; - - m_OriginalHandlingData[79].iVehicleID = 79; - m_OriginalHandlingData[79].fMass = 3500.000000f; - m_OriginalHandlingData[79].fTurnMass = 13865.799805f; - m_OriginalHandlingData[79].fDragCoeff = 3.000000f; - m_OriginalHandlingData[79].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[79].uiPercentSubmerged = 80; - m_OriginalHandlingData[79].fTractionMultiplier = 0.620000f; - m_OriginalHandlingData[79].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[79].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[79].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[79].Transmission.uiHandlingFlags = 1; - m_OriginalHandlingData[79].Transmission.fEngineAcceleration = 5.600000f; - m_OriginalHandlingData[79].Transmission.fEngineInertia = 25.000000f; - m_OriginalHandlingData[79].Transmission.fMaxVelocity = 140.000000f; - m_OriginalHandlingData[79].fBrakeDeceleration = 4.500000f; - m_OriginalHandlingData[79].fBrakeBias = 0.600000f; - m_OriginalHandlingData[79].bABS = false; - m_OriginalHandlingData[79].fSteeringLock = 30.000000f; - m_OriginalHandlingData[79].fTractionLoss = 0.700000f; - m_OriginalHandlingData[79].fTractionBias = 0.460000f; - m_OriginalHandlingData[79].fSuspensionForceLevel = 1.500000f; - m_OriginalHandlingData[79].fSuspensionDamping = 0.110000f; - m_OriginalHandlingData[79].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[79].fSuspensionUpperLimit = 0.300000f; - m_OriginalHandlingData[79].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[79].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[79].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[79].fCollisionDamageMultiplier = 0.530000f; - m_OriginalHandlingData[79].uiModelFlags = 0x88; - m_OriginalHandlingData[79].uiHandlingFlags = 0x1; - m_OriginalHandlingData[79].fSeatOffsetDistance = 0.460000f; - m_OriginalHandlingData[79].uiMonetary = 22000; - m_OriginalHandlingData[79].ucHeadLight = 0; - m_OriginalHandlingData[79].ucTailLight = 3; - m_OriginalHandlingData[79].ucAnimGroup = 0; - - m_OriginalHandlingData[80].iVehicleID = 80; - m_OriginalHandlingData[80].fMass = 3800.000000f; - m_OriginalHandlingData[80].fTurnMass = 20000.000000f; - m_OriginalHandlingData[80].fDragCoeff = 2.000000f; - m_OriginalHandlingData[80].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.200000f); - m_OriginalHandlingData[80].uiPercentSubmerged = 90; - m_OriginalHandlingData[80].fTractionMultiplier = 0.850000f; - m_OriginalHandlingData[80].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[80].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[80].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[80].Transmission.uiHandlingFlags = 16777217; - m_OriginalHandlingData[80].Transmission.fEngineAcceleration = 10.000000f; - m_OriginalHandlingData[80].Transmission.fEngineInertia = 20.000000f; - m_OriginalHandlingData[80].Transmission.fMaxVelocity = 120.000000f; - m_OriginalHandlingData[80].fBrakeDeceleration = 8.000000f; - m_OriginalHandlingData[80].fBrakeBias = 0.300000f; - m_OriginalHandlingData[80].bABS = false; - m_OriginalHandlingData[80].fSteeringLock = 35.000000f; - m_OriginalHandlingData[80].fTractionLoss = 0.750000f; - m_OriginalHandlingData[80].fTractionBias = 0.400000f; - m_OriginalHandlingData[80].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[80].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[80].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[80].fSuspensionUpperLimit = 0.250000f; - m_OriginalHandlingData[80].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[80].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[80].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[80].fCollisionDamageMultiplier = 0.250000f; - m_OriginalHandlingData[80].uiModelFlags = 0x20206008; - m_OriginalHandlingData[80].uiHandlingFlags = 0x1000001; - m_OriginalHandlingData[80].fSeatOffsetDistance = 0.350000f; - m_OriginalHandlingData[80].uiMonetary = 35000; - m_OriginalHandlingData[80].ucHeadLight = 0; - m_OriginalHandlingData[80].ucTailLight = 1; - m_OriginalHandlingData[80].ucAnimGroup = 2; - - m_OriginalHandlingData[81].iVehicleID = 81; - m_OriginalHandlingData[81].fMass = 5000.000000f; - m_OriginalHandlingData[81].fTurnMass = 28000.000000f; - m_OriginalHandlingData[81].fDragCoeff = 2.000000f; - m_OriginalHandlingData[81].vecCenterOfMass = CVector(0.000000f, 0.500000f, -0.400000f); - m_OriginalHandlingData[81].uiPercentSubmerged = 90; - m_OriginalHandlingData[81].fTractionMultiplier = 0.950000f; - m_OriginalHandlingData[81].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[81].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[81].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[81].Transmission.uiHandlingFlags = 512; - m_OriginalHandlingData[81].Transmission.fEngineAcceleration = 10.000000f; - m_OriginalHandlingData[81].Transmission.fEngineInertia = 20.000000f; - m_OriginalHandlingData[81].Transmission.fMaxVelocity = 120.000000f; - m_OriginalHandlingData[81].fBrakeDeceleration = 8.000000f; - m_OriginalHandlingData[81].fBrakeBias = 0.300000f; - m_OriginalHandlingData[81].bABS = false; - m_OriginalHandlingData[81].fSteeringLock = 25.000000f; - m_OriginalHandlingData[81].fTractionLoss = 0.650000f; - m_OriginalHandlingData[81].fTractionBias = 0.400000f; - m_OriginalHandlingData[81].fSuspensionForceLevel = 0.700000f; - m_OriginalHandlingData[81].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[81].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[81].fSuspensionUpperLimit = 0.200000f; - m_OriginalHandlingData[81].fSuspensionLowerLimit = -0.170000f; - m_OriginalHandlingData[81].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[81].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[81].fCollisionDamageMultiplier = 0.250000f; - m_OriginalHandlingData[81].uiModelFlags = 0x20200008; - m_OriginalHandlingData[81].uiHandlingFlags = 0x200; - m_OriginalHandlingData[81].fSeatOffsetDistance = 0.650000f; - m_OriginalHandlingData[81].uiMonetary = 35000; - m_OriginalHandlingData[81].ucHeadLight = 0; - m_OriginalHandlingData[81].ucTailLight = 1; - m_OriginalHandlingData[81].ucAnimGroup = 2; - - m_OriginalHandlingData[82].iVehicleID = 82; - m_OriginalHandlingData[82].fMass = 1400.000000f; - m_OriginalHandlingData[82].fTurnMass = 4000.000000f; - m_OriginalHandlingData[82].fDragCoeff = 2.000000f; - m_OriginalHandlingData[82].vecCenterOfMass = CVector(0.000000f, 0.300000f, -0.100000f); - m_OriginalHandlingData[82].uiPercentSubmerged = 75; - m_OriginalHandlingData[82].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[82].Transmission.ucDriveType = 'F'; - m_OriginalHandlingData[82].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[82].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[82].Transmission.uiHandlingFlags = 4194304; - m_OriginalHandlingData[82].Transmission.fEngineAcceleration = 8.000000f; - m_OriginalHandlingData[82].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[82].Transmission.fMaxVelocity = 165.000000f; - m_OriginalHandlingData[82].fBrakeDeceleration = 8.000000f; - m_OriginalHandlingData[82].fBrakeBias = 0.550000f; - m_OriginalHandlingData[82].bABS = false; - m_OriginalHandlingData[82].fSteeringLock = 30.000000f; - m_OriginalHandlingData[82].fTractionLoss = 0.800000f; - m_OriginalHandlingData[82].fTractionBias = 0.500000f; - m_OriginalHandlingData[82].fSuspensionForceLevel = 1.400000f; - m_OriginalHandlingData[82].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[82].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[82].fSuspensionUpperLimit = 0.270000f; - m_OriginalHandlingData[82].fSuspensionLowerLimit = -0.100000f; - m_OriginalHandlingData[82].fSuspensionFrontRearBias = 0.580000f; - m_OriginalHandlingData[82].fSuspensionAntiDiveMultiplier = 0.300000f; - m_OriginalHandlingData[82].fCollisionDamageMultiplier = 0.560000f; - m_OriginalHandlingData[82].uiModelFlags = 0x0; - m_OriginalHandlingData[82].uiHandlingFlags = 0x400000; - m_OriginalHandlingData[82].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[82].uiMonetary = 35000; - m_OriginalHandlingData[82].ucHeadLight = 0; - m_OriginalHandlingData[82].ucTailLight = 1; - m_OriginalHandlingData[82].ucAnimGroup = 0; - - m_OriginalHandlingData[83].iVehicleID = 83; - m_OriginalHandlingData[83].fMass = 1400.000000f; - m_OriginalHandlingData[83].fTurnMass = 3267.800049f; - m_OriginalHandlingData[83].fDragCoeff = 2.200000f; - m_OriginalHandlingData[83].vecCenterOfMass = CVector(0.000000f, 0.100000f, -0.100000f); - m_OriginalHandlingData[83].uiPercentSubmerged = 75; - m_OriginalHandlingData[83].fTractionMultiplier = 0.750000f; - m_OriginalHandlingData[83].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[83].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[83].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[83].Transmission.uiHandlingFlags = 272629760; - m_OriginalHandlingData[83].Transmission.fEngineAcceleration = 8.800000f; - m_OriginalHandlingData[83].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[83].Transmission.fMaxVelocity = 165.000000f; - m_OriginalHandlingData[83].fBrakeDeceleration = 7.000000f; - m_OriginalHandlingData[83].fBrakeBias = 0.550000f; - m_OriginalHandlingData[83].bABS = false; - m_OriginalHandlingData[83].fSteeringLock = 30.000000f; - m_OriginalHandlingData[83].fTractionLoss = 0.800000f; - m_OriginalHandlingData[83].fTractionBias = 0.520000f; - m_OriginalHandlingData[83].fSuspensionForceLevel = 1.300000f; - m_OriginalHandlingData[83].fSuspensionDamping = 0.130000f; - m_OriginalHandlingData[83].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[83].fSuspensionUpperLimit = 0.270000f; - m_OriginalHandlingData[83].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[83].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[83].fSuspensionAntiDiveMultiplier = 0.300000f; - m_OriginalHandlingData[83].fCollisionDamageMultiplier = 0.560000f; - m_OriginalHandlingData[83].uiModelFlags = 0x400000; - m_OriginalHandlingData[83].uiHandlingFlags = 0x10400000; - m_OriginalHandlingData[83].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[83].uiMonetary = 35000; - m_OriginalHandlingData[83].ucHeadLight = 0; - m_OriginalHandlingData[83].ucTailLight = 1; - m_OriginalHandlingData[83].ucAnimGroup = 0; - - m_OriginalHandlingData[84].iVehicleID = 84; - m_OriginalHandlingData[84].fMass = 1700.000000f; - m_OriginalHandlingData[84].fTurnMass = 4500.000000f; - m_OriginalHandlingData[84].fDragCoeff = 2.200000f; - m_OriginalHandlingData[84].vecCenterOfMass = CVector(0.000000f, 0.300000f, 0.000000f); - m_OriginalHandlingData[84].uiPercentSubmerged = 70; - m_OriginalHandlingData[84].fTractionMultiplier = 0.600000f; - m_OriginalHandlingData[84].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[84].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[84].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[84].Transmission.uiHandlingFlags = 4; - m_OriginalHandlingData[84].Transmission.fEngineAcceleration = 9.600000f; - m_OriginalHandlingData[84].Transmission.fEngineInertia = 15.000000f; - m_OriginalHandlingData[84].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[84].fBrakeDeceleration = 5.000000f; - m_OriginalHandlingData[84].fBrakeBias = 0.520000f; - m_OriginalHandlingData[84].bABS = false; - m_OriginalHandlingData[84].fSteeringLock = 35.000000f; - m_OriginalHandlingData[84].fTractionLoss = 0.860000f; - m_OriginalHandlingData[84].fTractionBias = 0.540000f; - m_OriginalHandlingData[84].fSuspensionForceLevel = 0.800000f; - m_OriginalHandlingData[84].fSuspensionDamping = 0.080000f; - m_OriginalHandlingData[84].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[84].fSuspensionUpperLimit = 0.200000f; - m_OriginalHandlingData[84].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[84].fSuspensionFrontRearBias = 0.540000f; - m_OriginalHandlingData[84].fSuspensionAntiDiveMultiplier = 0.400000f; - m_OriginalHandlingData[84].fCollisionDamageMultiplier = 0.520000f; - m_OriginalHandlingData[84].uiModelFlags = 0x40400004; - m_OriginalHandlingData[84].uiHandlingFlags = 0x4; - m_OriginalHandlingData[84].fSeatOffsetDistance = 0.300000f; - m_OriginalHandlingData[84].uiMonetary = 19000; - m_OriginalHandlingData[84].ucHeadLight = 1; - m_OriginalHandlingData[84].ucTailLight = 1; - m_OriginalHandlingData[84].ucAnimGroup = 1; - - m_OriginalHandlingData[85].iVehicleID = 85; - m_OriginalHandlingData[85].fMass = 5500.000000f; - m_OriginalHandlingData[85].fTurnMass = 33187.898438f; - m_OriginalHandlingData[85].fDragCoeff = 2.000000f; - m_OriginalHandlingData[85].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[85].uiPercentSubmerged = 90; - m_OriginalHandlingData[85].fTractionMultiplier = 0.580000f; - m_OriginalHandlingData[85].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[85].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[85].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[85].Transmission.uiHandlingFlags = 262656; - m_OriginalHandlingData[85].Transmission.fEngineAcceleration = 8.000000f; - m_OriginalHandlingData[85].Transmission.fEngineInertia = 20.000000f; - m_OriginalHandlingData[85].Transmission.fMaxVelocity = 110.000000f; - m_OriginalHandlingData[85].fBrakeDeceleration = 3.170000f; - m_OriginalHandlingData[85].fBrakeBias = 0.400000f; - m_OriginalHandlingData[85].bABS = false; - m_OriginalHandlingData[85].fSteeringLock = 30.000000f; - m_OriginalHandlingData[85].fTractionLoss = 0.800000f; - m_OriginalHandlingData[85].fTractionBias = 0.500000f; - m_OriginalHandlingData[85].fSuspensionForceLevel = 1.400000f; - m_OriginalHandlingData[85].fSuspensionDamping = 0.060000f; - m_OriginalHandlingData[85].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[85].fSuspensionUpperLimit = 0.450000f; - m_OriginalHandlingData[85].fSuspensionLowerLimit = -0.250000f; - m_OriginalHandlingData[85].fSuspensionFrontRearBias = 0.550000f; - m_OriginalHandlingData[85].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[85].fCollisionDamageMultiplier = 0.200000f; - m_OriginalHandlingData[85].uiModelFlags = 0x404008; - m_OriginalHandlingData[85].uiHandlingFlags = 0x40200; - m_OriginalHandlingData[85].fSeatOffsetDistance = 0.450000f; - m_OriginalHandlingData[85].uiMonetary = 5000; - m_OriginalHandlingData[85].ucHeadLight = 0; - m_OriginalHandlingData[85].ucTailLight = 1; - m_OriginalHandlingData[85].ucAnimGroup = 0; - - m_OriginalHandlingData[86].iVehicleID = 86; - m_OriginalHandlingData[86].fMass = 3500.000000f; - m_OriginalHandlingData[86].fTurnMass = 12000.000000f; - m_OriginalHandlingData[86].fDragCoeff = 2.500000f; - m_OriginalHandlingData[86].vecCenterOfMass = CVector(0.000000f, 0.300000f, -0.250000f); - m_OriginalHandlingData[86].uiPercentSubmerged = 80; - m_OriginalHandlingData[86].fTractionMultiplier = 0.850000f; - m_OriginalHandlingData[86].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[86].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[86].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[86].Transmission.uiHandlingFlags = 18121216; - m_OriginalHandlingData[86].Transmission.fEngineAcceleration = 10.000000f; - m_OriginalHandlingData[86].Transmission.fEngineInertia = 30.000000f; - m_OriginalHandlingData[86].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[86].fBrakeDeceleration = 6.000000f; - m_OriginalHandlingData[86].fBrakeBias = 0.800000f; - m_OriginalHandlingData[86].bABS = false; - m_OriginalHandlingData[86].fSteeringLock = 45.000000f; - m_OriginalHandlingData[86].fTractionLoss = 0.700000f; - m_OriginalHandlingData[86].fTractionBias = 0.460000f; - m_OriginalHandlingData[86].fSuspensionForceLevel = 1.600000f; - m_OriginalHandlingData[86].fSuspensionDamping = 0.070000f; - m_OriginalHandlingData[86].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[86].fSuspensionUpperLimit = 0.350000f; - m_OriginalHandlingData[86].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[86].fSuspensionFrontRearBias = 0.250000f; - m_OriginalHandlingData[86].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[86].fCollisionDamageMultiplier = 0.500000f; - m_OriginalHandlingData[86].uiModelFlags = 0x240001; - m_OriginalHandlingData[86].uiHandlingFlags = 0x1148200; - m_OriginalHandlingData[86].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[86].uiMonetary = 20000; - m_OriginalHandlingData[86].ucHeadLight = 0; - m_OriginalHandlingData[86].ucTailLight = 3; - m_OriginalHandlingData[86].ucAnimGroup = 13; - - m_OriginalHandlingData[87].iVehicleID = 87; - m_OriginalHandlingData[87].fMass = 1700.000000f; - m_OriginalHandlingData[87].fTurnMass = 4166.399902f; - m_OriginalHandlingData[87].fDragCoeff = 2.000000f; - m_OriginalHandlingData[87].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.200000f); - m_OriginalHandlingData[87].uiPercentSubmerged = 70; - m_OriginalHandlingData[87].fTractionMultiplier = 0.700000f; - m_OriginalHandlingData[87].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[87].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[87].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[87].Transmission.uiHandlingFlags = 4; - m_OriginalHandlingData[87].Transmission.fEngineAcceleration = 8.000000f; - m_OriginalHandlingData[87].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[87].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[87].fBrakeDeceleration = 8.170000f; - m_OriginalHandlingData[87].fBrakeBias = 0.520000f; - m_OriginalHandlingData[87].bABS = false; - m_OriginalHandlingData[87].fSteeringLock = 35.000000f; - m_OriginalHandlingData[87].fTractionLoss = 0.840000f; - m_OriginalHandlingData[87].fTractionBias = 0.530000f; - m_OriginalHandlingData[87].fSuspensionForceLevel = 1.200000f; - m_OriginalHandlingData[87].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[87].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[87].fSuspensionUpperLimit = 0.300000f; - m_OriginalHandlingData[87].fSuspensionLowerLimit = -0.100000f; - m_OriginalHandlingData[87].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[87].fSuspensionAntiDiveMultiplier = 0.250000f; - m_OriginalHandlingData[87].fCollisionDamageMultiplier = 0.520000f; - m_OriginalHandlingData[87].uiModelFlags = 0x40000000; - m_OriginalHandlingData[87].uiHandlingFlags = 0x4; - m_OriginalHandlingData[87].fSeatOffsetDistance = 0.300000f; - m_OriginalHandlingData[87].uiMonetary = 19000; - m_OriginalHandlingData[87].ucHeadLight = 1; - m_OriginalHandlingData[87].ucTailLight = 1; - m_OriginalHandlingData[87].ucAnimGroup = 0; - - m_OriginalHandlingData[88].iVehicleID = 88; - m_OriginalHandlingData[88].fMass = 1200.000000f; - m_OriginalHandlingData[88].fTurnMass = 2000.000000f; - m_OriginalHandlingData[88].fDragCoeff = 2.200000f; - m_OriginalHandlingData[88].vecCenterOfMass = CVector(0.000000f, 0.150000f, -0.100000f); - m_OriginalHandlingData[88].uiPercentSubmerged = 70; - m_OriginalHandlingData[88].fTractionMultiplier = 0.700000f; - m_OriginalHandlingData[88].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[88].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[88].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[88].Transmission.uiHandlingFlags = 2; - m_OriginalHandlingData[88].Transmission.fEngineAcceleration = 8.000000f; - m_OriginalHandlingData[88].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[88].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[88].fBrakeDeceleration = 8.000000f; - m_OriginalHandlingData[88].fBrakeBias = 0.600000f; - m_OriginalHandlingData[88].bABS = false; - m_OriginalHandlingData[88].fSteeringLock = 30.000000f; - m_OriginalHandlingData[88].fTractionLoss = 0.860000f; - m_OriginalHandlingData[88].fTractionBias = 0.500000f; - m_OriginalHandlingData[88].fSuspensionForceLevel = 1.400000f; - m_OriginalHandlingData[88].fSuspensionDamping = 0.120000f; - m_OriginalHandlingData[88].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[88].fSuspensionUpperLimit = 0.300000f; - m_OriginalHandlingData[88].fSuspensionLowerLimit = -0.080000f; - m_OriginalHandlingData[88].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[88].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[88].fCollisionDamageMultiplier = 0.500000f; - m_OriginalHandlingData[88].uiModelFlags = 0x40000000; - m_OriginalHandlingData[88].uiHandlingFlags = 0x2; - m_OriginalHandlingData[88].fSeatOffsetDistance = 0.260000f; - m_OriginalHandlingData[88].uiMonetary = 9000; - m_OriginalHandlingData[88].ucHeadLight = 0; - m_OriginalHandlingData[88].ucTailLight = 0; - m_OriginalHandlingData[88].ucAnimGroup = 0; - - m_OriginalHandlingData[89].iVehicleID = 89; - m_OriginalHandlingData[89].fMass = 4000.000000f; - m_OriginalHandlingData[89].fTurnMass = 10000.000000f; - m_OriginalHandlingData[89].fDragCoeff = 2.000000f; - m_OriginalHandlingData[89].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.200000f); - m_OriginalHandlingData[89].uiPercentSubmerged = 85; - m_OriginalHandlingData[89].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[89].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[89].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[89].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[89].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[89].Transmission.fEngineAcceleration = 10.000000f; - m_OriginalHandlingData[89].Transmission.fEngineInertia = 25.000000f; - m_OriginalHandlingData[89].Transmission.fMaxVelocity = 170.000000f; - m_OriginalHandlingData[89].fBrakeDeceleration = 6.000000f; - m_OriginalHandlingData[89].fBrakeBias = 0.400000f; - m_OriginalHandlingData[89].bABS = false; - m_OriginalHandlingData[89].fSteeringLock = 30.000000f; - m_OriginalHandlingData[89].fTractionLoss = 0.850000f; - m_OriginalHandlingData[89].fTractionBias = 0.540000f; - m_OriginalHandlingData[89].fSuspensionForceLevel = 0.800000f; - m_OriginalHandlingData[89].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[89].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[89].fSuspensionUpperLimit = 0.300000f; - m_OriginalHandlingData[89].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[89].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[89].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[89].fCollisionDamageMultiplier = 0.160000f; - m_OriginalHandlingData[89].uiModelFlags = 0x4001; - m_OriginalHandlingData[89].uiHandlingFlags = 0x0; - m_OriginalHandlingData[89].fSeatOffsetDistance = 0.320000f; - m_OriginalHandlingData[89].uiMonetary = 40000; - m_OriginalHandlingData[89].ucHeadLight = 0; - m_OriginalHandlingData[89].ucTailLight = 1; - m_OriginalHandlingData[89].ucAnimGroup = 13; - - m_OriginalHandlingData[90].iVehicleID = 90; - m_OriginalHandlingData[90].fMass = 1800.000000f; - m_OriginalHandlingData[90].fTurnMass = 4350.000000f; - m_OriginalHandlingData[90].fDragCoeff = 2.000000f; - m_OriginalHandlingData[90].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[90].uiPercentSubmerged = 70; - m_OriginalHandlingData[90].fTractionMultiplier = 0.700000f; - m_OriginalHandlingData[90].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[90].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[90].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[90].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[90].Transmission.fEngineAcceleration = 7.200000f; - m_OriginalHandlingData[90].Transmission.fEngineInertia = 15.000000f; - m_OriginalHandlingData[90].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[90].fBrakeDeceleration = 5.400000f; - m_OriginalHandlingData[90].fBrakeBias = 0.600000f; - m_OriginalHandlingData[90].bABS = false; - m_OriginalHandlingData[90].fSteeringLock = 30.000000f; - m_OriginalHandlingData[90].fTractionLoss = 0.800000f; - m_OriginalHandlingData[90].fTractionBias = 0.520000f; - m_OriginalHandlingData[90].fSuspensionForceLevel = 1.100000f; - m_OriginalHandlingData[90].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[90].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[90].fSuspensionUpperLimit = 0.320000f; - m_OriginalHandlingData[90].fSuspensionLowerLimit = -0.140000f; - m_OriginalHandlingData[90].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[90].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[90].fCollisionDamageMultiplier = 0.540000f; - m_OriginalHandlingData[90].uiModelFlags = 0x40000000; - m_OriginalHandlingData[90].uiHandlingFlags = 0x0; - m_OriginalHandlingData[90].fSeatOffsetDistance = 0.260000f; - m_OriginalHandlingData[90].uiMonetary = 19000; - m_OriginalHandlingData[90].ucHeadLight = 0; - m_OriginalHandlingData[90].ucTailLight = 3; - m_OriginalHandlingData[90].ucAnimGroup = 0; - - m_OriginalHandlingData[91].iVehicleID = 91; - m_OriginalHandlingData[91].fMass = 1000.000000f; - m_OriginalHandlingData[91].fTurnMass = 1354.199951f; - m_OriginalHandlingData[91].fDragCoeff = 2.000000f; - m_OriginalHandlingData[91].vecCenterOfMass = CVector(0.000000f, -0.200000f, -0.350000f); - m_OriginalHandlingData[91].uiPercentSubmerged = 70; - m_OriginalHandlingData[91].fTractionMultiplier = 0.800000f; - m_OriginalHandlingData[91].Transmission.ucDriveType = 'F'; - m_OriginalHandlingData[91].Transmission.ucEngineType = 'E'; - m_OriginalHandlingData[91].Transmission.ucNumberOfGears = 3; - m_OriginalHandlingData[91].Transmission.uiHandlingFlags = 17039396; - m_OriginalHandlingData[91].Transmission.fEngineAcceleration = 8.000000f; - m_OriginalHandlingData[91].Transmission.fEngineInertia = 15.000000f; - m_OriginalHandlingData[91].Transmission.fMaxVelocity = 60.000000f; - m_OriginalHandlingData[91].fBrakeDeceleration = 6.000000f; - m_OriginalHandlingData[91].fBrakeBias = 0.500000f; - m_OriginalHandlingData[91].bABS = false; - m_OriginalHandlingData[91].fSteeringLock = 30.000000f; - m_OriginalHandlingData[91].fTractionLoss = 0.850000f; - m_OriginalHandlingData[91].fTractionBias = 0.500000f; - m_OriginalHandlingData[91].fSuspensionForceLevel = 2.000000f; - m_OriginalHandlingData[91].fSuspensionDamping = 0.140000f; - m_OriginalHandlingData[91].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[91].fSuspensionUpperLimit = 0.250000f; - m_OriginalHandlingData[91].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[91].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[91].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[91].fCollisionDamageMultiplier = 0.500000f; - m_OriginalHandlingData[91].uiModelFlags = 0x1300; - m_OriginalHandlingData[91].uiHandlingFlags = 0x1040024; - m_OriginalHandlingData[91].fSeatOffsetDistance = 0.260000f; - m_OriginalHandlingData[91].uiMonetary = 9000; - m_OriginalHandlingData[91].ucHeadLight = 1; - m_OriginalHandlingData[91].ucTailLight = 1; - m_OriginalHandlingData[91].ucAnimGroup = 0; - - m_OriginalHandlingData[92].iVehicleID = 92; - m_OriginalHandlingData[92].fMass = 2000.000000f; - m_OriginalHandlingData[92].fTurnMass = 5000.000000f; - m_OriginalHandlingData[92].fDragCoeff = 3.000000f; - m_OriginalHandlingData[92].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.200000f); - m_OriginalHandlingData[92].uiPercentSubmerged = 70; - m_OriginalHandlingData[92].fTractionMultiplier = 0.900000f; - m_OriginalHandlingData[92].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[92].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[92].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[92].Transmission.uiHandlingFlags = 20185093; - m_OriginalHandlingData[92].Transmission.fEngineAcceleration = 8.000000f; - m_OriginalHandlingData[92].Transmission.fEngineInertia = 90.000000f; - m_OriginalHandlingData[92].Transmission.fMaxVelocity = 70.000000f; - m_OriginalHandlingData[92].fBrakeDeceleration = 15.000000f; - m_OriginalHandlingData[92].fBrakeBias = 0.200000f; - m_OriginalHandlingData[92].bABS = false; - m_OriginalHandlingData[92].fSteeringLock = 50.000000f; - m_OriginalHandlingData[92].fTractionLoss = 0.850000f; - m_OriginalHandlingData[92].fTractionBias = 0.500000f; - m_OriginalHandlingData[92].fSuspensionForceLevel = 2.000000f; - m_OriginalHandlingData[92].fSuspensionDamping = 0.120000f; - m_OriginalHandlingData[92].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[92].fSuspensionUpperLimit = 0.250000f; - m_OriginalHandlingData[92].fSuspensionLowerLimit = -0.050000f; - m_OriginalHandlingData[92].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[92].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[92].fCollisionDamageMultiplier = 0.500000f; - m_OriginalHandlingData[92].uiModelFlags = 0x201310; - m_OriginalHandlingData[92].uiHandlingFlags = 0x1340005; - m_OriginalHandlingData[92].fSeatOffsetDistance = 0.260000f; - m_OriginalHandlingData[92].uiMonetary = 9000; - m_OriginalHandlingData[92].ucHeadLight = 1; - m_OriginalHandlingData[92].ucTailLight = 1; - m_OriginalHandlingData[92].ucAnimGroup = 28; - - m_OriginalHandlingData[93].iVehicleID = 93; - m_OriginalHandlingData[93].fMass = 8500.000000f; - m_OriginalHandlingData[93].fTurnMass = 48804.199219f; - m_OriginalHandlingData[93].fDragCoeff = 5.000000f; - m_OriginalHandlingData[93].vecCenterOfMass = CVector(0.000000f, 0.300000f, -0.200000f); - m_OriginalHandlingData[93].uiPercentSubmerged = 90; - m_OriginalHandlingData[93].fTractionMultiplier = 0.880000f; - m_OriginalHandlingData[93].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[93].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[93].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[93].Transmission.uiHandlingFlags = 32; - m_OriginalHandlingData[93].Transmission.fEngineAcceleration = 10.000000f; - m_OriginalHandlingData[93].Transmission.fEngineInertia = 80.000000f; - m_OriginalHandlingData[93].Transmission.fMaxVelocity = 140.000000f; - m_OriginalHandlingData[93].fBrakeDeceleration = 10.000000f; - m_OriginalHandlingData[93].fBrakeBias = 0.450000f; - m_OriginalHandlingData[93].bABS = false; - m_OriginalHandlingData[93].fSteeringLock = 27.000000f; - m_OriginalHandlingData[93].fTractionLoss = 0.700000f; - m_OriginalHandlingData[93].fTractionBias = 0.460000f; - m_OriginalHandlingData[93].fSuspensionForceLevel = 1.200000f; - m_OriginalHandlingData[93].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[93].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[93].fSuspensionUpperLimit = 0.470000f; - m_OriginalHandlingData[93].fSuspensionLowerLimit = -0.110000f; - m_OriginalHandlingData[93].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[93].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[93].fCollisionDamageMultiplier = 0.430000f; - m_OriginalHandlingData[93].uiModelFlags = 0x12C008; - m_OriginalHandlingData[93].uiHandlingFlags = 0x20; - m_OriginalHandlingData[93].fSeatOffsetDistance = 1.200000f; - m_OriginalHandlingData[93].uiMonetary = 10000; - m_OriginalHandlingData[93].ucHeadLight = 0; - m_OriginalHandlingData[93].ucTailLight = 1; - m_OriginalHandlingData[93].ucAnimGroup = 20; - - m_OriginalHandlingData[94].iVehicleID = 94; - m_OriginalHandlingData[94].fMass = 1600.000000f; - m_OriginalHandlingData[94].fTurnMass = 4500.000000f; - m_OriginalHandlingData[94].fDragCoeff = 2.500000f; - m_OriginalHandlingData[94].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.150000f); - m_OriginalHandlingData[94].uiPercentSubmerged = 75; - m_OriginalHandlingData[94].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[94].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[94].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[94].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[94].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[94].Transmission.fEngineAcceleration = 11.200000f; - m_OriginalHandlingData[94].Transmission.fEngineInertia = 25.000000f; - m_OriginalHandlingData[94].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[94].fBrakeDeceleration = 7.000000f; - m_OriginalHandlingData[94].fBrakeBias = 0.520000f; - m_OriginalHandlingData[94].bABS = false; - m_OriginalHandlingData[94].fSteeringLock = 30.000000f; - m_OriginalHandlingData[94].fTractionLoss = 0.900000f; - m_OriginalHandlingData[94].fTractionBias = 0.500000f; - m_OriginalHandlingData[94].fSuspensionForceLevel = 1.100000f; - m_OriginalHandlingData[94].fSuspensionDamping = 0.090000f; - m_OriginalHandlingData[94].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[94].fSuspensionUpperLimit = 0.300000f; - m_OriginalHandlingData[94].fSuspensionLowerLimit = -0.100000f; - m_OriginalHandlingData[94].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[94].fSuspensionAntiDiveMultiplier = 0.300000f; - m_OriginalHandlingData[94].fCollisionDamageMultiplier = 0.600000f; - m_OriginalHandlingData[94].uiModelFlags = 0x40002800; - m_OriginalHandlingData[94].uiHandlingFlags = 0x0; - m_OriginalHandlingData[94].fSeatOffsetDistance = 0.250000f; - m_OriginalHandlingData[94].uiMonetary = 35000; - m_OriginalHandlingData[94].ucHeadLight = 1; - m_OriginalHandlingData[94].ucTailLight = 1; - m_OriginalHandlingData[94].ucAnimGroup = 19; - - m_OriginalHandlingData[95].iVehicleID = 95; - m_OriginalHandlingData[95].fMass = 1800.000000f; - m_OriginalHandlingData[95].fTurnMass = 4000.000000f; - m_OriginalHandlingData[95].fDragCoeff = 2.000000f; - m_OriginalHandlingData[95].vecCenterOfMass = CVector(0.000000f, -0.400000f, -0.200000f); - m_OriginalHandlingData[95].uiPercentSubmerged = 70; - m_OriginalHandlingData[95].fTractionMultiplier = 0.750000f; - m_OriginalHandlingData[95].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[95].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[95].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[95].Transmission.uiHandlingFlags = 37814272; - m_OriginalHandlingData[95].Transmission.fEngineAcceleration = 9.200000f; - m_OriginalHandlingData[95].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[95].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[95].fBrakeDeceleration = 6.500000f; - m_OriginalHandlingData[95].fBrakeBias = 0.500000f; - m_OriginalHandlingData[95].bABS = false; - m_OriginalHandlingData[95].fSteeringLock = 30.000000f; - m_OriginalHandlingData[95].fTractionLoss = 0.800000f; - m_OriginalHandlingData[95].fTractionBias = 0.560000f; - m_OriginalHandlingData[95].fSuspensionForceLevel = 0.500000f; - m_OriginalHandlingData[95].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[95].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[95].fSuspensionUpperLimit = 0.000000f; - m_OriginalHandlingData[95].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[95].fSuspensionFrontRearBias = 0.400000f; - m_OriginalHandlingData[95].fSuspensionAntiDiveMultiplier = 0.600000f; - m_OriginalHandlingData[95].fCollisionDamageMultiplier = 0.410000f; - m_OriginalHandlingData[95].uiModelFlags = 0x40002004; - m_OriginalHandlingData[95].uiHandlingFlags = 0x2410000; - m_OriginalHandlingData[95].fSeatOffsetDistance = 0.210000f; - m_OriginalHandlingData[95].uiMonetary = 30000; - m_OriginalHandlingData[95].ucHeadLight = 1; - m_OriginalHandlingData[95].ucTailLight = 1; - m_OriginalHandlingData[95].ucAnimGroup = 1; - - m_OriginalHandlingData[96].iVehicleID = 96; - m_OriginalHandlingData[96].fMass = 1950.000000f; - m_OriginalHandlingData[96].fTurnMass = 4712.500000f; - m_OriginalHandlingData[96].fDragCoeff = 4.000000f; - m_OriginalHandlingData[96].vecCenterOfMass = CVector(0.000000f, 0.100000f, 0.000000f); - m_OriginalHandlingData[96].uiPercentSubmerged = 70; - m_OriginalHandlingData[96].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[96].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[96].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[96].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[96].Transmission.uiHandlingFlags = 33619968; - m_OriginalHandlingData[96].Transmission.fEngineAcceleration = 16.000000f; - m_OriginalHandlingData[96].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[96].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[96].fBrakeDeceleration = 10.000000f; - m_OriginalHandlingData[96].fBrakeBias = 0.500000f; - m_OriginalHandlingData[96].bABS = false; - m_OriginalHandlingData[96].fSteeringLock = 28.000000f; - m_OriginalHandlingData[96].fTractionLoss = 0.900000f; - m_OriginalHandlingData[96].fTractionBias = 0.500000f; - m_OriginalHandlingData[96].fSuspensionForceLevel = 1.600000f; - m_OriginalHandlingData[96].fSuspensionDamping = 0.120000f; - m_OriginalHandlingData[96].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[96].fSuspensionUpperLimit = 0.350000f; - m_OriginalHandlingData[96].fSuspensionLowerLimit = -0.140000f; - m_OriginalHandlingData[96].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[96].fSuspensionAntiDiveMultiplier = 0.300000f; - m_OriginalHandlingData[96].fCollisionDamageMultiplier = 0.420000f; - m_OriginalHandlingData[96].uiModelFlags = 0x40002000; - m_OriginalHandlingData[96].uiHandlingFlags = 0x2010000; - m_OriginalHandlingData[96].fSeatOffsetDistance = 0.360000f; - m_OriginalHandlingData[96].uiMonetary = 19000; - m_OriginalHandlingData[96].ucHeadLight = 1; - m_OriginalHandlingData[96].ucTailLight = 3; - m_OriginalHandlingData[96].ucAnimGroup = 0; - - m_OriginalHandlingData[97].iVehicleID = 97; - m_OriginalHandlingData[97].fMass = 1500.000000f; - m_OriginalHandlingData[97].fTurnMass = 2500.000000f; - m_OriginalHandlingData[97].fDragCoeff = 2.000000f; - m_OriginalHandlingData[97].vecCenterOfMass = CVector(0.000000f, -0.200000f, 0.100000f); - m_OriginalHandlingData[97].uiPercentSubmerged = 70; - m_OriginalHandlingData[97].fTractionMultiplier = 0.750000f; - m_OriginalHandlingData[97].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[97].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[97].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[97].Transmission.uiHandlingFlags = 302055424; - m_OriginalHandlingData[97].Transmission.fEngineAcceleration = 9.600000f; - m_OriginalHandlingData[97].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[97].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[97].fBrakeDeceleration = 8.170000f; - m_OriginalHandlingData[97].fBrakeBias = 0.520000f; - m_OriginalHandlingData[97].bABS = false; - m_OriginalHandlingData[97].fSteeringLock = 35.000000f; - m_OriginalHandlingData[97].fTractionLoss = 0.840000f; - m_OriginalHandlingData[97].fTractionBias = 0.530000f; - m_OriginalHandlingData[97].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[97].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[97].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[97].fSuspensionUpperLimit = 0.300000f; - m_OriginalHandlingData[97].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[97].fSuspensionFrontRearBias = 0.440000f; - m_OriginalHandlingData[97].fSuspensionAntiDiveMultiplier = 0.250000f; - m_OriginalHandlingData[97].fCollisionDamageMultiplier = 0.520000f; - m_OriginalHandlingData[97].uiModelFlags = 0x40202000; - m_OriginalHandlingData[97].uiHandlingFlags = 0x12010000; - m_OriginalHandlingData[97].fSeatOffsetDistance = 0.300000f; - m_OriginalHandlingData[97].uiMonetary = 19000; - m_OriginalHandlingData[97].ucHeadLight = 1; - m_OriginalHandlingData[97].ucTailLight = 1; - m_OriginalHandlingData[97].ucAnimGroup = 0; - - m_OriginalHandlingData[98].iVehicleID = 98; - m_OriginalHandlingData[98].fMass = 5500.000000f; - m_OriginalHandlingData[98].fTurnMass = 65000.000000f; - m_OriginalHandlingData[98].fDragCoeff = 3.000000f; - m_OriginalHandlingData[98].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[98].uiPercentSubmerged = 90; - m_OriginalHandlingData[98].fTractionMultiplier = 0.580000f; - m_OriginalHandlingData[98].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[98].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[98].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[98].Transmission.uiHandlingFlags = 512; - m_OriginalHandlingData[98].Transmission.fEngineAcceleration = 8.000000f; - m_OriginalHandlingData[98].Transmission.fEngineInertia = 20.000000f; - m_OriginalHandlingData[98].Transmission.fMaxVelocity = 110.000000f; - m_OriginalHandlingData[98].fBrakeDeceleration = 3.170000f; - m_OriginalHandlingData[98].fBrakeBias = 0.400000f; - m_OriginalHandlingData[98].bABS = false; - m_OriginalHandlingData[98].fSteeringLock = 30.000000f; - m_OriginalHandlingData[98].fTractionLoss = 0.800000f; - m_OriginalHandlingData[98].fTractionBias = 0.500000f; - m_OriginalHandlingData[98].fSuspensionForceLevel = 1.400000f; - m_OriginalHandlingData[98].fSuspensionDamping = 0.060000f; - m_OriginalHandlingData[98].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[98].fSuspensionUpperLimit = 0.450000f; - m_OriginalHandlingData[98].fSuspensionLowerLimit = 0.000000f; - m_OriginalHandlingData[98].fSuspensionFrontRearBias = 0.550000f; - m_OriginalHandlingData[98].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[98].fCollisionDamageMultiplier = 0.200000f; - m_OriginalHandlingData[98].uiModelFlags = 0x8; - m_OriginalHandlingData[98].uiHandlingFlags = 0x200; - m_OriginalHandlingData[98].fSeatOffsetDistance = 0.450000f; - m_OriginalHandlingData[98].uiMonetary = 5000; - m_OriginalHandlingData[98].ucHeadLight = 0; - m_OriginalHandlingData[98].ucTailLight = 1; - m_OriginalHandlingData[98].ucAnimGroup = 2; - - m_OriginalHandlingData[99].iVehicleID = 99; - m_OriginalHandlingData[99].fMass = 5500.000000f; - m_OriginalHandlingData[99].fTurnMass = 65000.000000f; - m_OriginalHandlingData[99].fDragCoeff = 3.000000f; - m_OriginalHandlingData[99].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[99].uiPercentSubmerged = 90; - m_OriginalHandlingData[99].fTractionMultiplier = 0.580000f; - m_OriginalHandlingData[99].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[99].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[99].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[99].Transmission.uiHandlingFlags = 512; - m_OriginalHandlingData[99].Transmission.fEngineAcceleration = 8.000000f; - m_OriginalHandlingData[99].Transmission.fEngineInertia = 20.000000f; - m_OriginalHandlingData[99].Transmission.fMaxVelocity = 110.000000f; - m_OriginalHandlingData[99].fBrakeDeceleration = 3.170000f; - m_OriginalHandlingData[99].fBrakeBias = 0.400000f; - m_OriginalHandlingData[99].bABS = false; - m_OriginalHandlingData[99].fSteeringLock = 30.000000f; - m_OriginalHandlingData[99].fTractionLoss = 0.800000f; - m_OriginalHandlingData[99].fTractionBias = 0.500000f; - m_OriginalHandlingData[99].fSuspensionForceLevel = 1.400000f; - m_OriginalHandlingData[99].fSuspensionDamping = 0.060000f; - m_OriginalHandlingData[99].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[99].fSuspensionUpperLimit = 0.450000f; - m_OriginalHandlingData[99].fSuspensionLowerLimit = -0.100000f; - m_OriginalHandlingData[99].fSuspensionFrontRearBias = 0.550000f; - m_OriginalHandlingData[99].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[99].fCollisionDamageMultiplier = 0.200000f; - m_OriginalHandlingData[99].uiModelFlags = 0x8; - m_OriginalHandlingData[99].uiHandlingFlags = 0x200; - m_OriginalHandlingData[99].fSeatOffsetDistance = 0.650000f; - m_OriginalHandlingData[99].uiMonetary = 5000; - m_OriginalHandlingData[99].ucHeadLight = 0; - m_OriginalHandlingData[99].ucTailLight = 1; - m_OriginalHandlingData[99].ucAnimGroup = 2; - - m_OriginalHandlingData[100].iVehicleID = 100; - m_OriginalHandlingData[100].fMass = 1800.000000f; - m_OriginalHandlingData[100].fTurnMass = 3000.000000f; - m_OriginalHandlingData[100].fDragCoeff = 2.000000f; - m_OriginalHandlingData[100].vecCenterOfMass = CVector(0.000000f, 0.300000f, 0.000000f); - m_OriginalHandlingData[100].uiPercentSubmerged = 70; - m_OriginalHandlingData[100].fTractionMultiplier = 0.700000f; - m_OriginalHandlingData[100].Transmission.ucDriveType = 'F'; - m_OriginalHandlingData[100].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[100].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[100].Transmission.uiHandlingFlags = 2; - m_OriginalHandlingData[100].Transmission.fEngineAcceleration = 7.200000f; - m_OriginalHandlingData[100].Transmission.fEngineInertia = 20.000000f; - m_OriginalHandlingData[100].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[100].fBrakeDeceleration = 5.400000f; - m_OriginalHandlingData[100].fBrakeBias = 0.600000f; - m_OriginalHandlingData[100].bABS = false; - m_OriginalHandlingData[100].fSteeringLock = 30.000000f; - m_OriginalHandlingData[100].fTractionLoss = 0.800000f; - m_OriginalHandlingData[100].fTractionBias = 0.500000f; - m_OriginalHandlingData[100].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[100].fSuspensionDamping = 0.090000f; - m_OriginalHandlingData[100].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[100].fSuspensionUpperLimit = 0.320000f; - m_OriginalHandlingData[100].fSuspensionLowerLimit = -0.160000f; - m_OriginalHandlingData[100].fSuspensionFrontRearBias = 0.560000f; - m_OriginalHandlingData[100].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[100].fCollisionDamageMultiplier = 0.540000f; - m_OriginalHandlingData[100].uiModelFlags = 0x0; - m_OriginalHandlingData[100].uiHandlingFlags = 0x2; - m_OriginalHandlingData[100].fSeatOffsetDistance = 0.260000f; - m_OriginalHandlingData[100].uiMonetary = 19000; - m_OriginalHandlingData[100].ucHeadLight = 0; - m_OriginalHandlingData[100].ucTailLight = 3; - m_OriginalHandlingData[100].ucAnimGroup = 0; - - m_OriginalHandlingData[101].iVehicleID = 101; - m_OriginalHandlingData[101].fMass = 1200.000000f; - m_OriginalHandlingData[101].fTurnMass = 2500.000000f; - m_OriginalHandlingData[101].fDragCoeff = 1.800000f; - m_OriginalHandlingData[101].vecCenterOfMass = CVector(0.000000f, -0.150000f, -0.200000f); - m_OriginalHandlingData[101].uiPercentSubmerged = 70; - m_OriginalHandlingData[101].fTractionMultiplier = 0.750000f; - m_OriginalHandlingData[101].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[101].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[101].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[101].Transmission.uiHandlingFlags = 2113536; - m_OriginalHandlingData[101].Transmission.fEngineAcceleration = 12.000000f; - m_OriginalHandlingData[101].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[101].Transmission.fMaxVelocity = 230.000000f; - m_OriginalHandlingData[101].fBrakeDeceleration = 8.000000f; - m_OriginalHandlingData[101].fBrakeBias = 0.580000f; - m_OriginalHandlingData[101].bABS = false; - m_OriginalHandlingData[101].fSteeringLock = 30.000000f; - m_OriginalHandlingData[101].fTractionLoss = 0.900000f; - m_OriginalHandlingData[101].fTractionBias = 0.480000f; - m_OriginalHandlingData[101].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[101].fSuspensionDamping = 0.130000f; - m_OriginalHandlingData[101].fSuspensionHighSpdDamping = 5.000000f; - m_OriginalHandlingData[101].fSuspensionUpperLimit = 0.250000f; - m_OriginalHandlingData[101].fSuspensionLowerLimit = -0.100000f; - m_OriginalHandlingData[101].fSuspensionFrontRearBias = 0.450000f; - m_OriginalHandlingData[101].fSuspensionAntiDiveMultiplier = 0.300000f; - m_OriginalHandlingData[101].fCollisionDamageMultiplier = 0.540000f; - m_OriginalHandlingData[101].uiModelFlags = 0xC0002004; - m_OriginalHandlingData[101].uiHandlingFlags = 0x204000; - m_OriginalHandlingData[101].fSeatOffsetDistance = 0.150000f; - m_OriginalHandlingData[101].uiMonetary = 105000; - m_OriginalHandlingData[101].ucHeadLight = 0; - m_OriginalHandlingData[101].ucTailLight = 0; - m_OriginalHandlingData[101].ucAnimGroup = 1; - - m_OriginalHandlingData[102].iVehicleID = 102; - m_OriginalHandlingData[102].fMass = 1600.000000f; - m_OriginalHandlingData[102].fTurnMass = 3000.000000f; - m_OriginalHandlingData[102].fDragCoeff = 2.200000f; - m_OriginalHandlingData[102].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[102].uiPercentSubmerged = 70; - m_OriginalHandlingData[102].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[102].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[102].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[102].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[102].Transmission.uiHandlingFlags = 268468228; - m_OriginalHandlingData[102].Transmission.fEngineAcceleration = 9.600000f; - m_OriginalHandlingData[102].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[102].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[102].fBrakeDeceleration = 8.000000f; - m_OriginalHandlingData[102].fBrakeBias = 0.500000f; - m_OriginalHandlingData[102].bABS = false; - m_OriginalHandlingData[102].fSteeringLock = 35.000000f; - m_OriginalHandlingData[102].fTractionLoss = 0.800000f; - m_OriginalHandlingData[102].fTractionBias = 0.520000f; - m_OriginalHandlingData[102].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[102].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[102].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[102].fSuspensionUpperLimit = 0.300000f; - m_OriginalHandlingData[102].fSuspensionLowerLimit = -0.100000f; - m_OriginalHandlingData[102].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[102].fSuspensionAntiDiveMultiplier = 0.250000f; - m_OriginalHandlingData[102].fCollisionDamageMultiplier = 0.520000f; - m_OriginalHandlingData[102].uiModelFlags = 0x40280000; - m_OriginalHandlingData[102].uiHandlingFlags = 0x10008004; - m_OriginalHandlingData[102].fSeatOffsetDistance = 0.250000f; - m_OriginalHandlingData[102].uiMonetary = 19000; - m_OriginalHandlingData[102].ucHeadLight = 1; - m_OriginalHandlingData[102].ucTailLight = 1; - m_OriginalHandlingData[102].ucAnimGroup = 0; - - m_OriginalHandlingData[103].iVehicleID = 103; - m_OriginalHandlingData[103].fMass = 1700.000000f; - m_OriginalHandlingData[103].fTurnMass = 4500.000000f; - m_OriginalHandlingData[103].fDragCoeff = 2.700000f; - m_OriginalHandlingData[103].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.050000f); - m_OriginalHandlingData[103].uiPercentSubmerged = 75; - m_OriginalHandlingData[103].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[103].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[103].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[103].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[103].Transmission.uiHandlingFlags = 1064964; - m_OriginalHandlingData[103].Transmission.fEngineAcceleration = 10.000000f; - m_OriginalHandlingData[103].Transmission.fEngineInertia = 20.000000f; - m_OriginalHandlingData[103].Transmission.fMaxVelocity = 165.000000f; - m_OriginalHandlingData[103].fBrakeDeceleration = 8.500000f; - m_OriginalHandlingData[103].fBrakeBias = 0.500000f; - m_OriginalHandlingData[103].bABS = false; - m_OriginalHandlingData[103].fSteeringLock = 35.000000f; - m_OriginalHandlingData[103].fTractionLoss = 0.700000f; - m_OriginalHandlingData[103].fTractionBias = 0.500000f; - m_OriginalHandlingData[103].fSuspensionForceLevel = 0.800000f; - m_OriginalHandlingData[103].fSuspensionDamping = 0.080000f; - m_OriginalHandlingData[103].fSuspensionHighSpdDamping = 3.000000f; - m_OriginalHandlingData[103].fSuspensionUpperLimit = 0.250000f; - m_OriginalHandlingData[103].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[103].fSuspensionFrontRearBias = 0.400000f; - m_OriginalHandlingData[103].fSuspensionAntiDiveMultiplier = 0.400000f; - m_OriginalHandlingData[103].fCollisionDamageMultiplier = 0.200000f; - m_OriginalHandlingData[103].uiModelFlags = 0x200040; - m_OriginalHandlingData[103].uiHandlingFlags = 0x104004; - m_OriginalHandlingData[103].fSeatOffsetDistance = 0.260000f; - m_OriginalHandlingData[103].uiMonetary = 26000; - m_OriginalHandlingData[103].ucHeadLight = 0; - m_OriginalHandlingData[103].ucTailLight = 1; - m_OriginalHandlingData[103].ucAnimGroup = 0; - - m_OriginalHandlingData[104].iVehicleID = 104; - m_OriginalHandlingData[104].fMass = 1700.000000f; - m_OriginalHandlingData[104].fTurnMass = 4108.299805f; - m_OriginalHandlingData[104].fDragCoeff = 2.500000f; - m_OriginalHandlingData[104].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[104].uiPercentSubmerged = 85; - m_OriginalHandlingData[104].fTractionMultiplier = 0.850000f; - m_OriginalHandlingData[104].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[104].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[104].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[104].Transmission.uiHandlingFlags = 7340032; - m_OriginalHandlingData[104].Transmission.fEngineAcceleration = 8.000000f; - m_OriginalHandlingData[104].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[104].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[104].fBrakeDeceleration = 6.200000f; - m_OriginalHandlingData[104].fBrakeBias = 0.600000f; - m_OriginalHandlingData[104].bABS = false; - m_OriginalHandlingData[104].fSteeringLock = 35.000000f; - m_OriginalHandlingData[104].fTractionLoss = 0.850000f; - m_OriginalHandlingData[104].fTractionBias = 0.510000f; - m_OriginalHandlingData[104].fSuspensionForceLevel = 1.700000f; - m_OriginalHandlingData[104].fSuspensionDamping = 0.080000f; - m_OriginalHandlingData[104].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[104].fSuspensionUpperLimit = 0.250000f; - m_OriginalHandlingData[104].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[104].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[104].fSuspensionAntiDiveMultiplier = 0.250000f; - m_OriginalHandlingData[104].fCollisionDamageMultiplier = 0.230000f; - m_OriginalHandlingData[104].uiModelFlags = 0x20; - m_OriginalHandlingData[104].uiHandlingFlags = 0x700000; - m_OriginalHandlingData[104].fSeatOffsetDistance = 0.270000f; - m_OriginalHandlingData[104].uiMonetary = 25000; - m_OriginalHandlingData[104].ucHeadLight = 0; - m_OriginalHandlingData[104].ucTailLight = 1; - m_OriginalHandlingData[104].ucAnimGroup = 0; - - m_OriginalHandlingData[105].iVehicleID = 105; - m_OriginalHandlingData[105].fMass = 1700.000000f; - m_OriginalHandlingData[105].fTurnMass = 4000.000000f; - m_OriginalHandlingData[105].fDragCoeff = 2.500000f; - m_OriginalHandlingData[105].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.050000f); - m_OriginalHandlingData[105].uiPercentSubmerged = 75; - m_OriginalHandlingData[105].fTractionMultiplier = 0.750000f; - m_OriginalHandlingData[105].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[105].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[105].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[105].Transmission.uiHandlingFlags = 8388608; - m_OriginalHandlingData[105].Transmission.fEngineAcceleration = 8.800000f; - m_OriginalHandlingData[105].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[105].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[105].fBrakeDeceleration = 8.000000f; - m_OriginalHandlingData[105].fBrakeBias = 0.500000f; - m_OriginalHandlingData[105].bABS = false; - m_OriginalHandlingData[105].fSteeringLock = 30.000000f; - m_OriginalHandlingData[105].fTractionLoss = 0.750000f; - m_OriginalHandlingData[105].fTractionBias = 0.520000f; - m_OriginalHandlingData[105].fSuspensionForceLevel = 0.450000f; - m_OriginalHandlingData[105].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[105].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[105].fSuspensionUpperLimit = 0.100000f; - m_OriginalHandlingData[105].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[105].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[105].fSuspensionAntiDiveMultiplier = 0.500000f; - m_OriginalHandlingData[105].fCollisionDamageMultiplier = 0.450000f; - m_OriginalHandlingData[105].uiModelFlags = 0x0; - m_OriginalHandlingData[105].uiHandlingFlags = 0x800000; - m_OriginalHandlingData[105].fSeatOffsetDistance = 0.180000f; - m_OriginalHandlingData[105].uiMonetary = 20000; - m_OriginalHandlingData[105].ucHeadLight = 2; - m_OriginalHandlingData[105].ucTailLight = 1; - m_OriginalHandlingData[105].ucAnimGroup = 0; - - m_OriginalHandlingData[106].iVehicleID = 106; - m_OriginalHandlingData[106].fMass = 1800.000000f; - m_OriginalHandlingData[106].fTurnMass = 4350.000000f; - m_OriginalHandlingData[106].fDragCoeff = 2.000000f; - m_OriginalHandlingData[106].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[106].uiPercentSubmerged = 70; - m_OriginalHandlingData[106].fTractionMultiplier = 0.700000f; - m_OriginalHandlingData[106].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[106].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[106].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[106].Transmission.uiHandlingFlags = 2; - m_OriginalHandlingData[106].Transmission.fEngineAcceleration = 7.200000f; - m_OriginalHandlingData[106].Transmission.fEngineInertia = 25.000000f; - m_OriginalHandlingData[106].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[106].fBrakeDeceleration = 5.400000f; - m_OriginalHandlingData[106].fBrakeBias = 0.600000f; - m_OriginalHandlingData[106].bABS = false; - m_OriginalHandlingData[106].fSteeringLock = 30.000000f; - m_OriginalHandlingData[106].fTractionLoss = 0.800000f; - m_OriginalHandlingData[106].fTractionBias = 0.490000f; - m_OriginalHandlingData[106].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[106].fSuspensionDamping = 0.090000f; - m_OriginalHandlingData[106].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[106].fSuspensionUpperLimit = 0.320000f; - m_OriginalHandlingData[106].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[106].fSuspensionFrontRearBias = 0.540000f; - m_OriginalHandlingData[106].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[106].fCollisionDamageMultiplier = 0.540000f; - m_OriginalHandlingData[106].uiModelFlags = 0x0; - m_OriginalHandlingData[106].uiHandlingFlags = 0x2; - m_OriginalHandlingData[106].fSeatOffsetDistance = 0.260000f; - m_OriginalHandlingData[106].uiMonetary = 19000; - m_OriginalHandlingData[106].ucHeadLight = 0; - m_OriginalHandlingData[106].ucTailLight = 3; - m_OriginalHandlingData[106].ucAnimGroup = 0; - - m_OriginalHandlingData[107].iVehicleID = 107; - m_OriginalHandlingData[107].fMass = 1600.000000f; - m_OriginalHandlingData[107].fTurnMass = 3300.000000f; - m_OriginalHandlingData[107].fDragCoeff = 2.200000f; - m_OriginalHandlingData[107].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[107].uiPercentSubmerged = 70; - m_OriginalHandlingData[107].fTractionMultiplier = 0.700000f; - m_OriginalHandlingData[107].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[107].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[107].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[107].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[107].Transmission.fEngineAcceleration = 7.200000f; - m_OriginalHandlingData[107].Transmission.fEngineInertia = 7.000000f; - m_OriginalHandlingData[107].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[107].fBrakeDeceleration = 5.400000f; - m_OriginalHandlingData[107].fBrakeBias = 0.600000f; - m_OriginalHandlingData[107].bABS = false; - m_OriginalHandlingData[107].fSteeringLock = 30.000000f; - m_OriginalHandlingData[107].fTractionLoss = 0.800000f; - m_OriginalHandlingData[107].fTractionBias = 0.540000f; - m_OriginalHandlingData[107].fSuspensionForceLevel = 1.100000f; - m_OriginalHandlingData[107].fSuspensionDamping = 0.140000f; - m_OriginalHandlingData[107].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[107].fSuspensionUpperLimit = 0.320000f; - m_OriginalHandlingData[107].fSuspensionLowerLimit = -0.140000f; - m_OriginalHandlingData[107].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[107].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[107].fCollisionDamageMultiplier = 0.540000f; - m_OriginalHandlingData[107].uiModelFlags = 0x0; - m_OriginalHandlingData[107].uiHandlingFlags = 0x0; - m_OriginalHandlingData[107].fSeatOffsetDistance = 0.260000f; - m_OriginalHandlingData[107].uiMonetary = 19000; - m_OriginalHandlingData[107].ucHeadLight = 0; - m_OriginalHandlingData[107].ucTailLight = 3; - m_OriginalHandlingData[107].ucAnimGroup = 0; - - m_OriginalHandlingData[108].iVehicleID = 108; - m_OriginalHandlingData[108].fMass = 1700.000000f; - m_OriginalHandlingData[108].fTurnMass = 4166.399902f; - m_OriginalHandlingData[108].fDragCoeff = 2.500000f; - m_OriginalHandlingData[108].vecCenterOfMass = CVector(0.000000f, 0.150000f, 0.000000f); - m_OriginalHandlingData[108].uiPercentSubmerged = 70; - m_OriginalHandlingData[108].fTractionMultiplier = 0.600000f; - m_OriginalHandlingData[108].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[108].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[108].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[108].Transmission.uiHandlingFlags = 4; - m_OriginalHandlingData[108].Transmission.fEngineAcceleration = 9.600000f; - m_OriginalHandlingData[108].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[108].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[108].fBrakeDeceleration = 8.170000f; - m_OriginalHandlingData[108].fBrakeBias = 0.520000f; - m_OriginalHandlingData[108].bABS = false; - m_OriginalHandlingData[108].fSteeringLock = 35.000000f; - m_OriginalHandlingData[108].fTractionLoss = 0.850000f; - m_OriginalHandlingData[108].fTractionBias = 0.520000f; - m_OriginalHandlingData[108].fSuspensionForceLevel = 0.700000f; - m_OriginalHandlingData[108].fSuspensionDamping = 0.080000f; - m_OriginalHandlingData[108].fSuspensionHighSpdDamping = 3.000000f; - m_OriginalHandlingData[108].fSuspensionUpperLimit = 0.300000f; - m_OriginalHandlingData[108].fSuspensionLowerLimit = -0.160000f; - m_OriginalHandlingData[108].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[108].fSuspensionAntiDiveMultiplier = 0.500000f; - m_OriginalHandlingData[108].fCollisionDamageMultiplier = 0.520000f; - m_OriginalHandlingData[108].uiModelFlags = 0x40000004; - m_OriginalHandlingData[108].uiHandlingFlags = 0x4; - m_OriginalHandlingData[108].fSeatOffsetDistance = 0.300000f; - m_OriginalHandlingData[108].uiMonetary = 19000; - m_OriginalHandlingData[108].ucHeadLight = 1; - m_OriginalHandlingData[108].ucTailLight = 1; - m_OriginalHandlingData[108].ucAnimGroup = 1; - - m_OriginalHandlingData[109].iVehicleID = 109; - m_OriginalHandlingData[109].fMass = 1600.000000f; - m_OriginalHandlingData[109].fTurnMass = 3550.000000f; - m_OriginalHandlingData[109].fDragCoeff = 2.000000f; - m_OriginalHandlingData[109].vecCenterOfMass = CVector(0.000000f, 0.300000f, 0.000000f); - m_OriginalHandlingData[109].uiPercentSubmerged = 70; - m_OriginalHandlingData[109].fTractionMultiplier = 0.700000f; - m_OriginalHandlingData[109].Transmission.ucDriveType = 'F'; - m_OriginalHandlingData[109].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[109].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[109].Transmission.uiHandlingFlags = 1; - m_OriginalHandlingData[109].Transmission.fEngineAcceleration = 6.800000f; - m_OriginalHandlingData[109].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[109].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[109].fBrakeDeceleration = 5.400000f; - m_OriginalHandlingData[109].fBrakeBias = 0.600000f; - m_OriginalHandlingData[109].bABS = false; - m_OriginalHandlingData[109].fSteeringLock = 30.000000f; - m_OriginalHandlingData[109].fTractionLoss = 0.800000f; - m_OriginalHandlingData[109].fTractionBias = 0.520000f; - m_OriginalHandlingData[109].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[109].fSuspensionDamping = 0.090000f; - m_OriginalHandlingData[109].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[109].fSuspensionUpperLimit = 0.300000f; - m_OriginalHandlingData[109].fSuspensionLowerLimit = -0.120000f; - m_OriginalHandlingData[109].fSuspensionFrontRearBias = 0.550000f; - m_OriginalHandlingData[109].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[109].fCollisionDamageMultiplier = 0.540000f; - m_OriginalHandlingData[109].uiModelFlags = 0x40000000; - m_OriginalHandlingData[109].uiHandlingFlags = 0x1; - m_OriginalHandlingData[109].fSeatOffsetDistance = 0.260000f; - m_OriginalHandlingData[109].uiMonetary = 19000; - m_OriginalHandlingData[109].ucHeadLight = 0; - m_OriginalHandlingData[109].ucTailLight = 3; - m_OriginalHandlingData[109].ucAnimGroup = 0; - - m_OriginalHandlingData[110].iVehicleID = 110; - m_OriginalHandlingData[110].fMass = 1800.000000f; - m_OriginalHandlingData[110].fTurnMass = 4500.000000f; - m_OriginalHandlingData[110].fDragCoeff = 2.200000f; - m_OriginalHandlingData[110].vecCenterOfMass = CVector(0.000000f, 0.200000f, -0.100000f); - m_OriginalHandlingData[110].uiPercentSubmerged = 75; - m_OriginalHandlingData[110].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[110].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[110].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[110].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[110].Transmission.uiHandlingFlags = 4194305; - m_OriginalHandlingData[110].Transmission.fEngineAcceleration = 8.800000f; - m_OriginalHandlingData[110].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[110].Transmission.fMaxVelocity = 165.000000f; - m_OriginalHandlingData[110].fBrakeDeceleration = 9.000000f; - m_OriginalHandlingData[110].fBrakeBias = 0.550000f; - m_OriginalHandlingData[110].bABS = false; - m_OriginalHandlingData[110].fSteeringLock = 30.000000f; - m_OriginalHandlingData[110].fTractionLoss = 0.800000f; - m_OriginalHandlingData[110].fTractionBias = 0.490000f; - m_OriginalHandlingData[110].fSuspensionForceLevel = 1.100000f; - m_OriginalHandlingData[110].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[110].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[110].fSuspensionUpperLimit = 0.270000f; - m_OriginalHandlingData[110].fSuspensionLowerLimit = -0.080000f; - m_OriginalHandlingData[110].fSuspensionFrontRearBias = 0.540000f; - m_OriginalHandlingData[110].fSuspensionAntiDiveMultiplier = 0.300000f; - m_OriginalHandlingData[110].fCollisionDamageMultiplier = 0.560000f; - m_OriginalHandlingData[110].uiModelFlags = 0x40000000; - m_OriginalHandlingData[110].uiHandlingFlags = 0x400001; - m_OriginalHandlingData[110].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[110].uiMonetary = 35000; - m_OriginalHandlingData[110].ucHeadLight = 0; - m_OriginalHandlingData[110].ucTailLight = 1; - m_OriginalHandlingData[110].ucAnimGroup = 0; - - m_OriginalHandlingData[111].iVehicleID = 111; - m_OriginalHandlingData[111].fMass = 2600.000000f; - m_OriginalHandlingData[111].fTurnMass = 8666.700195f; - m_OriginalHandlingData[111].fDragCoeff = 3.000000f; - m_OriginalHandlingData[111].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[111].uiPercentSubmerged = 80; - m_OriginalHandlingData[111].fTractionMultiplier = 0.850000f; - m_OriginalHandlingData[111].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[111].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[111].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[111].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[111].Transmission.fEngineAcceleration = 7.200000f; - m_OriginalHandlingData[111].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[111].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[111].fBrakeDeceleration = 6.000000f; - m_OriginalHandlingData[111].fBrakeBias = 0.800000f; - m_OriginalHandlingData[111].bABS = false; - m_OriginalHandlingData[111].fSteeringLock = 30.000000f; - m_OriginalHandlingData[111].fTractionLoss = 0.700000f; - m_OriginalHandlingData[111].fTractionBias = 0.460000f; - m_OriginalHandlingData[111].fSuspensionForceLevel = 1.800000f; - m_OriginalHandlingData[111].fSuspensionDamping = 0.070000f; - m_OriginalHandlingData[111].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[111].fSuspensionUpperLimit = 0.350000f; - m_OriginalHandlingData[111].fSuspensionLowerLimit = -0.180000f; - m_OriginalHandlingData[111].fSuspensionFrontRearBias = 0.250000f; - m_OriginalHandlingData[111].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[111].fCollisionDamageMultiplier = 0.500000f; - m_OriginalHandlingData[111].uiModelFlags = 0x1; - m_OriginalHandlingData[111].uiHandlingFlags = 0x0; - m_OriginalHandlingData[111].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[111].uiMonetary = 20000; - m_OriginalHandlingData[111].ucHeadLight = 0; - m_OriginalHandlingData[111].ucTailLight = 3; - m_OriginalHandlingData[111].ucAnimGroup = 13; - - m_OriginalHandlingData[112].iVehicleID = 112; - m_OriginalHandlingData[112].fMass = 3000.000000f; - m_OriginalHandlingData[112].fTurnMass = 6000.000000f; - m_OriginalHandlingData[112].fDragCoeff = 3.000000f; - m_OriginalHandlingData[112].vecCenterOfMass = CVector(0.000000f, 0.350000f, 0.000000f); - m_OriginalHandlingData[112].uiPercentSubmerged = 80; - m_OriginalHandlingData[112].fTractionMultiplier = 0.600000f; - m_OriginalHandlingData[112].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[112].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[112].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[112].Transmission.uiHandlingFlags = 5260288; - m_OriginalHandlingData[112].Transmission.fEngineAcceleration = 10.000000f; - m_OriginalHandlingData[112].Transmission.fEngineInertia = 15.000000f; - m_OriginalHandlingData[112].Transmission.fMaxVelocity = 170.000000f; - m_OriginalHandlingData[112].fBrakeDeceleration = 8.500000f; - m_OriginalHandlingData[112].fBrakeBias = 0.300000f; - m_OriginalHandlingData[112].bABS = false; - m_OriginalHandlingData[112].fSteeringLock = 30.000000f; - m_OriginalHandlingData[112].fTractionLoss = 0.800000f; - m_OriginalHandlingData[112].fTractionBias = 0.400000f; - m_OriginalHandlingData[112].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[112].fSuspensionDamping = 0.120000f; - m_OriginalHandlingData[112].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[112].fSuspensionUpperLimit = 0.240000f; - m_OriginalHandlingData[112].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[112].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[112].fSuspensionAntiDiveMultiplier = 0.500000f; - m_OriginalHandlingData[112].fCollisionDamageMultiplier = 0.300000f; - m_OriginalHandlingData[112].uiModelFlags = 0x20200020; - m_OriginalHandlingData[112].uiHandlingFlags = 0x504400; - m_OriginalHandlingData[112].fSeatOffsetDistance = 0.440000f; - m_OriginalHandlingData[112].uiMonetary = 40000; - m_OriginalHandlingData[112].ucHeadLight = 0; - m_OriginalHandlingData[112].ucTailLight = 1; - m_OriginalHandlingData[112].ucAnimGroup = 0; - - m_OriginalHandlingData[113].iVehicleID = 113; - m_OriginalHandlingData[113].fMass = 1500.000000f; - m_OriginalHandlingData[113].fTurnMass = 3500.000000f; - m_OriginalHandlingData[113].fDragCoeff = 3.000000f; - m_OriginalHandlingData[113].vecCenterOfMass = CVector(0.000000f, 0.050000f, -0.200000f); - m_OriginalHandlingData[113].uiPercentSubmerged = 75; - m_OriginalHandlingData[113].fTractionMultiplier = 0.550000f; - m_OriginalHandlingData[113].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[113].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[113].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[113].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[113].Transmission.fEngineAcceleration = 12.000000f; - m_OriginalHandlingData[113].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[113].Transmission.fMaxVelocity = 180.000000f; - m_OriginalHandlingData[113].fBrakeDeceleration = 8.000000f; - m_OriginalHandlingData[113].fBrakeBias = 0.450000f; - m_OriginalHandlingData[113].bABS = false; - m_OriginalHandlingData[113].fSteeringLock = 30.000000f; - m_OriginalHandlingData[113].fTractionLoss = 0.850000f; - m_OriginalHandlingData[113].fTractionBias = 0.500000f; - m_OriginalHandlingData[113].fSuspensionForceLevel = 0.650000f; - m_OriginalHandlingData[113].fSuspensionDamping = 0.070000f; - m_OriginalHandlingData[113].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[113].fSuspensionUpperLimit = 0.150000f; - m_OriginalHandlingData[113].fSuspensionLowerLimit = -0.100000f; - m_OriginalHandlingData[113].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[113].fSuspensionAntiDiveMultiplier = 0.300000f; - m_OriginalHandlingData[113].fCollisionDamageMultiplier = 0.600000f; - m_OriginalHandlingData[113].uiModelFlags = 0x40282804; - m_OriginalHandlingData[113].uiHandlingFlags = 0x0; - m_OriginalHandlingData[113].fSeatOffsetDistance = 0.250000f; - m_OriginalHandlingData[113].uiMonetary = 35000; - m_OriginalHandlingData[113].ucHeadLight = 1; - m_OriginalHandlingData[113].ucTailLight = 1; - m_OriginalHandlingData[113].ucAnimGroup = 1; - - m_OriginalHandlingData[114].iVehicleID = 114; - m_OriginalHandlingData[114].fMass = 5000.000000f; - m_OriginalHandlingData[114].fTurnMass = 20000.000000f; - m_OriginalHandlingData[114].fDragCoeff = 3.000000f; - m_OriginalHandlingData[114].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.350000f); - m_OriginalHandlingData[114].uiPercentSubmerged = 80; - m_OriginalHandlingData[114].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[114].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[114].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[114].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[114].Transmission.uiHandlingFlags = 19923013; - m_OriginalHandlingData[114].Transmission.fEngineAcceleration = 18.000000f; - m_OriginalHandlingData[114].Transmission.fEngineInertia = 25.000000f; - m_OriginalHandlingData[114].Transmission.fMaxVelocity = 110.000000f; - m_OriginalHandlingData[114].fBrakeDeceleration = 7.000000f; - m_OriginalHandlingData[114].fBrakeBias = 0.450000f; - m_OriginalHandlingData[114].bABS = false; - m_OriginalHandlingData[114].fSteeringLock = 35.000000f; - m_OriginalHandlingData[114].fTractionLoss = 0.850000f; - m_OriginalHandlingData[114].fTractionBias = 0.550000f; - m_OriginalHandlingData[114].fSuspensionForceLevel = 1.500000f; - m_OriginalHandlingData[114].fSuspensionDamping = 0.070000f; - m_OriginalHandlingData[114].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[114].fSuspensionUpperLimit = 0.450000f; - m_OriginalHandlingData[114].fSuspensionLowerLimit = -0.300000f; - m_OriginalHandlingData[114].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[114].fSuspensionAntiDiveMultiplier = 0.300000f; - m_OriginalHandlingData[114].fCollisionDamageMultiplier = 0.350000f; - m_OriginalHandlingData[114].uiModelFlags = 0x28; - m_OriginalHandlingData[114].uiHandlingFlags = 0x1300045; - m_OriginalHandlingData[114].fSeatOffsetDistance = 0.440000f; - m_OriginalHandlingData[114].uiMonetary = 40000; - m_OriginalHandlingData[114].ucHeadLight = 0; - m_OriginalHandlingData[114].ucTailLight = 1; - m_OriginalHandlingData[114].ucAnimGroup = 20; - - m_OriginalHandlingData[115].iVehicleID = 115; - m_OriginalHandlingData[115].fMass = 5000.000000f; - m_OriginalHandlingData[115].fTurnMass = 20000.000000f; - m_OriginalHandlingData[115].fDragCoeff = 3.000000f; - m_OriginalHandlingData[115].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.350000f); - m_OriginalHandlingData[115].uiPercentSubmerged = 80; - m_OriginalHandlingData[115].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[115].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[115].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[115].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[115].Transmission.uiHandlingFlags = 19923013; - m_OriginalHandlingData[115].Transmission.fEngineAcceleration = 18.000000f; - m_OriginalHandlingData[115].Transmission.fEngineInertia = 25.000000f; - m_OriginalHandlingData[115].Transmission.fMaxVelocity = 110.000000f; - m_OriginalHandlingData[115].fBrakeDeceleration = 7.000000f; - m_OriginalHandlingData[115].fBrakeBias = 0.450000f; - m_OriginalHandlingData[115].bABS = false; - m_OriginalHandlingData[115].fSteeringLock = 35.000000f; - m_OriginalHandlingData[115].fTractionLoss = 0.850000f; - m_OriginalHandlingData[115].fTractionBias = 0.550000f; - m_OriginalHandlingData[115].fSuspensionForceLevel = 1.500000f; - m_OriginalHandlingData[115].fSuspensionDamping = 0.070000f; - m_OriginalHandlingData[115].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[115].fSuspensionUpperLimit = 0.450000f; - m_OriginalHandlingData[115].fSuspensionLowerLimit = -0.300000f; - m_OriginalHandlingData[115].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[115].fSuspensionAntiDiveMultiplier = 0.300000f; - m_OriginalHandlingData[115].fCollisionDamageMultiplier = 0.350000f; - m_OriginalHandlingData[115].uiModelFlags = 0x28; - m_OriginalHandlingData[115].uiHandlingFlags = 0x1300045; - m_OriginalHandlingData[115].fSeatOffsetDistance = 0.440000f; - m_OriginalHandlingData[115].uiMonetary = 40000; - m_OriginalHandlingData[115].ucHeadLight = 0; - m_OriginalHandlingData[115].ucTailLight = 1; - m_OriginalHandlingData[115].ucAnimGroup = 20; - - m_OriginalHandlingData[116].iVehicleID = 116; - m_OriginalHandlingData[116].fMass = 1400.000000f; - m_OriginalHandlingData[116].fTurnMass = 2998.300049f; - m_OriginalHandlingData[116].fDragCoeff = 2.000000f; - m_OriginalHandlingData[116].vecCenterOfMass = CVector(0.000000f, 0.100000f, -0.300000f); - m_OriginalHandlingData[116].uiPercentSubmerged = 75; - m_OriginalHandlingData[116].fTractionMultiplier = 0.800000f; - m_OriginalHandlingData[116].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[116].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[116].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[116].Transmission.uiHandlingFlags = 67108865; - m_OriginalHandlingData[116].Transmission.fEngineAcceleration = 8.000000f; - m_OriginalHandlingData[116].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[116].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[116].fBrakeDeceleration = 8.000000f; - m_OriginalHandlingData[116].fBrakeBias = 0.450000f; - m_OriginalHandlingData[116].bABS = false; - m_OriginalHandlingData[116].fSteeringLock = 30.000000f; - m_OriginalHandlingData[116].fTractionLoss = 0.850000f; - m_OriginalHandlingData[116].fTractionBias = 0.470000f; - m_OriginalHandlingData[116].fSuspensionForceLevel = 1.300000f; - m_OriginalHandlingData[116].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[116].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[116].fSuspensionUpperLimit = 0.280000f; - m_OriginalHandlingData[116].fSuspensionLowerLimit = -0.100000f; - m_OriginalHandlingData[116].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[116].fSuspensionAntiDiveMultiplier = 0.300000f; - m_OriginalHandlingData[116].fCollisionDamageMultiplier = 0.600000f; - m_OriginalHandlingData[116].uiModelFlags = 0xC0002800; - m_OriginalHandlingData[116].uiHandlingFlags = 0x4000001; - m_OriginalHandlingData[116].fSeatOffsetDistance = 0.250000f; - m_OriginalHandlingData[116].uiMonetary = 35000; - m_OriginalHandlingData[116].ucHeadLight = 1; - m_OriginalHandlingData[116].ucTailLight = 1; - m_OriginalHandlingData[116].ucAnimGroup = 0; - - m_OriginalHandlingData[117].iVehicleID = 117; - m_OriginalHandlingData[117].fMass = 1500.000000f; - m_OriginalHandlingData[117].fTurnMass = 3600.000000f; - m_OriginalHandlingData[117].fDragCoeff = 2.200000f; - m_OriginalHandlingData[117].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.050000f); - m_OriginalHandlingData[117].uiPercentSubmerged = 75; - m_OriginalHandlingData[117].fTractionMultiplier = 0.850000f; - m_OriginalHandlingData[117].Transmission.ucDriveType = 'F'; - m_OriginalHandlingData[117].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[117].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[117].Transmission.uiHandlingFlags = 67108864; - m_OriginalHandlingData[117].Transmission.fEngineAcceleration = 11.200000f; - m_OriginalHandlingData[117].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[117].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[117].fBrakeDeceleration = 10.000000f; - m_OriginalHandlingData[117].fBrakeBias = 0.450000f; - m_OriginalHandlingData[117].bABS = false; - m_OriginalHandlingData[117].fSteeringLock = 30.000000f; - m_OriginalHandlingData[117].fTractionLoss = 0.800000f; - m_OriginalHandlingData[117].fTractionBias = 0.500000f; - m_OriginalHandlingData[117].fSuspensionForceLevel = 1.100000f; - m_OriginalHandlingData[117].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[117].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[117].fSuspensionUpperLimit = 0.280000f; - m_OriginalHandlingData[117].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[117].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[117].fSuspensionAntiDiveMultiplier = 0.300000f; - m_OriginalHandlingData[117].fCollisionDamageMultiplier = 0.600000f; - m_OriginalHandlingData[117].uiModelFlags = 0xC0002804; - m_OriginalHandlingData[117].uiHandlingFlags = 0x4000000; - m_OriginalHandlingData[117].fSeatOffsetDistance = 0.250000f; - m_OriginalHandlingData[117].uiMonetary = 35000; - m_OriginalHandlingData[117].ucHeadLight = 1; - m_OriginalHandlingData[117].ucTailLight = 1; - m_OriginalHandlingData[117].ucAnimGroup = 1; - - m_OriginalHandlingData[118].iVehicleID = 118; - m_OriginalHandlingData[118].fMass = 1400.000000f; - m_OriginalHandlingData[118].fTurnMass = 3400.000000f; - m_OriginalHandlingData[118].fDragCoeff = 2.400000f; - m_OriginalHandlingData[118].vecCenterOfMass = CVector(0.000000f, 0.100000f, -0.100000f); - m_OriginalHandlingData[118].uiPercentSubmerged = 75; - m_OriginalHandlingData[118].fTractionMultiplier = 0.800000f; - m_OriginalHandlingData[118].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[118].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[118].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[118].Transmission.uiHandlingFlags = 67108866; - m_OriginalHandlingData[118].Transmission.fEngineAcceleration = 11.200000f; - m_OriginalHandlingData[118].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[118].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[118].fBrakeDeceleration = 10.000000f; - m_OriginalHandlingData[118].fBrakeBias = 0.500000f; - m_OriginalHandlingData[118].bABS = false; - m_OriginalHandlingData[118].fSteeringLock = 30.000000f; - m_OriginalHandlingData[118].fTractionLoss = 0.800000f; - m_OriginalHandlingData[118].fTractionBias = 0.500000f; - m_OriginalHandlingData[118].fSuspensionForceLevel = 1.200000f; - m_OriginalHandlingData[118].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[118].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[118].fSuspensionUpperLimit = 0.280000f; - m_OriginalHandlingData[118].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[118].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[118].fSuspensionAntiDiveMultiplier = 0.300000f; - m_OriginalHandlingData[118].fCollisionDamageMultiplier = 0.600000f; - m_OriginalHandlingData[118].uiModelFlags = 0x2800; - m_OriginalHandlingData[118].uiHandlingFlags = 0x4000002; - m_OriginalHandlingData[118].fSeatOffsetDistance = 0.250000f; - m_OriginalHandlingData[118].uiMonetary = 35000; - m_OriginalHandlingData[118].ucHeadLight = 1; - m_OriginalHandlingData[118].ucTailLight = 1; - m_OriginalHandlingData[118].ucAnimGroup = 0; - - m_OriginalHandlingData[119].iVehicleID = 119; - m_OriginalHandlingData[119].fMass = 1800.000000f; - m_OriginalHandlingData[119].fTurnMass = 4500.000000f; - m_OriginalHandlingData[119].fDragCoeff = 2.100000f; - m_OriginalHandlingData[119].vecCenterOfMass = CVector(0.000000f, 0.100000f, -0.100000f); - m_OriginalHandlingData[119].uiPercentSubmerged = 75; - m_OriginalHandlingData[119].fTractionMultiplier = 0.600000f; - m_OriginalHandlingData[119].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[119].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[119].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[119].Transmission.uiHandlingFlags = 67108864; - m_OriginalHandlingData[119].Transmission.fEngineAcceleration = 8.000000f; - m_OriginalHandlingData[119].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[119].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[119].fBrakeDeceleration = 7.000000f; - m_OriginalHandlingData[119].fBrakeBias = 0.500000f; - m_OriginalHandlingData[119].bABS = false; - m_OriginalHandlingData[119].fSteeringLock = 30.000000f; - m_OriginalHandlingData[119].fTractionLoss = 0.850000f; - m_OriginalHandlingData[119].fTractionBias = 0.500000f; - m_OriginalHandlingData[119].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[119].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[119].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[119].fSuspensionUpperLimit = 0.280000f; - m_OriginalHandlingData[119].fSuspensionLowerLimit = -0.160000f; - m_OriginalHandlingData[119].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[119].fSuspensionAntiDiveMultiplier = 0.300000f; - m_OriginalHandlingData[119].fCollisionDamageMultiplier = 0.600000f; - m_OriginalHandlingData[119].uiModelFlags = 0x2800; - m_OriginalHandlingData[119].uiHandlingFlags = 0x4000000; - m_OriginalHandlingData[119].fSeatOffsetDistance = 0.250000f; - m_OriginalHandlingData[119].uiMonetary = 35000; - m_OriginalHandlingData[119].ucHeadLight = 1; - m_OriginalHandlingData[119].ucTailLight = 1; - m_OriginalHandlingData[119].ucAnimGroup = 0; - - m_OriginalHandlingData[120].iVehicleID = 120; - m_OriginalHandlingData[120].fMass = 1500.000000f; - m_OriginalHandlingData[120].fTurnMass = 3500.000000f; - m_OriginalHandlingData[120].fDragCoeff = 2.200000f; - m_OriginalHandlingData[120].vecCenterOfMass = CVector(0.000000f, 0.300000f, -0.150000f); - m_OriginalHandlingData[120].uiPercentSubmerged = 75; - m_OriginalHandlingData[120].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[120].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[120].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[120].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[120].Transmission.uiHandlingFlags = 67108865; - m_OriginalHandlingData[120].Transmission.fEngineAcceleration = 11.200000f; - m_OriginalHandlingData[120].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[120].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[120].fBrakeDeceleration = 8.000000f; - m_OriginalHandlingData[120].fBrakeBias = 0.500000f; - m_OriginalHandlingData[120].bABS = false; - m_OriginalHandlingData[120].fSteeringLock = 35.000000f; - m_OriginalHandlingData[120].fTractionLoss = 0.900000f; - m_OriginalHandlingData[120].fTractionBias = 0.500000f; - m_OriginalHandlingData[120].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[120].fSuspensionDamping = 0.200000f; - m_OriginalHandlingData[120].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[120].fSuspensionUpperLimit = 0.280000f; - m_OriginalHandlingData[120].fSuspensionLowerLimit = -0.100000f; - m_OriginalHandlingData[120].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[120].fSuspensionAntiDiveMultiplier = 0.300000f; - m_OriginalHandlingData[120].fCollisionDamageMultiplier = 0.600000f; - m_OriginalHandlingData[120].uiModelFlags = 0x40002804; - m_OriginalHandlingData[120].uiHandlingFlags = 0x4000001; - m_OriginalHandlingData[120].fSeatOffsetDistance = 0.250000f; - m_OriginalHandlingData[120].uiMonetary = 35000; - m_OriginalHandlingData[120].ucHeadLight = 1; - m_OriginalHandlingData[120].ucTailLight = 1; - m_OriginalHandlingData[120].ucAnimGroup = 1; - - m_OriginalHandlingData[121].iVehicleID = 121; - m_OriginalHandlingData[121].fMass = 100.000000f; - m_OriginalHandlingData[121].fTurnMass = 24.100000f; - m_OriginalHandlingData[121].fDragCoeff = 5.000000f; - m_OriginalHandlingData[121].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.100000f); - m_OriginalHandlingData[121].uiPercentSubmerged = 70; - m_OriginalHandlingData[121].fTractionMultiplier = 0.700000f; - m_OriginalHandlingData[121].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[121].Transmission.ucEngineType = 'E'; - m_OriginalHandlingData[121].Transmission.ucNumberOfGears = 1; - m_OriginalHandlingData[121].Transmission.uiHandlingFlags = 64; - m_OriginalHandlingData[121].Transmission.fEngineAcceleration = 14.000000f; - m_OriginalHandlingData[121].Transmission.fEngineInertia = 15.000000f; - m_OriginalHandlingData[121].Transmission.fMaxVelocity = 75.000000f; - m_OriginalHandlingData[121].fBrakeDeceleration = 5.000000f; - m_OriginalHandlingData[121].fBrakeBias = 0.500000f; - m_OriginalHandlingData[121].bABS = false; - m_OriginalHandlingData[121].fSteeringLock = 45.000000f; - m_OriginalHandlingData[121].fTractionLoss = 0.900000f; - m_OriginalHandlingData[121].fTractionBias = 0.490000f; - m_OriginalHandlingData[121].fSuspensionForceLevel = 1.600000f; - m_OriginalHandlingData[121].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[121].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[121].fSuspensionUpperLimit = 0.280000f; - m_OriginalHandlingData[121].fSuspensionLowerLimit = -0.140000f; - m_OriginalHandlingData[121].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[121].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[121].fCollisionDamageMultiplier = 0.050000f; - m_OriginalHandlingData[121].uiModelFlags = 0x0; - m_OriginalHandlingData[121].uiHandlingFlags = 0x40; - m_OriginalHandlingData[121].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[121].uiMonetary = 500; - m_OriginalHandlingData[121].ucHeadLight = 0; - m_OriginalHandlingData[121].ucTailLight = 1; - m_OriginalHandlingData[121].ucAnimGroup = 0; - - m_OriginalHandlingData[122].iVehicleID = 122; - m_OriginalHandlingData[122].fMass = 1400.000000f; - m_OriginalHandlingData[122].fTurnMass = 2998.300049f; - m_OriginalHandlingData[122].fDragCoeff = 2.200000f; - m_OriginalHandlingData[122].vecCenterOfMass = CVector(0.000000f, 0.200000f, -0.100000f); - m_OriginalHandlingData[122].uiPercentSubmerged = 75; - m_OriginalHandlingData[122].fTractionMultiplier = 0.750000f; - m_OriginalHandlingData[122].Transmission.ucDriveType = 'F'; - m_OriginalHandlingData[122].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[122].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[122].Transmission.uiHandlingFlags = 67108865; - m_OriginalHandlingData[122].Transmission.fEngineAcceleration = 9.600000f; - m_OriginalHandlingData[122].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[122].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[122].fBrakeDeceleration = 8.000000f; - m_OriginalHandlingData[122].fBrakeBias = 0.550000f; - m_OriginalHandlingData[122].bABS = false; - m_OriginalHandlingData[122].fSteeringLock = 30.000000f; - m_OriginalHandlingData[122].fTractionLoss = 0.900000f; - m_OriginalHandlingData[122].fTractionBias = 0.500000f; - m_OriginalHandlingData[122].fSuspensionForceLevel = 1.400000f; - m_OriginalHandlingData[122].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[122].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[122].fSuspensionUpperLimit = 0.280000f; - m_OriginalHandlingData[122].fSuspensionLowerLimit = -0.100000f; - m_OriginalHandlingData[122].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[122].fSuspensionAntiDiveMultiplier = 0.300000f; - m_OriginalHandlingData[122].fCollisionDamageMultiplier = 0.600000f; - m_OriginalHandlingData[122].uiModelFlags = 0x2804; - m_OriginalHandlingData[122].uiHandlingFlags = 0x4000001; - m_OriginalHandlingData[122].fSeatOffsetDistance = 0.250000f; - m_OriginalHandlingData[122].uiMonetary = 35000; - m_OriginalHandlingData[122].ucHeadLight = 1; - m_OriginalHandlingData[122].ucTailLight = 1; - m_OriginalHandlingData[122].ucAnimGroup = 1; - - m_OriginalHandlingData[123].iVehicleID = 123; - m_OriginalHandlingData[123].fMass = 1800.000000f; - m_OriginalHandlingData[123].fTurnMass = 4000.000000f; - m_OriginalHandlingData[123].fDragCoeff = 2.300000f; - m_OriginalHandlingData[123].vecCenterOfMass = CVector(0.000000f, -0.300000f, 0.000000f); - m_OriginalHandlingData[123].uiPercentSubmerged = 75; - m_OriginalHandlingData[123].fTractionMultiplier = 0.750000f; - m_OriginalHandlingData[123].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[123].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[123].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[123].Transmission.uiHandlingFlags = 302055424; - m_OriginalHandlingData[123].Transmission.fEngineAcceleration = 9.600000f; - m_OriginalHandlingData[123].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[123].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[123].fBrakeDeceleration = 7.000000f; - m_OriginalHandlingData[123].fBrakeBias = 0.500000f; - m_OriginalHandlingData[123].bABS = false; - m_OriginalHandlingData[123].fSteeringLock = 35.000000f; - m_OriginalHandlingData[123].fTractionLoss = 0.850000f; - m_OriginalHandlingData[123].fTractionBias = 0.520000f; - m_OriginalHandlingData[123].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[123].fSuspensionDamping = 0.080000f; - m_OriginalHandlingData[123].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[123].fSuspensionUpperLimit = 0.280000f; - m_OriginalHandlingData[123].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[123].fSuspensionFrontRearBias = 0.450000f; - m_OriginalHandlingData[123].fSuspensionAntiDiveMultiplier = 0.300000f; - m_OriginalHandlingData[123].fCollisionDamageMultiplier = 0.600000f; - m_OriginalHandlingData[123].uiModelFlags = 0x0; - m_OriginalHandlingData[123].uiHandlingFlags = 0x12010000; - m_OriginalHandlingData[123].fSeatOffsetDistance = 0.250000f; - m_OriginalHandlingData[123].uiMonetary = 35000; - m_OriginalHandlingData[123].ucHeadLight = 1; - m_OriginalHandlingData[123].ucTailLight = 1; - m_OriginalHandlingData[123].ucAnimGroup = 0; - - m_OriginalHandlingData[124].iVehicleID = 124; - m_OriginalHandlingData[124].fMass = 1500.000000f; - m_OriginalHandlingData[124].fTurnMass = 2500.000000f; - m_OriginalHandlingData[124].fDragCoeff = 2.000000f; - m_OriginalHandlingData[124].vecCenterOfMass = CVector(0.000000f, -0.600000f, 0.100000f); - m_OriginalHandlingData[124].uiPercentSubmerged = 70; - m_OriginalHandlingData[124].fTractionMultiplier = 0.700000f; - m_OriginalHandlingData[124].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[124].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[124].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[124].Transmission.uiHandlingFlags = 33619968; - m_OriginalHandlingData[124].Transmission.fEngineAcceleration = 9.600000f; - m_OriginalHandlingData[124].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[124].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[124].fBrakeDeceleration = 8.170000f; - m_OriginalHandlingData[124].fBrakeBias = 0.520000f; - m_OriginalHandlingData[124].bABS = false; - m_OriginalHandlingData[124].fSteeringLock = 35.000000f; - m_OriginalHandlingData[124].fTractionLoss = 0.840000f; - m_OriginalHandlingData[124].fTractionBias = 0.550000f; - m_OriginalHandlingData[124].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[124].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[124].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[124].fSuspensionUpperLimit = 0.300000f; - m_OriginalHandlingData[124].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[124].fSuspensionFrontRearBias = 0.300000f; - m_OriginalHandlingData[124].fSuspensionAntiDiveMultiplier = 0.250000f; - m_OriginalHandlingData[124].fCollisionDamageMultiplier = 0.520000f; - m_OriginalHandlingData[124].uiModelFlags = 0x200000; - m_OriginalHandlingData[124].uiHandlingFlags = 0x2010000; - m_OriginalHandlingData[124].fSeatOffsetDistance = 0.300000f; - m_OriginalHandlingData[124].uiMonetary = 19000; - m_OriginalHandlingData[124].ucHeadLight = 1; - m_OriginalHandlingData[124].ucTailLight = 1; - m_OriginalHandlingData[124].ucAnimGroup = 0; - - m_OriginalHandlingData[125].iVehicleID = 125; - m_OriginalHandlingData[125].fMass = 1000.000000f; - m_OriginalHandlingData[125].fTurnMass = 2500.300049f; - m_OriginalHandlingData[125].fDragCoeff = 4.000000f; - m_OriginalHandlingData[125].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.300000f); - m_OriginalHandlingData[125].uiPercentSubmerged = 80; - m_OriginalHandlingData[125].fTractionMultiplier = 0.700000f; - m_OriginalHandlingData[125].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[125].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[125].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[125].Transmission.uiHandlingFlags = 3179520; - m_OriginalHandlingData[125].Transmission.fEngineAcceleration = 14.000000f; - m_OriginalHandlingData[125].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[125].Transmission.fMaxVelocity = 170.000000f; - m_OriginalHandlingData[125].fBrakeDeceleration = 6.100000f; - m_OriginalHandlingData[125].fBrakeBias = 0.550000f; - m_OriginalHandlingData[125].bABS = false; - m_OriginalHandlingData[125].fSteeringLock = 35.000000f; - m_OriginalHandlingData[125].fTractionLoss = 0.880000f; - m_OriginalHandlingData[125].fTractionBias = 0.550000f; - m_OriginalHandlingData[125].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[125].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[125].fSuspensionHighSpdDamping = 5.000000f; - m_OriginalHandlingData[125].fSuspensionUpperLimit = 0.250000f; - m_OriginalHandlingData[125].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[125].fSuspensionFrontRearBias = 0.350000f; - m_OriginalHandlingData[125].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[125].fCollisionDamageMultiplier = 0.400000f; - m_OriginalHandlingData[125].uiModelFlags = 0x40001B04; - m_OriginalHandlingData[125].uiHandlingFlags = 0x308400; - m_OriginalHandlingData[125].fSeatOffsetDistance = 0.600000f; - m_OriginalHandlingData[125].uiMonetary = 15000; - m_OriginalHandlingData[125].ucHeadLight = 1; - m_OriginalHandlingData[125].ucTailLight = 2; - m_OriginalHandlingData[125].ucAnimGroup = 1; - - m_OriginalHandlingData[126].iVehicleID = 126; - m_OriginalHandlingData[126].fMass = 5500.000000f; - m_OriginalHandlingData[126].fTurnMass = 33187.898438f; - m_OriginalHandlingData[126].fDragCoeff = 1.000000f; - m_OriginalHandlingData[126].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[126].uiPercentSubmerged = 90; - m_OriginalHandlingData[126].fTractionMultiplier = 0.580000f; - m_OriginalHandlingData[126].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[126].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[126].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[126].Transmission.uiHandlingFlags = 512; - m_OriginalHandlingData[126].Transmission.fEngineAcceleration = 8.000000f; - m_OriginalHandlingData[126].Transmission.fEngineInertia = 20.000000f; - m_OriginalHandlingData[126].Transmission.fMaxVelocity = 110.000000f; - m_OriginalHandlingData[126].fBrakeDeceleration = 3.170000f; - m_OriginalHandlingData[126].fBrakeBias = 0.400000f; - m_OriginalHandlingData[126].bABS = false; - m_OriginalHandlingData[126].fSteeringLock = 30.000000f; - m_OriginalHandlingData[126].fTractionLoss = 0.800000f; - m_OriginalHandlingData[126].fTractionBias = 0.500000f; - m_OriginalHandlingData[126].fSuspensionForceLevel = 1.400000f; - m_OriginalHandlingData[126].fSuspensionDamping = 0.060000f; - m_OriginalHandlingData[126].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[126].fSuspensionUpperLimit = 0.450000f; - m_OriginalHandlingData[126].fSuspensionLowerLimit = 0.000000f; - m_OriginalHandlingData[126].fSuspensionFrontRearBias = 0.550000f; - m_OriginalHandlingData[126].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[126].fCollisionDamageMultiplier = 0.200000f; - m_OriginalHandlingData[126].uiModelFlags = 0x8; - m_OriginalHandlingData[126].uiHandlingFlags = 0x200; - m_OriginalHandlingData[126].fSeatOffsetDistance = 0.450000f; - m_OriginalHandlingData[126].uiMonetary = 5000; - m_OriginalHandlingData[126].ucHeadLight = 0; - m_OriginalHandlingData[126].ucTailLight = 1; - m_OriginalHandlingData[126].ucAnimGroup = 0; - - m_OriginalHandlingData[127].iVehicleID = 127; - m_OriginalHandlingData[127].fMass = 5500.000000f; - m_OriginalHandlingData[127].fTurnMass = 33187.898438f; - m_OriginalHandlingData[127].fDragCoeff = 1.000000f; - m_OriginalHandlingData[127].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[127].uiPercentSubmerged = 90; - m_OriginalHandlingData[127].fTractionMultiplier = 0.580000f; - m_OriginalHandlingData[127].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[127].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[127].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[127].Transmission.uiHandlingFlags = 512; - m_OriginalHandlingData[127].Transmission.fEngineAcceleration = 8.000000f; - m_OriginalHandlingData[127].Transmission.fEngineInertia = 20.000000f; - m_OriginalHandlingData[127].Transmission.fMaxVelocity = 110.000000f; - m_OriginalHandlingData[127].fBrakeDeceleration = 3.170000f; - m_OriginalHandlingData[127].fBrakeBias = 0.400000f; - m_OriginalHandlingData[127].bABS = false; - m_OriginalHandlingData[127].fSteeringLock = 30.000000f; - m_OriginalHandlingData[127].fTractionLoss = 0.800000f; - m_OriginalHandlingData[127].fTractionBias = 0.500000f; - m_OriginalHandlingData[127].fSuspensionForceLevel = 1.400000f; - m_OriginalHandlingData[127].fSuspensionDamping = 0.060000f; - m_OriginalHandlingData[127].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[127].fSuspensionUpperLimit = 0.450000f; - m_OriginalHandlingData[127].fSuspensionLowerLimit = -0.100000f; - m_OriginalHandlingData[127].fSuspensionFrontRearBias = 0.550000f; - m_OriginalHandlingData[127].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[127].fCollisionDamageMultiplier = 0.200000f; - m_OriginalHandlingData[127].uiModelFlags = 0x8; - m_OriginalHandlingData[127].uiHandlingFlags = 0x200; - m_OriginalHandlingData[127].fSeatOffsetDistance = 0.650000f; - m_OriginalHandlingData[127].uiMonetary = 5000; - m_OriginalHandlingData[127].ucHeadLight = 0; - m_OriginalHandlingData[127].ucTailLight = 1; - m_OriginalHandlingData[127].ucAnimGroup = 21; - - m_OriginalHandlingData[128].iVehicleID = 128; - m_OriginalHandlingData[128].fMass = 300.000000f; - m_OriginalHandlingData[128].fTurnMass = 150.000000f; - m_OriginalHandlingData[128].fDragCoeff = 5.000000f; - m_OriginalHandlingData[128].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.150000f); - m_OriginalHandlingData[128].uiPercentSubmerged = 110; - m_OriginalHandlingData[128].fTractionMultiplier = 0.900000f; - m_OriginalHandlingData[128].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[128].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[128].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[128].Transmission.uiHandlingFlags = 3179009; - m_OriginalHandlingData[128].Transmission.fEngineAcceleration = 7.200000f; - m_OriginalHandlingData[128].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[128].Transmission.fMaxVelocity = 90.000000f; - m_OriginalHandlingData[128].fBrakeDeceleration = 15.000000f; - m_OriginalHandlingData[128].fBrakeBias = 0.200000f; - m_OriginalHandlingData[128].bABS = false; - m_OriginalHandlingData[128].fSteeringLock = 35.000000f; - m_OriginalHandlingData[128].fTractionLoss = 0.850000f; - m_OriginalHandlingData[128].fTractionBias = 0.480000f; - m_OriginalHandlingData[128].fSuspensionForceLevel = 1.500000f; - m_OriginalHandlingData[128].fSuspensionDamping = 0.200000f; - m_OriginalHandlingData[128].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[128].fSuspensionUpperLimit = 0.250000f; - m_OriginalHandlingData[128].fSuspensionLowerLimit = -0.040000f; - m_OriginalHandlingData[128].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[128].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[128].fCollisionDamageMultiplier = 0.400000f; - m_OriginalHandlingData[128].uiModelFlags = 0x40001B00; - m_OriginalHandlingData[128].uiHandlingFlags = 0x308201; - m_OriginalHandlingData[128].fSeatOffsetDistance = 0.380000f; - m_OriginalHandlingData[128].uiMonetary = 15000; - m_OriginalHandlingData[128].ucHeadLight = 1; - m_OriginalHandlingData[128].ucTailLight = 2; - m_OriginalHandlingData[128].ucAnimGroup = 18; - - m_OriginalHandlingData[129].iVehicleID = 129; - m_OriginalHandlingData[129].fMass = 800.000000f; - m_OriginalHandlingData[129].fTurnMass = 500.000000f; - m_OriginalHandlingData[129].fDragCoeff = 5.000000f; - m_OriginalHandlingData[129].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.300000f); - m_OriginalHandlingData[129].uiPercentSubmerged = 80; - m_OriginalHandlingData[129].fTractionMultiplier = 0.700000f; - m_OriginalHandlingData[129].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[129].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[129].Transmission.ucNumberOfGears = 3; - m_OriginalHandlingData[129].Transmission.uiHandlingFlags = 19955713; - m_OriginalHandlingData[129].Transmission.fEngineAcceleration = 4.800000f; - m_OriginalHandlingData[129].Transmission.fEngineInertia = 30.000000f; - m_OriginalHandlingData[129].Transmission.fMaxVelocity = 60.000000f; - m_OriginalHandlingData[129].fBrakeDeceleration = 6.100000f; - m_OriginalHandlingData[129].fBrakeBias = 0.550000f; - m_OriginalHandlingData[129].bABS = false; - m_OriginalHandlingData[129].fSteeringLock = 35.000000f; - m_OriginalHandlingData[129].fTractionLoss = 0.800000f; - m_OriginalHandlingData[129].fTractionBias = 0.480000f; - m_OriginalHandlingData[129].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[129].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[129].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[129].fSuspensionUpperLimit = 0.150000f; - m_OriginalHandlingData[129].fSuspensionLowerLimit = -0.050000f; - m_OriginalHandlingData[129].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[129].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[129].fCollisionDamageMultiplier = 0.400000f; - m_OriginalHandlingData[129].uiModelFlags = 0x40001B00; - m_OriginalHandlingData[129].uiHandlingFlags = 0x1308001; - m_OriginalHandlingData[129].fSeatOffsetDistance = 0.380000f; - m_OriginalHandlingData[129].uiMonetary = 15000; - m_OriginalHandlingData[129].ucHeadLight = 1; - m_OriginalHandlingData[129].ucTailLight = 2; - m_OriginalHandlingData[129].ucAnimGroup = 28; - - m_OriginalHandlingData[130].iVehicleID = 130; - m_OriginalHandlingData[130].fMass = 10000.000000f; - m_OriginalHandlingData[130].fTurnMass = 50000.000000f; - m_OriginalHandlingData[130].fDragCoeff = 2.000000f; - m_OriginalHandlingData[130].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.600000f); - m_OriginalHandlingData[130].uiPercentSubmerged = 80; - m_OriginalHandlingData[130].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[130].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[130].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[130].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[130].Transmission.uiHandlingFlags = 19922949; - m_OriginalHandlingData[130].Transmission.fEngineAcceleration = 14.000000f; - m_OriginalHandlingData[130].Transmission.fEngineInertia = 25.000000f; - m_OriginalHandlingData[130].Transmission.fMaxVelocity = 110.000000f; - m_OriginalHandlingData[130].fBrakeDeceleration = 7.000000f; - m_OriginalHandlingData[130].fBrakeBias = 0.450000f; - m_OriginalHandlingData[130].bABS = false; - m_OriginalHandlingData[130].fSteeringLock = 35.000000f; - m_OriginalHandlingData[130].fTractionLoss = 0.850000f; - m_OriginalHandlingData[130].fTractionBias = 0.500000f; - m_OriginalHandlingData[130].fSuspensionForceLevel = 0.800000f; - m_OriginalHandlingData[130].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[130].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[130].fSuspensionUpperLimit = 0.400000f; - m_OriginalHandlingData[130].fSuspensionLowerLimit = -0.400000f; - m_OriginalHandlingData[130].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[130].fSuspensionAntiDiveMultiplier = 0.300000f; - m_OriginalHandlingData[130].fCollisionDamageMultiplier = 0.350000f; - m_OriginalHandlingData[130].uiModelFlags = 0x6028; - m_OriginalHandlingData[130].uiHandlingFlags = 0x1300005; - m_OriginalHandlingData[130].fSeatOffsetDistance = 0.290000f; - m_OriginalHandlingData[130].uiMonetary = 40000; - m_OriginalHandlingData[130].ucHeadLight = 0; - m_OriginalHandlingData[130].ucTailLight = 1; - m_OriginalHandlingData[130].ucAnimGroup = 2; - - m_OriginalHandlingData[131].iVehicleID = 131; - m_OriginalHandlingData[131].fMass = 800.000000f; - m_OriginalHandlingData[131].fTurnMass = 632.700012f; - m_OriginalHandlingData[131].fDragCoeff = 5.000000f; - m_OriginalHandlingData[131].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.300000f); - m_OriginalHandlingData[131].uiPercentSubmerged = 80; - m_OriginalHandlingData[131].fTractionMultiplier = 0.700000f; - m_OriginalHandlingData[131].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[131].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[131].Transmission.ucNumberOfGears = 3; - m_OriginalHandlingData[131].Transmission.uiHandlingFlags = 19956225; - m_OriginalHandlingData[131].Transmission.fEngineAcceleration = 4.800000f; - m_OriginalHandlingData[131].Transmission.fEngineInertia = 30.000000f; - m_OriginalHandlingData[131].Transmission.fMaxVelocity = 60.000000f; - m_OriginalHandlingData[131].fBrakeDeceleration = 6.100000f; - m_OriginalHandlingData[131].fBrakeBias = 0.550000f; - m_OriginalHandlingData[131].bABS = false; - m_OriginalHandlingData[131].fSteeringLock = 35.000000f; - m_OriginalHandlingData[131].fTractionLoss = 0.800000f; - m_OriginalHandlingData[131].fTractionBias = 0.460000f; - m_OriginalHandlingData[131].fSuspensionForceLevel = 1.600000f; - m_OriginalHandlingData[131].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[131].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[131].fSuspensionUpperLimit = 0.340000f; - m_OriginalHandlingData[131].fSuspensionLowerLimit = -0.100000f; - m_OriginalHandlingData[131].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[131].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[131].fCollisionDamageMultiplier = 0.400000f; - m_OriginalHandlingData[131].uiModelFlags = 0x40005A00; - m_OriginalHandlingData[131].uiHandlingFlags = 0x1308201; - m_OriginalHandlingData[131].fSeatOffsetDistance = 0.300000f; - m_OriginalHandlingData[131].uiMonetary = 15000; - m_OriginalHandlingData[131].ucHeadLight = 1; - m_OriginalHandlingData[131].ucTailLight = 2; - m_OriginalHandlingData[131].ucAnimGroup = 0; - - m_OriginalHandlingData[132].iVehicleID = 132; - m_OriginalHandlingData[132].fMass = 1700.000000f; - m_OriginalHandlingData[132].fTurnMass = 4166.399902f; - m_OriginalHandlingData[132].fDragCoeff = 2.000000f; - m_OriginalHandlingData[132].vecCenterOfMass = CVector(0.000000f, 0.100000f, 0.100000f); - m_OriginalHandlingData[132].uiPercentSubmerged = 70; - m_OriginalHandlingData[132].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[132].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[132].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[132].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[132].Transmission.uiHandlingFlags = 33628416; - m_OriginalHandlingData[132].Transmission.fEngineAcceleration = 8.000000f; - m_OriginalHandlingData[132].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[132].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[132].fBrakeDeceleration = 6.000000f; - m_OriginalHandlingData[132].fBrakeBias = 0.550000f; - m_OriginalHandlingData[132].bABS = false; - m_OriginalHandlingData[132].fSteeringLock = 25.000000f; - m_OriginalHandlingData[132].fTractionLoss = 0.750000f; - m_OriginalHandlingData[132].fTractionBias = 0.460000f; - m_OriginalHandlingData[132].fSuspensionForceLevel = 0.800000f; - m_OriginalHandlingData[132].fSuspensionDamping = 0.070000f; - m_OriginalHandlingData[132].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[132].fSuspensionUpperLimit = 0.300000f; - m_OriginalHandlingData[132].fSuspensionLowerLimit = -0.140000f; - m_OriginalHandlingData[132].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[132].fSuspensionAntiDiveMultiplier = 0.250000f; - m_OriginalHandlingData[132].fCollisionDamageMultiplier = 0.520000f; - m_OriginalHandlingData[132].uiModelFlags = 0x220000; - m_OriginalHandlingData[132].uiHandlingFlags = 0x2012100; - m_OriginalHandlingData[132].fSeatOffsetDistance = 0.300000f; - m_OriginalHandlingData[132].uiMonetary = 19000; - m_OriginalHandlingData[132].ucHeadLight = 1; - m_OriginalHandlingData[132].ucTailLight = 1; - m_OriginalHandlingData[132].ucAnimGroup = 0; - - m_OriginalHandlingData[133].iVehicleID = 133; - m_OriginalHandlingData[133].fMass = 1700.000000f; - m_OriginalHandlingData[133].fTurnMass = 4166.399902f; - m_OriginalHandlingData[133].fDragCoeff = 2.000000f; - m_OriginalHandlingData[133].vecCenterOfMass = CVector(0.000000f, -0.100000f, 0.100000f); - m_OriginalHandlingData[133].uiPercentSubmerged = 70; - m_OriginalHandlingData[133].fTractionMultiplier = 0.750000f; - m_OriginalHandlingData[133].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[133].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[133].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[133].Transmission.uiHandlingFlags = 33619968; - m_OriginalHandlingData[133].Transmission.fEngineAcceleration = 8.000000f; - m_OriginalHandlingData[133].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[133].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[133].fBrakeDeceleration = 6.000000f; - m_OriginalHandlingData[133].fBrakeBias = 0.550000f; - m_OriginalHandlingData[133].bABS = false; - m_OriginalHandlingData[133].fSteeringLock = 35.000000f; - m_OriginalHandlingData[133].fTractionLoss = 0.750000f; - m_OriginalHandlingData[133].fTractionBias = 0.520000f; - m_OriginalHandlingData[133].fSuspensionForceLevel = 0.800000f; - m_OriginalHandlingData[133].fSuspensionDamping = 0.080000f; - m_OriginalHandlingData[133].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[133].fSuspensionUpperLimit = 0.300000f; - m_OriginalHandlingData[133].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[133].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[133].fSuspensionAntiDiveMultiplier = 0.250000f; - m_OriginalHandlingData[133].fCollisionDamageMultiplier = 0.520000f; - m_OriginalHandlingData[133].uiModelFlags = 0x220000; - m_OriginalHandlingData[133].uiHandlingFlags = 0x2010000; - m_OriginalHandlingData[133].fSeatOffsetDistance = 0.300000f; - m_OriginalHandlingData[133].uiMonetary = 19000; - m_OriginalHandlingData[133].ucHeadLight = 1; - m_OriginalHandlingData[133].ucTailLight = 1; - m_OriginalHandlingData[133].ucAnimGroup = 0; - - m_OriginalHandlingData[134].iVehicleID = 134; - m_OriginalHandlingData[134].fMass = 5500.000000f; - m_OriginalHandlingData[134].fTurnMass = 33187.898438f; - m_OriginalHandlingData[134].fDragCoeff = 2.000000f; - m_OriginalHandlingData[134].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.200000f); - m_OriginalHandlingData[134].uiPercentSubmerged = 90; - m_OriginalHandlingData[134].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[134].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[134].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[134].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[134].Transmission.uiHandlingFlags = 512; - m_OriginalHandlingData[134].Transmission.fEngineAcceleration = 8.000000f; - m_OriginalHandlingData[134].Transmission.fEngineInertia = 20.000000f; - m_OriginalHandlingData[134].Transmission.fMaxVelocity = 110.000000f; - m_OriginalHandlingData[134].fBrakeDeceleration = 3.500000f; - m_OriginalHandlingData[134].fBrakeBias = 0.400000f; - m_OriginalHandlingData[134].bABS = false; - m_OriginalHandlingData[134].fSteeringLock = 30.000000f; - m_OriginalHandlingData[134].fTractionLoss = 0.800000f; - m_OriginalHandlingData[134].fTractionBias = 0.400000f; - m_OriginalHandlingData[134].fSuspensionForceLevel = 1.400000f; - m_OriginalHandlingData[134].fSuspensionDamping = 0.060000f; - m_OriginalHandlingData[134].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[134].fSuspensionUpperLimit = 0.450000f; - m_OriginalHandlingData[134].fSuspensionLowerLimit = -0.250000f; - m_OriginalHandlingData[134].fSuspensionFrontRearBias = 0.550000f; - m_OriginalHandlingData[134].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[134].fCollisionDamageMultiplier = 0.200000f; - m_OriginalHandlingData[134].uiModelFlags = 0x4008; - m_OriginalHandlingData[134].uiHandlingFlags = 0x200; - m_OriginalHandlingData[134].fSeatOffsetDistance = 0.450000f; - m_OriginalHandlingData[134].uiMonetary = 5000; - m_OriginalHandlingData[134].ucHeadLight = 0; - m_OriginalHandlingData[134].ucTailLight = 1; - m_OriginalHandlingData[134].ucAnimGroup = 2; - - m_OriginalHandlingData[135].iVehicleID = 135; - m_OriginalHandlingData[135].fMass = 2500.000000f; - m_OriginalHandlingData[135].fTurnMass = 6000.000000f; - m_OriginalHandlingData[135].fDragCoeff = 2.500000f; - m_OriginalHandlingData[135].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.200000f); - m_OriginalHandlingData[135].uiPercentSubmerged = 80; - m_OriginalHandlingData[135].fTractionMultiplier = 0.620000f; - m_OriginalHandlingData[135].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[135].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[135].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[135].Transmission.uiHandlingFlags = 17412; - m_OriginalHandlingData[135].Transmission.fEngineAcceleration = 10.000000f; - m_OriginalHandlingData[135].Transmission.fEngineInertia = 25.000000f; - m_OriginalHandlingData[135].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[135].fBrakeDeceleration = 7.000000f; - m_OriginalHandlingData[135].fBrakeBias = 0.450000f; - m_OriginalHandlingData[135].bABS = false; - m_OriginalHandlingData[135].fSteeringLock = 35.000000f; - m_OriginalHandlingData[135].fTractionLoss = 0.890000f; - m_OriginalHandlingData[135].fTractionBias = 0.500000f; - m_OriginalHandlingData[135].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[135].fSuspensionDamping = 0.050000f; - m_OriginalHandlingData[135].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[135].fSuspensionUpperLimit = 0.450000f; - m_OriginalHandlingData[135].fSuspensionLowerLimit = -0.210000f; - m_OriginalHandlingData[135].fSuspensionFrontRearBias = 0.450000f; - m_OriginalHandlingData[135].fSuspensionAntiDiveMultiplier = 0.300000f; - m_OriginalHandlingData[135].fCollisionDamageMultiplier = 0.350000f; - m_OriginalHandlingData[135].uiModelFlags = 0x20; - m_OriginalHandlingData[135].uiHandlingFlags = 0x4404; - m_OriginalHandlingData[135].fSeatOffsetDistance = 0.440000f; - m_OriginalHandlingData[135].uiMonetary = 40000; - m_OriginalHandlingData[135].ucHeadLight = 0; - m_OriginalHandlingData[135].ucTailLight = 1; - m_OriginalHandlingData[135].ucAnimGroup = 0; - - m_OriginalHandlingData[136].iVehicleID = 136; - m_OriginalHandlingData[136].fMass = 2200.000000f; - m_OriginalHandlingData[136].fTurnMass = 6000.000000f; - m_OriginalHandlingData[136].fDragCoeff = 2.500000f; - m_OriginalHandlingData[136].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[136].uiPercentSubmerged = 75; - m_OriginalHandlingData[136].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[136].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[136].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[136].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[136].Transmission.uiHandlingFlags = 4194304; - m_OriginalHandlingData[136].Transmission.fEngineAcceleration = 9.600000f; - m_OriginalHandlingData[136].Transmission.fEngineInertia = 15.000000f; - m_OriginalHandlingData[136].Transmission.fMaxVelocity = 165.000000f; - m_OriginalHandlingData[136].fBrakeDeceleration = 5.000000f; - m_OriginalHandlingData[136].fBrakeBias = 0.550000f; - m_OriginalHandlingData[136].bABS = false; - m_OriginalHandlingData[136].fSteeringLock = 30.000000f; - m_OriginalHandlingData[136].fTractionLoss = 0.920000f; - m_OriginalHandlingData[136].fTractionBias = 0.500000f; - m_OriginalHandlingData[136].fSuspensionForceLevel = 1.100000f; - m_OriginalHandlingData[136].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[136].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[136].fSuspensionUpperLimit = 0.270000f; - m_OriginalHandlingData[136].fSuspensionLowerLimit = -0.220000f; - m_OriginalHandlingData[136].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[136].fSuspensionAntiDiveMultiplier = 0.300000f; - m_OriginalHandlingData[136].fCollisionDamageMultiplier = 0.560000f; - m_OriginalHandlingData[136].uiModelFlags = 0x0; - m_OriginalHandlingData[136].uiHandlingFlags = 0x400000; - m_OriginalHandlingData[136].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[136].uiMonetary = 35000; - m_OriginalHandlingData[136].ucHeadLight = 0; - m_OriginalHandlingData[136].ucTailLight = 1; - m_OriginalHandlingData[136].ucAnimGroup = 0; - - m_OriginalHandlingData[137].iVehicleID = 137; - m_OriginalHandlingData[137].fMass = 1900.000000f; - m_OriginalHandlingData[137].fTurnMass = 6333.299805f; - m_OriginalHandlingData[137].fDragCoeff = 2.000000f; - m_OriginalHandlingData[137].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.150000f); - m_OriginalHandlingData[137].uiPercentSubmerged = 80; - m_OriginalHandlingData[137].fTractionMultiplier = 0.850000f; - m_OriginalHandlingData[137].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[137].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[137].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[137].Transmission.uiHandlingFlags = 2; - m_OriginalHandlingData[137].Transmission.fEngineAcceleration = 6.000000f; - m_OriginalHandlingData[137].Transmission.fEngineInertia = 15.000000f; - m_OriginalHandlingData[137].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[137].fBrakeDeceleration = 6.000000f; - m_OriginalHandlingData[137].fBrakeBias = 0.800000f; - m_OriginalHandlingData[137].bABS = false; - m_OriginalHandlingData[137].fSteeringLock = 30.000000f; - m_OriginalHandlingData[137].fTractionLoss = 0.700000f; - m_OriginalHandlingData[137].fTractionBias = 0.460000f; - m_OriginalHandlingData[137].fSuspensionForceLevel = 1.300000f; - m_OriginalHandlingData[137].fSuspensionDamping = 0.070000f; - m_OriginalHandlingData[137].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[137].fSuspensionUpperLimit = 0.350000f; - m_OriginalHandlingData[137].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[137].fSuspensionFrontRearBias = 0.450000f; - m_OriginalHandlingData[137].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[137].fCollisionDamageMultiplier = 0.430000f; - m_OriginalHandlingData[137].uiModelFlags = 0x4001; - m_OriginalHandlingData[137].uiHandlingFlags = 0x2; - m_OriginalHandlingData[137].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[137].uiMonetary = 20000; - m_OriginalHandlingData[137].ucHeadLight = 0; - m_OriginalHandlingData[137].ucTailLight = 3; - m_OriginalHandlingData[137].ucAnimGroup = 13; - - m_OriginalHandlingData[138].iVehicleID = 138; - m_OriginalHandlingData[138].fMass = 800.000000f; - m_OriginalHandlingData[138].fTurnMass = 632.700012f; - m_OriginalHandlingData[138].fDragCoeff = 5.000000f; - m_OriginalHandlingData[138].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.100000f); - m_OriginalHandlingData[138].uiPercentSubmerged = 80; - m_OriginalHandlingData[138].fTractionMultiplier = 0.850000f; - m_OriginalHandlingData[138].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[138].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[138].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[138].Transmission.uiHandlingFlags = 3179008; - m_OriginalHandlingData[138].Transmission.fEngineAcceleration = 6.000000f; - m_OriginalHandlingData[138].Transmission.fEngineInertia = 30.000000f; - m_OriginalHandlingData[138].Transmission.fMaxVelocity = 170.000000f; - m_OriginalHandlingData[138].fBrakeDeceleration = 6.100000f; - m_OriginalHandlingData[138].fBrakeBias = 0.550000f; - m_OriginalHandlingData[138].bABS = false; - m_OriginalHandlingData[138].fSteeringLock = 35.000000f; - m_OriginalHandlingData[138].fTractionLoss = 0.800000f; - m_OriginalHandlingData[138].fTractionBias = 0.460000f; - m_OriginalHandlingData[138].fSuspensionForceLevel = 1.200000f; - m_OriginalHandlingData[138].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[138].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[138].fSuspensionUpperLimit = 0.340000f; - m_OriginalHandlingData[138].fSuspensionLowerLimit = -0.100000f; - m_OriginalHandlingData[138].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[138].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[138].fCollisionDamageMultiplier = 0.400000f; - m_OriginalHandlingData[138].uiModelFlags = 0x1A00; - m_OriginalHandlingData[138].uiHandlingFlags = 0x308200; - m_OriginalHandlingData[138].fSeatOffsetDistance = 0.380000f; - m_OriginalHandlingData[138].uiMonetary = 15000; - m_OriginalHandlingData[138].ucHeadLight = 1; - m_OriginalHandlingData[138].ucTailLight = 2; - m_OriginalHandlingData[138].ucAnimGroup = 0; - - m_OriginalHandlingData[139].iVehicleID = 139; - m_OriginalHandlingData[139].fMass = 3800.000000f; - m_OriginalHandlingData[139].fTurnMass = 30000.000000f; - m_OriginalHandlingData[139].fDragCoeff = 2.000000f; - m_OriginalHandlingData[139].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.500000f); - m_OriginalHandlingData[139].uiPercentSubmerged = 90; - m_OriginalHandlingData[139].fTractionMultiplier = 0.450000f; - m_OriginalHandlingData[139].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[139].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[139].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[139].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[139].Transmission.fEngineAcceleration = 7.200000f; - m_OriginalHandlingData[139].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[139].Transmission.fMaxVelocity = 120.000000f; - m_OriginalHandlingData[139].fBrakeDeceleration = 8.000000f; - m_OriginalHandlingData[139].fBrakeBias = 0.300000f; - m_OriginalHandlingData[139].bABS = false; - m_OriginalHandlingData[139].fSteeringLock = 25.000000f; - m_OriginalHandlingData[139].fTractionLoss = 0.750000f; - m_OriginalHandlingData[139].fTractionBias = 0.500000f; - m_OriginalHandlingData[139].fSuspensionForceLevel = 1.500000f; - m_OriginalHandlingData[139].fSuspensionDamping = 0.050000f; - m_OriginalHandlingData[139].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[139].fSuspensionUpperLimit = 0.300000f; - m_OriginalHandlingData[139].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[139].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[139].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[139].fCollisionDamageMultiplier = 0.250000f; - m_OriginalHandlingData[139].uiModelFlags = 0x20002000; - m_OriginalHandlingData[139].uiHandlingFlags = 0x0; - m_OriginalHandlingData[139].fSeatOffsetDistance = 0.650000f; - m_OriginalHandlingData[139].uiMonetary = 35000; - m_OriginalHandlingData[139].ucHeadLight = 0; - m_OriginalHandlingData[139].ucTailLight = 1; - m_OriginalHandlingData[139].ucAnimGroup = 0; - - m_OriginalHandlingData[140].iVehicleID = 140; - m_OriginalHandlingData[140].fMass = 1800.000000f; - m_OriginalHandlingData[140].fTurnMass = 4000.000000f; - m_OriginalHandlingData[140].fDragCoeff = 2.200000f; - m_OriginalHandlingData[140].vecCenterOfMass = CVector(0.000000f, 0.200000f, 0.150000f); - m_OriginalHandlingData[140].uiPercentSubmerged = 75; - m_OriginalHandlingData[140].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[140].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[140].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[140].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[140].Transmission.uiHandlingFlags = 4194304; - m_OriginalHandlingData[140].Transmission.fEngineAcceleration = 8.400000f; - m_OriginalHandlingData[140].Transmission.fEngineInertia = 20.000000f; - m_OriginalHandlingData[140].Transmission.fMaxVelocity = 165.000000f; - m_OriginalHandlingData[140].fBrakeDeceleration = 8.000000f; - m_OriginalHandlingData[140].fBrakeBias = 0.450000f; - m_OriginalHandlingData[140].bABS = false; - m_OriginalHandlingData[140].fSteeringLock = 30.000000f; - m_OriginalHandlingData[140].fTractionLoss = 0.800000f; - m_OriginalHandlingData[140].fTractionBias = 0.520000f; - m_OriginalHandlingData[140].fSuspensionForceLevel = 0.900000f; - m_OriginalHandlingData[140].fSuspensionDamping = 0.130000f; - m_OriginalHandlingData[140].fSuspensionHighSpdDamping = 3.000000f; - m_OriginalHandlingData[140].fSuspensionUpperLimit = 0.300000f; - m_OriginalHandlingData[140].fSuspensionLowerLimit = -0.100000f; - m_OriginalHandlingData[140].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[140].fSuspensionAntiDiveMultiplier = 0.300000f; - m_OriginalHandlingData[140].fCollisionDamageMultiplier = 0.560000f; - m_OriginalHandlingData[140].uiModelFlags = 0x40000000; - m_OriginalHandlingData[140].uiHandlingFlags = 0x400000; - m_OriginalHandlingData[140].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[140].uiMonetary = 35000; - m_OriginalHandlingData[140].ucHeadLight = 0; - m_OriginalHandlingData[140].ucTailLight = 1; - m_OriginalHandlingData[140].ucAnimGroup = 0; - - m_OriginalHandlingData[141].iVehicleID = 141; - m_OriginalHandlingData[141].fMass = 5500.000000f; - m_OriginalHandlingData[141].fTurnMass = 33187.898438f; - m_OriginalHandlingData[141].fDragCoeff = 2.000000f; - m_OriginalHandlingData[141].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[141].uiPercentSubmerged = 90; - m_OriginalHandlingData[141].fTractionMultiplier = 0.580000f; - m_OriginalHandlingData[141].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[141].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[141].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[141].Transmission.uiHandlingFlags = 512; - m_OriginalHandlingData[141].Transmission.fEngineAcceleration = 8.000000f; - m_OriginalHandlingData[141].Transmission.fEngineInertia = 20.000000f; - m_OriginalHandlingData[141].Transmission.fMaxVelocity = 110.000000f; - m_OriginalHandlingData[141].fBrakeDeceleration = 3.170000f; - m_OriginalHandlingData[141].fBrakeBias = 0.400000f; - m_OriginalHandlingData[141].bABS = false; - m_OriginalHandlingData[141].fSteeringLock = 30.000000f; - m_OriginalHandlingData[141].fTractionLoss = 0.800000f; - m_OriginalHandlingData[141].fTractionBias = 0.500000f; - m_OriginalHandlingData[141].fSuspensionForceLevel = 1.400000f; - m_OriginalHandlingData[141].fSuspensionDamping = 0.060000f; - m_OriginalHandlingData[141].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[141].fSuspensionUpperLimit = 0.450000f; - m_OriginalHandlingData[141].fSuspensionLowerLimit = -0.250000f; - m_OriginalHandlingData[141].fSuspensionFrontRearBias = 0.550000f; - m_OriginalHandlingData[141].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[141].fCollisionDamageMultiplier = 0.200000f; - m_OriginalHandlingData[141].uiModelFlags = 0x8; - m_OriginalHandlingData[141].uiHandlingFlags = 0x200; - m_OriginalHandlingData[141].fSeatOffsetDistance = 0.450000f; - m_OriginalHandlingData[141].uiMonetary = 5000; - m_OriginalHandlingData[141].ucHeadLight = 0; - m_OriginalHandlingData[141].ucTailLight = 1; - m_OriginalHandlingData[141].ucAnimGroup = 0; - - m_OriginalHandlingData[142].iVehicleID = 142; - m_OriginalHandlingData[142].fMass = 1400.000000f; - m_OriginalHandlingData[142].fTurnMass = 2998.300049f; - m_OriginalHandlingData[142].fDragCoeff = 2.200000f; - m_OriginalHandlingData[142].vecCenterOfMass = CVector(0.000000f, 0.100000f, -0.100000f); - m_OriginalHandlingData[142].uiPercentSubmerged = 75; - m_OriginalHandlingData[142].fTractionMultiplier = 0.700000f; - m_OriginalHandlingData[142].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[142].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[142].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[142].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[142].Transmission.fEngineAcceleration = 9.600000f; - m_OriginalHandlingData[142].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[142].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[142].fBrakeDeceleration = 8.000000f; - m_OriginalHandlingData[142].fBrakeBias = 0.550000f; - m_OriginalHandlingData[142].bABS = false; - m_OriginalHandlingData[142].fSteeringLock = 30.000000f; - m_OriginalHandlingData[142].fTractionLoss = 0.800000f; - m_OriginalHandlingData[142].fTractionBias = 0.500000f; - m_OriginalHandlingData[142].fSuspensionForceLevel = 1.200000f; - m_OriginalHandlingData[142].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[142].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[142].fSuspensionUpperLimit = 0.300000f; - m_OriginalHandlingData[142].fSuspensionLowerLimit = -0.100000f; - m_OriginalHandlingData[142].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[142].fSuspensionAntiDiveMultiplier = 0.300000f; - m_OriginalHandlingData[142].fCollisionDamageMultiplier = 0.600000f; - m_OriginalHandlingData[142].uiModelFlags = 0x40002804; - m_OriginalHandlingData[142].uiHandlingFlags = 0x0; - m_OriginalHandlingData[142].fSeatOffsetDistance = 0.250000f; - m_OriginalHandlingData[142].uiMonetary = 35000; - m_OriginalHandlingData[142].ucHeadLight = 1; - m_OriginalHandlingData[142].ucTailLight = 1; - m_OriginalHandlingData[142].ucAnimGroup = 0; - - m_OriginalHandlingData[143].iVehicleID = 143; - m_OriginalHandlingData[143].fMass = 5500.000000f; - m_OriginalHandlingData[143].fTurnMass = 23489.599609f; - m_OriginalHandlingData[143].fDragCoeff = 3.000000f; - m_OriginalHandlingData[143].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.300000f); - m_OriginalHandlingData[143].uiPercentSubmerged = 80; - m_OriginalHandlingData[143].fTractionMultiplier = 0.720000f; - m_OriginalHandlingData[143].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[143].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[143].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[143].Transmission.uiHandlingFlags = 513; - m_OriginalHandlingData[143].Transmission.fEngineAcceleration = 5.600000f; - m_OriginalHandlingData[143].Transmission.fEngineInertia = 25.000000f; - m_OriginalHandlingData[143].Transmission.fMaxVelocity = 140.000000f; - m_OriginalHandlingData[143].fBrakeDeceleration = 4.500000f; - m_OriginalHandlingData[143].fBrakeBias = 0.600000f; - m_OriginalHandlingData[143].bABS = false; - m_OriginalHandlingData[143].fSteeringLock = 30.000000f; - m_OriginalHandlingData[143].fTractionLoss = 0.700000f; - m_OriginalHandlingData[143].fTractionBias = 0.460000f; - m_OriginalHandlingData[143].fSuspensionForceLevel = 0.600000f; - m_OriginalHandlingData[143].fSuspensionDamping = 0.080000f; - m_OriginalHandlingData[143].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[143].fSuspensionUpperLimit = 0.300000f; - m_OriginalHandlingData[143].fSuspensionLowerLimit = -0.240000f; - m_OriginalHandlingData[143].fSuspensionFrontRearBias = 0.400000f; - m_OriginalHandlingData[143].fSuspensionAntiDiveMultiplier = 0.600000f; - m_OriginalHandlingData[143].fCollisionDamageMultiplier = 0.400000f; - m_OriginalHandlingData[143].uiModelFlags = 0x40000009; - m_OriginalHandlingData[143].uiHandlingFlags = 0x201; - m_OriginalHandlingData[143].fSeatOffsetDistance = 0.360000f; - m_OriginalHandlingData[143].uiMonetary = 22000; - m_OriginalHandlingData[143].ucHeadLight = 0; - m_OriginalHandlingData[143].ucTailLight = 3; - m_OriginalHandlingData[143].ucAnimGroup = 13; - - m_OriginalHandlingData[144].iVehicleID = 144; - m_OriginalHandlingData[144].fMass = 1400.000000f; - m_OriginalHandlingData[144].fTurnMass = 3000.000000f; - m_OriginalHandlingData[144].fDragCoeff = 2.800000f; - m_OriginalHandlingData[144].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[144].uiPercentSubmerged = 80; - m_OriginalHandlingData[144].fTractionMultiplier = 0.750000f; - m_OriginalHandlingData[144].Transmission.ucDriveType = 'F'; - m_OriginalHandlingData[144].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[144].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[144].Transmission.uiHandlingFlags = 12582912; - m_OriginalHandlingData[144].Transmission.fEngineAcceleration = 12.000000f; - m_OriginalHandlingData[144].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[144].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[144].fBrakeDeceleration = 11.000000f; - m_OriginalHandlingData[144].fBrakeBias = 0.450000f; - m_OriginalHandlingData[144].bABS = false; - m_OriginalHandlingData[144].fSteeringLock = 30.000000f; - m_OriginalHandlingData[144].fTractionLoss = 0.900000f; - m_OriginalHandlingData[144].fTractionBias = 0.490000f; - m_OriginalHandlingData[144].fSuspensionForceLevel = 1.700000f; - m_OriginalHandlingData[144].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[144].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[144].fSuspensionUpperLimit = 0.280000f; - m_OriginalHandlingData[144].fSuspensionLowerLimit = -0.120000f; - m_OriginalHandlingData[144].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[144].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[144].fCollisionDamageMultiplier = 0.500000f; - m_OriginalHandlingData[144].uiModelFlags = 0x2000; - m_OriginalHandlingData[144].uiHandlingFlags = 0xC00000; - m_OriginalHandlingData[144].fSeatOffsetDistance = 0.250000f; - m_OriginalHandlingData[144].uiMonetary = 35000; - m_OriginalHandlingData[144].ucHeadLight = 1; - m_OriginalHandlingData[144].ucTailLight = 1; - m_OriginalHandlingData[144].ucAnimGroup = 0; - - m_OriginalHandlingData[145].iVehicleID = 145; - m_OriginalHandlingData[145].fMass = 3800.000000f; - m_OriginalHandlingData[145].fTurnMass = 30000.000000f; - m_OriginalHandlingData[145].fDragCoeff = 2.000000f; - m_OriginalHandlingData[145].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.500000f); - m_OriginalHandlingData[145].uiPercentSubmerged = 90; - m_OriginalHandlingData[145].fTractionMultiplier = 0.450000f; - m_OriginalHandlingData[145].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[145].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[145].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[145].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[145].Transmission.fEngineAcceleration = 7.200000f; - m_OriginalHandlingData[145].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[145].Transmission.fMaxVelocity = 120.000000f; - m_OriginalHandlingData[145].fBrakeDeceleration = 8.000000f; - m_OriginalHandlingData[145].fBrakeBias = 0.300000f; - m_OriginalHandlingData[145].bABS = false; - m_OriginalHandlingData[145].fSteeringLock = 25.000000f; - m_OriginalHandlingData[145].fTractionLoss = 0.750000f; - m_OriginalHandlingData[145].fTractionBias = 0.500000f; - m_OriginalHandlingData[145].fSuspensionForceLevel = 1.500000f; - m_OriginalHandlingData[145].fSuspensionDamping = 0.050000f; - m_OriginalHandlingData[145].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[145].fSuspensionUpperLimit = 0.300000f; - m_OriginalHandlingData[145].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[145].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[145].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[145].fCollisionDamageMultiplier = 0.250000f; - m_OriginalHandlingData[145].uiModelFlags = 0x20002000; - m_OriginalHandlingData[145].uiHandlingFlags = 0x0; - m_OriginalHandlingData[145].fSeatOffsetDistance = 0.650000f; - m_OriginalHandlingData[145].uiMonetary = 35000; - m_OriginalHandlingData[145].ucHeadLight = 0; - m_OriginalHandlingData[145].ucTailLight = 1; - m_OriginalHandlingData[145].ucAnimGroup = 0; - - m_OriginalHandlingData[146].iVehicleID = 146; - m_OriginalHandlingData[146].fMass = 100.000000f; - m_OriginalHandlingData[146].fTurnMass = 50.000000f; - m_OriginalHandlingData[146].fDragCoeff = 20.000000f; - m_OriginalHandlingData[146].vecCenterOfMass = CVector(0.000000f, 0.050000f, -0.200000f); - m_OriginalHandlingData[146].uiPercentSubmerged = 70; - m_OriginalHandlingData[146].fTractionMultiplier = 0.600000f; - m_OriginalHandlingData[146].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[146].Transmission.ucEngineType = 'E'; - m_OriginalHandlingData[146].Transmission.ucNumberOfGears = 1; - m_OriginalHandlingData[146].Transmission.uiHandlingFlags = 16777216; - m_OriginalHandlingData[146].Transmission.fEngineAcceleration = 20.000000f; - m_OriginalHandlingData[146].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[146].Transmission.fMaxVelocity = 60.000000f; - m_OriginalHandlingData[146].fBrakeDeceleration = 5.500000f; - m_OriginalHandlingData[146].fBrakeBias = 0.500000f; - m_OriginalHandlingData[146].bABS = false; - m_OriginalHandlingData[146].fSteeringLock = 25.000000f; - m_OriginalHandlingData[146].fTractionLoss = 0.900000f; - m_OriginalHandlingData[146].fTractionBias = 0.490000f; - m_OriginalHandlingData[146].fSuspensionForceLevel = 3.000000f; - m_OriginalHandlingData[146].fSuspensionDamping = 0.300000f; - m_OriginalHandlingData[146].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[146].fSuspensionUpperLimit = 0.150000f; - m_OriginalHandlingData[146].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[146].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[146].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[146].fCollisionDamageMultiplier = 0.050000f; - m_OriginalHandlingData[146].uiModelFlags = 0x0; - m_OriginalHandlingData[146].uiHandlingFlags = 0x1000000; - m_OriginalHandlingData[146].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[146].uiMonetary = 500; - m_OriginalHandlingData[146].ucHeadLight = 0; - m_OriginalHandlingData[146].ucTailLight = 1; - m_OriginalHandlingData[146].ucAnimGroup = 0; - - m_OriginalHandlingData[147].iVehicleID = 147; - m_OriginalHandlingData[147].fMass = 1600.000000f; - m_OriginalHandlingData[147].fTurnMass = 4500.000000f; - m_OriginalHandlingData[147].fDragCoeff = 2.000000f; - m_OriginalHandlingData[147].vecCenterOfMass = CVector(0.000000f, 0.300000f, -0.100000f); - m_OriginalHandlingData[147].uiPercentSubmerged = 75; - m_OriginalHandlingData[147].fTractionMultiplier = 0.750000f; - m_OriginalHandlingData[147].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[147].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[147].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[147].Transmission.uiHandlingFlags = 270532616; - m_OriginalHandlingData[147].Transmission.fEngineAcceleration = 10.000000f; - m_OriginalHandlingData[147].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[147].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[147].fBrakeDeceleration = 10.000000f; - m_OriginalHandlingData[147].fBrakeBias = 0.530000f; - m_OriginalHandlingData[147].bABS = false; - m_OriginalHandlingData[147].fSteeringLock = 35.000000f; - m_OriginalHandlingData[147].fTractionLoss = 0.850000f; - m_OriginalHandlingData[147].fTractionBias = 0.500000f; - m_OriginalHandlingData[147].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[147].fSuspensionDamping = 0.120000f; - m_OriginalHandlingData[147].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[147].fSuspensionUpperLimit = 0.280000f; - m_OriginalHandlingData[147].fSuspensionLowerLimit = -0.120000f; - m_OriginalHandlingData[147].fSuspensionFrontRearBias = 0.550000f; - m_OriginalHandlingData[147].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[147].fCollisionDamageMultiplier = 0.240000f; - m_OriginalHandlingData[147].uiModelFlags = 0x40000000; - m_OriginalHandlingData[147].uiHandlingFlags = 0x10200008; - m_OriginalHandlingData[147].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[147].uiMonetary = 25000; - m_OriginalHandlingData[147].ucHeadLight = 0; - m_OriginalHandlingData[147].ucTailLight = 1; - m_OriginalHandlingData[147].ucAnimGroup = 0; - - m_OriginalHandlingData[148].iVehicleID = 148; - m_OriginalHandlingData[148].fMass = 1600.000000f; - m_OriginalHandlingData[148].fTurnMass = 4500.000000f; - m_OriginalHandlingData[148].fDragCoeff = 2.000000f; - m_OriginalHandlingData[148].vecCenterOfMass = CVector(0.000000f, 0.300000f, -0.150000f); - m_OriginalHandlingData[148].uiPercentSubmerged = 75; - m_OriginalHandlingData[148].fTractionMultiplier = 0.750000f; - m_OriginalHandlingData[148].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[148].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[148].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[148].Transmission.uiHandlingFlags = 270532616; - m_OriginalHandlingData[148].Transmission.fEngineAcceleration = 10.000000f; - m_OriginalHandlingData[148].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[148].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[148].fBrakeDeceleration = 10.000000f; - m_OriginalHandlingData[148].fBrakeBias = 0.530000f; - m_OriginalHandlingData[148].bABS = false; - m_OriginalHandlingData[148].fSteeringLock = 35.000000f; - m_OriginalHandlingData[148].fTractionLoss = 0.850000f; - m_OriginalHandlingData[148].fTractionBias = 0.520000f; - m_OriginalHandlingData[148].fSuspensionForceLevel = 1.100000f; - m_OriginalHandlingData[148].fSuspensionDamping = 0.120000f; - m_OriginalHandlingData[148].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[148].fSuspensionUpperLimit = 0.280000f; - m_OriginalHandlingData[148].fSuspensionLowerLimit = -0.170000f; - m_OriginalHandlingData[148].fSuspensionFrontRearBias = 0.550000f; - m_OriginalHandlingData[148].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[148].fCollisionDamageMultiplier = 0.240000f; - m_OriginalHandlingData[148].uiModelFlags = 0x40000000; - m_OriginalHandlingData[148].uiHandlingFlags = 0x10200008; - m_OriginalHandlingData[148].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[148].uiMonetary = 25000; - m_OriginalHandlingData[148].ucHeadLight = 0; - m_OriginalHandlingData[148].ucTailLight = 1; - m_OriginalHandlingData[148].ucAnimGroup = 0; - - m_OriginalHandlingData[149].iVehicleID = 149; - m_OriginalHandlingData[149].fMass = 1600.000000f; - m_OriginalHandlingData[149].fTurnMass = 4500.000000f; - m_OriginalHandlingData[149].fDragCoeff = 2.000000f; - m_OriginalHandlingData[149].vecCenterOfMass = CVector(0.000000f, 0.300000f, -0.100000f); - m_OriginalHandlingData[149].uiPercentSubmerged = 75; - m_OriginalHandlingData[149].fTractionMultiplier = 0.750000f; - m_OriginalHandlingData[149].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[149].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[149].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[149].Transmission.uiHandlingFlags = 270532616; - m_OriginalHandlingData[149].Transmission.fEngineAcceleration = 10.000000f; - m_OriginalHandlingData[149].Transmission.fEngineInertia = 10.000000f; - m_OriginalHandlingData[149].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[149].fBrakeDeceleration = 10.000000f; - m_OriginalHandlingData[149].fBrakeBias = 0.530000f; - m_OriginalHandlingData[149].bABS = false; - m_OriginalHandlingData[149].fSteeringLock = 35.000000f; - m_OriginalHandlingData[149].fTractionLoss = 0.850000f; - m_OriginalHandlingData[149].fTractionBias = 0.520000f; - m_OriginalHandlingData[149].fSuspensionForceLevel = 0.900000f; - m_OriginalHandlingData[149].fSuspensionDamping = 0.080000f; - m_OriginalHandlingData[149].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[149].fSuspensionUpperLimit = 0.280000f; - m_OriginalHandlingData[149].fSuspensionLowerLimit = -0.170000f; - m_OriginalHandlingData[149].fSuspensionFrontRearBias = 0.550000f; - m_OriginalHandlingData[149].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[149].fCollisionDamageMultiplier = 0.240000f; - m_OriginalHandlingData[149].uiModelFlags = 0x40000000; - m_OriginalHandlingData[149].uiHandlingFlags = 0x10200008; - m_OriginalHandlingData[149].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[149].uiMonetary = 25000; - m_OriginalHandlingData[149].ucHeadLight = 0; - m_OriginalHandlingData[149].ucTailLight = 1; - m_OriginalHandlingData[149].ucAnimGroup = 0; - - m_OriginalHandlingData[150].iVehicleID = 150; - m_OriginalHandlingData[150].fMass = 2500.000000f; - m_OriginalHandlingData[150].fTurnMass = 5500.000000f; - m_OriginalHandlingData[150].fDragCoeff = 3.000000f; - m_OriginalHandlingData[150].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.200000f); - m_OriginalHandlingData[150].uiPercentSubmerged = 85; - m_OriginalHandlingData[150].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[150].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[150].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[150].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[150].Transmission.uiHandlingFlags = 3180544; - m_OriginalHandlingData[150].Transmission.fEngineAcceleration = 12.000000f; - m_OriginalHandlingData[150].Transmission.fEngineInertia = 15.000000f; - m_OriginalHandlingData[150].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[150].fBrakeDeceleration = 6.200000f; - m_OriginalHandlingData[150].fBrakeBias = 0.600000f; - m_OriginalHandlingData[150].bABS = false; - m_OriginalHandlingData[150].fSteeringLock = 35.000000f; - m_OriginalHandlingData[150].fTractionLoss = 0.850000f; - m_OriginalHandlingData[150].fTractionBias = 0.550000f; - m_OriginalHandlingData[150].fSuspensionForceLevel = 0.700000f; - m_OriginalHandlingData[150].fSuspensionDamping = 0.060000f; - m_OriginalHandlingData[150].fSuspensionHighSpdDamping = 1.000000f; - m_OriginalHandlingData[150].fSuspensionUpperLimit = 0.300000f; - m_OriginalHandlingData[150].fSuspensionLowerLimit = -0.250000f; - m_OriginalHandlingData[150].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[150].fSuspensionAntiDiveMultiplier = 0.250000f; - m_OriginalHandlingData[150].fCollisionDamageMultiplier = 0.230000f; - m_OriginalHandlingData[150].uiModelFlags = 0x284020; - m_OriginalHandlingData[150].uiHandlingFlags = 0x308800; - m_OriginalHandlingData[150].fSeatOffsetDistance = 0.270000f; - m_OriginalHandlingData[150].uiMonetary = 25000; - m_OriginalHandlingData[150].ucHeadLight = 0; - m_OriginalHandlingData[150].ucTailLight = 1; - m_OriginalHandlingData[150].ucAnimGroup = 0; - - m_OriginalHandlingData[151].iVehicleID = 151; - m_OriginalHandlingData[151].fMass = 1600.000000f; - m_OriginalHandlingData[151].fTurnMass = 3800.000000f; - m_OriginalHandlingData[151].fDragCoeff = 2.700000f; - m_OriginalHandlingData[151].vecCenterOfMass = CVector(0.000000f, 0.200000f, 0.000000f); - m_OriginalHandlingData[151].uiPercentSubmerged = 75; - m_OriginalHandlingData[151].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[151].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[151].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[151].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[151].Transmission.uiHandlingFlags = 1064964; - m_OriginalHandlingData[151].Transmission.fEngineAcceleration = 10.000000f; - m_OriginalHandlingData[151].Transmission.fEngineInertia = 20.000000f; - m_OriginalHandlingData[151].Transmission.fMaxVelocity = 165.000000f; - m_OriginalHandlingData[151].fBrakeDeceleration = 8.500000f; - m_OriginalHandlingData[151].fBrakeBias = 0.500000f; - m_OriginalHandlingData[151].bABS = false; - m_OriginalHandlingData[151].fSteeringLock = 35.000000f; - m_OriginalHandlingData[151].fTractionLoss = 0.700000f; - m_OriginalHandlingData[151].fTractionBias = 0.520000f; - m_OriginalHandlingData[151].fSuspensionForceLevel = 0.800000f; - m_OriginalHandlingData[151].fSuspensionDamping = 0.080000f; - m_OriginalHandlingData[151].fSuspensionHighSpdDamping = 2.000000f; - m_OriginalHandlingData[151].fSuspensionUpperLimit = 0.250000f; - m_OriginalHandlingData[151].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[151].fSuspensionFrontRearBias = 0.400000f; - m_OriginalHandlingData[151].fSuspensionAntiDiveMultiplier = 0.400000f; - m_OriginalHandlingData[151].fCollisionDamageMultiplier = 0.200000f; - m_OriginalHandlingData[151].uiModelFlags = 0x40200040; - m_OriginalHandlingData[151].uiHandlingFlags = 0x104004; - m_OriginalHandlingData[151].fSeatOffsetDistance = 0.260000f; - m_OriginalHandlingData[151].uiMonetary = 26000; - m_OriginalHandlingData[151].ucHeadLight = 0; - m_OriginalHandlingData[151].ucTailLight = 1; - m_OriginalHandlingData[151].ucAnimGroup = 0; - - m_OriginalHandlingData[152].iVehicleID = 152; - m_OriginalHandlingData[152].fMass = 5000.000000f; - m_OriginalHandlingData[152].fTurnMass = 10000.000000f; - m_OriginalHandlingData[152].fDragCoeff = 2.500000f; - m_OriginalHandlingData[152].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.100000f); - m_OriginalHandlingData[152].uiPercentSubmerged = 85; - m_OriginalHandlingData[152].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[152].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[152].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[152].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[152].Transmission.uiHandlingFlags = 16777216; - m_OriginalHandlingData[152].Transmission.fEngineAcceleration = 9.600000f; - m_OriginalHandlingData[152].Transmission.fEngineInertia = 25.000000f; - m_OriginalHandlingData[152].Transmission.fMaxVelocity = 110.000000f; - m_OriginalHandlingData[152].fBrakeDeceleration = 6.400000f; - m_OriginalHandlingData[152].fBrakeBias = 0.450000f; - m_OriginalHandlingData[152].bABS = false; - m_OriginalHandlingData[152].fSteeringLock = 27.000000f; - m_OriginalHandlingData[152].fTractionLoss = 0.700000f; - m_OriginalHandlingData[152].fTractionBias = 0.460000f; - m_OriginalHandlingData[152].fSuspensionForceLevel = 0.700000f; - m_OriginalHandlingData[152].fSuspensionDamping = 0.080000f; - m_OriginalHandlingData[152].fSuspensionHighSpdDamping = 1.000000f; - m_OriginalHandlingData[152].fSuspensionUpperLimit = 0.300000f; - m_OriginalHandlingData[152].fSuspensionLowerLimit = -0.180000f; - m_OriginalHandlingData[152].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[152].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[152].fCollisionDamageMultiplier = 0.060000f; - m_OriginalHandlingData[152].uiModelFlags = 0x880010; - m_OriginalHandlingData[152].uiHandlingFlags = 0x1000000; - m_OriginalHandlingData[152].fSeatOffsetDistance = 0.320000f; - m_OriginalHandlingData[152].uiMonetary = 40000; - m_OriginalHandlingData[152].ucHeadLight = 0; - m_OriginalHandlingData[152].ucTailLight = 1; - m_OriginalHandlingData[152].ucAnimGroup = 13; - - m_OriginalHandlingData[153].iVehicleID = 153; - m_OriginalHandlingData[153].fMass = 1500.000000f; - m_OriginalHandlingData[153].fTurnMass = 3400.000000f; - m_OriginalHandlingData[153].fDragCoeff = 2.000000f; - m_OriginalHandlingData[153].vecCenterOfMass = CVector(0.000000f, 0.100000f, -0.200000f); - m_OriginalHandlingData[153].uiPercentSubmerged = 85; - m_OriginalHandlingData[153].fTractionMultiplier = 0.700000f; - m_OriginalHandlingData[153].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[153].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[153].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[153].Transmission.uiHandlingFlags = 2097152; - m_OriginalHandlingData[153].Transmission.fEngineAcceleration = 9.200000f; - m_OriginalHandlingData[153].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[153].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[153].fBrakeDeceleration = 7.000000f; - m_OriginalHandlingData[153].fBrakeBias = 0.550000f; - m_OriginalHandlingData[153].bABS = false; - m_OriginalHandlingData[153].fSteeringLock = 30.000000f; - m_OriginalHandlingData[153].fTractionLoss = 0.800000f; - m_OriginalHandlingData[153].fTractionBias = 0.500000f; - m_OriginalHandlingData[153].fSuspensionForceLevel = 1.200000f; - m_OriginalHandlingData[153].fSuspensionDamping = 0.120000f; - m_OriginalHandlingData[153].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[153].fSuspensionUpperLimit = 0.300000f; - m_OriginalHandlingData[153].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[153].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[153].fSuspensionAntiDiveMultiplier = 0.400000f; - m_OriginalHandlingData[153].fCollisionDamageMultiplier = 0.500000f; - m_OriginalHandlingData[153].uiModelFlags = 0x40002800; - m_OriginalHandlingData[153].uiHandlingFlags = 0x200000; - m_OriginalHandlingData[153].fSeatOffsetDistance = 0.250000f; - m_OriginalHandlingData[153].uiMonetary = 35000; - m_OriginalHandlingData[153].ucHeadLight = 1; - m_OriginalHandlingData[153].ucTailLight = 1; - m_OriginalHandlingData[153].ucAnimGroup = 0; - - m_OriginalHandlingData[154].iVehicleID = 154; - m_OriginalHandlingData[154].fMass = 1500.000000f; - m_OriginalHandlingData[154].fTurnMass = 4000.000000f; - m_OriginalHandlingData[154].fDragCoeff = 2.200000f; - m_OriginalHandlingData[154].vecCenterOfMass = CVector(0.000000f, 0.300000f, -0.150000f); - m_OriginalHandlingData[154].uiPercentSubmerged = 85; - m_OriginalHandlingData[154].fTractionMultiplier = 0.700000f; - m_OriginalHandlingData[154].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[154].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[154].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[154].Transmission.uiHandlingFlags = 2097152; - m_OriginalHandlingData[154].Transmission.fEngineAcceleration = 10.400000f; - m_OriginalHandlingData[154].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[154].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[154].fBrakeDeceleration = 6.000000f; - m_OriginalHandlingData[154].fBrakeBias = 0.550000f; - m_OriginalHandlingData[154].bABS = false; - m_OriginalHandlingData[154].fSteeringLock = 30.000000f; - m_OriginalHandlingData[154].fTractionLoss = 0.900000f; - m_OriginalHandlingData[154].fTractionBias = 0.520000f; - m_OriginalHandlingData[154].fSuspensionForceLevel = 0.800000f; - m_OriginalHandlingData[154].fSuspensionDamping = 0.080000f; - m_OriginalHandlingData[154].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[154].fSuspensionUpperLimit = 0.280000f; - m_OriginalHandlingData[154].fSuspensionLowerLimit = -0.240000f; - m_OriginalHandlingData[154].fSuspensionFrontRearBias = 0.590000f; - m_OriginalHandlingData[154].fSuspensionAntiDiveMultiplier = 0.400000f; - m_OriginalHandlingData[154].fCollisionDamageMultiplier = 0.500000f; - m_OriginalHandlingData[154].uiModelFlags = 0x2800; - m_OriginalHandlingData[154].uiHandlingFlags = 0x200000; - m_OriginalHandlingData[154].fSeatOffsetDistance = 0.250000f; - m_OriginalHandlingData[154].uiMonetary = 35000; - m_OriginalHandlingData[154].ucHeadLight = 1; - m_OriginalHandlingData[154].ucTailLight = 1; - m_OriginalHandlingData[154].ucAnimGroup = 0; - - m_OriginalHandlingData[155].iVehicleID = 155; - m_OriginalHandlingData[155].fMass = 1000.000000f; - m_OriginalHandlingData[155].fTurnMass = 1354.199951f; - m_OriginalHandlingData[155].fDragCoeff = 5.000000f; - m_OriginalHandlingData[155].vecCenterOfMass = CVector(0.000000f, 0.400000f, -0.200000f); - m_OriginalHandlingData[155].uiPercentSubmerged = 70; - m_OriginalHandlingData[155].fTractionMultiplier = 1.000000f; - m_OriginalHandlingData[155].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[155].Transmission.ucEngineType = 'E'; - m_OriginalHandlingData[155].Transmission.ucNumberOfGears = 3; - m_OriginalHandlingData[155].Transmission.uiHandlingFlags = 4; - m_OriginalHandlingData[155].Transmission.fEngineAcceleration = 8.000000f; - m_OriginalHandlingData[155].Transmission.fEngineInertia = 30.000000f; - m_OriginalHandlingData[155].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[155].fBrakeDeceleration = 5.000000f; - m_OriginalHandlingData[155].fBrakeBias = 0.500000f; - m_OriginalHandlingData[155].bABS = false; - m_OriginalHandlingData[155].fSteeringLock = 30.000000f; - m_OriginalHandlingData[155].fTractionLoss = 0.850000f; - m_OriginalHandlingData[155].fTractionBias = 0.500000f; - m_OriginalHandlingData[155].fSuspensionForceLevel = 2.000000f; - m_OriginalHandlingData[155].fSuspensionDamping = 0.090000f; - m_OriginalHandlingData[155].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[155].fSuspensionUpperLimit = 0.250000f; - m_OriginalHandlingData[155].fSuspensionLowerLimit = -0.100000f; - m_OriginalHandlingData[155].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[155].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[155].fCollisionDamageMultiplier = 0.500000f; - m_OriginalHandlingData[155].uiModelFlags = 0x3100; - m_OriginalHandlingData[155].uiHandlingFlags = 0x4; - m_OriginalHandlingData[155].fSeatOffsetDistance = 0.260000f; - m_OriginalHandlingData[155].uiMonetary = 9000; - m_OriginalHandlingData[155].ucHeadLight = 1; - m_OriginalHandlingData[155].ucTailLight = 1; - m_OriginalHandlingData[155].ucAnimGroup = 0; - - m_OriginalHandlingData[156].iVehicleID = 156; - m_OriginalHandlingData[156].fMass = 1000.000000f; - m_OriginalHandlingData[156].fTurnMass = 1354.199951f; - m_OriginalHandlingData[156].fDragCoeff = 5.000000f; - m_OriginalHandlingData[156].vecCenterOfMass = CVector(0.000000f, 0.400000f, -0.200000f); - m_OriginalHandlingData[156].uiPercentSubmerged = 70; - m_OriginalHandlingData[156].fTractionMultiplier = 1.000000f; - m_OriginalHandlingData[156].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[156].Transmission.ucEngineType = 'E'; - m_OriginalHandlingData[156].Transmission.ucNumberOfGears = 3; - m_OriginalHandlingData[156].Transmission.uiHandlingFlags = 4; - m_OriginalHandlingData[156].Transmission.fEngineAcceleration = 8.000000f; - m_OriginalHandlingData[156].Transmission.fEngineInertia = 30.000000f; - m_OriginalHandlingData[156].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[156].fBrakeDeceleration = 5.000000f; - m_OriginalHandlingData[156].fBrakeBias = 0.500000f; - m_OriginalHandlingData[156].bABS = false; - m_OriginalHandlingData[156].fSteeringLock = 30.000000f; - m_OriginalHandlingData[156].fTractionLoss = 0.850000f; - m_OriginalHandlingData[156].fTractionBias = 0.500000f; - m_OriginalHandlingData[156].fSuspensionForceLevel = 2.000000f; - m_OriginalHandlingData[156].fSuspensionDamping = 0.090000f; - m_OriginalHandlingData[156].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[156].fSuspensionUpperLimit = 0.250000f; - m_OriginalHandlingData[156].fSuspensionLowerLimit = -0.100000f; - m_OriginalHandlingData[156].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[156].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[156].fCollisionDamageMultiplier = 0.500000f; - m_OriginalHandlingData[156].uiModelFlags = 0x3100; - m_OriginalHandlingData[156].uiHandlingFlags = 0x4; - m_OriginalHandlingData[156].fSeatOffsetDistance = 0.260000f; - m_OriginalHandlingData[156].uiMonetary = 9000; - m_OriginalHandlingData[156].ucHeadLight = 1; - m_OriginalHandlingData[156].ucTailLight = 1; - m_OriginalHandlingData[156].ucAnimGroup = 0; - - m_OriginalHandlingData[157].iVehicleID = 157; - m_OriginalHandlingData[157].fMass = 1000.000000f; - m_OriginalHandlingData[157].fTurnMass = 2500.000000f; - m_OriginalHandlingData[157].fDragCoeff = 5.000000f; - m_OriginalHandlingData[157].vecCenterOfMass = CVector(0.000000f, 0.400000f, -0.200000f); - m_OriginalHandlingData[157].uiPercentSubmerged = 70; - m_OriginalHandlingData[157].fTractionMultiplier = 1.000000f; - m_OriginalHandlingData[157].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[157].Transmission.ucEngineType = 'E'; - m_OriginalHandlingData[157].Transmission.ucNumberOfGears = 3; - m_OriginalHandlingData[157].Transmission.uiHandlingFlags = 4; - m_OriginalHandlingData[157].Transmission.fEngineAcceleration = 8.000000f; - m_OriginalHandlingData[157].Transmission.fEngineInertia = 30.000000f; - m_OriginalHandlingData[157].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[157].fBrakeDeceleration = 5.000000f; - m_OriginalHandlingData[157].fBrakeBias = 0.500000f; - m_OriginalHandlingData[157].bABS = false; - m_OriginalHandlingData[157].fSteeringLock = 30.000000f; - m_OriginalHandlingData[157].fTractionLoss = 0.850000f; - m_OriginalHandlingData[157].fTractionBias = 0.500000f; - m_OriginalHandlingData[157].fSuspensionForceLevel = 2.000000f; - m_OriginalHandlingData[157].fSuspensionDamping = 0.090000f; - m_OriginalHandlingData[157].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[157].fSuspensionUpperLimit = 0.250000f; - m_OriginalHandlingData[157].fSuspensionLowerLimit = -0.100000f; - m_OriginalHandlingData[157].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[157].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[157].fCollisionDamageMultiplier = 0.500000f; - m_OriginalHandlingData[157].uiModelFlags = 0x3100; - m_OriginalHandlingData[157].uiHandlingFlags = 0x4; - m_OriginalHandlingData[157].fSeatOffsetDistance = 0.260000f; - m_OriginalHandlingData[157].uiMonetary = 9000; - m_OriginalHandlingData[157].ucHeadLight = 1; - m_OriginalHandlingData[157].ucTailLight = 1; - m_OriginalHandlingData[157].ucAnimGroup = 0; - - m_OriginalHandlingData[158].iVehicleID = 158; - m_OriginalHandlingData[158].fMass = 5500.000000f; - m_OriginalHandlingData[158].fTurnMass = 23489.599609f; - m_OriginalHandlingData[158].fDragCoeff = 3.000000f; - m_OriginalHandlingData[158].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[158].uiPercentSubmerged = 80; - m_OriginalHandlingData[158].fTractionMultiplier = 0.820000f; - m_OriginalHandlingData[158].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[158].Transmission.ucEngineType = 'D'; - m_OriginalHandlingData[158].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[158].Transmission.uiHandlingFlags = 513; - m_OriginalHandlingData[158].Transmission.fEngineAcceleration = 5.600000f; - m_OriginalHandlingData[158].Transmission.fEngineInertia = 25.000000f; - m_OriginalHandlingData[158].Transmission.fMaxVelocity = 140.000000f; - m_OriginalHandlingData[158].fBrakeDeceleration = 4.500000f; - m_OriginalHandlingData[158].fBrakeBias = 0.600000f; - m_OriginalHandlingData[158].bABS = false; - m_OriginalHandlingData[158].fSteeringLock = 30.000000f; - m_OriginalHandlingData[158].fTractionLoss = 0.700000f; - m_OriginalHandlingData[158].fTractionBias = 0.460000f; - m_OriginalHandlingData[158].fSuspensionForceLevel = 0.900000f; - m_OriginalHandlingData[158].fSuspensionDamping = 0.080000f; - m_OriginalHandlingData[158].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[158].fSuspensionUpperLimit = 0.250000f; - m_OriginalHandlingData[158].fSuspensionLowerLimit = -0.250000f; - m_OriginalHandlingData[158].fSuspensionFrontRearBias = 0.350000f; - m_OriginalHandlingData[158].fSuspensionAntiDiveMultiplier = 0.600000f; - m_OriginalHandlingData[158].fCollisionDamageMultiplier = 0.400000f; - m_OriginalHandlingData[158].uiModelFlags = 0x4009; - m_OriginalHandlingData[158].uiHandlingFlags = 0x201; - m_OriginalHandlingData[158].fSeatOffsetDistance = 0.360000f; - m_OriginalHandlingData[158].uiMonetary = 22000; - m_OriginalHandlingData[158].ucHeadLight = 0; - m_OriginalHandlingData[158].ucTailLight = 3; - m_OriginalHandlingData[158].ucAnimGroup = 13; - - m_OriginalHandlingData[159].iVehicleID = 159; - m_OriginalHandlingData[159].fMass = 400.000000f; - m_OriginalHandlingData[159].fTurnMass = 400.000000f; - m_OriginalHandlingData[159].fDragCoeff = 5.000000f; - m_OriginalHandlingData[159].vecCenterOfMass = CVector(0.000000f, -0.400000f, 0.000000f); - m_OriginalHandlingData[159].uiPercentSubmerged = 70; - m_OriginalHandlingData[159].fTractionMultiplier = 0.600000f; - m_OriginalHandlingData[159].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[159].Transmission.ucEngineType = 'E'; - m_OriginalHandlingData[159].Transmission.ucNumberOfGears = 3; - m_OriginalHandlingData[159].Transmission.uiHandlingFlags = 4; - m_OriginalHandlingData[159].Transmission.fEngineAcceleration = 8.000000f; - m_OriginalHandlingData[159].Transmission.fEngineInertia = 30.000000f; - m_OriginalHandlingData[159].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[159].fBrakeDeceleration = 5.000000f; - m_OriginalHandlingData[159].fBrakeBias = 0.500000f; - m_OriginalHandlingData[159].bABS = false; - m_OriginalHandlingData[159].fSteeringLock = 30.000000f; - m_OriginalHandlingData[159].fTractionLoss = 0.850000f; - m_OriginalHandlingData[159].fTractionBias = 0.500000f; - m_OriginalHandlingData[159].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[159].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[159].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[159].fSuspensionUpperLimit = 0.250000f; - m_OriginalHandlingData[159].fSuspensionLowerLimit = -0.100000f; - m_OriginalHandlingData[159].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[159].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[159].fCollisionDamageMultiplier = 0.500000f; - m_OriginalHandlingData[159].uiModelFlags = 0x3100; - m_OriginalHandlingData[159].uiHandlingFlags = 0x4; - m_OriginalHandlingData[159].fSeatOffsetDistance = 0.260000f; - m_OriginalHandlingData[159].uiMonetary = 9000; - m_OriginalHandlingData[159].ucHeadLight = 1; - m_OriginalHandlingData[159].ucTailLight = 1; - m_OriginalHandlingData[159].ucAnimGroup = 0; - - m_OriginalHandlingData[160].iVehicleID = 160; - m_OriginalHandlingData[160].fMass = 1000.000000f; - m_OriginalHandlingData[160].fTurnMass = 1354.199951f; - m_OriginalHandlingData[160].fDragCoeff = 5.000000f; - m_OriginalHandlingData[160].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[160].uiPercentSubmerged = 70; - m_OriginalHandlingData[160].fTractionMultiplier = 1.000000f; - m_OriginalHandlingData[160].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[160].Transmission.ucEngineType = 'E'; - m_OriginalHandlingData[160].Transmission.ucNumberOfGears = 3; - m_OriginalHandlingData[160].Transmission.uiHandlingFlags = 4; - m_OriginalHandlingData[160].Transmission.fEngineAcceleration = 8.000000f; - m_OriginalHandlingData[160].Transmission.fEngineInertia = 30.000000f; - m_OriginalHandlingData[160].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[160].fBrakeDeceleration = 5.000000f; - m_OriginalHandlingData[160].fBrakeBias = 0.500000f; - m_OriginalHandlingData[160].bABS = false; - m_OriginalHandlingData[160].fSteeringLock = 30.000000f; - m_OriginalHandlingData[160].fTractionLoss = 0.850000f; - m_OriginalHandlingData[160].fTractionBias = 0.500000f; - m_OriginalHandlingData[160].fSuspensionForceLevel = 2.000000f; - m_OriginalHandlingData[160].fSuspensionDamping = 0.090000f; - m_OriginalHandlingData[160].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[160].fSuspensionUpperLimit = 0.250000f; - m_OriginalHandlingData[160].fSuspensionLowerLimit = -0.100000f; - m_OriginalHandlingData[160].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[160].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[160].fCollisionDamageMultiplier = 0.500000f; - m_OriginalHandlingData[160].uiModelFlags = 0x3100; - m_OriginalHandlingData[160].uiHandlingFlags = 0x4; - m_OriginalHandlingData[160].fSeatOffsetDistance = 0.260000f; - m_OriginalHandlingData[160].uiMonetary = 9000; - m_OriginalHandlingData[160].ucHeadLight = 1; - m_OriginalHandlingData[160].ucTailLight = 1; - m_OriginalHandlingData[160].ucAnimGroup = 0; - - m_OriginalHandlingData[161].iVehicleID = 161; - m_OriginalHandlingData[161].fMass = 1000.000000f; - m_OriginalHandlingData[161].fTurnMass = 1354.199951f; - m_OriginalHandlingData[161].fDragCoeff = 4.000000f; - m_OriginalHandlingData[161].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.100000f); - m_OriginalHandlingData[161].uiPercentSubmerged = 70; - m_OriginalHandlingData[161].fTractionMultiplier = 0.550000f; - m_OriginalHandlingData[161].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[161].Transmission.ucEngineType = 'E'; - m_OriginalHandlingData[161].Transmission.ucNumberOfGears = 3; - m_OriginalHandlingData[161].Transmission.uiHandlingFlags = 34820; - m_OriginalHandlingData[161].Transmission.fEngineAcceleration = 6.000000f; - m_OriginalHandlingData[161].Transmission.fEngineInertia = 30.000000f; - m_OriginalHandlingData[161].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[161].fBrakeDeceleration = 13.000000f; - m_OriginalHandlingData[161].fBrakeBias = 0.500000f; - m_OriginalHandlingData[161].bABS = false; - m_OriginalHandlingData[161].fSteeringLock = 30.000000f; - m_OriginalHandlingData[161].fTractionLoss = 0.850000f; - m_OriginalHandlingData[161].fTractionBias = 0.500000f; - m_OriginalHandlingData[161].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[161].fSuspensionDamping = 0.090000f; - m_OriginalHandlingData[161].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[161].fSuspensionUpperLimit = 0.280000f; - m_OriginalHandlingData[161].fSuspensionLowerLimit = -0.130000f; - m_OriginalHandlingData[161].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[161].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[161].fCollisionDamageMultiplier = 0.500000f; - m_OriginalHandlingData[161].uiModelFlags = 0x1100; - m_OriginalHandlingData[161].uiHandlingFlags = 0x8804; - m_OriginalHandlingData[161].fSeatOffsetDistance = 0.260000f; - m_OriginalHandlingData[161].uiMonetary = 9000; - m_OriginalHandlingData[161].ucHeadLight = 1; - m_OriginalHandlingData[161].ucTailLight = 1; - m_OriginalHandlingData[161].ucAnimGroup = 0; - - m_OriginalHandlingData[162].iVehicleID = 162; - m_OriginalHandlingData[162].fMass = 500.000000f; - m_OriginalHandlingData[162].fTurnMass = 161.699997f; - m_OriginalHandlingData[162].fDragCoeff = 4.000000f; - m_OriginalHandlingData[162].vecCenterOfMass = CVector(0.000000f, 0.050000f, -0.090000f); - m_OriginalHandlingData[162].uiPercentSubmerged = 103; - m_OriginalHandlingData[162].fTractionMultiplier = 1.600000f; - m_OriginalHandlingData[162].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[162].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[162].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[162].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[162].Transmission.fEngineAcceleration = 20.000000f; - m_OriginalHandlingData[162].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[162].Transmission.fMaxVelocity = 190.000000f; - m_OriginalHandlingData[162].fBrakeDeceleration = 15.000000f; - m_OriginalHandlingData[162].fBrakeBias = 0.500000f; - m_OriginalHandlingData[162].bABS = false; - m_OriginalHandlingData[162].fSteeringLock = 35.000000f; - m_OriginalHandlingData[162].fTractionLoss = 0.900000f; - m_OriginalHandlingData[162].fTractionBias = 0.480000f; - m_OriginalHandlingData[162].fSuspensionForceLevel = 0.850000f; - m_OriginalHandlingData[162].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[162].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[162].fSuspensionUpperLimit = 0.150000f; - m_OriginalHandlingData[162].fSuspensionLowerLimit = -0.160000f; - m_OriginalHandlingData[162].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[162].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[162].fCollisionDamageMultiplier = 0.150000f; - m_OriginalHandlingData[162].uiModelFlags = 0x1002000; - m_OriginalHandlingData[162].uiHandlingFlags = 0x0; - m_OriginalHandlingData[162].fSeatOffsetDistance = 0.000000f; - m_OriginalHandlingData[162].uiMonetary = 10000; - m_OriginalHandlingData[162].ucHeadLight = 1; - m_OriginalHandlingData[162].ucTailLight = 1; - m_OriginalHandlingData[162].ucAnimGroup = 4; - - m_OriginalHandlingData[163].iVehicleID = 163; - m_OriginalHandlingData[163].fMass = 350.000000f; - m_OriginalHandlingData[163].fTurnMass = 119.599998f; - m_OriginalHandlingData[163].fDragCoeff = 5.000000f; - m_OriginalHandlingData[163].vecCenterOfMass = CVector(0.000000f, 0.050000f, -0.100000f); - m_OriginalHandlingData[163].uiPercentSubmerged = 103; - m_OriginalHandlingData[163].fTractionMultiplier = 1.800000f; - m_OriginalHandlingData[163].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[163].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[163].Transmission.ucNumberOfGears = 3; - m_OriginalHandlingData[163].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[163].Transmission.fEngineAcceleration = 12.000000f; - m_OriginalHandlingData[163].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[163].Transmission.fMaxVelocity = 190.000000f; - m_OriginalHandlingData[163].fBrakeDeceleration = 14.000000f; - m_OriginalHandlingData[163].fBrakeBias = 0.500000f; - m_OriginalHandlingData[163].bABS = false; - m_OriginalHandlingData[163].fSteeringLock = 35.000000f; - m_OriginalHandlingData[163].fTractionLoss = 0.900000f; - m_OriginalHandlingData[163].fTractionBias = 0.480000f; - m_OriginalHandlingData[163].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[163].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[163].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[163].fSuspensionUpperLimit = 0.120000f; - m_OriginalHandlingData[163].fSuspensionLowerLimit = -0.170000f; - m_OriginalHandlingData[163].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[163].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[163].fCollisionDamageMultiplier = 0.110000f; - m_OriginalHandlingData[163].uiModelFlags = 0x1000000; - m_OriginalHandlingData[163].uiHandlingFlags = 0x0; - m_OriginalHandlingData[163].fSeatOffsetDistance = 0.000000f; - m_OriginalHandlingData[163].uiMonetary = 10000; - m_OriginalHandlingData[163].ucHeadLight = 1; - m_OriginalHandlingData[163].ucTailLight = 1; - m_OriginalHandlingData[163].ucAnimGroup = 5; - - m_OriginalHandlingData[164].iVehicleID = 164; - m_OriginalHandlingData[164].fMass = 500.000000f; - m_OriginalHandlingData[164].fTurnMass = 195.000000f; - m_OriginalHandlingData[164].fDragCoeff = 5.000000f; - m_OriginalHandlingData[164].vecCenterOfMass = CVector(0.000000f, 0.050000f, -0.090000f); - m_OriginalHandlingData[164].uiPercentSubmerged = 103; - m_OriginalHandlingData[164].fTractionMultiplier = 1.600000f; - m_OriginalHandlingData[164].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[164].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[164].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[164].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[164].Transmission.fEngineAcceleration = 20.000000f; - m_OriginalHandlingData[164].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[164].Transmission.fMaxVelocity = 190.000000f; - m_OriginalHandlingData[164].fBrakeDeceleration = 14.000000f; - m_OriginalHandlingData[164].fBrakeBias = 0.500000f; - m_OriginalHandlingData[164].bABS = false; - m_OriginalHandlingData[164].fSteeringLock = 35.000000f; - m_OriginalHandlingData[164].fTractionLoss = 0.900000f; - m_OriginalHandlingData[164].fTractionBias = 0.480000f; - m_OriginalHandlingData[164].fSuspensionForceLevel = 0.850000f; - m_OriginalHandlingData[164].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[164].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[164].fSuspensionUpperLimit = 0.150000f; - m_OriginalHandlingData[164].fSuspensionLowerLimit = -0.160000f; - m_OriginalHandlingData[164].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[164].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[164].fCollisionDamageMultiplier = 0.150000f; - m_OriginalHandlingData[164].uiModelFlags = 0x1000000; - m_OriginalHandlingData[164].uiHandlingFlags = 0x0; - m_OriginalHandlingData[164].fSeatOffsetDistance = 0.000000f; - m_OriginalHandlingData[164].uiMonetary = 10000; - m_OriginalHandlingData[164].ucHeadLight = 1; - m_OriginalHandlingData[164].ucTailLight = 1; - m_OriginalHandlingData[164].ucAnimGroup = 7; - - m_OriginalHandlingData[165].iVehicleID = 165; - m_OriginalHandlingData[165].fMass = 500.000000f; - m_OriginalHandlingData[165].fTurnMass = 200.000000f; - m_OriginalHandlingData[165].fDragCoeff = 4.000000f; - m_OriginalHandlingData[165].vecCenterOfMass = CVector(0.000000f, 0.050000f, -0.090000f); - m_OriginalHandlingData[165].uiPercentSubmerged = 103; - m_OriginalHandlingData[165].fTractionMultiplier = 1.500000f; - m_OriginalHandlingData[165].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[165].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[165].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[165].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[165].Transmission.fEngineAcceleration = 20.000000f; - m_OriginalHandlingData[165].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[165].Transmission.fMaxVelocity = 190.000000f; - m_OriginalHandlingData[165].fBrakeDeceleration = 15.000000f; - m_OriginalHandlingData[165].fBrakeBias = 0.500000f; - m_OriginalHandlingData[165].bABS = false; - m_OriginalHandlingData[165].fSteeringLock = 35.000000f; - m_OriginalHandlingData[165].fTractionLoss = 0.900000f; - m_OriginalHandlingData[165].fTractionBias = 0.480000f; - m_OriginalHandlingData[165].fSuspensionForceLevel = 0.850000f; - m_OriginalHandlingData[165].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[165].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[165].fSuspensionUpperLimit = 0.150000f; - m_OriginalHandlingData[165].fSuspensionLowerLimit = -0.160000f; - m_OriginalHandlingData[165].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[165].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[165].fCollisionDamageMultiplier = 0.110000f; - m_OriginalHandlingData[165].uiModelFlags = 0x1000000; - m_OriginalHandlingData[165].uiHandlingFlags = 0x0; - m_OriginalHandlingData[165].fSeatOffsetDistance = 0.000000f; - m_OriginalHandlingData[165].uiMonetary = 10000; - m_OriginalHandlingData[165].ucHeadLight = 1; - m_OriginalHandlingData[165].ucTailLight = 1; - m_OriginalHandlingData[165].ucAnimGroup = 4; - - m_OriginalHandlingData[166].iVehicleID = 166; - m_OriginalHandlingData[166].fMass = 400.000000f; - m_OriginalHandlingData[166].fTurnMass = 200.000000f; - m_OriginalHandlingData[166].fDragCoeff = 4.000000f; - m_OriginalHandlingData[166].vecCenterOfMass = CVector(0.000000f, 0.080000f, -0.090000f); - m_OriginalHandlingData[166].uiPercentSubmerged = 103; - m_OriginalHandlingData[166].fTractionMultiplier = 1.800000f; - m_OriginalHandlingData[166].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[166].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[166].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[166].Transmission.uiHandlingFlags = 2; - m_OriginalHandlingData[166].Transmission.fEngineAcceleration = 24.000000f; - m_OriginalHandlingData[166].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[166].Transmission.fMaxVelocity = 190.000000f; - m_OriginalHandlingData[166].fBrakeDeceleration = 15.000000f; - m_OriginalHandlingData[166].fBrakeBias = 0.500000f; - m_OriginalHandlingData[166].bABS = false; - m_OriginalHandlingData[166].fSteeringLock = 35.000000f; - m_OriginalHandlingData[166].fTractionLoss = 0.900000f; - m_OriginalHandlingData[166].fTractionBias = 0.480000f; - m_OriginalHandlingData[166].fSuspensionForceLevel = 0.850000f; - m_OriginalHandlingData[166].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[166].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[166].fSuspensionUpperLimit = 0.150000f; - m_OriginalHandlingData[166].fSuspensionLowerLimit = -0.160000f; - m_OriginalHandlingData[166].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[166].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[166].fCollisionDamageMultiplier = 0.150000f; - m_OriginalHandlingData[166].uiModelFlags = 0x1002000; - m_OriginalHandlingData[166].uiHandlingFlags = 0x2; - m_OriginalHandlingData[166].fSeatOffsetDistance = 0.000000f; - m_OriginalHandlingData[166].uiMonetary = 10000; - m_OriginalHandlingData[166].ucHeadLight = 1; - m_OriginalHandlingData[166].ucTailLight = 1; - m_OriginalHandlingData[166].ucAnimGroup = 4; - - m_OriginalHandlingData[167].iVehicleID = 167; - m_OriginalHandlingData[167].fMass = 500.000000f; - m_OriginalHandlingData[167].fTurnMass = 240.000000f; - m_OriginalHandlingData[167].fDragCoeff = 4.500000f; - m_OriginalHandlingData[167].vecCenterOfMass = CVector(0.000000f, 0.050000f, -0.090000f); - m_OriginalHandlingData[167].uiPercentSubmerged = 103; - m_OriginalHandlingData[167].fTractionMultiplier = 1.500000f; - m_OriginalHandlingData[167].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[167].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[167].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[167].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[167].Transmission.fEngineAcceleration = 20.000000f; - m_OriginalHandlingData[167].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[167].Transmission.fMaxVelocity = 190.000000f; - m_OriginalHandlingData[167].fBrakeDeceleration = 15.000000f; - m_OriginalHandlingData[167].fBrakeBias = 0.500000f; - m_OriginalHandlingData[167].bABS = false; - m_OriginalHandlingData[167].fSteeringLock = 35.000000f; - m_OriginalHandlingData[167].fTractionLoss = 0.900000f; - m_OriginalHandlingData[167].fTractionBias = 0.460000f; - m_OriginalHandlingData[167].fSuspensionForceLevel = 0.850000f; - m_OriginalHandlingData[167].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[167].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[167].fSuspensionUpperLimit = 0.150000f; - m_OriginalHandlingData[167].fSuspensionLowerLimit = -0.160000f; - m_OriginalHandlingData[167].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[167].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[167].fCollisionDamageMultiplier = 0.150000f; - m_OriginalHandlingData[167].uiModelFlags = 0x1002000; - m_OriginalHandlingData[167].uiHandlingFlags = 0x0; - m_OriginalHandlingData[167].fSeatOffsetDistance = 0.000000f; - m_OriginalHandlingData[167].uiMonetary = 10000; - m_OriginalHandlingData[167].ucHeadLight = 1; - m_OriginalHandlingData[167].ucTailLight = 1; - m_OriginalHandlingData[167].ucAnimGroup = 4; - - m_OriginalHandlingData[168].iVehicleID = 168; - m_OriginalHandlingData[168].fMass = 500.000000f; - m_OriginalHandlingData[168].fTurnMass = 200.000000f; - m_OriginalHandlingData[168].fDragCoeff = 4.500000f; - m_OriginalHandlingData[168].vecCenterOfMass = CVector(0.000000f, 0.050000f, -0.090000f); - m_OriginalHandlingData[168].uiPercentSubmerged = 103; - m_OriginalHandlingData[168].fTractionMultiplier = 1.400000f; - m_OriginalHandlingData[168].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[168].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[168].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[168].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[168].Transmission.fEngineAcceleration = 20.000000f; - m_OriginalHandlingData[168].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[168].Transmission.fMaxVelocity = 190.000000f; - m_OriginalHandlingData[168].fBrakeDeceleration = 15.000000f; - m_OriginalHandlingData[168].fBrakeBias = 0.500000f; - m_OriginalHandlingData[168].bABS = false; - m_OriginalHandlingData[168].fSteeringLock = 35.000000f; - m_OriginalHandlingData[168].fTractionLoss = 0.900000f; - m_OriginalHandlingData[168].fTractionBias = 0.480000f; - m_OriginalHandlingData[168].fSuspensionForceLevel = 0.850000f; - m_OriginalHandlingData[168].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[168].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[168].fSuspensionUpperLimit = 0.150000f; - m_OriginalHandlingData[168].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[168].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[168].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[168].fCollisionDamageMultiplier = 0.150000f; - m_OriginalHandlingData[168].uiModelFlags = 0x1000000; - m_OriginalHandlingData[168].uiHandlingFlags = 0x0; - m_OriginalHandlingData[168].fSeatOffsetDistance = 0.000000f; - m_OriginalHandlingData[168].uiMonetary = 10000; - m_OriginalHandlingData[168].ucHeadLight = 1; - m_OriginalHandlingData[168].ucTailLight = 1; - m_OriginalHandlingData[168].ucAnimGroup = 4; - - m_OriginalHandlingData[169].iVehicleID = 169; - m_OriginalHandlingData[169].fMass = 800.000000f; - m_OriginalHandlingData[169].fTurnMass = 600.000000f; - m_OriginalHandlingData[169].fDragCoeff = 4.000000f; - m_OriginalHandlingData[169].vecCenterOfMass = CVector(0.000000f, 0.100000f, 0.000000f); - m_OriginalHandlingData[169].uiPercentSubmerged = 103; - m_OriginalHandlingData[169].fTractionMultiplier = 1.400000f; - m_OriginalHandlingData[169].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[169].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[169].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[169].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[169].Transmission.fEngineAcceleration = 16.000000f; - m_OriginalHandlingData[169].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[169].Transmission.fMaxVelocity = 190.000000f; - m_OriginalHandlingData[169].fBrakeDeceleration = 10.000000f; - m_OriginalHandlingData[169].fBrakeBias = 0.550000f; - m_OriginalHandlingData[169].bABS = false; - m_OriginalHandlingData[169].fSteeringLock = 35.000000f; - m_OriginalHandlingData[169].fTractionLoss = 0.850000f; - m_OriginalHandlingData[169].fTractionBias = 0.480000f; - m_OriginalHandlingData[169].fSuspensionForceLevel = 0.650000f; - m_OriginalHandlingData[169].fSuspensionDamping = 0.200000f; - m_OriginalHandlingData[169].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[169].fSuspensionUpperLimit = 0.090000f; - m_OriginalHandlingData[169].fSuspensionLowerLimit = -0.110000f; - m_OriginalHandlingData[169].fSuspensionFrontRearBias = 0.550000f; - m_OriginalHandlingData[169].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[169].fCollisionDamageMultiplier = 0.240000f; - m_OriginalHandlingData[169].uiModelFlags = 0x41002000; - m_OriginalHandlingData[169].uiHandlingFlags = 0x0; - m_OriginalHandlingData[169].fSeatOffsetDistance = 0.000000f; - m_OriginalHandlingData[169].uiMonetary = 10000; - m_OriginalHandlingData[169].ucHeadLight = 1; - m_OriginalHandlingData[169].ucTailLight = 1; - m_OriginalHandlingData[169].ucAnimGroup = 8; - - m_OriginalHandlingData[170].iVehicleID = 170; - m_OriginalHandlingData[170].fMass = 400.000000f; - m_OriginalHandlingData[170].fTurnMass = 300.000000f; - m_OriginalHandlingData[170].fDragCoeff = 5.000000f; - m_OriginalHandlingData[170].vecCenterOfMass = CVector(0.000000f, 0.050000f, -0.200000f); - m_OriginalHandlingData[170].uiPercentSubmerged = 70; - m_OriginalHandlingData[170].fTractionMultiplier = 0.700000f; - m_OriginalHandlingData[170].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[170].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[170].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[170].Transmission.uiHandlingFlags = 517; - m_OriginalHandlingData[170].Transmission.fEngineAcceleration = 10.000000f; - m_OriginalHandlingData[170].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[170].Transmission.fMaxVelocity = 160.000000f; - m_OriginalHandlingData[170].fBrakeDeceleration = 8.000000f; - m_OriginalHandlingData[170].fBrakeBias = 0.500000f; - m_OriginalHandlingData[170].bABS = false; - m_OriginalHandlingData[170].fSteeringLock = 35.000000f; - m_OriginalHandlingData[170].fTractionLoss = 0.900000f; - m_OriginalHandlingData[170].fTractionBias = 0.490000f; - m_OriginalHandlingData[170].fSuspensionForceLevel = 0.800000f; - m_OriginalHandlingData[170].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[170].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[170].fSuspensionUpperLimit = 0.150000f; - m_OriginalHandlingData[170].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[170].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[170].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[170].fCollisionDamageMultiplier = 0.500000f; - m_OriginalHandlingData[170].uiModelFlags = 0x281300; - m_OriginalHandlingData[170].uiHandlingFlags = 0x205; - m_OriginalHandlingData[170].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[170].uiMonetary = 9000; - m_OriginalHandlingData[170].ucHeadLight = 1; - m_OriginalHandlingData[170].ucTailLight = 1; - m_OriginalHandlingData[170].ucAnimGroup = 12; - - m_OriginalHandlingData[171].iVehicleID = 171; - m_OriginalHandlingData[171].fMass = 100.000000f; - m_OriginalHandlingData[171].fTurnMass = 39.000000f; - m_OriginalHandlingData[171].fDragCoeff = 7.000000f; - m_OriginalHandlingData[171].vecCenterOfMass = CVector(0.000000f, 0.050000f, -0.090000f); - m_OriginalHandlingData[171].uiPercentSubmerged = 103; - m_OriginalHandlingData[171].fTractionMultiplier = 1.600000f; - m_OriginalHandlingData[171].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[171].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[171].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[171].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[171].Transmission.fEngineAcceleration = 7.200000f; - m_OriginalHandlingData[171].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[171].Transmission.fMaxVelocity = 120.000000f; - m_OriginalHandlingData[171].fBrakeDeceleration = 19.000000f; - m_OriginalHandlingData[171].fBrakeBias = 0.500000f; - m_OriginalHandlingData[171].bABS = false; - m_OriginalHandlingData[171].fSteeringLock = 35.000000f; - m_OriginalHandlingData[171].fTractionLoss = 0.900000f; - m_OriginalHandlingData[171].fTractionBias = 0.480000f; - m_OriginalHandlingData[171].fSuspensionForceLevel = 0.800000f; - m_OriginalHandlingData[171].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[171].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[171].fSuspensionUpperLimit = 0.200000f; - m_OriginalHandlingData[171].fSuspensionLowerLimit = -0.100000f; - m_OriginalHandlingData[171].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[171].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[171].fCollisionDamageMultiplier = 0.150000f; - m_OriginalHandlingData[171].uiModelFlags = 0x41000000; - m_OriginalHandlingData[171].uiHandlingFlags = 0x0; - m_OriginalHandlingData[171].fSeatOffsetDistance = 0.000000f; - m_OriginalHandlingData[171].uiMonetary = 10000; - m_OriginalHandlingData[171].ucHeadLight = 1; - m_OriginalHandlingData[171].ucTailLight = 1; - m_OriginalHandlingData[171].ucAnimGroup = 9; - - m_OriginalHandlingData[172].iVehicleID = 172; - m_OriginalHandlingData[172].fMass = 100.000000f; - m_OriginalHandlingData[172].fTurnMass = 39.000000f; - m_OriginalHandlingData[172].fDragCoeff = 6.000000f; - m_OriginalHandlingData[172].vecCenterOfMass = CVector(0.000000f, 0.050000f, -0.090000f); - m_OriginalHandlingData[172].uiPercentSubmerged = 103; - m_OriginalHandlingData[172].fTractionMultiplier = 1.600000f; - m_OriginalHandlingData[172].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[172].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[172].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[172].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[172].Transmission.fEngineAcceleration = 7.200000f; - m_OriginalHandlingData[172].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[172].Transmission.fMaxVelocity = 120.000000f; - m_OriginalHandlingData[172].fBrakeDeceleration = 19.000000f; - m_OriginalHandlingData[172].fBrakeBias = 0.500000f; - m_OriginalHandlingData[172].bABS = false; - m_OriginalHandlingData[172].fSteeringLock = 35.000000f; - m_OriginalHandlingData[172].fTractionLoss = 0.900000f; - m_OriginalHandlingData[172].fTractionBias = 0.480000f; - m_OriginalHandlingData[172].fSuspensionForceLevel = 0.850000f; - m_OriginalHandlingData[172].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[172].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[172].fSuspensionUpperLimit = 0.200000f; - m_OriginalHandlingData[172].fSuspensionLowerLimit = -0.100000f; - m_OriginalHandlingData[172].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[172].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[172].fCollisionDamageMultiplier = 0.150000f; - m_OriginalHandlingData[172].uiModelFlags = 0x41000000; - m_OriginalHandlingData[172].uiHandlingFlags = 0x0; - m_OriginalHandlingData[172].fSeatOffsetDistance = 0.000000f; - m_OriginalHandlingData[172].uiMonetary = 10000; - m_OriginalHandlingData[172].ucHeadLight = 1; - m_OriginalHandlingData[172].ucTailLight = 1; - m_OriginalHandlingData[172].ucAnimGroup = 11; - - m_OriginalHandlingData[173].iVehicleID = 173; - m_OriginalHandlingData[173].fMass = 100.000000f; - m_OriginalHandlingData[173].fTurnMass = 60.000000f; - m_OriginalHandlingData[173].fDragCoeff = 5.000000f; - m_OriginalHandlingData[173].vecCenterOfMass = CVector(0.000000f, 0.050000f, -0.090000f); - m_OriginalHandlingData[173].uiPercentSubmerged = 103; - m_OriginalHandlingData[173].fTractionMultiplier = 1.600000f; - m_OriginalHandlingData[173].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[173].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[173].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[173].Transmission.uiHandlingFlags = 2; - m_OriginalHandlingData[173].Transmission.fEngineAcceleration = 10.000000f; - m_OriginalHandlingData[173].Transmission.fEngineInertia = 15.000000f; - m_OriginalHandlingData[173].Transmission.fMaxVelocity = 140.000000f; - m_OriginalHandlingData[173].fBrakeDeceleration = 19.000000f; - m_OriginalHandlingData[173].fBrakeBias = 0.500000f; - m_OriginalHandlingData[173].bABS = false; - m_OriginalHandlingData[173].fSteeringLock = 35.000000f; - m_OriginalHandlingData[173].fTractionLoss = 0.900000f; - m_OriginalHandlingData[173].fTractionBias = 0.480000f; - m_OriginalHandlingData[173].fSuspensionForceLevel = 0.850000f; - m_OriginalHandlingData[173].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[173].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[173].fSuspensionUpperLimit = 0.200000f; - m_OriginalHandlingData[173].fSuspensionLowerLimit = -0.100000f; - m_OriginalHandlingData[173].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[173].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[173].fCollisionDamageMultiplier = 0.150000f; - m_OriginalHandlingData[173].uiModelFlags = 0x41000000; - m_OriginalHandlingData[173].uiHandlingFlags = 0x2; - m_OriginalHandlingData[173].fSeatOffsetDistance = 0.000000f; - m_OriginalHandlingData[173].uiMonetary = 10000; - m_OriginalHandlingData[173].ucHeadLight = 1; - m_OriginalHandlingData[173].ucTailLight = 1; - m_OriginalHandlingData[173].ucAnimGroup = 10; - - m_OriginalHandlingData[174].iVehicleID = 174; - m_OriginalHandlingData[174].fMass = 800.000000f; - m_OriginalHandlingData[174].fTurnMass = 403.299988f; - m_OriginalHandlingData[174].fDragCoeff = 4.000000f; - m_OriginalHandlingData[174].vecCenterOfMass = CVector(0.000000f, 0.100000f, 0.000000f); - m_OriginalHandlingData[174].uiPercentSubmerged = 103; - m_OriginalHandlingData[174].fTractionMultiplier = 1.200000f; - m_OriginalHandlingData[174].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[174].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[174].Transmission.ucNumberOfGears = 4; - m_OriginalHandlingData[174].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[174].Transmission.fEngineAcceleration = 16.000000f; - m_OriginalHandlingData[174].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[174].Transmission.fMaxVelocity = 190.000000f; - m_OriginalHandlingData[174].fBrakeDeceleration = 10.000000f; - m_OriginalHandlingData[174].fBrakeBias = 0.550000f; - m_OriginalHandlingData[174].bABS = false; - m_OriginalHandlingData[174].fSteeringLock = 35.000000f; - m_OriginalHandlingData[174].fTractionLoss = 0.820000f; - m_OriginalHandlingData[174].fTractionBias = 0.510000f; - m_OriginalHandlingData[174].fSuspensionForceLevel = 0.650000f; - m_OriginalHandlingData[174].fSuspensionDamping = 0.200000f; - m_OriginalHandlingData[174].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[174].fSuspensionUpperLimit = 0.090000f; - m_OriginalHandlingData[174].fSuspensionLowerLimit = -0.110000f; - m_OriginalHandlingData[174].fSuspensionFrontRearBias = 0.550000f; - m_OriginalHandlingData[174].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[174].fCollisionDamageMultiplier = 0.240000f; - m_OriginalHandlingData[174].uiModelFlags = 0x1002000; - m_OriginalHandlingData[174].uiHandlingFlags = 0x0; - m_OriginalHandlingData[174].fSeatOffsetDistance = 0.000000f; - m_OriginalHandlingData[174].uiMonetary = 10000; - m_OriginalHandlingData[174].ucHeadLight = 1; - m_OriginalHandlingData[174].ucTailLight = 1; - m_OriginalHandlingData[174].ucAnimGroup = 6; - - m_OriginalHandlingData[175].iVehicleID = 175; - m_OriginalHandlingData[175].fMass = 2200.000000f; - m_OriginalHandlingData[175].fTurnMass = 29333.300781f; - m_OriginalHandlingData[175].fDragCoeff = 1.000000f; - m_OriginalHandlingData[175].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[175].uiPercentSubmerged = 14; - m_OriginalHandlingData[175].fTractionMultiplier = 2.300000f; - m_OriginalHandlingData[175].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[175].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[175].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[175].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[175].Transmission.fEngineAcceleration = 0.680000f; - m_OriginalHandlingData[175].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[175].Transmission.fMaxVelocity = 190.000000f; - m_OriginalHandlingData[175].fBrakeDeceleration = 0.050000f; - m_OriginalHandlingData[175].fBrakeBias = 0.010000f; - m_OriginalHandlingData[175].bABS = false; - m_OriginalHandlingData[175].fSteeringLock = 24.000000f; - m_OriginalHandlingData[175].fTractionLoss = 15.000000f; - m_OriginalHandlingData[175].fTractionBias = 0.580000f; - m_OriginalHandlingData[175].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[175].fSuspensionDamping = 3.000000f; - m_OriginalHandlingData[175].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[175].fSuspensionUpperLimit = 0.100000f; - m_OriginalHandlingData[175].fSuspensionLowerLimit = 0.100000f; - m_OriginalHandlingData[175].fSuspensionFrontRearBias = 0.000000f; - m_OriginalHandlingData[175].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[175].fCollisionDamageMultiplier = 0.330000f; - m_OriginalHandlingData[175].uiModelFlags = 0x8000000; - m_OriginalHandlingData[175].uiHandlingFlags = 0x0; - m_OriginalHandlingData[175].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[175].uiMonetary = 40000; - m_OriginalHandlingData[175].ucHeadLight = 0; - m_OriginalHandlingData[175].ucTailLight = 1; - m_OriginalHandlingData[175].ucAnimGroup = 0; - - m_OriginalHandlingData[176].iVehicleID = 176; - m_OriginalHandlingData[176].fMass = 2200.000000f; - m_OriginalHandlingData[176].fTurnMass = 20210.699219f; - m_OriginalHandlingData[176].fDragCoeff = 1.000000f; - m_OriginalHandlingData[176].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[176].uiPercentSubmerged = 22; - m_OriginalHandlingData[176].fTractionMultiplier = 2.500000f; - m_OriginalHandlingData[176].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[176].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[176].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[176].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[176].Transmission.fEngineAcceleration = 1.000000f; - m_OriginalHandlingData[176].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[176].Transmission.fMaxVelocity = 190.000000f; - m_OriginalHandlingData[176].fBrakeDeceleration = 0.040000f; - m_OriginalHandlingData[176].fBrakeBias = 0.010000f; - m_OriginalHandlingData[176].bABS = false; - m_OriginalHandlingData[176].fSteeringLock = 20.000000f; - m_OriginalHandlingData[176].fTractionLoss = 15.000000f; - m_OriginalHandlingData[176].fTractionBias = 0.650000f; - m_OriginalHandlingData[176].fSuspensionForceLevel = 1.300000f; - m_OriginalHandlingData[176].fSuspensionDamping = 3.000000f; - m_OriginalHandlingData[176].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[176].fSuspensionUpperLimit = 0.100000f; - m_OriginalHandlingData[176].fSuspensionLowerLimit = 0.500000f; - m_OriginalHandlingData[176].fSuspensionFrontRearBias = 2.000000f; - m_OriginalHandlingData[176].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[176].fCollisionDamageMultiplier = 0.390000f; - m_OriginalHandlingData[176].uiModelFlags = 0x8000400; - m_OriginalHandlingData[176].uiHandlingFlags = 0x0; - m_OriginalHandlingData[176].fSeatOffsetDistance = 0.700000f; - m_OriginalHandlingData[176].uiMonetary = 30000; - m_OriginalHandlingData[176].ucHeadLight = 0; - m_OriginalHandlingData[176].ucTailLight = 1; - m_OriginalHandlingData[176].ucAnimGroup = 0; - - m_OriginalHandlingData[177].iVehicleID = 177; - m_OriginalHandlingData[177].fMass = 5000.000000f; - m_OriginalHandlingData[177].fTurnMass = 25520.800781f; - m_OriginalHandlingData[177].fDragCoeff = 1.000000f; - m_OriginalHandlingData[177].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[177].uiPercentSubmerged = 15; - m_OriginalHandlingData[177].fTractionMultiplier = -1.500000f; - m_OriginalHandlingData[177].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[177].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[177].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[177].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[177].Transmission.fEngineAcceleration = 0.280000f; - m_OriginalHandlingData[177].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[177].Transmission.fMaxVelocity = 190.000000f; - m_OriginalHandlingData[177].fBrakeDeceleration = 0.020000f; - m_OriginalHandlingData[177].fBrakeBias = 0.020000f; - m_OriginalHandlingData[177].bABS = false; - m_OriginalHandlingData[177].fSteeringLock = 25.000000f; - m_OriginalHandlingData[177].fTractionLoss = 15.000000f; - m_OriginalHandlingData[177].fTractionBias = 0.450000f; - m_OriginalHandlingData[177].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[177].fSuspensionDamping = 3.000000f; - m_OriginalHandlingData[177].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[177].fSuspensionUpperLimit = 0.100000f; - m_OriginalHandlingData[177].fSuspensionLowerLimit = 0.100000f; - m_OriginalHandlingData[177].fSuspensionFrontRearBias = 0.000000f; - m_OriginalHandlingData[177].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[177].fCollisionDamageMultiplier = 0.380000f; - m_OriginalHandlingData[177].uiModelFlags = 0x8000000; - m_OriginalHandlingData[177].uiHandlingFlags = 0x0; - m_OriginalHandlingData[177].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[177].uiMonetary = 25000; - m_OriginalHandlingData[177].ucHeadLight = 0; - m_OriginalHandlingData[177].ucTailLight = 1; - m_OriginalHandlingData[177].ucAnimGroup = 0; - - m_OriginalHandlingData[178].iVehicleID = 178; - m_OriginalHandlingData[178].fMass = 3000.000000f; - m_OriginalHandlingData[178].fTurnMass = 17312.500000f; - m_OriginalHandlingData[178].fDragCoeff = 1.000000f; - m_OriginalHandlingData[178].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[178].uiPercentSubmerged = 15; - m_OriginalHandlingData[178].fTractionMultiplier = -4.000000f; - m_OriginalHandlingData[178].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[178].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[178].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[178].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[178].Transmission.fEngineAcceleration = 0.200000f; - m_OriginalHandlingData[178].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[178].Transmission.fMaxVelocity = 190.000000f; - m_OriginalHandlingData[178].fBrakeDeceleration = 0.020000f; - m_OriginalHandlingData[178].fBrakeBias = 0.000000f; - m_OriginalHandlingData[178].bABS = false; - m_OriginalHandlingData[178].fSteeringLock = 20.000000f; - m_OriginalHandlingData[178].fTractionLoss = 25.000000f; - m_OriginalHandlingData[178].fTractionBias = 0.500000f; - m_OriginalHandlingData[178].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[178].fSuspensionDamping = 3.000000f; - m_OriginalHandlingData[178].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[178].fSuspensionUpperLimit = 15.000000f; - m_OriginalHandlingData[178].fSuspensionLowerLimit = 0.100000f; - m_OriginalHandlingData[178].fSuspensionFrontRearBias = 0.000000f; - m_OriginalHandlingData[178].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[178].fCollisionDamageMultiplier = 0.230000f; - m_OriginalHandlingData[178].uiModelFlags = 0x8000000; - m_OriginalHandlingData[178].uiHandlingFlags = 0x0; - m_OriginalHandlingData[178].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[178].uiMonetary = 70000; - m_OriginalHandlingData[178].ucHeadLight = 0; - m_OriginalHandlingData[178].ucTailLight = 1; - m_OriginalHandlingData[178].ucAnimGroup = 0; - - m_OriginalHandlingData[179].iVehicleID = 179; - m_OriginalHandlingData[179].fMass = 2200.000000f; - m_OriginalHandlingData[179].fTurnMass = 29333.300781f; - m_OriginalHandlingData[179].fDragCoeff = 1.000000f; - m_OriginalHandlingData[179].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[179].uiPercentSubmerged = 42; - m_OriginalHandlingData[179].fTractionMultiplier = 3.000000f; - m_OriginalHandlingData[179].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[179].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[179].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[179].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[179].Transmission.fEngineAcceleration = 1.200000f; - m_OriginalHandlingData[179].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[179].Transmission.fMaxVelocity = 190.000000f; - m_OriginalHandlingData[179].fBrakeDeceleration = 0.020000f; - m_OriginalHandlingData[179].fBrakeBias = 0.000000f; - m_OriginalHandlingData[179].bABS = false; - m_OriginalHandlingData[179].fSteeringLock = 24.000000f; - m_OriginalHandlingData[179].fTractionLoss = 15.000000f; - m_OriginalHandlingData[179].fTractionBias = 0.650000f; - m_OriginalHandlingData[179].fSuspensionForceLevel = 0.450000f; - m_OriginalHandlingData[179].fSuspensionDamping = 5.000000f; - m_OriginalHandlingData[179].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[179].fSuspensionUpperLimit = 0.100000f; - m_OriginalHandlingData[179].fSuspensionLowerLimit = 0.050000f; - m_OriginalHandlingData[179].fSuspensionFrontRearBias = 0.000000f; - m_OriginalHandlingData[179].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[179].fCollisionDamageMultiplier = 0.330000f; - m_OriginalHandlingData[179].uiModelFlags = 0x8000400; - m_OriginalHandlingData[179].uiHandlingFlags = 0x0; - m_OriginalHandlingData[179].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[179].uiMonetary = 60000; - m_OriginalHandlingData[179].ucHeadLight = 0; - m_OriginalHandlingData[179].ucTailLight = 1; - m_OriginalHandlingData[179].ucAnimGroup = 0; - - m_OriginalHandlingData[180].iVehicleID = 180; - m_OriginalHandlingData[180].fMass = 2200.000000f; - m_OriginalHandlingData[180].fTurnMass = 29333.300781f; - m_OriginalHandlingData[180].fDragCoeff = 1.000000f; - m_OriginalHandlingData[180].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[180].uiPercentSubmerged = 10; - m_OriginalHandlingData[180].fTractionMultiplier = 2.200000f; - m_OriginalHandlingData[180].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[180].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[180].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[180].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[180].Transmission.fEngineAcceleration = 0.560000f; - m_OriginalHandlingData[180].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[180].Transmission.fMaxVelocity = 190.000000f; - m_OriginalHandlingData[180].fBrakeDeceleration = 0.050000f; - m_OriginalHandlingData[180].fBrakeBias = 0.010000f; - m_OriginalHandlingData[180].bABS = false; - m_OriginalHandlingData[180].fSteeringLock = 24.000000f; - m_OriginalHandlingData[180].fTractionLoss = 12.000000f; - m_OriginalHandlingData[180].fTractionBias = 0.450000f; - m_OriginalHandlingData[180].fSuspensionForceLevel = 1.800000f; - m_OriginalHandlingData[180].fSuspensionDamping = 3.000000f; - m_OriginalHandlingData[180].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[180].fSuspensionUpperLimit = 0.100000f; - m_OriginalHandlingData[180].fSuspensionLowerLimit = 0.100000f; - m_OriginalHandlingData[180].fSuspensionFrontRearBias = 0.000000f; - m_OriginalHandlingData[180].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[180].fCollisionDamageMultiplier = 0.330000f; - m_OriginalHandlingData[180].uiModelFlags = 0x8000400; - m_OriginalHandlingData[180].uiHandlingFlags = 0x0; - m_OriginalHandlingData[180].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[180].uiMonetary = 73000; - m_OriginalHandlingData[180].ucHeadLight = 0; - m_OriginalHandlingData[180].ucTailLight = 1; - m_OriginalHandlingData[180].ucAnimGroup = 0; - - m_OriginalHandlingData[181].iVehicleID = 181; - m_OriginalHandlingData[181].fMass = 1200.000000f; - m_OriginalHandlingData[181].fTurnMass = 6525.000000f; - m_OriginalHandlingData[181].fDragCoeff = 1.000000f; - m_OriginalHandlingData[181].vecCenterOfMass = CVector(0.000000f, -0.300000f, 0.000000f); - m_OriginalHandlingData[181].uiPercentSubmerged = 14; - m_OriginalHandlingData[181].fTractionMultiplier = 2.000000f; - m_OriginalHandlingData[181].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[181].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[181].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[181].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[181].Transmission.fEngineAcceleration = 0.640000f; - m_OriginalHandlingData[181].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[181].Transmission.fMaxVelocity = 190.000000f; - m_OriginalHandlingData[181].fBrakeDeceleration = 0.050000f; - m_OriginalHandlingData[181].fBrakeBias = 0.010000f; - m_OriginalHandlingData[181].bABS = false; - m_OriginalHandlingData[181].fSteeringLock = 24.000000f; - m_OriginalHandlingData[181].fTractionLoss = 4.200000f; - m_OriginalHandlingData[181].fTractionBias = 0.700000f; - m_OriginalHandlingData[181].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[181].fSuspensionDamping = 3.000000f; - m_OriginalHandlingData[181].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[181].fSuspensionUpperLimit = 3.200000f; - m_OriginalHandlingData[181].fSuspensionLowerLimit = 0.100000f; - m_OriginalHandlingData[181].fSuspensionFrontRearBias = 2.500000f; - m_OriginalHandlingData[181].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[181].fCollisionDamageMultiplier = 0.180000f; - m_OriginalHandlingData[181].uiModelFlags = 0x8000000; - m_OriginalHandlingData[181].uiHandlingFlags = 0x0; - m_OriginalHandlingData[181].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[181].uiMonetary = 10000; - m_OriginalHandlingData[181].ucHeadLight = 0; - m_OriginalHandlingData[181].ucTailLight = 1; - m_OriginalHandlingData[181].ucAnimGroup = 0; - - m_OriginalHandlingData[182].iVehicleID = 182; - m_OriginalHandlingData[182].fMass = 800.000000f; - m_OriginalHandlingData[182].fTurnMass = 1483.300049f; - m_OriginalHandlingData[182].fDragCoeff = 1.000000f; - m_OriginalHandlingData[182].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[182].uiPercentSubmerged = 16; - m_OriginalHandlingData[182].fTractionMultiplier = 3.500000f; - m_OriginalHandlingData[182].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[182].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[182].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[182].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[182].Transmission.fEngineAcceleration = 0.480000f; - m_OriginalHandlingData[182].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[182].Transmission.fMaxVelocity = 190.000000f; - m_OriginalHandlingData[182].fBrakeDeceleration = 0.070000f; - m_OriginalHandlingData[182].fBrakeBias = 0.010000f; - m_OriginalHandlingData[182].bABS = false; - m_OriginalHandlingData[182].fSteeringLock = 30.000000f; - m_OriginalHandlingData[182].fTractionLoss = 3.500000f; - m_OriginalHandlingData[182].fTractionBias = 1.000000f; - m_OriginalHandlingData[182].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[182].fSuspensionDamping = 4.500000f; - m_OriginalHandlingData[182].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[182].fSuspensionUpperLimit = 3.500000f; - m_OriginalHandlingData[182].fSuspensionLowerLimit = 0.100000f; - m_OriginalHandlingData[182].fSuspensionFrontRearBias = 0.700000f; - m_OriginalHandlingData[182].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[182].fCollisionDamageMultiplier = 0.120000f; - m_OriginalHandlingData[182].uiModelFlags = 0x8000000; - m_OriginalHandlingData[182].uiHandlingFlags = 0x0; - m_OriginalHandlingData[182].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[182].uiMonetary = 5000; - m_OriginalHandlingData[182].ucHeadLight = 0; - m_OriginalHandlingData[182].ucTailLight = 1; - m_OriginalHandlingData[182].ucAnimGroup = 0; - - m_OriginalHandlingData[183].iVehicleID = 183; - m_OriginalHandlingData[183].fMass = 5000.000000f; - m_OriginalHandlingData[183].fTurnMass = 155520.796875f; - m_OriginalHandlingData[183].fDragCoeff = 1.000000f; - m_OriginalHandlingData[183].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[183].uiPercentSubmerged = 10; - m_OriginalHandlingData[183].fTractionMultiplier = -3.500000f; - m_OriginalHandlingData[183].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[183].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[183].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[183].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[183].Transmission.fEngineAcceleration = 0.200000f; - m_OriginalHandlingData[183].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[183].Transmission.fMaxVelocity = 190.000000f; - m_OriginalHandlingData[183].fBrakeDeceleration = 0.040000f; - m_OriginalHandlingData[183].fBrakeBias = 0.030000f; - m_OriginalHandlingData[183].bABS = false; - m_OriginalHandlingData[183].fSteeringLock = 38.000000f; - m_OriginalHandlingData[183].fTractionLoss = 25.000000f; - m_OriginalHandlingData[183].fTractionBias = 0.400000f; - m_OriginalHandlingData[183].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[183].fSuspensionDamping = 3.000000f; - m_OriginalHandlingData[183].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[183].fSuspensionUpperLimit = 0.100000f; - m_OriginalHandlingData[183].fSuspensionLowerLimit = 0.000000f; - m_OriginalHandlingData[183].fSuspensionFrontRearBias = 1.000000f; - m_OriginalHandlingData[183].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[183].fCollisionDamageMultiplier = 0.380000f; - m_OriginalHandlingData[183].uiModelFlags = 0x8000000; - m_OriginalHandlingData[183].uiHandlingFlags = 0x0; - m_OriginalHandlingData[183].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[183].uiMonetary = 99000; - m_OriginalHandlingData[183].ucHeadLight = 0; - m_OriginalHandlingData[183].ucTailLight = 1; - m_OriginalHandlingData[183].ucAnimGroup = 0; - - m_OriginalHandlingData[184].iVehicleID = 184; - m_OriginalHandlingData[184].fMass = 3000.000000f; - m_OriginalHandlingData[184].fTurnMass = 40000.000000f; - m_OriginalHandlingData[184].fDragCoeff = 1.000000f; - m_OriginalHandlingData[184].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[184].uiPercentSubmerged = 35; - m_OriginalHandlingData[184].fTractionMultiplier = 2.000000f; - m_OriginalHandlingData[184].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[184].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[184].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[184].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[184].Transmission.fEngineAcceleration = 1.200000f; - m_OriginalHandlingData[184].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[184].Transmission.fMaxVelocity = 190.000000f; - m_OriginalHandlingData[184].fBrakeDeceleration = 0.020000f; - m_OriginalHandlingData[184].fBrakeBias = 0.000000f; - m_OriginalHandlingData[184].bABS = false; - m_OriginalHandlingData[184].fSteeringLock = 24.000000f; - m_OriginalHandlingData[184].fTractionLoss = 15.000000f; - m_OriginalHandlingData[184].fTractionBias = 0.500000f; - m_OriginalHandlingData[184].fSuspensionForceLevel = 0.750000f; - m_OriginalHandlingData[184].fSuspensionDamping = 4.000000f; - m_OriginalHandlingData[184].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[184].fSuspensionUpperLimit = 0.100000f; - m_OriginalHandlingData[184].fSuspensionLowerLimit = 0.300000f; - m_OriginalHandlingData[184].fSuspensionFrontRearBias = 1.500000f; - m_OriginalHandlingData[184].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[184].fCollisionDamageMultiplier = 0.450000f; - m_OriginalHandlingData[184].uiModelFlags = 0x8000400; - m_OriginalHandlingData[184].uiHandlingFlags = 0x0; - m_OriginalHandlingData[184].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[184].uiMonetary = 48000; - m_OriginalHandlingData[184].ucHeadLight = 0; - m_OriginalHandlingData[184].ucTailLight = 1; - m_OriginalHandlingData[184].ucAnimGroup = 0; - - m_OriginalHandlingData[185].iVehicleID = 185; - m_OriginalHandlingData[185].fMass = 2200.000000f; - m_OriginalHandlingData[185].fTurnMass = 20210.699219f; - m_OriginalHandlingData[185].fDragCoeff = 1.000000f; - m_OriginalHandlingData[185].vecCenterOfMass = CVector(0.000000f, -1.000000f, 0.000000f); - m_OriginalHandlingData[185].uiPercentSubmerged = 22; - m_OriginalHandlingData[185].fTractionMultiplier = 1.500000f; - m_OriginalHandlingData[185].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[185].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[185].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[185].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[185].Transmission.fEngineAcceleration = 0.600000f; - m_OriginalHandlingData[185].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[185].Transmission.fMaxVelocity = 190.000000f; - m_OriginalHandlingData[185].fBrakeDeceleration = 0.030000f; - m_OriginalHandlingData[185].fBrakeBias = 0.010000f; - m_OriginalHandlingData[185].bABS = false; - m_OriginalHandlingData[185].fSteeringLock = 24.000000f; - m_OriginalHandlingData[185].fTractionLoss = 15.000000f; - m_OriginalHandlingData[185].fTractionBias = 0.650000f; - m_OriginalHandlingData[185].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[185].fSuspensionDamping = 3.000000f; - m_OriginalHandlingData[185].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[185].fSuspensionUpperLimit = 0.100000f; - m_OriginalHandlingData[185].fSuspensionLowerLimit = 0.500000f; - m_OriginalHandlingData[185].fSuspensionFrontRearBias = 2.000000f; - m_OriginalHandlingData[185].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[185].fCollisionDamageMultiplier = 0.390000f; - m_OriginalHandlingData[185].uiModelFlags = 0x8000400; - m_OriginalHandlingData[185].uiHandlingFlags = 0x0; - m_OriginalHandlingData[185].fSeatOffsetDistance = 0.700000f; - m_OriginalHandlingData[185].uiMonetary = 30000; - m_OriginalHandlingData[185].ucHeadLight = 0; - m_OriginalHandlingData[185].ucTailLight = 1; - m_OriginalHandlingData[185].ucAnimGroup = 0; - - m_OriginalHandlingData[186].iVehicleID = 186; - m_OriginalHandlingData[186].fMass = 5000.000000f; - m_OriginalHandlingData[186].fTurnMass = 27083.300781f; - m_OriginalHandlingData[186].fDragCoeff = 12.000000f; - m_OriginalHandlingData[186].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[186].uiPercentSubmerged = 9; - m_OriginalHandlingData[186].fTractionMultiplier = 0.830000f; - m_OriginalHandlingData[186].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[186].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[186].Transmission.ucNumberOfGears = 1; - m_OriginalHandlingData[186].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[186].Transmission.fEngineAcceleration = 0.680000f; - m_OriginalHandlingData[186].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[186].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[186].fBrakeDeceleration = 0.010000f; - m_OriginalHandlingData[186].fBrakeBias = 0.050000f; - m_OriginalHandlingData[186].bABS = false; - m_OriginalHandlingData[186].fSteeringLock = 24.000000f; - m_OriginalHandlingData[186].fTractionLoss = 45.000000f; - m_OriginalHandlingData[186].fTractionBias = 0.500000f; - m_OriginalHandlingData[186].fSuspensionForceLevel = 1.500000f; - m_OriginalHandlingData[186].fSuspensionDamping = 0.750000f; - m_OriginalHandlingData[186].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[186].fSuspensionUpperLimit = 0.100000f; - m_OriginalHandlingData[186].fSuspensionLowerLimit = 0.000000f; - m_OriginalHandlingData[186].fSuspensionFrontRearBias = 2.000000f; - m_OriginalHandlingData[186].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[186].fCollisionDamageMultiplier = 0.050000f; - m_OriginalHandlingData[186].uiModelFlags = 0x4000400; - m_OriginalHandlingData[186].uiHandlingFlags = 0x0; - m_OriginalHandlingData[186].fSeatOffsetDistance = 1.000000f; - m_OriginalHandlingData[186].uiMonetary = 10000; - m_OriginalHandlingData[186].ucHeadLight = 0; - m_OriginalHandlingData[186].ucTailLight = 1; - m_OriginalHandlingData[186].ucAnimGroup = 0; - - m_OriginalHandlingData[187].iVehicleID = 187; - m_OriginalHandlingData[187].fMass = 1900.000000f; - m_OriginalHandlingData[187].fTurnMass = 4795.899902f; - m_OriginalHandlingData[187].fDragCoeff = 20.000000f; - m_OriginalHandlingData[187].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.200000f); - m_OriginalHandlingData[187].uiPercentSubmerged = 85; - m_OriginalHandlingData[187].fTractionMultiplier = 0.050000f; - m_OriginalHandlingData[187].Transmission.ucDriveType = 'R'; - m_OriginalHandlingData[187].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[187].Transmission.ucNumberOfGears = 5; - m_OriginalHandlingData[187].Transmission.uiHandlingFlags = 4194368; - m_OriginalHandlingData[187].Transmission.fEngineAcceleration = 0.800000f; - m_OriginalHandlingData[187].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[187].Transmission.fMaxVelocity = 150.000000f; - m_OriginalHandlingData[187].fBrakeDeceleration = 1.000000f; - m_OriginalHandlingData[187].fBrakeBias = 0.500000f; - m_OriginalHandlingData[187].bABS = false; - m_OriginalHandlingData[187].fSteeringLock = 30.000000f; - m_OriginalHandlingData[187].fTractionLoss = 1.000000f; - m_OriginalHandlingData[187].fTractionBias = 0.500000f; - m_OriginalHandlingData[187].fSuspensionForceLevel = 0.500000f; - m_OriginalHandlingData[187].fSuspensionDamping = 0.050000f; - m_OriginalHandlingData[187].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[187].fSuspensionUpperLimit = 0.330000f; - m_OriginalHandlingData[187].fSuspensionLowerLimit = -0.250000f; - m_OriginalHandlingData[187].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[187].fSuspensionAntiDiveMultiplier = 0.020000f; - m_OriginalHandlingData[187].fCollisionDamageMultiplier = 0.500000f; - m_OriginalHandlingData[187].uiModelFlags = 0x301; - m_OriginalHandlingData[187].uiHandlingFlags = 0x400040; - m_OriginalHandlingData[187].fSeatOffsetDistance = 0.650000f; - m_OriginalHandlingData[187].uiMonetary = 26000; - m_OriginalHandlingData[187].ucHeadLight = 0; - m_OriginalHandlingData[187].ucTailLight = 1; - m_OriginalHandlingData[187].ucAnimGroup = 23; - - m_OriginalHandlingData[188].iVehicleID = 188; - m_OriginalHandlingData[188].fMass = 5000.000000f; - m_OriginalHandlingData[188].fTurnMass = 27083.300781f; - m_OriginalHandlingData[188].fDragCoeff = 10.000000f; - m_OriginalHandlingData[188].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[188].uiPercentSubmerged = 75; - m_OriginalHandlingData[188].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[188].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[188].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[188].Transmission.ucNumberOfGears = 1; - m_OriginalHandlingData[188].Transmission.uiHandlingFlags = 4194336; - m_OriginalHandlingData[188].Transmission.fEngineAcceleration = 6.400000f; - m_OriginalHandlingData[188].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[188].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[188].fBrakeDeceleration = 1.500000f; - m_OriginalHandlingData[188].fBrakeBias = 0.450000f; - m_OriginalHandlingData[188].bABS = false; - m_OriginalHandlingData[188].fSteeringLock = 45.000000f; - m_OriginalHandlingData[188].fTractionLoss = 0.900000f; - m_OriginalHandlingData[188].fTractionBias = 0.500000f; - m_OriginalHandlingData[188].fSuspensionForceLevel = 2.000000f; - m_OriginalHandlingData[188].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[188].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[188].fSuspensionUpperLimit = 0.500000f; - m_OriginalHandlingData[188].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[188].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[188].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[188].fCollisionDamageMultiplier = 0.750000f; - m_OriginalHandlingData[188].uiModelFlags = 0x4008108; - m_OriginalHandlingData[188].uiHandlingFlags = 0x400020; - m_OriginalHandlingData[188].fSeatOffsetDistance = 0.300000f; - m_OriginalHandlingData[188].uiMonetary = 45000; - m_OriginalHandlingData[188].ucHeadLight = 0; - m_OriginalHandlingData[188].ucTailLight = 1; - m_OriginalHandlingData[188].ucAnimGroup = 14; - - m_OriginalHandlingData[189].iVehicleID = 189; - m_OriginalHandlingData[189].fMass = 10000.000000f; - m_OriginalHandlingData[189].fTurnMass = 80000.000000f; - m_OriginalHandlingData[189].fDragCoeff = 14.000000f; - m_OriginalHandlingData[189].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[189].uiPercentSubmerged = 75; - m_OriginalHandlingData[189].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[189].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[189].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[189].Transmission.ucNumberOfGears = 1; - m_OriginalHandlingData[189].Transmission.uiHandlingFlags = 4194304; - m_OriginalHandlingData[189].Transmission.fEngineAcceleration = 6.400000f; - m_OriginalHandlingData[189].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[189].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[189].fBrakeDeceleration = 1.500000f; - m_OriginalHandlingData[189].fBrakeBias = 0.450000f; - m_OriginalHandlingData[189].bABS = false; - m_OriginalHandlingData[189].fSteeringLock = 45.000000f; - m_OriginalHandlingData[189].fTractionLoss = 0.900000f; - m_OriginalHandlingData[189].fTractionBias = 0.500000f; - m_OriginalHandlingData[189].fSuspensionForceLevel = 2.000000f; - m_OriginalHandlingData[189].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[189].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[189].fSuspensionUpperLimit = 1.000000f; - m_OriginalHandlingData[189].fSuspensionLowerLimit = -0.100000f; - m_OriginalHandlingData[189].fSuspensionFrontRearBias = 0.350000f; - m_OriginalHandlingData[189].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[189].fCollisionDamageMultiplier = 0.750000f; - m_OriginalHandlingData[189].uiModelFlags = 0x24000008; - m_OriginalHandlingData[189].uiHandlingFlags = 0x400000; - m_OriginalHandlingData[189].fSeatOffsetDistance = 0.300000f; - m_OriginalHandlingData[189].uiMonetary = 45000; - m_OriginalHandlingData[189].ucHeadLight = 0; - m_OriginalHandlingData[189].ucTailLight = 1; - m_OriginalHandlingData[189].ucAnimGroup = 13; - - m_OriginalHandlingData[190].iVehicleID = 190; - m_OriginalHandlingData[190].fMass = 5000.000000f; - m_OriginalHandlingData[190].fTurnMass = 27083.300781f; - m_OriginalHandlingData[190].fDragCoeff = 15.000000f; - m_OriginalHandlingData[190].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[190].uiPercentSubmerged = 75; - m_OriginalHandlingData[190].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[190].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[190].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[190].Transmission.ucNumberOfGears = 1; - m_OriginalHandlingData[190].Transmission.uiHandlingFlags = 4194336; - m_OriginalHandlingData[190].Transmission.fEngineAcceleration = 6.400000f; - m_OriginalHandlingData[190].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[190].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[190].fBrakeDeceleration = 1.500000f; - m_OriginalHandlingData[190].fBrakeBias = 0.450000f; - m_OriginalHandlingData[190].bABS = false; - m_OriginalHandlingData[190].fSteeringLock = 45.000000f; - m_OriginalHandlingData[190].fTractionLoss = 0.900000f; - m_OriginalHandlingData[190].fTractionBias = 0.500000f; - m_OriginalHandlingData[190].fSuspensionForceLevel = 2.000000f; - m_OriginalHandlingData[190].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[190].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[190].fSuspensionUpperLimit = 0.550000f; - m_OriginalHandlingData[190].fSuspensionLowerLimit = -0.050000f; - m_OriginalHandlingData[190].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[190].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[190].fCollisionDamageMultiplier = 0.750000f; - m_OriginalHandlingData[190].uiModelFlags = 0x4008000; - m_OriginalHandlingData[190].uiHandlingFlags = 0x400020; - m_OriginalHandlingData[190].fSeatOffsetDistance = 0.300000f; - m_OriginalHandlingData[190].uiMonetary = 45000; - m_OriginalHandlingData[190].ucHeadLight = 0; - m_OriginalHandlingData[190].ucTailLight = 1; - m_OriginalHandlingData[190].ucAnimGroup = 14; - - m_OriginalHandlingData[191].iVehicleID = 191; - m_OriginalHandlingData[191].fMass = 5000.000000f; - m_OriginalHandlingData[191].fTurnMass = 20000.000000f; - m_OriginalHandlingData[191].fDragCoeff = 14.000000f; - m_OriginalHandlingData[191].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[191].uiPercentSubmerged = 75; - m_OriginalHandlingData[191].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[191].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[191].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[191].Transmission.ucNumberOfGears = 1; - m_OriginalHandlingData[191].Transmission.uiHandlingFlags = 4194336; - m_OriginalHandlingData[191].Transmission.fEngineAcceleration = 6.400000f; - m_OriginalHandlingData[191].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[191].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[191].fBrakeDeceleration = 1.500000f; - m_OriginalHandlingData[191].fBrakeBias = 0.450000f; - m_OriginalHandlingData[191].bABS = false; - m_OriginalHandlingData[191].fSteeringLock = 45.000000f; - m_OriginalHandlingData[191].fTractionLoss = 0.900000f; - m_OriginalHandlingData[191].fTractionBias = 0.500000f; - m_OriginalHandlingData[191].fSuspensionForceLevel = 2.000000f; - m_OriginalHandlingData[191].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[191].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[191].fSuspensionUpperLimit = 0.500000f; - m_OriginalHandlingData[191].fSuspensionLowerLimit = -0.100000f; - m_OriginalHandlingData[191].fSuspensionFrontRearBias = 0.900000f; - m_OriginalHandlingData[191].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[191].fCollisionDamageMultiplier = 0.750000f; - m_OriginalHandlingData[191].uiModelFlags = 0x4008100; - m_OriginalHandlingData[191].uiHandlingFlags = 0x400020; - m_OriginalHandlingData[191].fSeatOffsetDistance = 0.300000f; - m_OriginalHandlingData[191].uiMonetary = 45000; - m_OriginalHandlingData[191].ucHeadLight = 0; - m_OriginalHandlingData[191].ucTailLight = 1; - m_OriginalHandlingData[191].ucAnimGroup = 14; - - m_OriginalHandlingData[192].iVehicleID = 192; - m_OriginalHandlingData[192].fMass = 15000.000000f; - m_OriginalHandlingData[192].fTurnMass = 81250.000000f; - m_OriginalHandlingData[192].fDragCoeff = 8.000000f; - m_OriginalHandlingData[192].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[192].uiPercentSubmerged = 75; - m_OriginalHandlingData[192].fTractionMultiplier = 0.550000f; - m_OriginalHandlingData[192].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[192].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[192].Transmission.ucNumberOfGears = 1; - m_OriginalHandlingData[192].Transmission.uiHandlingFlags = 4194304; - m_OriginalHandlingData[192].Transmission.fEngineAcceleration = 6.400000f; - m_OriginalHandlingData[192].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[192].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[192].fBrakeDeceleration = 1.500000f; - m_OriginalHandlingData[192].fBrakeBias = 0.150000f; - m_OriginalHandlingData[192].bABS = false; - m_OriginalHandlingData[192].fSteeringLock = 45.000000f; - m_OriginalHandlingData[192].fTractionLoss = 0.800000f; - m_OriginalHandlingData[192].fTractionBias = 0.700000f; - m_OriginalHandlingData[192].fSuspensionForceLevel = 4.000000f; - m_OriginalHandlingData[192].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[192].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[192].fSuspensionUpperLimit = 1.000000f; - m_OriginalHandlingData[192].fSuspensionLowerLimit = -0.000000f; - m_OriginalHandlingData[192].fSuspensionFrontRearBias = 0.300000f; - m_OriginalHandlingData[192].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[192].fCollisionDamageMultiplier = 0.750000f; - m_OriginalHandlingData[192].uiModelFlags = 0x400C108; - m_OriginalHandlingData[192].uiHandlingFlags = 0x400000; - m_OriginalHandlingData[192].fSeatOffsetDistance = 0.300000f; - m_OriginalHandlingData[192].uiMonetary = 45000; - m_OriginalHandlingData[192].ucHeadLight = 0; - m_OriginalHandlingData[192].ucTailLight = 1; - m_OriginalHandlingData[192].ucAnimGroup = 26; - - m_OriginalHandlingData[193].iVehicleID = 193; - m_OriginalHandlingData[193].fMass = 9000.000000f; - m_OriginalHandlingData[193].fTurnMass = 48750.000000f; - m_OriginalHandlingData[193].fDragCoeff = 20.000000f; - m_OriginalHandlingData[193].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[193].uiPercentSubmerged = 75; - m_OriginalHandlingData[193].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[193].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[193].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[193].Transmission.ucNumberOfGears = 1; - m_OriginalHandlingData[193].Transmission.uiHandlingFlags = 4194304; - m_OriginalHandlingData[193].Transmission.fEngineAcceleration = 6.400000f; - m_OriginalHandlingData[193].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[193].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[193].fBrakeDeceleration = 1.500000f; - m_OriginalHandlingData[193].fBrakeBias = 0.450000f; - m_OriginalHandlingData[193].bABS = false; - m_OriginalHandlingData[193].fSteeringLock = 45.000000f; - m_OriginalHandlingData[193].fTractionLoss = 0.900000f; - m_OriginalHandlingData[193].fTractionBias = 0.500000f; - m_OriginalHandlingData[193].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[193].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[193].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[193].fSuspensionUpperLimit = 0.500000f; - m_OriginalHandlingData[193].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[193].fSuspensionFrontRearBias = 0.800000f; - m_OriginalHandlingData[193].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[193].fCollisionDamageMultiplier = 0.750000f; - m_OriginalHandlingData[193].uiModelFlags = 0x4008100; - m_OriginalHandlingData[193].uiHandlingFlags = 0x400000; - m_OriginalHandlingData[193].fSeatOffsetDistance = 0.600000f; - m_OriginalHandlingData[193].uiMonetary = 45000; - m_OriginalHandlingData[193].ucHeadLight = 0; - m_OriginalHandlingData[193].ucTailLight = 1; - m_OriginalHandlingData[193].ucAnimGroup = 27; - - m_OriginalHandlingData[194].iVehicleID = 194; - m_OriginalHandlingData[194].fMass = 25000.000000f; - m_OriginalHandlingData[194].fTurnMass = 438750.000000f; - m_OriginalHandlingData[194].fDragCoeff = 10.000000f; - m_OriginalHandlingData[194].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[194].uiPercentSubmerged = 75; - m_OriginalHandlingData[194].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[194].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[194].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[194].Transmission.ucNumberOfGears = 1; - m_OriginalHandlingData[194].Transmission.uiHandlingFlags = 4194336; - m_OriginalHandlingData[194].Transmission.fEngineAcceleration = 6.400000f; - m_OriginalHandlingData[194].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[194].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[194].fBrakeDeceleration = 1.000000f; - m_OriginalHandlingData[194].fBrakeBias = 0.450000f; - m_OriginalHandlingData[194].bABS = false; - m_OriginalHandlingData[194].fSteeringLock = 45.000000f; - m_OriginalHandlingData[194].fTractionLoss = 0.900000f; - m_OriginalHandlingData[194].fTractionBias = 0.500000f; - m_OriginalHandlingData[194].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[194].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[194].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[194].fSuspensionUpperLimit = 0.400000f; - m_OriginalHandlingData[194].fSuspensionLowerLimit = -0.300000f; - m_OriginalHandlingData[194].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[194].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[194].fCollisionDamageMultiplier = 0.750000f; - m_OriginalHandlingData[194].uiModelFlags = 0x400C108; - m_OriginalHandlingData[194].uiHandlingFlags = 0x400020; - m_OriginalHandlingData[194].fSeatOffsetDistance = 0.300000f; - m_OriginalHandlingData[194].uiMonetary = 45000; - m_OriginalHandlingData[194].ucHeadLight = 0; - m_OriginalHandlingData[194].ucTailLight = 1; - m_OriginalHandlingData[194].ucAnimGroup = 29; - - m_OriginalHandlingData[195].iVehicleID = 195; - m_OriginalHandlingData[195].fMass = 60000.000000f; - m_OriginalHandlingData[195].fTurnMass = 9000000.000000f; - m_OriginalHandlingData[195].fDragCoeff = 4.000000f; - m_OriginalHandlingData[195].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[195].uiPercentSubmerged = 75; - m_OriginalHandlingData[195].fTractionMultiplier = 1.500000f; - m_OriginalHandlingData[195].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[195].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[195].Transmission.ucNumberOfGears = 1; - m_OriginalHandlingData[195].Transmission.uiHandlingFlags = 4194304; - m_OriginalHandlingData[195].Transmission.fEngineAcceleration = 6.400000f; - m_OriginalHandlingData[195].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[195].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[195].fBrakeDeceleration = 1.000000f; - m_OriginalHandlingData[195].fBrakeBias = 0.450000f; - m_OriginalHandlingData[195].bABS = false; - m_OriginalHandlingData[195].fSteeringLock = 45.000000f; - m_OriginalHandlingData[195].fTractionLoss = 0.900000f; - m_OriginalHandlingData[195].fTractionBias = 0.850000f; - m_OriginalHandlingData[195].fSuspensionForceLevel = 1.500000f; - m_OriginalHandlingData[195].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[195].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[195].fSuspensionUpperLimit = 0.500000f; - m_OriginalHandlingData[195].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[195].fSuspensionFrontRearBias = 0.300000f; - m_OriginalHandlingData[195].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[195].fCollisionDamageMultiplier = 0.750000f; - m_OriginalHandlingData[195].uiModelFlags = 0x2400C008; - m_OriginalHandlingData[195].uiHandlingFlags = 0x400000; - m_OriginalHandlingData[195].fSeatOffsetDistance = 0.700000f; - m_OriginalHandlingData[195].uiMonetary = 45000; - m_OriginalHandlingData[195].ucHeadLight = 0; - m_OriginalHandlingData[195].ucTailLight = 1; - m_OriginalHandlingData[195].ucAnimGroup = 15; - - m_OriginalHandlingData[196].iVehicleID = 196; - m_OriginalHandlingData[196].fMass = 40000.000000f; - m_OriginalHandlingData[196].fTurnMass = 3000000.000000f; - m_OriginalHandlingData[196].fDragCoeff = 4.000000f; - m_OriginalHandlingData[196].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[196].uiPercentSubmerged = 75; - m_OriginalHandlingData[196].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[196].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[196].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[196].Transmission.ucNumberOfGears = 1; - m_OriginalHandlingData[196].Transmission.uiHandlingFlags = 4456448; - m_OriginalHandlingData[196].Transmission.fEngineAcceleration = 6.400000f; - m_OriginalHandlingData[196].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[196].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[196].fBrakeDeceleration = 1.000000f; - m_OriginalHandlingData[196].fBrakeBias = 0.450000f; - m_OriginalHandlingData[196].bABS = false; - m_OriginalHandlingData[196].fSteeringLock = 45.000000f; - m_OriginalHandlingData[196].fTractionLoss = 0.900000f; - m_OriginalHandlingData[196].fTractionBias = 0.500000f; - m_OriginalHandlingData[196].fSuspensionForceLevel = 2.000000f; - m_OriginalHandlingData[196].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[196].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[196].fSuspensionUpperLimit = 0.500000f; - m_OriginalHandlingData[196].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[196].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[196].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[196].fCollisionDamageMultiplier = 0.750000f; - m_OriginalHandlingData[196].uiModelFlags = 0x24114108; - m_OriginalHandlingData[196].uiHandlingFlags = 0x440000; - m_OriginalHandlingData[196].fSeatOffsetDistance = 0.300000f; - m_OriginalHandlingData[196].uiMonetary = 45000; - m_OriginalHandlingData[196].ucHeadLight = 0; - m_OriginalHandlingData[196].ucTailLight = 1; - m_OriginalHandlingData[196].ucAnimGroup = 0; - - m_OriginalHandlingData[197].iVehicleID = 197; - m_OriginalHandlingData[197].fMass = 5000.000000f; - m_OriginalHandlingData[197].fTurnMass = 27083.300781f; - m_OriginalHandlingData[197].fDragCoeff = 12.000000f; - m_OriginalHandlingData[197].vecCenterOfMass = CVector(0.000000f, 0.300000f, 0.000000f); - m_OriginalHandlingData[197].uiPercentSubmerged = 75; - m_OriginalHandlingData[197].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[197].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[197].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[197].Transmission.ucNumberOfGears = 1; - m_OriginalHandlingData[197].Transmission.uiHandlingFlags = 4194304; - m_OriginalHandlingData[197].Transmission.fEngineAcceleration = 6.400000f; - m_OriginalHandlingData[197].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[197].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[197].fBrakeDeceleration = 1.500000f; - m_OriginalHandlingData[197].fBrakeBias = 0.450000f; - m_OriginalHandlingData[197].bABS = false; - m_OriginalHandlingData[197].fSteeringLock = 45.000000f; - m_OriginalHandlingData[197].fTractionLoss = 0.900000f; - m_OriginalHandlingData[197].fTractionBias = 0.500000f; - m_OriginalHandlingData[197].fSuspensionForceLevel = 1.500000f; - m_OriginalHandlingData[197].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[197].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[197].fSuspensionUpperLimit = 0.500000f; - m_OriginalHandlingData[197].fSuspensionLowerLimit = -0.050000f; - m_OriginalHandlingData[197].fSuspensionFrontRearBias = 0.200000f; - m_OriginalHandlingData[197].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[197].fCollisionDamageMultiplier = 0.750000f; - m_OriginalHandlingData[197].uiModelFlags = 0x4000000; - m_OriginalHandlingData[197].uiHandlingFlags = 0x400000; - m_OriginalHandlingData[197].fSeatOffsetDistance = 0.500000f; - m_OriginalHandlingData[197].uiMonetary = 45000; - m_OriginalHandlingData[197].ucHeadLight = 0; - m_OriginalHandlingData[197].ucTailLight = 1; - m_OriginalHandlingData[197].ucAnimGroup = 13; - - m_OriginalHandlingData[198].iVehicleID = 198; - m_OriginalHandlingData[198].fMass = 2500.000000f; - m_OriginalHandlingData[198].fTurnMass = 6041.700195f; - m_OriginalHandlingData[198].fDragCoeff = 0.200000f; - m_OriginalHandlingData[198].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.100000f); - m_OriginalHandlingData[198].uiPercentSubmerged = 75; - m_OriginalHandlingData[198].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[198].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[198].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[198].Transmission.ucNumberOfGears = 1; - m_OriginalHandlingData[198].Transmission.uiHandlingFlags = 4194304; - m_OriginalHandlingData[198].Transmission.fEngineAcceleration = 6.400000f; - m_OriginalHandlingData[198].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[198].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[198].fBrakeDeceleration = 5.000000f; - m_OriginalHandlingData[198].fBrakeBias = 0.450000f; - m_OriginalHandlingData[198].bABS = false; - m_OriginalHandlingData[198].fSteeringLock = 30.000000f; - m_OriginalHandlingData[198].fTractionLoss = 0.900000f; - m_OriginalHandlingData[198].fTractionBias = 0.500000f; - m_OriginalHandlingData[198].fSuspensionForceLevel = 2.000000f; - m_OriginalHandlingData[198].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[198].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[198].fSuspensionUpperLimit = 0.500000f; - m_OriginalHandlingData[198].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[198].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[198].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[198].fCollisionDamageMultiplier = 0.500000f; - m_OriginalHandlingData[198].uiModelFlags = 0x2004000; - m_OriginalHandlingData[198].uiHandlingFlags = 0x400000; - m_OriginalHandlingData[198].fSeatOffsetDistance = 0.300000f; - m_OriginalHandlingData[198].uiMonetary = 25000; - m_OriginalHandlingData[198].ucHeadLight = 0; - m_OriginalHandlingData[198].ucTailLight = 1; - m_OriginalHandlingData[198].ucAnimGroup = 0; - - m_OriginalHandlingData[199].iVehicleID = 199; - m_OriginalHandlingData[199].fMass = 3000.000000f; - m_OriginalHandlingData[199].fTurnMass = 7250.000000f; - m_OriginalHandlingData[199].fDragCoeff = 0.100000f; - m_OriginalHandlingData[199].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.100000f); - m_OriginalHandlingData[199].uiPercentSubmerged = 5; - m_OriginalHandlingData[199].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[199].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[199].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[199].Transmission.ucNumberOfGears = 1; - m_OriginalHandlingData[199].Transmission.uiHandlingFlags = 4194304; - m_OriginalHandlingData[199].Transmission.fEngineAcceleration = 6.400000f; - m_OriginalHandlingData[199].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[199].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[199].fBrakeDeceleration = 5.000000f; - m_OriginalHandlingData[199].fBrakeBias = 0.450000f; - m_OriginalHandlingData[199].bABS = false; - m_OriginalHandlingData[199].fSteeringLock = 30.000000f; - m_OriginalHandlingData[199].fTractionLoss = 0.900000f; - m_OriginalHandlingData[199].fTractionBias = 0.500000f; - m_OriginalHandlingData[199].fSuspensionForceLevel = 2.000000f; - m_OriginalHandlingData[199].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[199].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[199].fSuspensionUpperLimit = 0.500000f; - m_OriginalHandlingData[199].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[199].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[199].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[199].fCollisionDamageMultiplier = 0.600000f; - m_OriginalHandlingData[199].uiModelFlags = 0x2004000; - m_OriginalHandlingData[199].uiHandlingFlags = 0x400000; - m_OriginalHandlingData[199].fSeatOffsetDistance = 0.300000f; - m_OriginalHandlingData[199].uiMonetary = 28000; - m_OriginalHandlingData[199].ucHeadLight = 0; - m_OriginalHandlingData[199].ucTailLight = 1; - m_OriginalHandlingData[199].ucAnimGroup = 0; - - m_OriginalHandlingData[200].iVehicleID = 200; - m_OriginalHandlingData[200].fMass = 5000.000000f; - m_OriginalHandlingData[200].fTurnMass = 29270.800781f; - m_OriginalHandlingData[200].fDragCoeff = 0.200000f; - m_OriginalHandlingData[200].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.100000f); - m_OriginalHandlingData[200].uiPercentSubmerged = 75; - m_OriginalHandlingData[200].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[200].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[200].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[200].Transmission.ucNumberOfGears = 1; - m_OriginalHandlingData[200].Transmission.uiHandlingFlags = 4194304; - m_OriginalHandlingData[200].Transmission.fEngineAcceleration = 6.400000f; - m_OriginalHandlingData[200].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[200].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[200].fBrakeDeceleration = 5.000000f; - m_OriginalHandlingData[200].fBrakeBias = 0.450000f; - m_OriginalHandlingData[200].bABS = false; - m_OriginalHandlingData[200].fSteeringLock = 30.000000f; - m_OriginalHandlingData[200].fTractionLoss = 0.900000f; - m_OriginalHandlingData[200].fTractionBias = 0.500000f; - m_OriginalHandlingData[200].fSuspensionForceLevel = 2.000000f; - m_OriginalHandlingData[200].fSuspensionDamping = 0.150000f; - m_OriginalHandlingData[200].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[200].fSuspensionUpperLimit = 0.500000f; - m_OriginalHandlingData[200].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[200].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[200].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[200].fCollisionDamageMultiplier = 0.750000f; - m_OriginalHandlingData[200].uiModelFlags = 0x2004000; - m_OriginalHandlingData[200].uiHandlingFlags = 0x400000; - m_OriginalHandlingData[200].fSeatOffsetDistance = 0.300000f; - m_OriginalHandlingData[200].uiMonetary = 45000; - m_OriginalHandlingData[200].ucHeadLight = 0; - m_OriginalHandlingData[200].ucTailLight = 1; - m_OriginalHandlingData[200].ucAnimGroup = 0; - - m_OriginalHandlingData[201].iVehicleID = 201; - m_OriginalHandlingData[201].fMass = 3500.000000f; - m_OriginalHandlingData[201].fTurnMass = 8458.299805f; - m_OriginalHandlingData[201].fDragCoeff = 0.200000f; - m_OriginalHandlingData[201].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.100000f); - m_OriginalHandlingData[201].uiPercentSubmerged = 75; - m_OriginalHandlingData[201].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[201].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[201].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[201].Transmission.ucNumberOfGears = 1; - m_OriginalHandlingData[201].Transmission.uiHandlingFlags = 4194304; - m_OriginalHandlingData[201].Transmission.fEngineAcceleration = 6.400000f; - m_OriginalHandlingData[201].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[201].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[201].fBrakeDeceleration = 5.000000f; - m_OriginalHandlingData[201].fBrakeBias = 0.450000f; - m_OriginalHandlingData[201].bABS = false; - m_OriginalHandlingData[201].fSteeringLock = 30.000000f; - m_OriginalHandlingData[201].fTractionLoss = 0.900000f; - m_OriginalHandlingData[201].fTractionBias = 0.500000f; - m_OriginalHandlingData[201].fSuspensionForceLevel = 2.000000f; - m_OriginalHandlingData[201].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[201].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[201].fSuspensionUpperLimit = 0.500000f; - m_OriginalHandlingData[201].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[201].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[201].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[201].fCollisionDamageMultiplier = 0.650000f; - m_OriginalHandlingData[201].uiModelFlags = 0x2004000; - m_OriginalHandlingData[201].uiHandlingFlags = 0x400000; - m_OriginalHandlingData[201].fSeatOffsetDistance = 0.300000f; - m_OriginalHandlingData[201].uiMonetary = 50000; - m_OriginalHandlingData[201].ucHeadLight = 0; - m_OriginalHandlingData[201].ucTailLight = 1; - m_OriginalHandlingData[201].ucAnimGroup = 0; - - m_OriginalHandlingData[202].iVehicleID = 202; - m_OriginalHandlingData[202].fMass = 4500.000000f; - m_OriginalHandlingData[202].fTurnMass = 26343.699219f; - m_OriginalHandlingData[202].fDragCoeff = 0.200000f; - m_OriginalHandlingData[202].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.100000f); - m_OriginalHandlingData[202].uiPercentSubmerged = 75; - m_OriginalHandlingData[202].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[202].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[202].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[202].Transmission.ucNumberOfGears = 1; - m_OriginalHandlingData[202].Transmission.uiHandlingFlags = 4194304; - m_OriginalHandlingData[202].Transmission.fEngineAcceleration = 6.400000f; - m_OriginalHandlingData[202].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[202].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[202].fBrakeDeceleration = 5.000000f; - m_OriginalHandlingData[202].fBrakeBias = 0.450000f; - m_OriginalHandlingData[202].bABS = false; - m_OriginalHandlingData[202].fSteeringLock = 30.000000f; - m_OriginalHandlingData[202].fTractionLoss = 0.900000f; - m_OriginalHandlingData[202].fTractionBias = 0.500000f; - m_OriginalHandlingData[202].fSuspensionForceLevel = 2.000000f; - m_OriginalHandlingData[202].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[202].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[202].fSuspensionUpperLimit = 0.500000f; - m_OriginalHandlingData[202].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[202].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[202].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[202].fCollisionDamageMultiplier = 0.650000f; - m_OriginalHandlingData[202].uiModelFlags = 0x2004000; - m_OriginalHandlingData[202].uiHandlingFlags = 0x400000; - m_OriginalHandlingData[202].fSeatOffsetDistance = 0.300000f; - m_OriginalHandlingData[202].uiMonetary = 52000; - m_OriginalHandlingData[202].ucHeadLight = 0; - m_OriginalHandlingData[202].ucTailLight = 1; - m_OriginalHandlingData[202].ucAnimGroup = 0; - - m_OriginalHandlingData[203].iVehicleID = 203; - m_OriginalHandlingData[203].fMass = 10000.000000f; - m_OriginalHandlingData[203].fTurnMass = 150000.000000f; - m_OriginalHandlingData[203].fDragCoeff = 0.200000f; - m_OriginalHandlingData[203].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[203].uiPercentSubmerged = 75; - m_OriginalHandlingData[203].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[203].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[203].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[203].Transmission.ucNumberOfGears = 1; - m_OriginalHandlingData[203].Transmission.uiHandlingFlags = 4194304; - m_OriginalHandlingData[203].Transmission.fEngineAcceleration = 6.400000f; - m_OriginalHandlingData[203].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[203].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[203].fBrakeDeceleration = 5.000000f; - m_OriginalHandlingData[203].fBrakeBias = 0.450000f; - m_OriginalHandlingData[203].bABS = false; - m_OriginalHandlingData[203].fSteeringLock = 30.000000f; - m_OriginalHandlingData[203].fTractionLoss = 0.900000f; - m_OriginalHandlingData[203].fTractionBias = 0.500000f; - m_OriginalHandlingData[203].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[203].fSuspensionDamping = 0.050000f; - m_OriginalHandlingData[203].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[203].fSuspensionUpperLimit = 0.200000f; - m_OriginalHandlingData[203].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[203].fSuspensionFrontRearBias = 0.850000f; - m_OriginalHandlingData[203].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[203].fCollisionDamageMultiplier = 0.500000f; - m_OriginalHandlingData[203].uiModelFlags = 0x200C000; - m_OriginalHandlingData[203].uiHandlingFlags = 0x400000; - m_OriginalHandlingData[203].fSeatOffsetDistance = 0.400000f; - m_OriginalHandlingData[203].uiMonetary = 99000; - m_OriginalHandlingData[203].ucHeadLight = 0; - m_OriginalHandlingData[203].ucTailLight = 1; - m_OriginalHandlingData[203].ucAnimGroup = 14; - - m_OriginalHandlingData[204].iVehicleID = 204; - m_OriginalHandlingData[204].fMass = 15000.000000f; - m_OriginalHandlingData[204].fTurnMass = 200000.000000f; - m_OriginalHandlingData[204].fDragCoeff = 0.100000f; - m_OriginalHandlingData[204].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[204].uiPercentSubmerged = 30; - m_OriginalHandlingData[204].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[204].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[204].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[204].Transmission.ucNumberOfGears = 1; - m_OriginalHandlingData[204].Transmission.uiHandlingFlags = 4194304; - m_OriginalHandlingData[204].Transmission.fEngineAcceleration = 6.400000f; - m_OriginalHandlingData[204].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[204].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[204].fBrakeDeceleration = 5.000000f; - m_OriginalHandlingData[204].fBrakeBias = 0.450000f; - m_OriginalHandlingData[204].bABS = false; - m_OriginalHandlingData[204].fSteeringLock = 30.000000f; - m_OriginalHandlingData[204].fTractionLoss = 0.900000f; - m_OriginalHandlingData[204].fTractionBias = 0.500000f; - m_OriginalHandlingData[204].fSuspensionForceLevel = 1.000000f; - m_OriginalHandlingData[204].fSuspensionDamping = 0.050000f; - m_OriginalHandlingData[204].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[204].fSuspensionUpperLimit = 0.500000f; - m_OriginalHandlingData[204].fSuspensionLowerLimit = -0.200000f; - m_OriginalHandlingData[204].fSuspensionFrontRearBias = 0.900000f; - m_OriginalHandlingData[204].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[204].fCollisionDamageMultiplier = 0.500000f; - m_OriginalHandlingData[204].uiModelFlags = 0x2004000; - m_OriginalHandlingData[204].uiHandlingFlags = 0x400000; - m_OriginalHandlingData[204].fSeatOffsetDistance = 0.300000f; - m_OriginalHandlingData[204].uiMonetary = 25000; - m_OriginalHandlingData[204].ucHeadLight = 0; - m_OriginalHandlingData[204].ucTailLight = 1; - m_OriginalHandlingData[204].ucAnimGroup = 0; - - m_OriginalHandlingData[205].iVehicleID = 205; - m_OriginalHandlingData[205].fMass = 20000.000000f; - m_OriginalHandlingData[205].fTurnMass = 48333.300781f; - m_OriginalHandlingData[205].fDragCoeff = 0.200000f; - m_OriginalHandlingData[205].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.100000f); - m_OriginalHandlingData[205].uiPercentSubmerged = 75; - m_OriginalHandlingData[205].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[205].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[205].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[205].Transmission.ucNumberOfGears = 1; - m_OriginalHandlingData[205].Transmission.uiHandlingFlags = 4194304; - m_OriginalHandlingData[205].Transmission.fEngineAcceleration = 6.400000f; - m_OriginalHandlingData[205].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[205].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[205].fBrakeDeceleration = 5.000000f; - m_OriginalHandlingData[205].fBrakeBias = 0.450000f; - m_OriginalHandlingData[205].bABS = false; - m_OriginalHandlingData[205].fSteeringLock = 30.000000f; - m_OriginalHandlingData[205].fTractionLoss = 0.900000f; - m_OriginalHandlingData[205].fTractionBias = 0.500000f; - m_OriginalHandlingData[205].fSuspensionForceLevel = 0.600000f; - m_OriginalHandlingData[205].fSuspensionDamping = 0.050000f; - m_OriginalHandlingData[205].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[205].fSuspensionUpperLimit = 0.500000f; - m_OriginalHandlingData[205].fSuspensionLowerLimit = -0.100000f; - m_OriginalHandlingData[205].fSuspensionFrontRearBias = 0.300000f; - m_OriginalHandlingData[205].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[205].fCollisionDamageMultiplier = 0.500000f; - m_OriginalHandlingData[205].uiModelFlags = 0x22004000; - m_OriginalHandlingData[205].uiHandlingFlags = 0x400000; - m_OriginalHandlingData[205].fSeatOffsetDistance = 0.300000f; - m_OriginalHandlingData[205].uiMonetary = 25000; - m_OriginalHandlingData[205].ucHeadLight = 0; - m_OriginalHandlingData[205].ucTailLight = 1; - m_OriginalHandlingData[205].ucAnimGroup = 0; - - m_OriginalHandlingData[206].iVehicleID = 206; - m_OriginalHandlingData[206].fMass = 10000.000000f; - m_OriginalHandlingData[206].fTurnMass = 96666.703125f; - m_OriginalHandlingData[206].fDragCoeff = 0.050000f; - m_OriginalHandlingData[206].vecCenterOfMass = CVector(0.000000f, 0.000000f, -1.000000f); - m_OriginalHandlingData[206].uiPercentSubmerged = 75; - m_OriginalHandlingData[206].fTractionMultiplier = 0.650000f; - m_OriginalHandlingData[206].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[206].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[206].Transmission.ucNumberOfGears = 1; - m_OriginalHandlingData[206].Transmission.uiHandlingFlags = 4194304; - m_OriginalHandlingData[206].Transmission.fEngineAcceleration = 6.400000f; - m_OriginalHandlingData[206].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[206].Transmission.fMaxVelocity = 200.000000f; - m_OriginalHandlingData[206].fBrakeDeceleration = 5.000000f; - m_OriginalHandlingData[206].fBrakeBias = 0.450000f; - m_OriginalHandlingData[206].bABS = false; - m_OriginalHandlingData[206].fSteeringLock = 30.000000f; - m_OriginalHandlingData[206].fTractionLoss = 0.900000f; - m_OriginalHandlingData[206].fTractionBias = 0.500000f; - m_OriginalHandlingData[206].fSuspensionForceLevel = 1.500000f; - m_OriginalHandlingData[206].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[206].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[206].fSuspensionUpperLimit = 0.200000f; - m_OriginalHandlingData[206].fSuspensionLowerLimit = -0.150000f; - m_OriginalHandlingData[206].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[206].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[206].fCollisionDamageMultiplier = 0.500000f; - m_OriginalHandlingData[206].uiModelFlags = 0x2004000; - m_OriginalHandlingData[206].uiHandlingFlags = 0x400000; - m_OriginalHandlingData[206].fSeatOffsetDistance = 0.700000f; - m_OriginalHandlingData[206].uiMonetary = 99000; - m_OriginalHandlingData[206].ucHeadLight = 0; - m_OriginalHandlingData[206].ucTailLight = 1; - m_OriginalHandlingData[206].ucAnimGroup = 0; - - m_OriginalHandlingData[207].iVehicleID = 207; - m_OriginalHandlingData[207].fMass = 100.000000f; - m_OriginalHandlingData[207].fTurnMass = 50.000000f; - m_OriginalHandlingData[207].fDragCoeff = 120.000000f; - m_OriginalHandlingData[207].vecCenterOfMass = CVector(0.000000f, 0.000000f, 0.000000f); - m_OriginalHandlingData[207].uiPercentSubmerged = 99; - m_OriginalHandlingData[207].fTractionMultiplier = 0.200000f; - m_OriginalHandlingData[207].Transmission.ucDriveType = 'F'; - m_OriginalHandlingData[207].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[207].Transmission.ucNumberOfGears = 1; - m_OriginalHandlingData[207].Transmission.uiHandlingFlags = 32; - m_OriginalHandlingData[207].Transmission.fEngineAcceleration = 0.400000f; - m_OriginalHandlingData[207].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[207].Transmission.fMaxVelocity = 75.000000f; - m_OriginalHandlingData[207].fBrakeDeceleration = 0.500000f; - m_OriginalHandlingData[207].fBrakeBias = 0.500000f; - m_OriginalHandlingData[207].bABS = false; - m_OriginalHandlingData[207].fSteeringLock = 45.000000f; - m_OriginalHandlingData[207].fTractionLoss = 0.900000f; - m_OriginalHandlingData[207].fTractionBias = 0.500000f; - m_OriginalHandlingData[207].fSuspensionForceLevel = 0.600000f; - m_OriginalHandlingData[207].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[207].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[207].fSuspensionUpperLimit = 0.250000f; - m_OriginalHandlingData[207].fSuspensionLowerLimit = -0.000000f; - m_OriginalHandlingData[207].fSuspensionFrontRearBias = 0.800000f; - m_OriginalHandlingData[207].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[207].fCollisionDamageMultiplier = 0.080000f; - m_OriginalHandlingData[207].uiModelFlags = 0x4000000; - m_OriginalHandlingData[207].uiHandlingFlags = 0x20; - m_OriginalHandlingData[207].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[207].uiMonetary = 300; - m_OriginalHandlingData[207].ucHeadLight = 0; - m_OriginalHandlingData[207].ucTailLight = 1; - m_OriginalHandlingData[207].ucAnimGroup = 0; - - m_OriginalHandlingData[208].iVehicleID = 208; - m_OriginalHandlingData[208].fMass = 100.000000f; - m_OriginalHandlingData[208].fTurnMass = 24.100000f; - m_OriginalHandlingData[208].fDragCoeff = 0.200000f; - m_OriginalHandlingData[208].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.100000f); - m_OriginalHandlingData[208].uiPercentSubmerged = 70; - m_OriginalHandlingData[208].fTractionMultiplier = 1.100000f; - m_OriginalHandlingData[208].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[208].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[208].Transmission.ucNumberOfGears = 1; - m_OriginalHandlingData[208].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[208].Transmission.fEngineAcceleration = 14.000000f; - m_OriginalHandlingData[208].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[208].Transmission.fMaxVelocity = 75.000000f; - m_OriginalHandlingData[208].fBrakeDeceleration = 5.500000f; - m_OriginalHandlingData[208].fBrakeBias = 0.500000f; - m_OriginalHandlingData[208].bABS = false; - m_OriginalHandlingData[208].fSteeringLock = 25.000000f; - m_OriginalHandlingData[208].fTractionLoss = 0.750000f; - m_OriginalHandlingData[208].fTractionBias = 0.500000f; - m_OriginalHandlingData[208].fSuspensionForceLevel = 1.600000f; - m_OriginalHandlingData[208].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[208].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[208].fSuspensionUpperLimit = 0.280000f; - m_OriginalHandlingData[208].fSuspensionLowerLimit = -0.080000f; - m_OriginalHandlingData[208].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[208].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[208].fCollisionDamageMultiplier = 0.050000f; - m_OriginalHandlingData[208].uiModelFlags = 0x2000000; - m_OriginalHandlingData[208].uiHandlingFlags = 0x0; - m_OriginalHandlingData[208].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[208].uiMonetary = 800; - m_OriginalHandlingData[208].ucHeadLight = 0; - m_OriginalHandlingData[208].ucTailLight = 1; - m_OriginalHandlingData[208].ucAnimGroup = 0; - - m_OriginalHandlingData[209].iVehicleID = 209; - m_OriginalHandlingData[209].fMass = 100.000000f; - m_OriginalHandlingData[209].fTurnMass = 24.100000f; - m_OriginalHandlingData[209].fDragCoeff = 0.200000f; - m_OriginalHandlingData[209].vecCenterOfMass = CVector(0.000000f, 0.000000f, -0.100000f); - m_OriginalHandlingData[209].uiPercentSubmerged = 70; - m_OriginalHandlingData[209].fTractionMultiplier = 1.100000f; - m_OriginalHandlingData[209].Transmission.ucDriveType = '4'; - m_OriginalHandlingData[209].Transmission.ucEngineType = 'P'; - m_OriginalHandlingData[209].Transmission.ucNumberOfGears = 1; - m_OriginalHandlingData[209].Transmission.uiHandlingFlags = 0; - m_OriginalHandlingData[209].Transmission.fEngineAcceleration = 14.000000f; - m_OriginalHandlingData[209].Transmission.fEngineInertia = 5.000000f; - m_OriginalHandlingData[209].Transmission.fMaxVelocity = 75.000000f; - m_OriginalHandlingData[209].fBrakeDeceleration = 5.500000f; - m_OriginalHandlingData[209].fBrakeBias = 0.500000f; - m_OriginalHandlingData[209].bABS = false; - m_OriginalHandlingData[209].fSteeringLock = 25.000000f; - m_OriginalHandlingData[209].fTractionLoss = 0.750000f; - m_OriginalHandlingData[209].fTractionBias = 0.500000f; - m_OriginalHandlingData[209].fSuspensionForceLevel = 1.600000f; - m_OriginalHandlingData[209].fSuspensionDamping = 0.100000f; - m_OriginalHandlingData[209].fSuspensionHighSpdDamping = 0.000000f; - m_OriginalHandlingData[209].fSuspensionUpperLimit = 0.280000f; - m_OriginalHandlingData[209].fSuspensionLowerLimit = -0.080000f; - m_OriginalHandlingData[209].fSuspensionFrontRearBias = 0.500000f; - m_OriginalHandlingData[209].fSuspensionAntiDiveMultiplier = 0.000000f; - m_OriginalHandlingData[209].fCollisionDamageMultiplier = 0.100000f; - m_OriginalHandlingData[209].uiModelFlags = 0x2000000; - m_OriginalHandlingData[209].uiHandlingFlags = 0x0; - m_OriginalHandlingData[209].fSeatOffsetDistance = 0.200000f; - m_OriginalHandlingData[209].uiMonetary = 500; - m_OriginalHandlingData[209].ucHeadLight = 0; - m_OriginalHandlingData[209].ucTailLight = 1; - m_OriginalHandlingData[209].ucAnimGroup = 0; - - m_OriginalHandlingData[210] = m_OriginalHandlingData[69]; // HT_HOTRINA = HT_HOTRING - m_OriginalHandlingData[210].iVehicleID = 210; - - m_OriginalHandlingData[211] = m_OriginalHandlingData[69]; // HT_HOTRINB = HT_HOTRING - m_OriginalHandlingData[211].iVehicleID = 211; - - m_OriginalHandlingData[212] = m_OriginalHandlingData[103]; // HT_SADLSHIT = HT_SADLER - m_OriginalHandlingData[212].iVehicleID = 212; - - m_OriginalHandlingData[213] = m_OriginalHandlingData[52]; // HT_GLENSHIT = HT_GLENDALE - m_OriginalHandlingData[213].iVehicleID = 213; - - m_OriginalHandlingData[214] = m_OriginalHandlingData[163]; // HT_FAGGIO = HT_PIZZABOY - m_OriginalHandlingData[214].iVehicleID = 214; - - m_OriginalHandlingData[215] = m_OriginalHandlingData[7]; // HT_FIRELA = HT_FIRETRUK - m_OriginalHandlingData[215].iVehicleID = 215; - - m_OriginalHandlingData[216] = m_OriginalHandlingData[65]; // HT_RNCHLURE = HT_RANCHER - m_OriginalHandlingData[216].iVehicleID = 216; - - m_OriginalHandlingData[217] = m_OriginalHandlingData[126]; // HT_FREIBOX = HT_FREIFLAT - m_OriginalHandlingData[217].iVehicleID = 217; -} diff --git a/Server/mods/deathmatch/logic/CHandlingManager.h b/Server/mods/deathmatch/logic/CHandlingManager.h index eee1f02a61..571488e7a4 100644 --- a/Server/mods/deathmatch/logic/CHandlingManager.h +++ b/Server/mods/deathmatch/logic/CHandlingManager.h @@ -28,7 +28,7 @@ class CHandlingManager const CHandlingEntry* GetModelHandlingData(eVehicleTypes eModel); const CHandlingEntry* GetOriginalHandlingData(eVehicleTypes eModel); - eHandlingTypes GetHandlingID(eVehicleTypes eModel); + void RehisterHandling(uint32_t uiModelID, tHandlingData& handling); // Helper functions eHandlingProperty GetPropertyEnumFromName(std::string strName); @@ -38,11 +38,6 @@ class CHandlingManager std::map m_HandlingNames; private: - void InitializeDefaultHandlings(); - - // Original handling data unaffected by handling.cfg changes - static SFixedArray m_OriginalHandlingData; - // Array with the original handling entries - static SFixedArray m_pOriginalEntries; + static std::map m_pOriginalEntries; }; diff --git a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp index 8953de8c1a..d30e4bbab2 100644 --- a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp +++ b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp @@ -4071,7 +4071,7 @@ bool CStaticFunctionDefinitions::WarpPedIntoVehicle(CPed* pPed, CVehicle* pVehic // Valid seat id for that vehicle? // Temp fix: Disable driver seat for train carriages since the whole vehicle sync logic is based on the the player on the first seat being the vehicle // syncer (Todo) - if (uiSeat <= pVehicle->GetMaxPassengers() && (pVehicle->GetVehicleType() != VEHICLE_TRAIN || !pVehicle->GetTowedByVehicle())) + if (uiSeat <= pVehicle->GetMaxPassengers() && (pVehicle->GetVehicleType() != eVehicleType::TRAIN || !pVehicle->GetTowedByVehicle())) { if (!pPed->IsDead()) { @@ -4840,8 +4840,8 @@ bool CStaticFunctionDefinitions::GiveVehicleSirens(CVehicle* pVehicle, unsigned assert(pVehicle); eVehicleType vehicleType = CVehicleManager::GetVehicleType(pVehicle->GetModel()); // Won't work with below. - if (vehicleType != VEHICLE_PLANE && vehicleType != VEHICLE_BOAT && vehicleType != VEHICLE_TRAILER && vehicleType != VEHICLE_HELI && - vehicleType != VEHICLE_BIKE && vehicleType != VEHICLE_BMX) + if (vehicleType != eVehicleType::PLANE && vehicleType != eVehicleType::BOAT && vehicleType != eVehicleType::TRAILER && vehicleType != eVehicleType::HELI && + vehicleType != eVehicleType::BIKE && vehicleType != eVehicleType::BMX) { if (ucSirenType >= 1 && ucSirenType <= 6) { @@ -4881,8 +4881,8 @@ bool CStaticFunctionDefinitions::SetVehicleSirens(CVehicle* pVehicle, unsigned c assert(pVehicle); eVehicleType vehicleType = CVehicleManager::GetVehicleType(pVehicle->GetModel()); // Won't work with below. - if (vehicleType != VEHICLE_PLANE && vehicleType != VEHICLE_BOAT && vehicleType != VEHICLE_TRAILER && vehicleType != VEHICLE_HELI && - vehicleType != VEHICLE_BIKE && vehicleType != VEHICLE_BMX) + if (vehicleType != eVehicleType::PLANE && vehicleType != eVehicleType::BOAT && vehicleType != eVehicleType::TRAILER && vehicleType != eVehicleType::HELI && + vehicleType != eVehicleType::BIKE && vehicleType != eVehicleType::BMX) { if (ucSirenID <= SIREN_ID_MAX) { @@ -5197,7 +5197,7 @@ bool CStaticFunctionDefinitions::IsTrainDerailed(CVehicle* pVehicle, bool& bDera { assert(pVehicle); - if (pVehicle->GetVehicleType() != VEHICLE_TRAIN) + if (pVehicle->GetVehicleType() != eVehicleType::TRAIN) return false; bDerailed = pVehicle->IsDerailed(); @@ -5208,7 +5208,7 @@ bool CStaticFunctionDefinitions::IsTrainDerailable(CVehicle* pVehicle, bool& bDe { assert(pVehicle); - if (pVehicle->GetVehicleType() != VEHICLE_TRAIN) + if (pVehicle->GetVehicleType() != eVehicleType::TRAIN) return false; bDerailable = pVehicle->IsDerailable(); @@ -5219,7 +5219,7 @@ bool CStaticFunctionDefinitions::GetTrainDirection(CVehicle* pVehicle, bool& bDi { assert(pVehicle); - if (pVehicle->GetVehicleType() != VEHICLE_TRAIN) + if (pVehicle->GetVehicleType() != eVehicleType::TRAIN) return false; bDirection = pVehicle->GetTrainDirection(); @@ -5230,7 +5230,7 @@ bool CStaticFunctionDefinitions::GetTrainSpeed(CVehicle* pVehicle, float& fSpeed { assert(pVehicle); - if (pVehicle->GetVehicleType() != VEHICLE_TRAIN) + if (pVehicle->GetVehicleType() != eVehicleType::TRAIN) return false; const CVector& vecVelocity = pVehicle->GetVelocity(); @@ -5242,7 +5242,7 @@ bool CStaticFunctionDefinitions::GetTrainPosition(CVehicle* pVehicle, float& fPo { assert(pVehicle); - if (pVehicle->GetVehicleType() != VEHICLE_TRAIN) + if (pVehicle->GetVehicleType() != eVehicleType::TRAIN) return false; else if (pVehicle->IsDerailed()) return false; @@ -6888,7 +6888,7 @@ bool CStaticFunctionDefinitions::AttachTrailerToVehicle(CVehicle* pVehicle, CVeh return false; } - if (pTrailer->GetVehicleType() == VEHICLE_TRAIN) + if (pTrailer->GetVehicleType() == eVehicleType::TRAIN) { // Set the position near the chain engine (doesn't influence visual appearance, but will allow entering) pTrailer->SetPosition(pVehicle->GetPosition()); @@ -7084,7 +7084,7 @@ bool CStaticFunctionDefinitions::SetTrainDerailed(CVehicle* pVehicle, bool bDera { assert(pVehicle); - if (pVehicle->GetVehicleType() != VEHICLE_TRAIN) + if (pVehicle->GetVehicleType() != eVehicleType::TRAIN) return false; pVehicle->SetDerailed(bDerailed); @@ -7101,7 +7101,7 @@ bool CStaticFunctionDefinitions::SetTrainDerailable(CVehicle* pVehicle, bool bDe { assert(pVehicle); - if (pVehicle->GetVehicleType() != VEHICLE_TRAIN) + if (pVehicle->GetVehicleType() != eVehicleType::TRAIN) return false; pVehicle->SetDerailable(bDerailable); @@ -7118,7 +7118,7 @@ bool CStaticFunctionDefinitions::SetTrainDirection(CVehicle* pVehicle, bool bDir { assert(pVehicle); - if (pVehicle->GetVehicleType() != VEHICLE_TRAIN) + if (pVehicle->GetVehicleType() != eVehicleType::TRAIN) return false; pVehicle->SetTrainDirection(bDirection); @@ -7135,7 +7135,7 @@ bool CStaticFunctionDefinitions::SetTrainSpeed(CVehicle* pVehicle, float fSpeed) { assert(pVehicle); - if (pVehicle->GetVehicleType() != VEHICLE_TRAIN) + if (pVehicle->GetVehicleType() != eVehicleType::TRAIN) return false; CVector vecVelocity = pVehicle->GetVelocity(); @@ -7155,7 +7155,7 @@ bool CStaticFunctionDefinitions::SetTrainPosition(CVehicle* pVehicle, float fPos { assert(pVehicle); - if (pVehicle->GetVehicleType() != VEHICLE_TRAIN) + if (pVehicle->GetVehicleType() != eVehicleType::TRAIN) return false; else if (pVehicle->IsDerailed()) return false; @@ -7375,7 +7375,7 @@ bool CStaticFunctionDefinitions::ResetVehicleHandling(CVehicle* pVehicle, bool b handling.data.ucAnimGroup = pNewEntry->GetAnimGroup(); // Lower and Upper limits cannot match or LSOD (unless boat) - // if ( eModel != VEHICLE_BOAT ) // Commented until fully tested + // if ( eModel != eVehicleType::BOAT ) // Commented until fully tested { float fSuspensionLimitSize = handling.data.fSuspensionUpperLimit - handling.data.fSuspensionLowerLimit; if (fSuspensionLimitSize > -0.1f && fSuspensionLimitSize < 0.1f) diff --git a/Server/mods/deathmatch/logic/CVehicle.h b/Server/mods/deathmatch/logic/CVehicle.h index ab3980fc40..d104673fc1 100644 --- a/Server/mods/deathmatch/logic/CVehicle.h +++ b/Server/mods/deathmatch/logic/CVehicle.h @@ -96,19 +96,19 @@ enum eLights MAX_LIGHTS }; -enum eVehicleType +enum class eVehicleType { - VEHICLE_NONE = 0, - VEHICLE_CAR, - VEHICLE_BOAT, - VEHICLE_TRAIN, - VEHICLE_HELI, - VEHICLE_PLANE, - VEHICLE_BIKE, - VEHICLE_MONSTERTRUCK, - VEHICLE_QUADBIKE, - VEHICLE_BMX, - VEHICLE_TRAILER + NONE, + CAR, + BOAT, + TRAIN, + HELI, + PLANE, + BIKE, + MONSTERTRUCK, + QUADBIKE, + BMX, + TRAILER }; #define SIREN_TYPE_FIRST 1 diff --git a/Server/mods/deathmatch/logic/CVehicleManager.cpp b/Server/mods/deathmatch/logic/CVehicleManager.cpp index 037c49eb98..a98076f0fb 100644 --- a/Server/mods/deathmatch/logic/CVehicleManager.cpp +++ b/Server/mods/deathmatch/logic/CVehicleManager.cpp @@ -98,7 +98,7 @@ eVehicleType CVehicleManager::GetVehicleType(unsigned short usModel) if (pModel) return pModel->GetVehicleType(); - return VEHICLE_NONE; + return eVehicleType::NONE; } bool CVehicleManager::IsValidUpgrade(unsigned short usUpgrade) @@ -220,11 +220,6 @@ bool CVehicleManager::HasSmokeTrail(unsigned int uiModel) return false; } -bool CVehicleManager::IsTrailer(unsigned int uiVehicleModel) -{ - return GetVehicleType(uiVehicleModel) == VEHICLE_TRAILER; -} - bool CVehicleManager::HasDamageModel(unsigned short usModel) { return HasDamageModel(GetVehicleType(usModel)); @@ -234,12 +229,12 @@ bool CVehicleManager::HasDamageModel(eVehicleType Type) { switch (Type) { - case VEHICLE_TRAILER: - case VEHICLE_MONSTERTRUCK: - case VEHICLE_QUADBIKE: - case VEHICLE_HELI: - case VEHICLE_PLANE: - case VEHICLE_CAR: + case eVehicleType::TRAILER: + case eVehicleType::MONSTERTRUCK: + case eVehicleType::QUADBIKE: + case eVehicleType::HELI: + case eVehicleType::PLANE: + case eVehicleType::CAR: return true; default: return false; diff --git a/Server/mods/deathmatch/logic/CVehicleManager.h b/Server/mods/deathmatch/logic/CVehicleManager.h index 45830ee89f..ec5e9318bb 100644 --- a/Server/mods/deathmatch/logic/CVehicleManager.h +++ b/Server/mods/deathmatch/logic/CVehicleManager.h @@ -46,7 +46,6 @@ class CVehicleManager static bool HasLandingGears(unsigned int uiVehicleModel); static bool HasAdjustableProperty(unsigned int uiVehicleModel); static bool HasSmokeTrail(unsigned int uiVehicleModel); - static bool IsTrailer(unsigned int uiVehicleModel); static bool HasDamageModel(unsigned short usModel); static bool HasDamageModel(eVehicleType Type); static bool HasDoors(unsigned short usModel); diff --git a/Server/mods/deathmatch/logic/CVehicleNames.cpp b/Server/mods/deathmatch/logic/CVehicleNames.cpp index b2dc81e465..501f7244d1 100644 --- a/Server/mods/deathmatch/logic/CVehicleNames.cpp +++ b/Server/mods/deathmatch/logic/CVehicleNames.cpp @@ -275,37 +275,37 @@ const char* CVehicleNames::GetVehicleTypeName(unsigned long ulModel) const char* pVehicleName = ""; switch (CVehicleManager::GetVehicleType(static_cast(ulModel))) { - case VEHICLE_NONE: + case eVehicleType::NONE: pVehicleName = "Unknown"; break; - case VEHICLE_CAR: + case eVehicleType::CAR: pVehicleName = "Automobile"; break; - case VEHICLE_BOAT: + case eVehicleType::BOAT: pVehicleName = "Boat"; break; - case VEHICLE_TRAIN: + case eVehicleType::TRAIN: pVehicleName = "Train"; break; - case VEHICLE_HELI: + case eVehicleType::HELI: pVehicleName = "Helicopter"; break; - case VEHICLE_PLANE: + case eVehicleType::PLANE: pVehicleName = "Plane"; break; - case VEHICLE_BIKE: + case eVehicleType::BIKE: pVehicleName = "Bike"; break; - case VEHICLE_MONSTERTRUCK: + case eVehicleType::MONSTERTRUCK: pVehicleName = "Monster Truck"; break; - case VEHICLE_QUADBIKE: + case eVehicleType::QUADBIKE: pVehicleName = "Quad"; break; - case VEHICLE_BMX: + case eVehicleType::BMX: pVehicleName = "BMX"; break; - case VEHICLE_TRAILER: + case eVehicleType::TRAILER: pVehicleName = "Trailer"; break; } diff --git a/Server/mods/deathmatch/logic/CVehicleUpgrades.cpp b/Server/mods/deathmatch/logic/CVehicleUpgrades.cpp index 2873b58a7c..de057cabeb 100644 --- a/Server/mods/deathmatch/logic/CVehicleUpgrades.cpp +++ b/Server/mods/deathmatch/logic/CVehicleUpgrades.cpp @@ -58,14 +58,14 @@ bool CVehicleUpgrades::IsUpgradeCompatible(unsigned short usUpgrade) eVehicleType vehicleType = m_pVehicle->GetVehicleType(); // No upgrades for trains/boats - if (vehicleType == VEHICLE_TRAIN || vehicleType == VEHICLE_BOAT) + if (vehicleType == eVehicleType::TRAIN || vehicleType == eVehicleType::BOAT) return false; // In MTA every vehicle has a radio... if (us == 1086) return true; - if (vehicleType == VEHICLE_BIKE || vehicleType == VEHICLE_BMX || vehicleType == VEHICLE_HELI) + if (vehicleType == eVehicleType::BIKE || vehicleType == eVehicleType::BMX || vehicleType == eVehicleType::HELI) return false; unsigned short usModel = m_pVehicle->GetModel(); @@ -78,7 +78,7 @@ bool CVehicleUpgrades::IsUpgradeCompatible(unsigned short usUpgrade) return true; // No nitro or other upgrades for planes/helicopters - if (vehicleType == VEHICLE_PLANE) + if (vehicleType == eVehicleType::PLANE) return false; if (us == VEHICLEUPGRADE_NITRO_5X || us == VEHICLEUPGRADE_NITRO_2X || us == VEHICLEUPGRADE_NITRO_10X || us == VEHICLEUPGRADE_HYDRAULICS) diff --git a/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp b/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp index 844299ddb5..8d515afa24 100644 --- a/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp +++ b/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp @@ -1699,7 +1699,7 @@ int CLuaVehicleDefs::GetTrainPosition(lua_State* luaVM) std::variant CLuaVehicleDefs::GetTrainTrack(CVehicle* pVehicle) { - if (pVehicle->GetVehicleType() != VEHICLE_TRAIN) + if (pVehicle->GetVehicleType() != eVehicleType::TRAIN) return false; else if (pVehicle->IsDerailed()) return false; @@ -2773,7 +2773,7 @@ int CLuaVehicleDefs::SetTrainSpeed(lua_State* luaVM) bool CLuaVehicleDefs::SetTrainTrack(CVehicle* pVehicle, CTrainTrack* pTrainTrack) { - if (pVehicle->GetVehicleType() != VEHICLE_TRAIN) + if (pVehicle->GetVehicleType() != eVehicleType::TRAIN) return false; else if (pVehicle->IsDerailed()) { diff --git a/Server/mods/deathmatch/logic/models/CModelLoader.cpp b/Server/mods/deathmatch/logic/models/CModelLoader.cpp index 7081a3812a..e9ed2fd855 100644 --- a/Server/mods/deathmatch/logic/models/CModelLoader.cpp +++ b/Server/mods/deathmatch/logic/models/CModelLoader.cpp @@ -29,6 +29,7 @@ void CModelLoader::loadDefaultData() filesystem::path modPath = filesystem::path(g_pServerInterface->GetServerModPath()); loadObjectDefs(modPath / "objects.conf"); + loadVehicleHandling(modPath / "handling.conf"); loadVehicleDefs(modPath / "vehicles.conf"); } @@ -58,16 +59,64 @@ void CModelLoader::loadObjectDefs(const std::filesystem::path path) parseConfigCSV(path, parseLineFunction); } +void CModelLoader::loadVehicleHandling(const std::filesystem::path path) +{ + auto parseLineFunction = [](std::vector lineParams) { + tHandlingData handling; + uint32_t uiModelID = atoi(lineParams[0]); + handling.iVehicleID = uiModelID; + handling.fMass = atof(lineParams[1]); + handling.fTurnMass = atof(lineParams[2]); + handling.fDragCoeff = atof(lineParams[3]); + handling.vecCenterOfMass = CVector(atof(lineParams[4]), atof(lineParams[5]), atof(lineParams[6])); + handling.uiPercentSubmerged = atoi(lineParams[7]); + handling.fTractionMultiplier = atof(lineParams[8]); + handling.Transmission.ucDriveType = lineParams[9][0]; + handling.Transmission.ucEngineType = lineParams[10][0]; + handling.Transmission.ucNumberOfGears = atoi(lineParams[11]); + handling.Transmission.uiHandlingFlags = atoi(lineParams[12]); + handling.Transmission.fEngineAcceleration = atof(lineParams[13]); + handling.Transmission.fEngineInertia = atof(lineParams[14]); + handling.Transmission.fMaxVelocity = atof(lineParams[15]); + handling.fBrakeDeceleration = atof(lineParams[16]); + handling.fBrakeBias = atof(lineParams[17]); + handling.bABS = lineParams[18][0] == '0'; + handling.fSteeringLock = atof(lineParams[19]); + handling.fTractionLoss = atof(lineParams[20]); + handling.fTractionBias = atof(lineParams[21]); + handling.fSuspensionForceLevel = atof(lineParams[22]); + handling.fSuspensionDamping = atof(lineParams[23]); + handling.fSuspensionHighSpdDamping = atof(lineParams[24]); + handling.fSuspensionUpperLimit = atof(lineParams[25]); + handling.fSuspensionLowerLimit = atof(lineParams[26]); + handling.fSuspensionFrontRearBias = atof(lineParams[27]); + handling.fSuspensionAntiDiveMultiplier = atof(lineParams[28]); + handling.fCollisionDamageMultiplier = atof(lineParams[29]); + handling.uiModelFlags = atoi(lineParams[30]); + handling.uiHandlingFlags = atoi(lineParams[31]); + handling.fSeatOffsetDistance = atof(lineParams[32]); + handling.uiMonetary = atoi(lineParams[33]); + handling.ucHeadLight = atoi(lineParams[34]); + handling.ucTailLight = atoi(lineParams[35]); + handling.ucAnimGroup = atoi(lineParams[36]); + + g_pGame->GetHandlingManager()->RehisterHandling(uiModelID, handling); + }; + parseConfigCSV(path, parseLineFunction); +} + void CModelLoader::loadVehicleDefs(const std::filesystem::path path) { auto parseLineFunction = [](std::vector lineParams) { + SModelVehicleDefs* sModelData = new SModelVehicleDefs(); + uint32_t uiModelID = atoi(lineParams[0]); char* strModelName = lineParams[1]; char* strTextureName = lineParams[2]; char* strType = lineParams[3]; - uint8_t cModelVaiants = atoi(lineParams[4]); - uint8_t cAtributes = atoi(lineParams[5]); - uint8_t cPassengers = atoi(lineParams[6]); + sModelData->uiVariantsCount = atoi(lineParams[4]); + sModelData->cAttributes = atoi(lineParams[5]); + sModelData->uiMaxPassengers = atoi(lineParams[6]); //char* strName = lineParams[4]; //char* strAnims = lineParams[5]; //char* strClass = lineParams[6]; @@ -78,52 +127,52 @@ void CModelLoader::loadVehicleDefs(const std::filesystem::path path) //float fWheelSizeR = atof(lineParams[11]); //uint32_t uiWheelUpgradeClass = atoi(lineParams[12]); - eVehicleType eType; if (strcmp(strType, "car") == 0) { - eType = eVehicleType::VEHICLE_CAR; + sModelData->eVehicleType = eVehicleType::CAR; } else if (strcmp(strType, "mtruck") == 0) { - eType = eVehicleType::VEHICLE_MONSTERTRUCK; + sModelData->eVehicleType = eVehicleType::MONSTERTRUCK; } else if (strcmp(strType, "heli") == 0) { - eType = eVehicleType::VEHICLE_HELI; + sModelData->eVehicleType = eVehicleType::HELI; } else if (strcmp(strType, "boat") == 0) { - eType = eVehicleType::VEHICLE_BOAT; + sModelData->eVehicleType = eVehicleType::BOAT; } else if (strcmp(strType, "trailer") == 0) { - eType = eVehicleType::VEHICLE_TRAILER; + sModelData->eVehicleType = eVehicleType::TRAILER; } else if (strcmp(strType, "train") == 0) { - eType = eVehicleType::VEHICLE_TRAIN; + sModelData->eVehicleType = eVehicleType::TRAIN; } else if (strcmp(strType, "plane") == 0) { - eType = eVehicleType::VEHICLE_PLANE; + sModelData->eVehicleType = eVehicleType::PLANE; } else if (strcmp(strType, "bike") == 0) { - eType = eVehicleType::VEHICLE_BIKE; + sModelData->eVehicleType = eVehicleType::BIKE; } else if (strcmp(strType, "quad") == 0) { - eType = eVehicleType::VEHICLE_QUADBIKE; + sModelData->eVehicleType = eVehicleType::QUADBIKE; } else if (strcmp(strType, "bmx") == 0) { - eType = eVehicleType::VEHICLE_BMX; + sModelData->eVehicleType = eVehicleType::BMX; } - // Handling is still hardcoded const CHandlingEntry* pHandling = g_pGame->GetHandlingManager()->GetOriginalHandlingData((eVehicleTypes)uiModelID); - CModelVehicle* pModelData = new CModelVehicle(uiModelID, pHandling, eType, cModelVaiants, cAtributes, cPassengers); + sModelData->pHandling = pHandling; + + CModelVehicle* pModelData = new CModelVehicle(uiModelID, sModelData); g_pGame->GetModelManager()->RegisterModel(pModelData); }; diff --git a/Server/mods/deathmatch/logic/models/CModelLoader.h b/Server/mods/deathmatch/logic/models/CModelLoader.h index 758e52b865..d47c5aee8a 100644 --- a/Server/mods/deathmatch/logic/models/CModelLoader.h +++ b/Server/mods/deathmatch/logic/models/CModelLoader.h @@ -26,6 +26,7 @@ class CModelLoader void loadVehicleHandling(std::string_view strData); void loadObjectDefs(const std::filesystem::path path); void loadVehicleDefs(const std::filesystem::path path); + void loadVehicleHandling(const std::filesystem::path path); private: void parseConfigCSV(const std::filesystem::path path, std::function lineParams)> parseLineFun); diff --git a/Server/mods/deathmatch/logic/models/CModelVehicle.cpp b/Server/mods/deathmatch/logic/models/CModelVehicle.cpp index e5d437ea0c..940bddae17 100644 --- a/Server/mods/deathmatch/logic/models/CModelVehicle.cpp +++ b/Server/mods/deathmatch/logic/models/CModelVehicle.cpp @@ -12,17 +12,12 @@ #pragma once #include "StdInc.h" -CModelVehicle::CModelVehicle(uint32_t uiModelID, const CHandlingEntry* pHandling, eVehicleType eType, uint8_t cVariantsCount, uint8_t cAttributes, - uint8_t cPassengesCount) +CModelVehicle::CModelVehicle(uint32_t uiModelID, const SModelVehicleDefs* sModelDefs) : CModelBase(uiModelID) { - m_pOriginalVehicleHandling = pHandling; + m_modelDef = sModelDefs; m_pVehicleHandling = new CHandlingEntry(); - m_pVehicleHandling->ApplyHandlingData(pHandling); - m_eVehicleType = eType; - m_cVariantsCount = cVariantsCount; - m_cAttributes = cAttributes; - m_cPassengesCount = cPassengesCount; + m_pVehicleHandling->ApplyHandlingData(sModelDefs->pHandling); } CModelVehicle::~CModelVehicle() @@ -31,13 +26,29 @@ CModelVehicle::~CModelVehicle() CModelVehicle* CModelVehicle::Clone(uint32_t uiModelID) { - CModelVehicle* pNewModel = new CModelVehicle(uiModelID, m_pOriginalVehicleHandling, m_eVehicleType, m_cVariantsCount, m_cAttributes, m_cPassengesCount); + CModelVehicle* pNewModel = new CModelVehicle(uiModelID, m_modelDef); pNewModel->SetParentModel(m_uiModelID); return pNewModel; } +bool CModelVehicle::HasDamageModel() +{ + switch (GetVehicleType()) + { + case eVehicleType::TRAILER: + case eVehicleType::MONSTERTRUCK: + case eVehicleType::QUADBIKE: + case eVehicleType::HELI: + case eVehicleType::PLANE: + case eVehicleType::CAR: + return true; + default: + return false; + } +} + void CModelVehicle::Unload() { } diff --git a/Server/mods/deathmatch/logic/models/CModelVehicle.h b/Server/mods/deathmatch/logic/models/CModelVehicle.h index fb9d664d33..3525da8105 100644 --- a/Server/mods/deathmatch/logic/models/CModelVehicle.h +++ b/Server/mods/deathmatch/logic/models/CModelVehicle.h @@ -13,34 +13,43 @@ class CModelVehicle; #pragma once +struct SModelVehicleDefs +{ + uint8_t uiMaxPassengers; + uint8_t uiVariantsCount; + eVehicleType eVehicleType; + uint8_t cAttributes; + CVehicleColor vehicleColors; + bool bHasDoors; + const CHandlingEntry* pHandling; +}; + class CModelVehicle : public CModelBase { public: // CModelVehicle(){}; - CModelVehicle(uint32_t uiModelID, const CHandlingEntry* pHandling, eVehicleType eType, uint8_t cVariantsCount, uint8_t cAttributes, uint8_t cPassengesCount); + CModelVehicle(uint32_t uiModelID, const SModelVehicleDefs* SModelVehicleDefs); ~CModelVehicle(); virtual CModelVehicle* Clone(uint32_t uiModelID); CHandlingEntry* GetVehicleHandling() { return m_pVehicleHandling; }; - const CHandlingEntry* GetOriginalHandling() { return m_pOriginalVehicleHandling; }; + const CHandlingEntry* GetOriginalHandling() { return m_modelDef->pHandling; }; void SetVehicleHandling(CHandlingEntry* pEntry) { m_pVehicleHandling = pEntry; }; void SetVehicleHandlingChanged(bool bState) { m_bVehicleHandlingChanged = bState; }; bool HasVehicleHandlingChanged() { return m_bVehicleHandlingChanged; }; + bool HasDamageModel(); + bool IsTrailer() { return m_modelDef->eVehicleType == eVehicleType::TRAILER; }; - eVehicleType GetVehicleType() { return m_eVehicleType; }; - uint8_t GetVariantsCount() { return m_cVariantsCount; }; - uint8_t GetAttributes() { return m_cAttributes; }; - uint8_t GetPassengesCount() { return m_cPassengesCount; }; + eVehicleType GetVehicleType() { return m_modelDef->eVehicleType; }; + uint8_t GetVariantsCount() { return m_modelDef->uiVariantsCount; }; + uint8_t GetAttributes() { return m_modelDef->cAttributes; }; + uint8_t GetPassengesCount() { return m_modelDef->uiMaxPassengers; }; eModelInfoType GetType() { return eModelInfoType::VEHICLE; }; void Unload(); private: + const SModelVehicleDefs* m_modelDef; CHandlingEntry* m_pVehicleHandling; - const CHandlingEntry* m_pOriginalVehicleHandling; bool m_bVehicleHandlingChanged = false; - eVehicleType m_eVehicleType; - uint8_t m_cVariantsCount; - uint8_t m_cAttributes; - uint8_t m_cPassengesCount; }; diff --git a/Server/mods/deathmatch/logic/net/CSimPlayerManager.cpp b/Server/mods/deathmatch/logic/net/CSimPlayerManager.cpp index 6dfb807943..1e1a3a936d 100644 --- a/Server/mods/deathmatch/logic/net/CSimPlayerManager.cpp +++ b/Server/mods/deathmatch/logic/net/CSimPlayerManager.cpp @@ -138,7 +138,7 @@ void CSimPlayerManager::UpdateSimPlayer(CPlayer* pPlayer) pSim->m_ucOccupiedVehicleSeat = pPlayer->GetOccupiedVehicleSeat(); pSim->m_fWeaponRange = pPlayer->GetWeaponRangeFromSlot(); pSim->m_bVehicleHasHydraulics = pVehicle ? pVehicle->GetUpgrades()->HasUpgrade(1087) : false; - pSim->m_bVehicleIsPlaneOrHeli = pVehicle ? pVehicle->GetVehicleType() == VEHICLE_PLANE || pVehicle->GetVehicleType() == VEHICLE_HELI : false; + pSim->m_bVehicleIsPlaneOrHeli = pVehicle ? pVehicle->GetVehicleType() == eVehicleType::PLANE || pVehicle->GetVehicleType() == eVehicleType::HELI : false; pSim->m_sharedControllerState.Copy(pPlayer->GetPad()->GetCurrentControllerState()); if (pVehicle) { diff --git a/Server/mods/deathmatch/logic/net/CSimVehiclePuresyncPacket.cpp b/Server/mods/deathmatch/logic/net/CSimVehiclePuresyncPacket.cpp index 3e00e14c56..3590456cba 100644 --- a/Server/mods/deathmatch/logic/net/CSimVehiclePuresyncPacket.cpp +++ b/Server/mods/deathmatch/logic/net/CSimVehiclePuresyncPacket.cpp @@ -63,7 +63,7 @@ bool CSimVehiclePuresyncPacket::Read(NetBitStreamInterface& BitStream) return false; m_Cache.PlrPosition = position.data.vecPosition; - if (CVehicleManager::GetVehicleType(m_Cache.iModelID) == VEHICLE_TRAIN) + if (CVehicleManager::GetVehicleType(m_Cache.iModelID) == eVehicleType::TRAIN) { // Train specific data float fRailPosition = 0.0f; diff --git a/Server/mods/deathmatch/logic/packets/CEntityAddPacket.cpp b/Server/mods/deathmatch/logic/packets/CEntityAddPacket.cpp index 7c671fba9a..18f0ec627d 100644 --- a/Server/mods/deathmatch/logic/packets/CEntityAddPacket.cpp +++ b/Server/mods/deathmatch/logic/packets/CEntityAddPacket.cpp @@ -634,7 +634,7 @@ bool CEntityAddPacket::Write(NetBitStreamInterface& BitStream) const handling.data.ucAnimGroup = pEntry->GetAnimGroup(); // Lower and Upper limits cannot match or LSOD (unless boat) - // if ( pVehicle->GetModel() != VEHICLE_BOAT ) // Commented until fully tested + // if ( pVehicle->GetModel() != eVehicleType::BOAT ) // Commented until fully tested { float fSuspensionLimitSize = handling.data.fSuspensionUpperLimit - handling.data.fSuspensionLowerLimit; if (fSuspensionLimitSize > -0.1f && fSuspensionLimitSize < 0.1f) diff --git a/Server/mods/deathmatch/logic/packets/CKeysyncPacket.cpp b/Server/mods/deathmatch/logic/packets/CKeysyncPacket.cpp index ec311b96b8..d0a284af52 100644 --- a/Server/mods/deathmatch/logic/packets/CKeysyncPacket.cpp +++ b/Server/mods/deathmatch/logic/packets/CKeysyncPacket.cpp @@ -136,7 +136,7 @@ bool CKeysyncPacket::Read(NetBitStreamInterface& BitStream) ControllerState.RightStickY = sRightStickY; } - if (pVehicle->GetVehicleType() == VEHICLE_PLANE || pVehicle->GetVehicleType() == VEHICLE_HELI) + if (pVehicle->GetVehicleType() == eVehicleType::PLANE || pVehicle->GetVehicleType() == eVehicleType::HELI) { bool bState1, bState2; if (!BitStream.ReadBit(bState1) || !BitStream.ReadBit(bState2)) @@ -236,7 +236,7 @@ bool CKeysyncPacket::Write(NetBitStreamInterface& BitStream) const BitStream.Write(ControllerState.RightStickY); } - if (pVehicle->GetVehicleType() == VEHICLE_PLANE || pVehicle->GetVehicleType() == VEHICLE_HELI) + if (pVehicle->GetVehicleType() == eVehicleType::PLANE || pVehicle->GetVehicleType() == eVehicleType::HELI) { BitStream.WriteBit(ControllerState.LeftShoulder2 != 0); BitStream.WriteBit(ControllerState.RightShoulder2 != 0); diff --git a/Server/mods/deathmatch/logic/packets/CVehiclePuresyncPacket.cpp b/Server/mods/deathmatch/logic/packets/CVehiclePuresyncPacket.cpp index 9aa6aa76a4..f5b778e0c5 100644 --- a/Server/mods/deathmatch/logic/packets/CVehiclePuresyncPacket.cpp +++ b/Server/mods/deathmatch/logic/packets/CVehiclePuresyncPacket.cpp @@ -62,7 +62,7 @@ bool CVehiclePuresyncPacket::Read(NetBitStreamInterface& BitStream) pSourcePlayer->SetPosition(position.data.vecPosition); // If the remote vehicle is a train, we want to read special train-specific data - if (remoteVehicleType == VEHICLE_TRAIN) + if (remoteVehicleType == eVehicleType::TRAIN) { float fPosition; bool bDirection; @@ -82,7 +82,7 @@ bool CVehiclePuresyncPacket::Read(NetBitStreamInterface& BitStream) BitStream.Read(fSpeed); // But we should only actually apply that train-specific data if that vehicle is train on our side - if (vehicleType == VEHICLE_TRAIN) + if (vehicleType == eVehicleType::TRAIN) { pVehicle->SetTrainPosition(fPosition); pVehicle->SetTrainDirection(bDirection); @@ -493,7 +493,7 @@ bool CVehiclePuresyncPacket::Write(NetBitStreamInterface& BitStream) const BitStream.Write(&position); // If the remote vehicle is a train, we want to read special train-specific data - if (pVehicle->GetVehicleType() == VEHICLE_TRAIN) + if (pVehicle->GetVehicleType() == eVehicleType::TRAIN) { // Train specific data float fPosition = pVehicle->GetTrainPosition(); @@ -602,7 +602,7 @@ bool CVehiclePuresyncPacket::Write(NetBitStreamInterface& BitStream) const flags.data.bIsOnGround = pVehicle->IsOnGround(); flags.data.bIsInWater = pVehicle->IsInWater(); flags.data.bIsDerailed = pVehicle->IsDerailed(); - flags.data.bIsAircraft = (pVehicle->GetVehicleType() == VEHICLE_PLANE || pVehicle->GetVehicleType() == VEHICLE_HELI); + flags.data.bIsAircraft = (pVehicle->GetVehicleType() == eVehicleType::PLANE || pVehicle->GetVehicleType() == eVehicleType::HELI); flags.data.bHasAWeapon = (ucWeaponType != 0); flags.data.bIsHeliSearchLightVisible = pVehicle->IsHeliSearchLightVisible(); BitStream.Write(&flags); From dc5bbf6fb80d176858aaf1a27602f130e7a7230a Mon Sep 17 00:00:00 2001 From: Uladzislau Nikalayevich Date: Sun, 29 May 2022 23:42:57 +0300 Subject: [PATCH 03/51] Update vehicle config --- Server/mods/deathmatch/logic/CGame.cpp | 2 + .../mods/deathmatch/logic/CVehicleManager.cpp | 11 - .../deathmatch/logic/models/CModelLoader.cpp | 159 ++++++- .../deathmatch/logic/models/CModelVehicle.h | 23 +- Server/mods/deathmatch/vehicles.conf | 424 +++++++++--------- Shared/installer/nightly.nsi | 2 + 6 files changed, 370 insertions(+), 251 deletions(-) diff --git a/Server/mods/deathmatch/logic/CGame.cpp b/Server/mods/deathmatch/logic/CGame.cpp index 43e79e22ef..8486a78cd9 100644 --- a/Server/mods/deathmatch/logic/CGame.cpp +++ b/Server/mods/deathmatch/logic/CGame.cpp @@ -4322,6 +4322,8 @@ void CGame::HandleBackup() zipMaker.InsertFile(m_pMainConfig->GetIdFile(), PathJoin("config", "server-id.keys")); zipMaker.InsertFile(pModManager->GetAbsolutePath(FILENAME_SETTINGS), PathJoin("config", "settings.xml")); zipMaker.InsertFile(pModManager->GetAbsolutePath("vehiclecolors.conf"), PathJoin("config", "vehiclecolors.conf")); + zipMaker.InsertFile(pModManager->GetAbsolutePath("handling.conf"), PathJoin("config", "handling.conf")); + zipMaker.InsertFile(pModManager->GetAbsolutePath("vehicles.conf"), PathJoin("config", "vehicles.conf")); // Backup database files zipMaker.InsertDirectoryTree(m_pMainConfig->GetGlobalDatabasesPath(), PathJoin("databases", "global")); diff --git a/Server/mods/deathmatch/logic/CVehicleManager.cpp b/Server/mods/deathmatch/logic/CVehicleManager.cpp index a98076f0fb..7b0d19b196 100644 --- a/Server/mods/deathmatch/logic/CVehicleManager.cpp +++ b/Server/mods/deathmatch/logic/CVehicleManager.cpp @@ -20,17 +20,6 @@ #define VEHICLE_HAS_TAXI_LIGHTS 0x020UL //32 #define VEHICLE_HAS_SEARCH_LIGHT 0x040UL //64 -// Generated by MTA10\utils\gentable\gentable_vehattr.cpp -//static const SFixedArray g_ulVehicleAttributes = { -// {0, 0, 0, 0, 0, 0, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 32, 0, 0, 2, 0, // 400-424 -// 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, // 425-449 -// 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 450-474 -// 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 64, 0, 0, // 475-499 -// 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 0, 0, 0, 0, 0, 4, 12, 0, 0, 2, 8, // 500-524 -// 8, 0, 0, 2, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, // 525-549 -// 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 550-574 -// 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 2, 2, 2, 2, // 575-599 -// 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; CVehicleManager::CVehicleManager() { diff --git a/Server/mods/deathmatch/logic/models/CModelLoader.cpp b/Server/mods/deathmatch/logic/models/CModelLoader.cpp index e9ed2fd855..3287a9ea8f 100644 --- a/Server/mods/deathmatch/logic/models/CModelLoader.cpp +++ b/Server/mods/deathmatch/logic/models/CModelLoader.cpp @@ -17,11 +17,112 @@ CModelLoader::CModelLoader() { // Should be replaced - loadDefaultData(); + // loadDefaultData(); } CModelLoader::~CModelLoader() { +} + + // Some shitcode to regen vehicles.conf +void genVehicleConf() +{ + filesystem::path modPath = filesystem::path(g_pServerInterface->GetServerModPath()); + auto path = modPath / "vehicles_new.conf"; + + std::ofstream pFile(path.c_str(), std::ifstream::out); + if (pFile.is_open()) + { + for (uint32_t uiModelID = 400; uiModelID < 612; uiModelID++) + { + auto pModel = g_pGame->GetModelManager()->GetVehicleModel(uiModelID); + + const char* strVehicleName = CVehicleNames::GetVehicleName(uiModelID); + char* strType; + int32_t iVariantsCount = pModel->GetVariantsCount(); + char cAttributes = pModel->GetAttributes(); + int32_t iMaxPassengers = pModel->GetPassengesCount(); + char* bHasDoors = g_pGame->GetVehicleManager()->HasDoors(uiModelID) ? "true" : "false"; + char* modelVarianType; + + + switch (pModel->GetVehicleType()) + { + case eVehicleType::CAR: + strType = "car"; + break; + case eVehicleType::MONSTERTRUCK: + strType = "mtruck"; + break; + case + eVehicleType::HELI: + strType = "heli"; + break; + case eVehicleType::BOAT: + strType = "boat"; + break; + case + eVehicleType::TRAILER: + strType = "trailer"; + break; + case eVehicleType::TRAIN: + strType = "train"; + break; + case + eVehicleType::PLANE: + strType = "plane"; + break; + case eVehicleType::BIKE: + strType = "bike"; + break; + case + eVehicleType::QUADBIKE: + strType = "quad"; + break; + case eVehicleType::BMX: + strType = "bmx"; + break; + + default: + break; + } + + if (iMaxPassengers == 255) + { + iMaxPassengers = -1; + } + + if (iVariantsCount == 255) + { + iVariantsCount = -1; + } + + if (uiModelID == 457 || uiModelID == 512) + { + modelVarianType = "caddy"; + } + // Slamvan + else if (uiModelID == 535) + { + modelVarianType = "slamvan"; + } + else if (uiModelID == 522 || uiModelID == 581) + { + modelVarianType = "nrg"; + } + else + { + modelVarianType = "default"; + } + + pFile << std::to_string(uiModelID) << ", " << strType << ", " << strVehicleName << ", " << modelVarianType << ", " + << std::to_string(iVariantsCount) << ", " << std::to_string(cAttributes) << ", " << std::to_string(iMaxPassengers) << ", " << bHasDoors + << "\n"; + } + + pFile.close(); + } + } void CModelLoader::loadDefaultData() @@ -111,21 +212,13 @@ void CModelLoader::loadVehicleDefs(const std::filesystem::path path) SModelVehicleDefs* sModelData = new SModelVehicleDefs(); uint32_t uiModelID = atoi(lineParams[0]); - char* strModelName = lineParams[1]; - char* strTextureName = lineParams[2]; - char* strType = lineParams[3]; + const char* strType = lineParams[1]; + sModelData->strVehicleName = lineParams[2]; + const char* strVarianType = lineParams[3]; sModelData->uiVariantsCount = atoi(lineParams[4]); sModelData->cAttributes = atoi(lineParams[5]); sModelData->uiMaxPassengers = atoi(lineParams[6]); - //char* strName = lineParams[4]; - //char* strAnims = lineParams[5]; - //char* strClass = lineParams[6]; - //uint32_t iFlags = atoi(lineParams[7]); - //char* strComprutes = lineParams[8]; - //uint32_t uiWheelsID = atoi(lineParams[9]); - //float fWheelSizeF = atof(lineParams[10]); - //float fWheelSizeR = atof(lineParams[11]); - //uint32_t uiWheelUpgradeClass = atoi(lineParams[12]); + sModelData->bHasDoors = strcmp(lineParams[7], "true") == 0; if (strcmp(strType, "car") == 0) { @@ -168,6 +261,23 @@ void CModelLoader::loadVehicleDefs(const std::filesystem::path path) sModelData->eVehicleType = eVehicleType::BMX; } + else if (strcmp(strVarianType, "nrg") == 0) + { + sModelData->eVehicleVariationType = eVehicleVariationType::NRG; + } + else if (strcmp(strVarianType, "caddy") == 0) + { + sModelData->eVehicleVariationType = eVehicleVariationType::CADDY; + } + else if (strcmp(strVarianType, "slamvan") == 0) + { + sModelData->eVehicleVariationType = eVehicleVariationType::SLAMVAN; + } + else + { + sModelData->eVehicleVariationType = eVehicleVariationType::DEFAULT; + } + const CHandlingEntry* pHandling = g_pGame->GetHandlingManager()->GetOriginalHandlingData((eVehicleTypes)uiModelID); sModelData->pHandling = pHandling; @@ -182,23 +292,26 @@ void CModelLoader::loadVehicleDefs(const std::filesystem::path path) void CModelLoader::parseConfigCSV(const std::filesystem::path path, std::function lineParams)> parseLineFun) { - std::ifstream pFile(path.c_str(), std::ifstream::out); + std::ifstream pFile(path.c_str(), std::ifstream::in); if (pFile.is_open()) { std::string line; while (std::getline(pFile, line)) { - std::vector splittedParams; - - const char* delimiters = ", \t"; - char* token = std::strtok(line.data(), delimiters); - while (token) + if (line[0] != '#') { - splittedParams.push_back(token); - token = std::strtok(nullptr, delimiters); - } + std::vector splittedParams; + + const char* delimiters = ","; + char* token = std::strtok(line.data(), delimiters); + while (token) + { + splittedParams.push_back(token); + token = std::strtok(nullptr, delimiters); + } - parseLineFun(splittedParams); + parseLineFun(splittedParams); + } } pFile.close(); } diff --git a/Server/mods/deathmatch/logic/models/CModelVehicle.h b/Server/mods/deathmatch/logic/models/CModelVehicle.h index 3525da8105..bde9795a6e 100644 --- a/Server/mods/deathmatch/logic/models/CModelVehicle.h +++ b/Server/mods/deathmatch/logic/models/CModelVehicle.h @@ -13,6 +13,14 @@ class CModelVehicle; #pragma once +enum class eVehicleVariationType +{ + DEFAULT, + NRG, + SLAMVAN, + CADDY, +}; + struct SModelVehicleDefs { uint8_t uiMaxPassengers; @@ -22,6 +30,8 @@ struct SModelVehicleDefs CVehicleColor vehicleColors; bool bHasDoors; const CHandlingEntry* pHandling; + const char* strVehicleName; + eVehicleVariationType eVehicleVariationType; }; class CModelVehicle : public CModelBase @@ -32,18 +42,21 @@ class CModelVehicle : public CModelBase ~CModelVehicle(); virtual CModelVehicle* Clone(uint32_t uiModelID); + CHandlingEntry* GetVehicleHandling() { return m_pVehicleHandling; }; const CHandlingEntry* GetOriginalHandling() { return m_modelDef->pHandling; }; void SetVehicleHandling(CHandlingEntry* pEntry) { m_pVehicleHandling = pEntry; }; void SetVehicleHandlingChanged(bool bState) { m_bVehicleHandlingChanged = bState; }; bool HasVehicleHandlingChanged() { return m_bVehicleHandlingChanged; }; + bool HasDamageModel(); bool IsTrailer() { return m_modelDef->eVehicleType == eVehicleType::TRAILER; }; - - eVehicleType GetVehicleType() { return m_modelDef->eVehicleType; }; - uint8_t GetVariantsCount() { return m_modelDef->uiVariantsCount; }; - uint8_t GetAttributes() { return m_modelDef->cAttributes; }; - uint8_t GetPassengesCount() { return m_modelDef->uiMaxPassengers; }; + const char* GetVehicleName() { return m_modelDef->strVehicleName; }; + eVehicleType GetVehicleType() { return m_modelDef->eVehicleType; } + uint8_t GetVariantsCount() { return m_modelDef->uiVariantsCount; }; + uint8_t GetAttributes() { return m_modelDef->cAttributes; }; + uint8_t GetPassengesCount() { return m_modelDef->uiMaxPassengers; }; + eVehicleVariationType GetVariationType() { return m_modelDef->eVehicleVariationType; }; eModelInfoType GetType() { return eModelInfoType::VEHICLE; }; void Unload(); diff --git a/Server/mods/deathmatch/vehicles.conf b/Server/mods/deathmatch/vehicles.conf index c7a7806baf..80bc00c5b2 100644 --- a/Server/mods/deathmatch/vehicles.conf +++ b/Server/mods/deathmatch/vehicles.conf @@ -1,212 +1,212 @@ -400, landstal, landstal, car, LANDSTK, null, 0, 0, -1, 0.768, 0.768, 0 -401, bravura, bravura, car, BRAVURA, null, 0, 0, -1, 0.74, 0.74, 0 -402, buffalo, buffalo, car, BUFFALO, null, 0, 0, -1, 0.7, 0.7, 0 -403, linerun, linerun, car, LINERUN, truck, 0, 0, -1, 1.1, 1.1, -1 -404, peren, peren, car, PEREN, null, 0, 0, -1, 0.66, 0.66, 0 -405, sentinel, sentinel, car, SENTINL, null, 0, 0, -1, 0.7, 0.7, 0 -406, dumper, dumper, mtruck, DUMPER, truck, 1, 0, -1, 2.28, 2.28, -1 -407, firetruk, firetruk, car, FIRETRK, truck, 0, 0, -1, 1.0, 1.0, -1 -408, trash, trash, car, TRASHM, null, 0, 0, -1, 1.06, 1.06, -1 -409, stretch, stretch, car, STRETCH, null, 0, 0, -1, 0.75, 0.75, 0 -410, manana, manana, car, MANANA, null, 0, 0, -1, 0.62, 0.62, 0 -411, infernus, infernus, car, INFERNU, null, 0, 0, -1, 0.7, 0.7, 0 -412, voodoo, voodoo, car, VOODOO, null, 0, 0, -1, 0.7, 0.7, 0 -413, pony, pony, car, PONY, van, 0, 0, -1, 0.72, 0.72, -1 -414, mule, mule, car, MULE, null, 0, 0, -1, 0.76, 0.76, -1 -415, cheetah, cheetah, car, CHEETAH, null, 0, 0, -1, 0.68, 0.68, 0 -416, ambulan, ambulan, car, AMBULAN, van, 0, 0, -1, 0.864, 0.864, -1 -417, leviathn, leviathn, heli, LEVIATH, null, 0, 0, -1, 0.54, 0.4, -1 -418, moonbeam, moonbeam, car, MOONBM, null, 0, 0, -1, 0.7, 0.7, 0 -419, esperant, esperant, car, ESPERAN, null, 0, 0, -1, 0.64, 0.64, 0 -420, taxi, taxi, car, TAXI, null, 0, 1f10, -1, 0.7, 0.7, 0 -421, washing, washing, car, WASHING, null, 0, 0, -1, 0.65, 0.65, 0 -422, bobcat, bobcat, car, BOBCAT, null, 0, 0, -1, 0.7, 0.7, 0 -423, mrwhoop, mrwhoop, car, WHOOPEE, null, 1, 0, -1, 0.7, 0.7, -1 -424, bfinject, bfinject, car, BFINJC, BF_injection, 0, 0, -1, 0.84, 0.92, -1 -425, hunter, hunter, heli, HUNTER, rustler,0, 0, -1, 0.64, 0.4, -1 -426, premier, premier, car, PREMIER, null, 0, 0, -1, 0.7, 0.7, 0 -427, enforcer, enforcer, car, ENFORCR, van, 0, 0, -1, 0.936, 0.936, -1 -428, securica, securica, car, SECURI, van, 0, 3f10, -1, 0.914, 0.914, -1 -429, banshee, banshee, car, BANSHEE, null, 0, 0, -1, 0.7, 0.7, 0 -430, predator, predator, boat, PREDATR, null, 0, 0 -431, bus, bus, car, BUS, bus, 0, 0, -1, 1, 1, -1 -432, rhino, rhino, car, RHINO, tank, 0, 0, -1, 1.3, 1.3, -1 -433, barracks, barracks, car, BARRCKS, truck, 0, 1f10, -1, 1.2, 1.2, -1 -434, hotknife, hotknife, car, HOTKNIF, null, 0, 0, -1, 0.72, 0.8, -1 -435, artict1, artict1, trailer, ARTICT1, null, 0, 0, -1, 1.1, 1.1, -1 -436, previon, previon, car, PREVION, null, 0, 0, -1, 0.7, 0.7, 0 -437, coach, coach, car, COACH, coach, 0, 1f10, -1, 1.0, 1.0, -1 -438, cabbie, cabbie, car, CABBIE, null, 0, 1f10, -1, 0.7, 0.7, 0 -439, stallion, stallion, car, STALION, null, 0, 3210, -1, 0.7, 0.7, 0 -440, rumpo, rumpo, car, RUMPO, van, 0, 0, -1, 0.7, 0.7, -1 -441, rcbandit, rcbandit, car, RCBANDT, null, 0, 0, -1, 0.25, 0.25, -1 -442, romero, romero, car, ROMERO, null, 0, 0, -1, 0.68, 0.68, 0 -443, packer, packer, car, PACKER, truck, 0, 0, -1, 1.082, 1.082, -1 -444, monster, monster, mtruck, MONSTER, truck, 0, 0, -1, 1.5, 1.5, -1 -445, admiral, admiral, car, ADMIRAL, null, 0, 0, -1, 0.68, 0.68, 0 -446, squalo, squalo, boat, SQUALO, null, 0, 0, -447, seaspar, seaspar, heli, SEASPAR, null, 0, 0, -1, 0.7, 0.7, -1 -448, pizzaboy, pizzaboy, bike, PIZZABO, bikev, 1, 0, 16, 0.464, 0.464, -1 -449, tram, tram, train, TRAM, van, 0, 1012, -1, 0.78, 0.78, -1 -450, artict2, artict2, trailer, ARTICT2, null, 0, 0, -1, 1.1, 1.1, -1 -451, turismo, turismo, car, TURISMO, null, 0, 0, -1, 0.7, 0.75, 0 -452, speeder, speeder, boat, SPEEDER, null, 0, 4fff -453, reefer, reefer, boat, REEFER, null, 0, 3f01 -454, tropic, tropic, boat, TROPIC, null, 0, 4fff -455, flatbed, flatbed, car, FLATBED, truck, 0, 4fff, -1, 1.2, 1.2, -1 -456, yankee, yankee, car, YANKEE, null, 0, 0, -1, 0.84, 0.84, -1 -457, caddy, caddy, car, CADDY, null, 0, 30123345, -1, 0.5, 0.5, -1 -458, solair, solair, car, SOLAIR, null, 0, 0, -1, 0.72, 0.72, 0 -459, topfun, topfun, car, TOPFUN, van, 0, 0, -1, 0.7, 0.7, -1 -460, skimmer, skimmer, plane, SKIMMER, null, 0, 0 -461, pcj600, pcj600, bike, PCJ600, bikes, 0, 0, 16, 0.67, 0.67, -1 -462, faggio, faggio, bike, FAGGIO, bikev, 0, 0, 16, 0.464, 0.464, -1 -463, freeway, freeway, bike, FREEWAY, bikeh, 0, 0, 23, 0.654, 0.654, -1 -464, rcbaron, rcbaron, plane, RCBARON, null, 0, 0, -1, 0.25, 0.25, -1 -465, rcraider, rcraider, heli, RCRAIDE, null, 0, 0, -1, 0.25, 0.25, -1 -466, glendale, glendale, car, GLENDAL, null, 0, 0, -1, 0.7, 0.7, 0 -467, oceanic, oceanic, car, OCEANIC, null, 0, 0, -1, 0.7, 0.7, 0 -468, sanchez, sanchez, bike, SANCHEZ, biked, 0, 0, 23, 0.68, 0.62, -1 -469, sparrow, sparrow, heli, SPARROW, null, 0, 0, -1, 0.7, 0.7, -1 -470, patriot, patriot, car, PATRIOT, null, 0, 0, -1, 0.894, 0.894, -1 -471, quad, quad, quad, QUAD, quad, 0, 0, -1, 0.6, 0.6, -1 -472, coastg, coastg, boat, COASTG, null, 0, 3012 -473, dinghy, dinghy, boat, DINGHY, null, 0, 0 -474, hermes, hermes, car, HERMES, null, 0, 0, -1, 0.7, 0.7, 0 -475, sabre, sabre, car, SABRE, null, 0, 2ff0, -1, 0.7, 0.7, 0 -476, rustler, rustler, plane, RUSTLER, rustler,0, 0, -1, 0.6, 0.3, -1 -477, zr350, zr350, car, ZR350, null, 0, 0, -1, 0.76, 0.76, 0 -478, walton, walton, car, WALTON, null, 0, 0, -1, 0.7, 0.7, 0 -479, regina, regina, car, REGINA, null, 0, 0, -1, 0.7, 0.7, 0 -480, comet, comet, car, COMET, null, 0, 2ff0, -1, 0.7, 0.7, 0 -481, bmx, bmx, bmx, BMX, bmx, 0, 0, 23, 0.54, 0.54, -1 -482, burrito, burrito, car, BURRITO, van, 0, 0, -1, 0.7, 0.7, -1 -483, camper, camper, car, CAMPER, van, 0, 0, -1, 0.66, 0.66, -1 -484, marquis, marquis, boat, MARQUIS, null, 0, 0 -485, baggage, baggage, car, BAGGAGE, null, 0, 0, -1, 0.6, 0.6, -1 -486, dozer, dozer, car, DOZER, dozer, 0, 0, -1, 1.5, 1.5, -1 -487, maverick, maverick, heli, MAVERIC, null, 0, 0, -1, 0.7, 0.7, -1 -488, vcnmav, vcnmav, heli, SANMAV, null, 0, 0, -1, 0.7, 0.7, -1 -489, rancher, rancher, car, RANCHER, null, 0, 0, -1, 0.9, 0.9, 0 -490, fbiranch, fbiranch, car, FBIRANC, null, 0, 0, -1, 0.92, 0.92, -1 -491, virgo, virgo, car, VIRGO, null, 0, 0, -1, 0.65, 0.65, 0 -492, greenwoo, greenwoo, car, GREENWO, null, 0, 0, -1, 0.7, 0.7, 0 -493, jetmax, jetmax, boat, JETMAX, null, 0, 0 -494, hotring, hotring, car, HOTRING, null, 0, 0, -1, 0.82, 0.82, -1 -495, sandking, sandking, car, SANDKIN, null, 0, 0, -1, 0.972, 0.972, -1 -496, blistac, blistac, car, BLISTAC, null, 0, 0, -1, 0.7, 0.7, 0 -497, polmav, polmav, heli, POLMAV, null, 0, 0, -1, 0.7, 0.7, -1 -498, boxville, boxville, car, BOXVILL, van, 0, 0, -1, 0.76, 0.76, -1 -499, benson, benson, car, BENSON, null, 0, 0, -1, 0.8, 0.8, -1 -500, mesa, mesa, car, MESAA, null, 0, 0, -1, 0.8, 0.8, 0 -501, rcgoblin, rcgoblin, heli, RCGOBLI, null, 0, 0, -1, 0.25, 0.25, -1 -502, hotrina, hotrina, car, HOTRINA, null, 0, 4fff, -1, 0.82, 0.82, -1 -503, hotrinb, hotrinb, car, HOTRINB, null, 0, 4fff, -1, 0.82, 0.82, -1 -504, bloodra, bloodra, car, BLOODRA, BF_injection, 0, 4fff, -1, 0.7, 0.7, -1 -505, rnchlure, rnchlure, car, RANCHER, null, 0, 0, -1, 0.9, 0.9, -1 -506, supergt, supergt, car, SUPERGT, null, 0, 0, -1, 0.7, 0.7, 0 -507, elegant, elegant, car, ELEGANT, null, 0, 0, -1, 0.7, 0.7, 0 -508, journey, journey, car, JOURNEY, null, 0, 0, -1, 0.8, 0.8, -1 -509, bike, bike, bmx, BIKE, choppa, 0, 0, 23, 0.526, 0.612, -1 -510, mtbike, mtbike, bmx, MTBIKE, mtb, 0, 0, 23, 0.68, 0.68, -1 -511, beagle, beagle, plane, BEAGLE, van, 0, 0, -1, 0.52, 0.52, -1 -512, cropdust, cropdust, plane, CROPDST, rustler, 0, 0, -1, 0.7, 0.3, -1 -513, stunt, stunt, plane, STUNT, rustler, 0, 0, -1, 0.48, 0.48, -1 -514, petro, petro, car, PETROL, truck, 0, 0, -1, 1.106, 1.106, -1 -515, rdtrain, rdtrain, car, RDTRAIN, truck, 0, 0, -1, 1.18, 1.18, -1 -516, nebula, nebula, car, NEBULA, null, 0, 0, -1, 0.75, 0.75, 0 -517, majestic, majestic, car, MAJESTC, null, 0, 0, -1, 0.75, 0.75, 0 -518, buccanee, buccanee, car, BUCCANE, null, 0, 0, -1, 0.66, 0.66, 0 -519, shamal, shamal, plane, SHAMAL, shamal, 0, 0, -1, 0.62, 0.62, -1 -520, hydra, hydra, plane, HYDRA, rustler, 0, 0, -1, 0.7, 0.3, -1 -521, fcr900, fcr900, bike, FCR900, bikes, 0, 3f341210, 16, 0.68, 0.68, -1 -522, nrg500, nrg500, bike, NRG500, bikes, 0, 1f341210, 16, 0.68, 0.68, -1 -523, copbike, copbike, bike, HPV1000, bikes, 0, 0, 16, 0.68, 0.68, -1 -524, cement, cement, car, CEMENT, null, 0, 0, -1, 1.12, 1, -1 -525, towtruck, towtruck, car, TOWTRUK, van, 0, 0, -1, 0.92, 0.92, -1 -526, fortune, fortune, car, FORTUNE, null, 0, 0, -1, 0.7, 0.7, 0 -527, cadrona, cadrona, car, CADRONA, null, 0, 0, -1, 0.7, 0.7, 0 -528, fbitruck, fbitruck, car, FBITRUK, van, 0, 0, -1, 0.85, 0.85, -1 -529, willard, willard, car, WILLARD, null, 0, 0, -1, 0.7, 0.7, 0 -530, forklift, forklift, car, FORKLFT, null, 0, 0, -1, 0.45, 0.45, -1 -531, tractor, tractor, car, TRACTOR, null, 0, 0, -1, 0.68, 1.3, -1 -532, combine, combine, car, COMBINE, truck, 0, 0, -1, 0.588, 1, -1 -533, feltzer, feltzer, car, FELTZER, null, 0, 0, -1, 0.7, 0.7, 0 -534, remingtn, remingtn, car, REMING, null, 0, 0, -1, 0.7, 0.7, 2 -535, slamvan, slamvan, car, SLAMVAN, null, 0, 1f10, -1, 0.74, 0.74, 2 -536, blade, blade, car, BLADE, null, 0, 0, -1, 0.7, 0.7, 2 -537, freight, freight, train, FREIGHT, truck, 0, 0, -1, 1.06, 1.06, -1 -538, streak, streak, train, STREAK, truck, 0, 0, -1, 1.06, 1.06, -1 -539, vortex, vortex, plane, VORTEX, vortex, 0, 0, -1, 0.7, 0.7, -1 -540, vincent, vincent, car, VINCENT, null, 0, 0, -1, 0.7, 0.7, 0 -541, bullet, bullet, car, BULLET, null, 0, 0, -1, 0.7, 0.75, 0 -542, clover, clover, car, CLOVER, null, 0, 0, -1, 0.74, 0.74, 0 -543, sadler, sadler, car, SADLER, null, 0, 0, -1, 0.7, 0.7, -1 -544, firela, firela, car, FIRELA, truck, 0, 0, -1, 1.0, 1.0, -1 -545, hustler, hustler, car, HUSTLER, null, 0, 0, -1, 0.7, 0.7, 0 -546, intruder, intruder, car, INTRUDR, null, 0, 0, -1, 0.7, 0.7, 0 -547, primo, primo, car, PRIMO, null, 0, 0, -1, 0.7, 0.7, 0 -548, cargobob, cargobob, heli, CARGOBB, null, 0, 0, -1, 0.74, 0.74, -1 -549, tampa, tampa, car, TAMPA, null, 0, 0, -1, 0.684, 0.684, 0 -550, sunrise, sunrise, car, SUNRISE, null, 0, 0, -1, 0.76, 0.76, 0 -551, merit, merit, car, MERIT, null, 0, 0, -1, 0.75, 0.75, 0 -552, utility, utility, car, UTILITY, van, 0, 0, -1, 0.84, 0.84, -1 -553, nevada, nevada, plane, NEVADA, nevada, 0, 0, -1, 0.85, 0.4, -1 -554, yosemite, yosemite, car, YOSEMIT, null, 0, 0, -1, 0.84, 0.84, -1 -555, windsor, windsor, car, WINDSOR, null, 0, 0, -1, 0.7, 0.7, 0 -556, monstera, monstera, mtruck, MONSTA, truck, 0, 0, -1, 1.5, 1.5, -1 -557, monsterb, monsterb, mtruck, MONSTB, truck, 0, 0, -1, 1.5, 1.5, -1 -558, uranus, uranus, car, URANUS, null, 0, 0, -1, 0.7, 0.7, 1 -559, jester, jester, car, JESTER, null, 0, 0, -1, 0.7, 0.7, 1 -560, sultan, sultan, car, SULTAN, null, 0, 0, -1, 0.7, 0.7, 1 -561, stratum, stratum, car, STRATUM, null, 0, 0, -1, 0.7, 0.7, 1 -562, elegy, elegy, car, ELEGY, null, 0, 0, -1, 0.68, 0.68, 1 -563, raindanc, raindanc, heli, RAINDNC, null, 0, 0, -1, 0.64, 0.64, -1 -564, rctiger, rctiger, car, RCTIGER, null, 0, 0, -1, 0.25, 0.25, -1 -565, flash, flash, car, FLASH, null, 0, 0, -1, 0.64, 0.64, 1 -566, tahoma, tahoma, car, TAHOMA, null, 0, 0, -1, 0.7, 0.7, 0 -567, savanna, savanna, car, SAVANNA, null, 0, 2ff0, -1, 0.7, 0.7, 2 -568, bandito, bandito, car, BANDITO, null, 0, 0, -1, 0.55, 0.7, -1 -569, freiflat, freiflat, train, FRFLAT, null, 0, 0, -1, 1.06, 1.06, -1 -570, streakc, streakc, train, STREAKC, coach, 0, 0, -1, 1.06, 1.06, -1 -571, kart, kart, car, KART, KART, 0, 0, -1, 0.26, 0.26, -1 -572, mower, mower, car, MOWER, null, 0, 0, -1, 0.48, 0.56, -1 -573, duneride, duneride, mtruck, DUNE, truck, 0, 0, -1, 1.14, 1.14, -1 -574, sweeper, sweeper, car, SWEEPER, null, 0, 0, -1, 0.5, 0.5, -1 -575, broadway, broadway, car, BROADWY, null, 0, 2ff0, -1, 0.7, 0.7, 2 -576, tornado, tornado, car, TORNADO, null, 0, 2ff0, -1, 0.7, 0.7, 2 -577, at400, at400, plane, AT400, coach, 0, 0, -1, 1.12, 1.12, -1 -578, dft30, dft30, car, DFT30, truck, 0, 4fff, -1, 1, 1, -1 -579, huntley, huntley, car, HUNTLEY, null, 7, 0, -1, 0.90, 0.90, 0 -580, stafford, stafford, car, STAFFRD, null, 0, 0, -1, 0.78, 0.78, 0 -581, bf400, bf400, bike, BF400, bikes, 0, 3f341210, 16, 0.68, 0.68, -1 -582, newsvan, newsvan, car, NEWSVAN, van, 0, 0, -1, 0.77, 0.77, -1 -583, tug, tug, car, TUG, null, 0, 0, -1, 0.66, 0.75, -1 -584, petrotr, petrotr, trailer, PETROTR, null, 0, 0, -1, 1.12, 1.12, -1 -585, emperor emperor, car, EMPEROR, null, 0, 0, -1, 0.74, 0.74, 0 -586, wayfarer wayfarer, bike, WAYFARE, wayfarer,0, 0, 23, 0.654, 0.654, -1 -587, euros, euros, car, EUROS, null, 0, 0, -1, 0.7, 0.7, 0 -588, hotdog, hotdog, car, HOTDOG, van, 0, 0, -1, 0.86, 0.86, -1 -589, club, club, car, CLUB, null, 0, 0, -1, 0.74, 0.74, 0 -590, freibox, freibox, train, FRBOX, null, 0, 0, -1, 1.06, 1.06, -1 -591, artict3, artict3, trailer, ARTICT3, null, 0, 0, -1, 1.1, 1.1, -1 -592, androm, androm, plane, ANDROM, null, 0, 0, -1, 0.95, 0.95, -1 -593, dodo dodo, plane, DODO, van, 0, 0, -1, 0.56, 0.56, -1 -594, rccam, rccam, car, RCCAM, null, 0, 0, -1, 0.25, 0.25, -1 -595, launch, launch, boat, LAUNCH, null, 0, 0 -596, copcarla, copcarla, car, POLICAR, null, 0, 0, -1, 0.7, 0.7, -1 -597, copcarsf, copcarsf, car, POLICAR, null, 0, 0, -1, 0.7, 0.7, -1 -598, copcarvg, copcarvg, car, POLICAR, null, 0, 0, -1, 0.7, 0.7, -1 -599, copcarru, copcarru, car, RANGER, null, 0, 0, -1, 0.95, 0.95, -1 -600, picador, picador, car, PICADOR, null, 0, 0, -1, 0.7, 0.7, 0 -601, swatvan, swatvan, car, SWATVAN, van, 0, 0, -1, 1.366, 1.366, -1 -602, alpha, alpha, car, ALPHA, null, 0, 0, -1, 0.7, 0.7, 0 -603, phoenix, phoenix, car, PHOENIX, null, 0, 0, -1, 0.7, 0.7, 0 -604, glenshit, glenshit, car, GLENSHI, null, 0, 0, -1, 0.7, 0.7, -1 -605, sadlshit, sadlshit, car, SADLSHI, null, 0, 0, -1, 0.7, 0.7, -1 -606, bagboxa, bagboxa, trailer, BAGBOXA, null, 0, 0, -1, 0.6, 0.6, -1 -607, bagboxb, bagboxb, trailer, BAGBOXB, null, 0, 0, -1, 0.6, 0.6, -1 -608, tugstair, tugstair, trailer, TUGSTAI, null, 0, 0, -1, 0.6, 0.6, -1 -609, boxburg, boxburg, car, BOXBURG, van, 0, 0, -1, 0.76, 0.76, -1 -610, farmtr1, farmtr1, trailer, FARMTR1, null, 0, 0, -1, 0.32, 0.32, -1 -611, utiltr1, utiltr1, trailer, UTILTR1, null, 0, 0, -1, 0.68, 0.68, -1 +400, car, Landstalker, default, -1, 0, 3, true +401, car, Bravura, default, -1, 0, 1, true +402, car, Buffalo, default, -1, 0, 1, true +403, car, Linerunner, default, -1, 0, 1, true +404, car, Perennial, default, 0, 0, 3, true +405, car, Sentinel, default, -1, 0, 3, true +406, mtruck, Dumper, default, -1, 8, 0, true +407, car, Fire Truck, default, 2, 3, 1, true +408, car, Trashmaster, default, 0, 0, 1, true +409, car, Stretch, default, -1, 0, 3, true +410, car, Manana, default, -1, 0, 1, true +411, car, Infernus, default, -1, 0, 1, true +412, car, Voodoo, default, -1, 0, 1, true +413, car, Pony, default, 0, 0, 3, true +414, car, Mule, default, 3, 0, 1, true +415, car, Cheetah, default, 1, 0, 1, true +416, car, Ambulance, default, 1, 2, 3, true +417, heli, Leviathan, default, -1, 0, 1, true +418, car, Moonbeam, default, -1, 0, 3, true +419, car, Esperanto, default, -1, 0, 1, true +420, car, Taxi, default, -1, 32, 3, true +421, car, Washington, default, -1, 0, 3, true +422, car, Bobcat, default, 1, 0, 1, true +423, car, Mr. Whoopee, default, 1, 2, 1, true +424, car, BF Injection, default, 1, 0, 1, false +425, heli, Hunter, default, -1, 0, 0, true +426, car, Premier, default, -1, 0, 3, true +427, car, Enforcer, default, -1, 2, 3, true +428, car, Securicar, default, 1, 0, 3, true +429, car, Banshee, default, -1, 0, 1, true +430, boat, Predator, default, -1, 0, 0, false +431, car, Bus, default, -1, 0, 8, true +432, car, Rhino, default, -1, 1, 0, true +433, car, Barracks, default, 1, 0, 1, true +434, car, Hotknife, default, 0, 0, 1, true +435, trailer, Trailer 1, default, 5, 0, -1, true +436, car, Previon, default, -1, 0, 1, true +437, car, Coach, default, 1, 0, 8, true +438, car, Cabbie, default, -1, 32, 3, true +439, car, Stallion, default, 2, 0, 1, true +440, car, Rumpo, default, 5, 0, 3, true +441, car, RC Bandit, default, -1, 0, 0, false +442, car, Romero, default, 2, 0, 1, true +443, car, Packer, default, -1, 8, 1, true +444, mtruck, Monster 1, default, -1, 0, 1, true +445, car, Admiral, default, -1, 0, 3, true +446, boat, Squalo, default, -1, 0, 0, false +447, heli, Seasparrow, default, -1, 0, 1, true +448, bike, Pizzaboy, default, -1, 0, 0, false +449, train, Tram, default, 3, 0, 1, false +450, trailer, Trailer 2, default, 0, 0, -1, true +451, car, Turismo, default, -1, 0, 1, true +452, boat, Speeder, default, -1, 0, 0, false +453, boat, Reefer, default, 1, 0, 0, false +454, boat, Tropic, default, -1, 0, 0, false +455, car, Flatbed, default, 2, 0, 1, true +456, car, Yankee, default, 3, 0, 1, true +457, car, Caddy, caddy, 5, 0, 1, false +458, car, Solair, default, -1, 0, 3, true +459, car, Berkley's RC Van, default, 0, 0, 3, true +460, plane, Skimmer, default, -1, 0, 1, true +461, bike, PCJ-600, default, -1, 0, 1, false +462, bike, Faggio, default, -1, 0, 1, false +463, bike, Freeway, default, -1, 0, 1, false +464, plane, RC Baron, default, -1, 0, 1, true +465, heli, RC Raider, default, -1, 0, 1, false +466, car, Glendale, default, -1, 0, 3, true +467, car, Oceanic, default, -1, 0, 3, true +468, bike, Sanchez, default, -1, 0, 1, false +469, heli, Sparrow, default, -1, 0, 1, true +470, car, Patriot, default, 2, 0, 3, true +471, quad, Quadbike, default, -1, 0, 1, true +472, boat, Coastguard, default, 2, 0, 0, false +473, boat, Dinghy, default, -1, 0, 0, false +474, car, Hermes, default, -1, 0, 1, true +475, car, Sabre, default, -1, 0, 1, true +476, plane, Rustler, default, -1, 4, 0, true +477, car, ZR-350, default, 0, 0, 1, true +478, car, Walton, default, 2, 0, 1, true +479, car, Regina, default, -1, 0, 3, true +480, car, Comet, default, -1, 0, 1, true +481, bmx, BMX, default, -1, 0, 0, false +482, car, Burrito, default, 0, 0, 3, true +483, car, Camper, default, 1, 0, 1, true +484, boat, Marquis, default, 0, 0, 0, false +485, car, Baggage, default, 2, 0, 0, false +486, car, Dozer, default, -1, 8, 0, false +487, heli, Maverick, default, -1, 0, 3, true +488, heli, News Chopper, default, -1, 0, 1, true +489, car, Rancher, default, -1, 0, 1, true +490, car, FBI Rancher, default, -1, 2, 3, true +491, car, Virgo, default, -1, 0, 1, true +492, car, Greenwood, default, -1, 0, 3, true +493, boat, Jetmax, default, -1, 0, 0, false +494, car, Hotring Racer, default, -1, 0, 1, true +495, car, Sandking, default, -1, 0, 1, true +496, car, Blista Compact, default, -1, 0, 1, true +497, heli, Police Maverick, default, -1, 64, 3, true +498, car, Boxville, default, -1, 0, 3, true +499, car, Benson, default, 3, 0, 1, true +500, car, Mesa, default, 1, 0, 1, true +501, heli, RC Goblin, default, -1, 0, 1, false +502, car, Hotring Racer 3, default, 5, 0, 1, true +503, car, Hotring Racer 2, default, 5, 0, 1, true +504, car, Bloodring Banger, default, 5, 0, 1, true +505, car, Rancher Lure, default, -1, 0, 1, true +506, car, Super GT, default, 0, 0, 1, true +507, car, Elegant, default, -1, 0, 3, true +508, car, Journey, default, -1, 0, 1, true +509, bmx, Bike, default, -1, 0, 0, false +510, bmx, Mountain Bike, default, -1, 0, 0, false +511, plane, Beagle, default, -1, 0, 1, true +512, plane, Cropduster, caddy, -1, 16, 0, true +513, plane, Stuntplane, default, -1, 16, 0, true +514, car, Tanker, default, -1, 0, 1, true +515, car, Roadtrain, default, -1, 0, 1, true +516, car, Nebula, default, -1, 0, 3, true +517, car, Majestic, default, -1, 0, 1, true +518, car, Buccaneer, default, -1, 0, 1, true +519, plane, Shamal, default, -1, 4, 0, true +520, plane, Hydra, default, -1, 12, 0, true +521, bike, FCR-900, default, 4, 0, 1, false +522, bike, NRG-500, nrg, 4, 0, 1, false +523, bike, HPV1000, default, -1, 2, 1, false +524, car, Cement Truck, default, -1, 8, 1, true +525, car, Towtruck, default, -1, 8, 1, true +526, car, Fortune, default, -1, 0, 1, true +527, car, Cadrona, default, -1, 0, 1, true +528, car, FBI Truck, default, -1, 2, 1, true +529, car, Willard, default, -1, 0, 3, true +530, car, Forklift, default, -1, 8, 0, false +531, car, Tractor, default, -1, 8, 0, false +532, car, Combine Harvester, default, -1, 0, 0, true +533, car, Feltzer, default, -1, 0, 1, true +534, car, Remington, default, -1, 0, 1, true +535, car, Slamvan, slamvan, 1, 0, 1, true +536, car, Blade, default, -1, 0, 1, true +537, train, Freight, default, -1, 0, 1, false +538, train, Streak, default, -1, 0, 1, false +539, plane, Vortex, default, -1, 0, 0, true +540, car, Vincent, default, -1, 0, 3, true +541, car, Bullet, default, -1, 0, 1, true +542, car, Clover, default, -1, 0, 1, true +543, car, Sadler, default, 3, 0, 1, true +544, car, Fire Truck Ladder, default, -1, 2, 1, true +545, car, Hustler, default, -1, 0, 1, true +546, car, Intruder, default, -1, 0, 3, true +547, car, Primo, default, -1, 0, 3, true +548, heli, Cargobob, default, -1, 0, 1, true +549, car, Tampa, default, -1, 0, 1, true +550, car, Sunrise, default, -1, 0, 3, true +551, car, Merit, default, -1, 0, 3, true +552, car, Utility Van, default, 1, 0, 1, true +553, plane, Nevada, default, -1, 4, 0, true +554, car, Yosemite, default, -1, 0, 1, true +555, car, Windsor, default, 0, 0, 1, true +556, mtruck, Monster 2, default, 2, 0, 1, true +557, mtruck, Monster 3, default, 1, 0, 1, true +558, car, Uranus, default, -1, 0, 1, true +559, car, Jester, default, -1, 0, 1, true +560, car, Sultan, default, -1, 0, 3, true +561, car, Stratum, default, -1, 0, 3, true +562, car, Elegy, default, -1, 0, 1, true +563, heli, Raindance, default, -1, 0, 1, true +564, car, RC Tiger, default, -1, 0, 0, false +565, car, Flash, default, -1, 0, 1, true +566, car, Tahoma, default, -1, 0, 3, true +567, car, Savanna, default, -1, 0, 3, true +568, car, Bandito, default, -1, 0, 0, false +569, train, Freight Train Flatbed, default, -1, 0, -1, false +570, train, Streak Train Trailer, default, -1, 0, 1, false +571, car, Kart, default, 1, 0, 0, false +572, car, Mower, default, -1, 0, 0, false +573, mtruck, Dune, default, -1, 0, 1, true +574, car, Sweeper, default, -1, 0, 0, true +575, car, Broadway, default, -1, 0, 1, true +576, car, Tornado, default, -1, 0, 1, true +577, plane, AT-400, default, -1, 4, 1, true +578, car, DFT-30, default, -1, 0, 1, true +579, car, Huntley, default, -1, 0, 3, true +580, car, Stafford, default, -1, 0, 3, true +581, bike, BF-400, nrg, 4, 0, 1, false +582, car, Newsvan, default, -1, 0, 3, true +583, car, Tug, default, 1, 0, 0, true +584, trailer, Trailer (Tanker Commando), default, -1, 0, -1, true +585, car, Emperor, default, -1, 0, 3, true +586, bike, Wayfarer, default, -1, 0, 1, false +587, car, Euros, default, -1, 0, 1, true +588, car, Hotdog, default, -1, 0, 1, true +589, car, Club, default, -1, 0, 1, true +590, train, Box Freight, default, -1, 0, -1, false +591, trailer, Trailer 3, default, -1, 0, -1, true +592, plane, Andromada, default, -1, 12, 1, true +593, plane, Dodo, default, -1, 0, 1, true +594, car, RC Cam, default, -1, 0, 1, false +595, boat, Launch, default, 1, 0, 0, false +596, car, Police LS, default, -1, 2, 3, true +597, car, Police SF, default, -1, 2, 3, true +598, car, Police LV, default, -1, 2, 3, true +599, car, Police Ranger, default, -1, 2, 1, true +600, car, Picador, default, 1, 0, 1, true +601, car, S.W.A.T., default, 3, 3, 1, true +602, car, Alpha, default, -1, 0, 1, true +603, car, Phoenix, default, -1, 0, 1, true +604, car, Glendale Damaged, default, -1, 0, 3, true +605, car, Sadler Damaged, default, 3, 0, 1, true +606, trailer, Baggage Trailer (covered), default, -1, 0, -1, true +607, trailer, Baggage Trailer (Uncovered), default, 2, 0, -1, true +608, trailer, Trailer (Stairs), default, -1, 0, -1, true +609, car, Boxville Mission, default, -1, 0, 3, true +610, trailer, Farm Trailer, default, -1, 0, -1, true +611, trailer, Street Clean Trailer, default, -1, 0, -1, true diff --git a/Shared/installer/nightly.nsi b/Shared/installer/nightly.nsi index ceaec98b0e..7854a2a28b 100644 --- a/Shared/installer/nightly.nsi +++ b/Shared/installer/nightly.nsi @@ -842,6 +842,8 @@ SectionGroup /e "$(INST_SEC_SERVER)" SECGSERVER File "${SERVER_FILES_ROOT}\mods\deathmatch\local.conf" File "${SERVER_FILES_ROOT}\mods\deathmatch\editor.conf" File "${SERVER_FILES_ROOT}\mods\deathmatch\vehiclecolors.conf" + File "${SERVER_FILES_ROOT}\mods\deathmatch\vehicles.conf" + File "${SERVER_FILES_ROOT}\mods\deathmatch\handling.conf" !ifndef LIGHTBUILD File "${SERVER_FILES_ROOT}\mods\deathmatch\local.conf" From b7be58e2788969a70078d1ad5502418f56f5d86a Mon Sep 17 00:00:00 2001 From: Uladzislau Nikalayevich Date: Sat, 4 Jun 2022 19:57:37 +0300 Subject: [PATCH 04/51] Restructure configs --- Server/mods/deathmatch/StdInc.h | 3 +- Server/mods/deathmatch/logic/CGame.cpp | 24 +- Server/mods/deathmatch/logic/CGame.h | 2 - .../mods/deathmatch/logic/CHandlingConfig.cpp | 81 ++++ .../mods/deathmatch/logic/CHandlingConfig.h | 17 + .../mods/deathmatch/logic/CVehiclesConfig.cpp | 168 +++++++ .../mods/deathmatch/logic/CVehiclesConfig.h | 21 + .../deathmatch/logic/models/CModelLoader.cpp | 229 +--------- .../deathmatch/logic/models/CModelLoader.h | 12 +- .../deathmatch/logic/models/CModelVehicle.h | 18 +- Server/mods/deathmatch/vehicles.conf | 426 +++++++++--------- 11 files changed, 543 insertions(+), 458 deletions(-) create mode 100644 Server/mods/deathmatch/logic/CHandlingConfig.cpp create mode 100644 Server/mods/deathmatch/logic/CHandlingConfig.h create mode 100644 Server/mods/deathmatch/logic/CVehiclesConfig.cpp create mode 100644 Server/mods/deathmatch/logic/CVehiclesConfig.h diff --git a/Server/mods/deathmatch/StdInc.h b/Server/mods/deathmatch/StdInc.h index f535f41ce6..085a2b3aeb 100644 --- a/Server/mods/deathmatch/StdInc.h +++ b/Server/mods/deathmatch/StdInc.h @@ -300,6 +300,8 @@ struct SAclRequest; #include "logic/CWeaponStatManager.h" #include "logic/CBuildingRemoval.h" #include "logic/CBuildingRemovalManager.h" +#include "CVehiclesConfig.h" +#include "CHandlingConfig.h" #include "CStaticFunctionDefinitions.h" @@ -308,7 +310,6 @@ struct SAclRequest; #include "models/CModelAtomic.h" #include "models/CModelVehicle.h" #include "models/CModelManager.h" -#include "models/CModelLoader.h" #include "models/CModelVehicle.h" // Utility includes diff --git a/Server/mods/deathmatch/logic/CGame.cpp b/Server/mods/deathmatch/logic/CGame.cpp index 8486a78cd9..2bed3bbdff 100644 --- a/Server/mods/deathmatch/logic/CGame.cpp +++ b/Server/mods/deathmatch/logic/CGame.cpp @@ -141,7 +141,6 @@ CGame::CGame() : m_FloodProtect(4, 30000, 30000) // Max of 4 connecti m_pBuildingRemovalManager = NULL; m_pCustomWeaponManager = NULL; m_pFunctionUseLogger = NULL; - m_pModelLoader = NULL; m_pModelManager = NULL; #ifdef WITH_OBJECT_SYNC m_pObjectSync = NULL; @@ -330,7 +329,6 @@ CGame::~CGame() SAFE_DELETE(m_pMasterServerAnnouncer); SAFE_DELETE(m_pASE); SAFE_RELEASE(m_pHqComms); - SAFE_DELETE(m_pModelLoader); SAFE_DELETE(m_pModelManager) CSimControl::Shutdown(); @@ -538,8 +536,6 @@ bool CGame::Start(int iArgumentCount, char* szArguments[]) m_pTrainTrackManager = std::make_shared(); m_pModelManager = new CModelManager(); - m_pModelLoader = new CModelLoader(); - m_pModelLoader->loadDefaultData(); // Parse the commandline if (!m_CommandLineParser.Parse(iArgumentCount, szArguments)) @@ -825,6 +821,26 @@ bool CGame::Start(int iArgumentCount, char* szArguments[]) // Add our builtin events AddBuiltInEvents(); + // Load handling config + const char* strHandlingPath = g_pServerInterface->GetModManager()->GetAbsolutePath("handling.conf"); + CHandlingConfig handlingConfig(strHandlingPath); + if (!handlingConfig.Load()) + { + CLogger::ErrorPrintf("%s", "Loading 'hadling.conf' failed\n"); + return false; + } + + // Load vehicles config + CVehiclesConfig vehiclesConfig; + + const char* strVehiclesPath = g_pServerInterface->GetModManager()->GetAbsolutePath("vehicles.conf"); + vehiclesConfig.SetFileName(strVehiclesPath); + if (!vehiclesConfig.Load()) + { + CLogger::ErrorPrintf("%s", "Loading 'vehicles.conf' failed\n"); + return false; + } + // Load the vehicle colors before the main config strBuffer = g_pServerInterface->GetModManager()->GetAbsolutePath("vehiclecolors.conf"); if (!m_pVehicleManager->GetColorManager()->Load(strBuffer)) diff --git a/Server/mods/deathmatch/logic/CGame.h b/Server/mods/deathmatch/logic/CGame.h index 0ea0f8cada..f860539fb9 100644 --- a/Server/mods/deathmatch/logic/CGame.h +++ b/Server/mods/deathmatch/logic/CGame.h @@ -255,7 +255,6 @@ class CGame CMasterServerAnnouncer* GetMasterServerAnnouncer() { return m_pMasterServerAnnouncer; } SharedUtil::CAsyncTaskScheduler* GetAsyncTaskScheduler() { return m_pAsyncTaskScheduler; } CModelManager* GetModelManager() { return m_pModelManager; } - CModelLoader* GetModelLoader() { return m_pModelLoader; } std::shared_ptr GetTrainTrackManager() { return m_pTrainTrackManager; } @@ -561,7 +560,6 @@ class CGame CLanBroadcast* m_pLanBroadcast; CWaterManager* m_pWaterManager; CModelManager* m_pModelManager; - CModelLoader* m_pModelLoader; CWeaponStatManager* m_pWeaponStatsManager; CBuildingRemovalManager* m_pBuildingRemovalManager; diff --git a/Server/mods/deathmatch/logic/CHandlingConfig.cpp b/Server/mods/deathmatch/logic/CHandlingConfig.cpp new file mode 100644 index 0000000000..2efbe76478 --- /dev/null +++ b/Server/mods/deathmatch/logic/CHandlingConfig.cpp @@ -0,0 +1,81 @@ + + +#include "StdInc.h" +#include +#include + +CHandlingConfig::CHandlingConfig(std::string_view strPath) +{ + m_strPacth = strPath; +} + +bool CHandlingConfig::Load() +{ + std::ifstream pFile(m_strPacth.data(), std::ifstream::in); + if (pFile.is_open()) + { + std::string line; + while (std::getline(pFile, line)) + { + if (line[0] != '#') + { + std::vector splittedParams; + + const char* delimiters = ","; + char* token = std::strtok(line.data(), delimiters); + while (token) + { + splittedParams.push_back(token); + token = std::strtok(nullptr, delimiters); + } + + LoadHandlingParams(splittedParams); + } + } + pFile.close(); + } + return true; +} + +void CHandlingConfig::LoadHandlingParams(std::vector lineParams) +{ + tHandlingData handling; + uint32_t uiModelID = atoi(lineParams[0]); + handling.iVehicleID = uiModelID; + handling.fMass = atof(lineParams[1]); + handling.fTurnMass = atof(lineParams[2]); + handling.fDragCoeff = atof(lineParams[3]); + handling.vecCenterOfMass = CVector(atof(lineParams[4]), atof(lineParams[5]), atof(lineParams[6])); + handling.uiPercentSubmerged = atoi(lineParams[7]); + handling.fTractionMultiplier = atof(lineParams[8]); + handling.Transmission.ucDriveType = lineParams[9][0]; + handling.Transmission.ucEngineType = lineParams[10][0]; + handling.Transmission.ucNumberOfGears = atoi(lineParams[11]); + handling.Transmission.uiHandlingFlags = atoi(lineParams[12]); + handling.Transmission.fEngineAcceleration = atof(lineParams[13]); + handling.Transmission.fEngineInertia = atof(lineParams[14]); + handling.Transmission.fMaxVelocity = atof(lineParams[15]); + handling.fBrakeDeceleration = atof(lineParams[16]); + handling.fBrakeBias = atof(lineParams[17]); + handling.bABS = lineParams[18][0] == '0'; + handling.fSteeringLock = atof(lineParams[19]); + handling.fTractionLoss = atof(lineParams[20]); + handling.fTractionBias = atof(lineParams[21]); + handling.fSuspensionForceLevel = atof(lineParams[22]); + handling.fSuspensionDamping = atof(lineParams[23]); + handling.fSuspensionHighSpdDamping = atof(lineParams[24]); + handling.fSuspensionUpperLimit = atof(lineParams[25]); + handling.fSuspensionLowerLimit = atof(lineParams[26]); + handling.fSuspensionFrontRearBias = atof(lineParams[27]); + handling.fSuspensionAntiDiveMultiplier = atof(lineParams[28]); + handling.fCollisionDamageMultiplier = atof(lineParams[29]); + handling.uiModelFlags = atoi(lineParams[30]); + handling.uiHandlingFlags = atoi(lineParams[31]); + handling.fSeatOffsetDistance = atof(lineParams[32]); + handling.uiMonetary = atoi(lineParams[33]); + handling.ucHeadLight = atoi(lineParams[34]); + handling.ucTailLight = atoi(lineParams[35]); + handling.ucAnimGroup = atoi(lineParams[36]); + + g_pGame->GetHandlingManager()->RehisterHandling(uiModelID, handling); +} diff --git a/Server/mods/deathmatch/logic/CHandlingConfig.h b/Server/mods/deathmatch/logic/CHandlingConfig.h new file mode 100644 index 0000000000..1711162434 --- /dev/null +++ b/Server/mods/deathmatch/logic/CHandlingConfig.h @@ -0,0 +1,17 @@ + +#pragma once + +#include "StdInc.h" + +class CHandlingConfig +{ +public: + CHandlingConfig(std::string_view strPath); + + bool Load(); + +private: + void LoadHandlingParams(std::vector lineParams); + + std::string_view m_strPacth; +}; diff --git a/Server/mods/deathmatch/logic/CVehiclesConfig.cpp b/Server/mods/deathmatch/logic/CVehiclesConfig.cpp new file mode 100644 index 0000000000..a47486dc8e --- /dev/null +++ b/Server/mods/deathmatch/logic/CVehiclesConfig.cpp @@ -0,0 +1,168 @@ +#include "StdInc.h" + +CVehiclesConfig::CVehiclesConfig() : CXMLConfig(nullptr) +{ + m_pRootNode = nullptr; +} + +bool CVehiclesConfig::Load() +{ + // Eventually destroy the previously loaded xml + if (m_pFile) + { + delete m_pFile; + m_pFile = NULL; + } + + // Load the XML + m_pFile = g_pServerInterface->GetXML()->CreateXML(GetFileName().c_str()); + if (!m_pFile) + { + CLogger::ErrorPrintf("Error loading config file\n"); + return false; + } + + // Parse it + if (!m_pFile->Parse()) + { + SString strParseErrorDesc; + m_pFile->GetLastError(strParseErrorDesc); + CLogger::ErrorPrintf("Error parsing %s - %s\n", *ExtractFilename(GetFileName()), *strParseErrorDesc); + return false; + } + + // Grab the XML root node + m_pRootNode = m_pFile->GetRootNode(); + if (!m_pRootNode) + { + CLogger::ErrorPrintf("Missing root node ('config')\n"); + return false; + } + + RegisterVehicles(); + return true; +} + +bool CVehiclesConfig::Save() +{ + // Not implement + return false; +} + +void CVehiclesConfig::RegisterVehicles() +{ + for (auto it = m_pRootNode->ChildrenBegin(); it != m_pRootNode->ChildrenEnd(); ++it) + { + CXMLNode* pNode = *it; + CXMLAttributes &pAttibites = pNode->GetAttributes(); + + CXMLAttribute* pAttribute; + uint32_t uiModelID; + SModelVehicleDefs* sModelData = new SModelVehicleDefs(); + const char* strType; + const char* strVarianType; + + pAttribute = pAttibites.Find("modelID"); + if (pAttribute) + uiModelID = atoi(pAttribute->GetValue().c_str()); + else + continue; + + pAttribute = pAttibites.Find("name"); + if (pAttribute) + sModelData->strVehicleName = pAttribute->GetValue().c_str(); + + pAttribute = pAttibites.Find("type"); + if (pAttribute) + strType = pAttribute->GetValue().c_str(); + + pAttribute = pAttibites.Find("variationType"); + if (pAttribute) + strVarianType = pAttribute->GetValue().c_str(); + + pAttribute = pAttibites.Find("variantsCount"); + if (pAttribute) + sModelData->uiVariantsCount = atoi(pAttribute->GetValue().c_str()); + + pAttribute = pAttibites.Find("attributes"); + if (pAttribute) + sModelData->cAttributes = atoi(pAttribute->GetValue().c_str()); + + pAttribute = pAttibites.Find("maxPassngers"); + if (pAttribute) + sModelData->uiMaxPassengers = atoi(pAttribute->GetValue().c_str()); + + pAttribute = pAttibites.Find("hasDoors"); + if (pAttribute) + sModelData->bHasDoors = strcmp(pAttribute->GetValue().c_str(), "true"); + + + if (strcmp(strType, "car") == 0) + { + sModelData->eVehicleType = eVehicleType::CAR; + } + else if (strcmp(strType, "mtruck") == 0) + { + sModelData->eVehicleType = eVehicleType::MONSTERTRUCK; + } + else if (strcmp(strType, "heli") == 0) + { + sModelData->eVehicleType = eVehicleType::HELI; + } + else if (strcmp(strType, "boat") == 0) + { + sModelData->eVehicleType = eVehicleType::BOAT; + } + else if (strcmp(strType, "trailer") == 0) + { + sModelData->eVehicleType = eVehicleType::TRAILER; + } + else if (strcmp(strType, "train") == 0) + { + sModelData->eVehicleType = eVehicleType::TRAIN; + } + else if (strcmp(strType, "plane") == 0) + { + sModelData->eVehicleType = eVehicleType::PLANE; + } + else if (strcmp(strType, "bike") == 0) + { + sModelData->eVehicleType = eVehicleType::BIKE; + } + else if (strcmp(strType, "quad") == 0) + { + sModelData->eVehicleType = eVehicleType::QUADBIKE; + } + else if (strcmp(strType, "bmx") == 0) + { + sModelData->eVehicleType = eVehicleType::BMX; + } + + else if (strcmp(strVarianType, "nrg") == 0) + { + sModelData->eVehicleVariationType = eVehicleVariationType::NRG; + } + else if (strcmp(strVarianType, "caddy") == 0) + { + sModelData->eVehicleVariationType = eVehicleVariationType::CADDY; + } + else if (strcmp(strVarianType, "slamvan") == 0) + { + sModelData->eVehicleVariationType = eVehicleVariationType::SLAMVAN; + } + else + { + sModelData->eVehicleVariationType = eVehicleVariationType::DEFAULT; + } + + // + Colors + + const CHandlingEntry* pHandling = g_pGame->GetHandlingManager()->GetOriginalHandlingData((eVehicleTypes)uiModelID); + sModelData->pHandling = pHandling; + + CModelVehicle* pModelData = new CModelVehicle(uiModelID, sModelData); + + g_pGame->GetModelManager()->RegisterModel(pModelData); + } +} + diff --git a/Server/mods/deathmatch/logic/CVehiclesConfig.h b/Server/mods/deathmatch/logic/CVehiclesConfig.h new file mode 100644 index 0000000000..c8e0e87293 --- /dev/null +++ b/Server/mods/deathmatch/logic/CVehiclesConfig.h @@ -0,0 +1,21 @@ + +class CVehiclesConfig; + +#pragma once + +#include "StdInc.h" + +class CVehiclesConfig : public CXMLConfig +{ +public: + CVehiclesConfig(); + + // Inherited via CXMLConfig + virtual bool Load() override; + virtual bool Save() override; + +private: + void RegisterVehicles(); + + CXMLNode* m_pRootNode; +}; diff --git a/Server/mods/deathmatch/logic/models/CModelLoader.cpp b/Server/mods/deathmatch/logic/models/CModelLoader.cpp index 3287a9ea8f..3e10677459 100644 --- a/Server/mods/deathmatch/logic/models/CModelLoader.cpp +++ b/Server/mods/deathmatch/logic/models/CModelLoader.cpp @@ -22,128 +22,20 @@ CModelLoader::CModelLoader() CModelLoader::~CModelLoader() { -} - - // Some shitcode to regen vehicles.conf -void genVehicleConf() -{ - filesystem::path modPath = filesystem::path(g_pServerInterface->GetServerModPath()); - auto path = modPath / "vehicles_new.conf"; - - std::ofstream pFile(path.c_str(), std::ifstream::out); - if (pFile.is_open()) - { - for (uint32_t uiModelID = 400; uiModelID < 612; uiModelID++) - { - auto pModel = g_pGame->GetModelManager()->GetVehicleModel(uiModelID); - - const char* strVehicleName = CVehicleNames::GetVehicleName(uiModelID); - char* strType; - int32_t iVariantsCount = pModel->GetVariantsCount(); - char cAttributes = pModel->GetAttributes(); - int32_t iMaxPassengers = pModel->GetPassengesCount(); - char* bHasDoors = g_pGame->GetVehicleManager()->HasDoors(uiModelID) ? "true" : "false"; - char* modelVarianType; - - - switch (pModel->GetVehicleType()) - { - case eVehicleType::CAR: - strType = "car"; - break; - case eVehicleType::MONSTERTRUCK: - strType = "mtruck"; - break; - case - eVehicleType::HELI: - strType = "heli"; - break; - case eVehicleType::BOAT: - strType = "boat"; - break; - case - eVehicleType::TRAILER: - strType = "trailer"; - break; - case eVehicleType::TRAIN: - strType = "train"; - break; - case - eVehicleType::PLANE: - strType = "plane"; - break; - case eVehicleType::BIKE: - strType = "bike"; - break; - case - eVehicleType::QUADBIKE: - strType = "quad"; - break; - case eVehicleType::BMX: - strType = "bmx"; - break; - - default: - break; - } - - if (iMaxPassengers == 255) - { - iMaxPassengers = -1; - } - - if (iVariantsCount == 255) - { - iVariantsCount = -1; - } - - if (uiModelID == 457 || uiModelID == 512) - { - modelVarianType = "caddy"; - } - // Slamvan - else if (uiModelID == 535) - { - modelVarianType = "slamvan"; - } - else if (uiModelID == 522 || uiModelID == 581) - { - modelVarianType = "nrg"; - } - else - { - modelVarianType = "default"; - } - - pFile << std::to_string(uiModelID) << ", " << strType << ", " << strVehicleName << ", " << modelVarianType << ", " - << std::to_string(iVariantsCount) << ", " << std::to_string(cAttributes) << ", " << std::to_string(iMaxPassengers) << ", " << bHasDoors - << "\n"; - } - - pFile.close(); - } - } void CModelLoader::loadDefaultData() { - filesystem::path modPath = filesystem::path(g_pServerInterface->GetServerModPath()); - - loadObjectDefs(modPath / "objects.conf"); - loadVehicleHandling(modPath / "handling.conf"); - loadVehicleDefs(modPath / "vehicles.conf"); + loadObjectDefs("objects.conf"); + loadVehicleHandling("handling.conf"); } -void CModelLoader::unloadDefaultData() -{ - -} -void CModelLoader::loadVehicleHandling(std::string_view strData) +void CModelLoader::loadVehicleHandling(const char* strPath) { } -void CModelLoader::loadObjectDefs(const std::filesystem::path path) +void CModelLoader::loadObjectDefs(const char* strPath) { auto parseLineFunction = [](std::vector lineParams) { @@ -156,11 +48,9 @@ void CModelLoader::loadObjectDefs(const std::filesystem::path path) //CModelAtomic* pNewObjectModel = new CModelAtomic(*strModelName, *strTextureName, iDrawDistance, iFlags); //g_pGame->GetModelManager()->RegisterModel(pNewObjectModel); }; - - parseConfigCSV(path, parseLineFunction); } -void CModelLoader::loadVehicleHandling(const std::filesystem::path path) +void CModelLoader::loadVehicleHandling(const char* strPath) { auto parseLineFunction = [](std::vector lineParams) { tHandlingData handling; @@ -203,116 +93,9 @@ void CModelLoader::loadVehicleHandling(const std::filesystem::path path) g_pGame->GetHandlingManager()->RehisterHandling(uiModelID, handling); }; - parseConfigCSV(path, parseLineFunction); } -void CModelLoader::loadVehicleDefs(const std::filesystem::path path) +void CModelLoader::loadVehicleDefs(const char* strPath) { - auto parseLineFunction = [](std::vector lineParams) { - SModelVehicleDefs* sModelData = new SModelVehicleDefs(); - - uint32_t uiModelID = atoi(lineParams[0]); - const char* strType = lineParams[1]; - sModelData->strVehicleName = lineParams[2]; - const char* strVarianType = lineParams[3]; - sModelData->uiVariantsCount = atoi(lineParams[4]); - sModelData->cAttributes = atoi(lineParams[5]); - sModelData->uiMaxPassengers = atoi(lineParams[6]); - sModelData->bHasDoors = strcmp(lineParams[7], "true") == 0; - - if (strcmp(strType, "car") == 0) - { - sModelData->eVehicleType = eVehicleType::CAR; - } - else if (strcmp(strType, "mtruck") == 0) - { - sModelData->eVehicleType = eVehicleType::MONSTERTRUCK; - } - else if (strcmp(strType, "heli") == 0) - { - sModelData->eVehicleType = eVehicleType::HELI; - } - else if (strcmp(strType, "boat") == 0) - { - sModelData->eVehicleType = eVehicleType::BOAT; - } - else if (strcmp(strType, "trailer") == 0) - { - sModelData->eVehicleType = eVehicleType::TRAILER; - } - else if (strcmp(strType, "train") == 0) - { - sModelData->eVehicleType = eVehicleType::TRAIN; - } - else if (strcmp(strType, "plane") == 0) - { - sModelData->eVehicleType = eVehicleType::PLANE; - } - else if (strcmp(strType, "bike") == 0) - { - sModelData->eVehicleType = eVehicleType::BIKE; - } - else if (strcmp(strType, "quad") == 0) - { - sModelData->eVehicleType = eVehicleType::QUADBIKE; - } - else if (strcmp(strType, "bmx") == 0) - { - sModelData->eVehicleType = eVehicleType::BMX; - } - - else if (strcmp(strVarianType, "nrg") == 0) - { - sModelData->eVehicleVariationType = eVehicleVariationType::NRG; - } - else if (strcmp(strVarianType, "caddy") == 0) - { - sModelData->eVehicleVariationType = eVehicleVariationType::CADDY; - } - else if (strcmp(strVarianType, "slamvan") == 0) - { - sModelData->eVehicleVariationType = eVehicleVariationType::SLAMVAN; - } - else - { - sModelData->eVehicleVariationType = eVehicleVariationType::DEFAULT; - } - - const CHandlingEntry* pHandling = g_pGame->GetHandlingManager()->GetOriginalHandlingData((eVehicleTypes)uiModelID); - - sModelData->pHandling = pHandling; - - CModelVehicle* pModelData = new CModelVehicle(uiModelID, sModelData); - - g_pGame->GetModelManager()->RegisterModel(pModelData); - }; - - parseConfigCSV(path, parseLineFunction); -} - -void CModelLoader::parseConfigCSV(const std::filesystem::path path, std::function lineParams)> parseLineFun) -{ - std::ifstream pFile(path.c_str(), std::ifstream::in); - if (pFile.is_open()) - { - std::string line; - while (std::getline(pFile, line)) - { - if (line[0] != '#') - { - std::vector splittedParams; - - const char* delimiters = ","; - char* token = std::strtok(line.data(), delimiters); - while (token) - { - splittedParams.push_back(token); - token = std::strtok(nullptr, delimiters); - } - parseLineFun(splittedParams); - } - } - pFile.close(); - } } diff --git a/Server/mods/deathmatch/logic/models/CModelLoader.h b/Server/mods/deathmatch/logic/models/CModelLoader.h index d47c5aee8a..cee9249a37 100644 --- a/Server/mods/deathmatch/logic/models/CModelLoader.h +++ b/Server/mods/deathmatch/logic/models/CModelLoader.h @@ -21,13 +21,11 @@ class CModelLoader ~CModelLoader(); void loadDefaultData(); - void unloadDefaultData(); - - void loadVehicleHandling(std::string_view strData); - void loadObjectDefs(const std::filesystem::path path); - void loadVehicleDefs(const std::filesystem::path path); - void loadVehicleHandling(const std::filesystem::path path); private: - void parseConfigCSV(const std::filesystem::path path, std::function lineParams)> parseLineFun); + void loadVehicleHandling(const char* strPath); + void loadObjectDefs(const char* strPath); + void loadVehicleDefs(const char* strPath); + void loadVehicleHandling(const char* strPath); + }; diff --git a/Server/mods/deathmatch/logic/models/CModelVehicle.h b/Server/mods/deathmatch/logic/models/CModelVehicle.h index bde9795a6e..86199edaf7 100644 --- a/Server/mods/deathmatch/logic/models/CModelVehicle.h +++ b/Server/mods/deathmatch/logic/models/CModelVehicle.h @@ -23,15 +23,15 @@ enum class eVehicleVariationType struct SModelVehicleDefs { - uint8_t uiMaxPassengers; - uint8_t uiVariantsCount; - eVehicleType eVehicleType; - uint8_t cAttributes; - CVehicleColor vehicleColors; - bool bHasDoors; - const CHandlingEntry* pHandling; - const char* strVehicleName; - eVehicleVariationType eVehicleVariationType; + uint8_t uiMaxPassengers = 0; + uint8_t uiVariantsCount = 0; + eVehicleType eVehicleType = eVehicleType::CAR; + uint8_t cAttributes = 0; + bool bHasDoors = true; + const CHandlingEntry* pHandling = nullptr; + const char* strVehicleName = "NoName"; + eVehicleVariationType eVehicleVariationType = eVehicleVariationType::DEFAULT; + CVehicleColor vehicleColors; }; class CModelVehicle : public CModelBase diff --git a/Server/mods/deathmatch/vehicles.conf b/Server/mods/deathmatch/vehicles.conf index 80bc00c5b2..b810684546 100644 --- a/Server/mods/deathmatch/vehicles.conf +++ b/Server/mods/deathmatch/vehicles.conf @@ -1,212 +1,214 @@ -400, car, Landstalker, default, -1, 0, 3, true -401, car, Bravura, default, -1, 0, 1, true -402, car, Buffalo, default, -1, 0, 1, true -403, car, Linerunner, default, -1, 0, 1, true -404, car, Perennial, default, 0, 0, 3, true -405, car, Sentinel, default, -1, 0, 3, true -406, mtruck, Dumper, default, -1, 8, 0, true -407, car, Fire Truck, default, 2, 3, 1, true -408, car, Trashmaster, default, 0, 0, 1, true -409, car, Stretch, default, -1, 0, 3, true -410, car, Manana, default, -1, 0, 1, true -411, car, Infernus, default, -1, 0, 1, true -412, car, Voodoo, default, -1, 0, 1, true -413, car, Pony, default, 0, 0, 3, true -414, car, Mule, default, 3, 0, 1, true -415, car, Cheetah, default, 1, 0, 1, true -416, car, Ambulance, default, 1, 2, 3, true -417, heli, Leviathan, default, -1, 0, 1, true -418, car, Moonbeam, default, -1, 0, 3, true -419, car, Esperanto, default, -1, 0, 1, true -420, car, Taxi, default, -1, 32, 3, true -421, car, Washington, default, -1, 0, 3, true -422, car, Bobcat, default, 1, 0, 1, true -423, car, Mr. Whoopee, default, 1, 2, 1, true -424, car, BF Injection, default, 1, 0, 1, false -425, heli, Hunter, default, -1, 0, 0, true -426, car, Premier, default, -1, 0, 3, true -427, car, Enforcer, default, -1, 2, 3, true -428, car, Securicar, default, 1, 0, 3, true -429, car, Banshee, default, -1, 0, 1, true -430, boat, Predator, default, -1, 0, 0, false -431, car, Bus, default, -1, 0, 8, true -432, car, Rhino, default, -1, 1, 0, true -433, car, Barracks, default, 1, 0, 1, true -434, car, Hotknife, default, 0, 0, 1, true -435, trailer, Trailer 1, default, 5, 0, -1, true -436, car, Previon, default, -1, 0, 1, true -437, car, Coach, default, 1, 0, 8, true -438, car, Cabbie, default, -1, 32, 3, true -439, car, Stallion, default, 2, 0, 1, true -440, car, Rumpo, default, 5, 0, 3, true -441, car, RC Bandit, default, -1, 0, 0, false -442, car, Romero, default, 2, 0, 1, true -443, car, Packer, default, -1, 8, 1, true -444, mtruck, Monster 1, default, -1, 0, 1, true -445, car, Admiral, default, -1, 0, 3, true -446, boat, Squalo, default, -1, 0, 0, false -447, heli, Seasparrow, default, -1, 0, 1, true -448, bike, Pizzaboy, default, -1, 0, 0, false -449, train, Tram, default, 3, 0, 1, false -450, trailer, Trailer 2, default, 0, 0, -1, true -451, car, Turismo, default, -1, 0, 1, true -452, boat, Speeder, default, -1, 0, 0, false -453, boat, Reefer, default, 1, 0, 0, false -454, boat, Tropic, default, -1, 0, 0, false -455, car, Flatbed, default, 2, 0, 1, true -456, car, Yankee, default, 3, 0, 1, true -457, car, Caddy, caddy, 5, 0, 1, false -458, car, Solair, default, -1, 0, 3, true -459, car, Berkley's RC Van, default, 0, 0, 3, true -460, plane, Skimmer, default, -1, 0, 1, true -461, bike, PCJ-600, default, -1, 0, 1, false -462, bike, Faggio, default, -1, 0, 1, false -463, bike, Freeway, default, -1, 0, 1, false -464, plane, RC Baron, default, -1, 0, 1, true -465, heli, RC Raider, default, -1, 0, 1, false -466, car, Glendale, default, -1, 0, 3, true -467, car, Oceanic, default, -1, 0, 3, true -468, bike, Sanchez, default, -1, 0, 1, false -469, heli, Sparrow, default, -1, 0, 1, true -470, car, Patriot, default, 2, 0, 3, true -471, quad, Quadbike, default, -1, 0, 1, true -472, boat, Coastguard, default, 2, 0, 0, false -473, boat, Dinghy, default, -1, 0, 0, false -474, car, Hermes, default, -1, 0, 1, true -475, car, Sabre, default, -1, 0, 1, true -476, plane, Rustler, default, -1, 4, 0, true -477, car, ZR-350, default, 0, 0, 1, true -478, car, Walton, default, 2, 0, 1, true -479, car, Regina, default, -1, 0, 3, true -480, car, Comet, default, -1, 0, 1, true -481, bmx, BMX, default, -1, 0, 0, false -482, car, Burrito, default, 0, 0, 3, true -483, car, Camper, default, 1, 0, 1, true -484, boat, Marquis, default, 0, 0, 0, false -485, car, Baggage, default, 2, 0, 0, false -486, car, Dozer, default, -1, 8, 0, false -487, heli, Maverick, default, -1, 0, 3, true -488, heli, News Chopper, default, -1, 0, 1, true -489, car, Rancher, default, -1, 0, 1, true -490, car, FBI Rancher, default, -1, 2, 3, true -491, car, Virgo, default, -1, 0, 1, true -492, car, Greenwood, default, -1, 0, 3, true -493, boat, Jetmax, default, -1, 0, 0, false -494, car, Hotring Racer, default, -1, 0, 1, true -495, car, Sandking, default, -1, 0, 1, true -496, car, Blista Compact, default, -1, 0, 1, true -497, heli, Police Maverick, default, -1, 64, 3, true -498, car, Boxville, default, -1, 0, 3, true -499, car, Benson, default, 3, 0, 1, true -500, car, Mesa, default, 1, 0, 1, true -501, heli, RC Goblin, default, -1, 0, 1, false -502, car, Hotring Racer 3, default, 5, 0, 1, true -503, car, Hotring Racer 2, default, 5, 0, 1, true -504, car, Bloodring Banger, default, 5, 0, 1, true -505, car, Rancher Lure, default, -1, 0, 1, true -506, car, Super GT, default, 0, 0, 1, true -507, car, Elegant, default, -1, 0, 3, true -508, car, Journey, default, -1, 0, 1, true -509, bmx, Bike, default, -1, 0, 0, false -510, bmx, Mountain Bike, default, -1, 0, 0, false -511, plane, Beagle, default, -1, 0, 1, true -512, plane, Cropduster, caddy, -1, 16, 0, true -513, plane, Stuntplane, default, -1, 16, 0, true -514, car, Tanker, default, -1, 0, 1, true -515, car, Roadtrain, default, -1, 0, 1, true -516, car, Nebula, default, -1, 0, 3, true -517, car, Majestic, default, -1, 0, 1, true -518, car, Buccaneer, default, -1, 0, 1, true -519, plane, Shamal, default, -1, 4, 0, true -520, plane, Hydra, default, -1, 12, 0, true -521, bike, FCR-900, default, 4, 0, 1, false -522, bike, NRG-500, nrg, 4, 0, 1, false -523, bike, HPV1000, default, -1, 2, 1, false -524, car, Cement Truck, default, -1, 8, 1, true -525, car, Towtruck, default, -1, 8, 1, true -526, car, Fortune, default, -1, 0, 1, true -527, car, Cadrona, default, -1, 0, 1, true -528, car, FBI Truck, default, -1, 2, 1, true -529, car, Willard, default, -1, 0, 3, true -530, car, Forklift, default, -1, 8, 0, false -531, car, Tractor, default, -1, 8, 0, false -532, car, Combine Harvester, default, -1, 0, 0, true -533, car, Feltzer, default, -1, 0, 1, true -534, car, Remington, default, -1, 0, 1, true -535, car, Slamvan, slamvan, 1, 0, 1, true -536, car, Blade, default, -1, 0, 1, true -537, train, Freight, default, -1, 0, 1, false -538, train, Streak, default, -1, 0, 1, false -539, plane, Vortex, default, -1, 0, 0, true -540, car, Vincent, default, -1, 0, 3, true -541, car, Bullet, default, -1, 0, 1, true -542, car, Clover, default, -1, 0, 1, true -543, car, Sadler, default, 3, 0, 1, true -544, car, Fire Truck Ladder, default, -1, 2, 1, true -545, car, Hustler, default, -1, 0, 1, true -546, car, Intruder, default, -1, 0, 3, true -547, car, Primo, default, -1, 0, 3, true -548, heli, Cargobob, default, -1, 0, 1, true -549, car, Tampa, default, -1, 0, 1, true -550, car, Sunrise, default, -1, 0, 3, true -551, car, Merit, default, -1, 0, 3, true -552, car, Utility Van, default, 1, 0, 1, true -553, plane, Nevada, default, -1, 4, 0, true -554, car, Yosemite, default, -1, 0, 1, true -555, car, Windsor, default, 0, 0, 1, true -556, mtruck, Monster 2, default, 2, 0, 1, true -557, mtruck, Monster 3, default, 1, 0, 1, true -558, car, Uranus, default, -1, 0, 1, true -559, car, Jester, default, -1, 0, 1, true -560, car, Sultan, default, -1, 0, 3, true -561, car, Stratum, default, -1, 0, 3, true -562, car, Elegy, default, -1, 0, 1, true -563, heli, Raindance, default, -1, 0, 1, true -564, car, RC Tiger, default, -1, 0, 0, false -565, car, Flash, default, -1, 0, 1, true -566, car, Tahoma, default, -1, 0, 3, true -567, car, Savanna, default, -1, 0, 3, true -568, car, Bandito, default, -1, 0, 0, false -569, train, Freight Train Flatbed, default, -1, 0, -1, false -570, train, Streak Train Trailer, default, -1, 0, 1, false -571, car, Kart, default, 1, 0, 0, false -572, car, Mower, default, -1, 0, 0, false -573, mtruck, Dune, default, -1, 0, 1, true -574, car, Sweeper, default, -1, 0, 0, true -575, car, Broadway, default, -1, 0, 1, true -576, car, Tornado, default, -1, 0, 1, true -577, plane, AT-400, default, -1, 4, 1, true -578, car, DFT-30, default, -1, 0, 1, true -579, car, Huntley, default, -1, 0, 3, true -580, car, Stafford, default, -1, 0, 3, true -581, bike, BF-400, nrg, 4, 0, 1, false -582, car, Newsvan, default, -1, 0, 3, true -583, car, Tug, default, 1, 0, 0, true -584, trailer, Trailer (Tanker Commando), default, -1, 0, -1, true -585, car, Emperor, default, -1, 0, 3, true -586, bike, Wayfarer, default, -1, 0, 1, false -587, car, Euros, default, -1, 0, 1, true -588, car, Hotdog, default, -1, 0, 1, true -589, car, Club, default, -1, 0, 1, true -590, train, Box Freight, default, -1, 0, -1, false -591, trailer, Trailer 3, default, -1, 0, -1, true -592, plane, Andromada, default, -1, 12, 1, true -593, plane, Dodo, default, -1, 0, 1, true -594, car, RC Cam, default, -1, 0, 1, false -595, boat, Launch, default, 1, 0, 0, false -596, car, Police LS, default, -1, 2, 3, true -597, car, Police SF, default, -1, 2, 3, true -598, car, Police LV, default, -1, 2, 3, true -599, car, Police Ranger, default, -1, 2, 1, true -600, car, Picador, default, 1, 0, 1, true -601, car, S.W.A.T., default, 3, 3, 1, true -602, car, Alpha, default, -1, 0, 1, true -603, car, Phoenix, default, -1, 0, 1, true -604, car, Glendale Damaged, default, -1, 0, 3, true -605, car, Sadler Damaged, default, 3, 0, 1, true -606, trailer, Baggage Trailer (covered), default, -1, 0, -1, true -607, trailer, Baggage Trailer (Uncovered), default, 2, 0, -1, true -608, trailer, Trailer (Stairs), default, -1, 0, -1, true -609, car, Boxville Mission, default, -1, 0, 3, true -610, trailer, Farm Trailer, default, -1, 0, -1, true -611, trailer, Street Clean Trailer, default, -1, 0, -1, true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 231ca9028b326c20046c742da60f4079c866b811 Mon Sep 17 00:00:00 2001 From: Uladzislau Nikalayevich Date: Sun, 5 Jun 2022 07:32:00 +0300 Subject: [PATCH 05/51] Fix dependencies --- Server/mods/deathmatch/logic/CGame.cpp | 29 +-- .../mods/deathmatch/logic/CHandlingConfig.cpp | 16 +- .../deathmatch/logic/CHandlingManager.cpp | 44 ----- .../mods/deathmatch/logic/CHandlingManager.h | 15 -- .../logic/CStaticFunctionDefinitions.cpp | 172 ++++++++++-------- Server/mods/deathmatch/logic/CVehicle.cpp | 5 +- ...lorManager.cpp => CVehicleColorConfig.cpp} | 80 ++------ .../deathmatch/logic/CVehicleColorConfig.h | 20 ++ .../deathmatch/logic/CVehicleColorManager.h | 41 ----- .../mods/deathmatch/logic/CVehicleColors.cpp | 31 ++++ Server/mods/deathmatch/logic/CVehicleColors.h | 15 ++ .../mods/deathmatch/logic/CVehicleManager.cpp | 57 +----- .../mods/deathmatch/logic/CVehicleManager.h | 8 - .../mods/deathmatch/logic/CVehiclesConfig.cpp | 15 +- .../mods/deathmatch/logic/CVehiclesConfig.h | 3 +- .../mods/deathmatch/logic/lua/CLuaManager.cpp | 1 + .../logic/luadefs/CLuaHandlingDefs.cpp | 13 +- .../logic/luadefs/CLuaModelDefs.cpp | 11 ++ .../deathmatch/logic/models/CModelAtomic.cpp | 5 +- .../deathmatch/logic/models/CModelAtomic.h | 2 + .../deathmatch/logic/models/CModelBase.cpp | 10 +- .../mods/deathmatch/logic/models/CModelBase.h | 10 +- .../deathmatch/logic/models/CModelLoader.cpp | 101 ---------- .../deathmatch/logic/models/CModelLoader.h | 31 ---- .../deathmatch/logic/models/CModelManager.cpp | 50 +---- .../deathmatch/logic/models/CModelManager.h | 11 +- .../deathmatch/logic/models/CModelVehicle.cpp | 50 ++++- .../deathmatch/logic/models/CModelVehicle.h | 40 ++-- .../logic/packets/CEntityAddPacket.cpp | 5 +- .../packets/CPlayerJoinCompletePacket.cpp | 1 + 30 files changed, 333 insertions(+), 559 deletions(-) rename Server/mods/deathmatch/logic/{CVehicleColorManager.cpp => CVehicleColorConfig.cpp} (62%) create mode 100644 Server/mods/deathmatch/logic/CVehicleColorConfig.h delete mode 100644 Server/mods/deathmatch/logic/CVehicleColorManager.h create mode 100644 Server/mods/deathmatch/logic/CVehicleColors.cpp create mode 100644 Server/mods/deathmatch/logic/CVehicleColors.h delete mode 100644 Server/mods/deathmatch/logic/models/CModelLoader.cpp delete mode 100644 Server/mods/deathmatch/logic/models/CModelLoader.h diff --git a/Server/mods/deathmatch/logic/CGame.cpp b/Server/mods/deathmatch/logic/CGame.cpp index abea042281..77d16606d6 100644 --- a/Server/mods/deathmatch/logic/CGame.cpp +++ b/Server/mods/deathmatch/logic/CGame.cpp @@ -41,6 +41,10 @@ #include "CScriptDebugging.h" #include "CBandwidthSettings.h" #include "CMainConfig.h" +#include "CVehiclesConfig.h" +#include "CHandlingConfig.h" +#include "CVehicleColorConfig.h" +#include "models/CModelManager.h" #include "CUnoccupiedVehicleSync.h" #include "CRegistryManager.h" #include "CLatentTransferManager.h" @@ -886,15 +890,6 @@ bool CGame::Start(int iArgumentCount, char* szArguments[]) // Add our builtin events AddBuiltInEvents(); - // Load handling config - const char* strHandlingPath = g_pServerInterface->GetModManager()->GetAbsolutePath("handling.conf"); - CHandlingConfig handlingConfig(strHandlingPath); - if (!handlingConfig.Load()) - { - CLogger::ErrorPrintf("%s", "Loading 'hadling.conf' failed\n"); - return false; - } - // Load vehicles config CVehiclesConfig vehiclesConfig; @@ -906,14 +901,24 @@ bool CGame::Start(int iArgumentCount, char* szArguments[]) return false; } + // Load handling config + const char* strHandlingPath = g_pServerInterface->GetModManager()->GetAbsolutePath("handling.conf"); + CHandlingConfig handlingConfig(strHandlingPath); + if (!handlingConfig.Load()) + { + CLogger::ErrorPrintf("%s", "Loading 'hadling.conf' failed\n"); + return false; + } + // Load the vehicle colors before the main config strBuffer = g_pServerInterface->GetModManager()->GetAbsolutePath("vehiclecolors.conf"); - if (!m_pVehicleManager->GetColorManager()->Load(strBuffer)) + CVehicleColorConfig colorConfig; + if (!colorConfig.Load(strBuffer)) { // Try to generate a new one and load it again - if (m_pVehicleManager->GetColorManager()->Generate(strBuffer)) + if (colorConfig.Generate(strBuffer)) { - if (!m_pVehicleManager->GetColorManager()->Load(strBuffer)) + if (!colorConfig.Load(strBuffer)) { CLogger::ErrorPrintf("%s", "Loading 'vehiclecolors.conf' failed\n "); } diff --git a/Server/mods/deathmatch/logic/CHandlingConfig.cpp b/Server/mods/deathmatch/logic/CHandlingConfig.cpp index 2efbe76478..9867278df8 100644 --- a/Server/mods/deathmatch/logic/CHandlingConfig.cpp +++ b/Server/mods/deathmatch/logic/CHandlingConfig.cpp @@ -1,8 +1,10 @@ - - #include "StdInc.h" +#include "CHandlingConfig.h" #include #include +#include "CHandlingEntry.h" +#include "models/CModelManager.h" +#include "CGame.h" CHandlingConfig::CHandlingConfig(std::string_view strPath) { @@ -77,5 +79,13 @@ void CHandlingConfig::LoadHandlingParams(std::vector lineParams) handling.ucTailLight = atoi(lineParams[35]); handling.ucAnimGroup = atoi(lineParams[36]); - g_pGame->GetHandlingManager()->RehisterHandling(uiModelID, handling); + + auto pVehicleModel = g_pGame->GetModelManager()->GetVehicleModel(uiModelID); + + if (pVehicleModel) + { + CHandlingEntry handlingEntry(&handling); + pVehicleModel->SetVehicleDefaultHandling(handlingEntry); + } + } diff --git a/Server/mods/deathmatch/logic/CHandlingManager.cpp b/Server/mods/deathmatch/logic/CHandlingManager.cpp index 58c348332f..7321c7b1c3 100644 --- a/Server/mods/deathmatch/logic/CHandlingManager.cpp +++ b/Server/mods/deathmatch/logic/CHandlingManager.cpp @@ -13,8 +13,6 @@ #include "CHandlingManager.h" #include "CCommon.h" -std::map CHandlingManager::m_pOriginalEntries; - CHandlingManager::CHandlingManager() { // http://www.gtamodding.com/index.php?title=Handling.cfg#GTA_San_Andreas @@ -58,40 +56,8 @@ CHandlingManager::CHandlingManager() CHandlingManager::~CHandlingManager() { - // Destroy all original handling entries - for (auto pData : m_pOriginalEntries) - { - delete pData.second; - } -} - -CHandlingEntry* CHandlingManager::CreateHandlingData() -{ - CHandlingEntry* pHandlingEntry = new CHandlingEntry(); - return pHandlingEntry; } -bool CHandlingManager::ApplyHandlingData(eVehicleTypes eModel, CHandlingEntry* pEntry) -{ - g_pGame->GetModelManager()->GetVehicleModel(eModel)->GetVehicleHandling()->ApplyHandlingData(pEntry); - return true; -} - -const CHandlingEntry* CHandlingManager::GetOriginalHandlingData(eVehicleTypes eModel) -{ - return m_pOriginalEntries[eModel]; -} - -void CHandlingManager::RehisterHandling(uint32_t uiModelID, tHandlingData& handling) -{ - assert(!m_pOriginalEntries[uiModelID], "Handling data registered twice"); - m_pOriginalEntries[uiModelID] = new CHandlingEntry(&handling); -} - -const CHandlingEntry* CHandlingManager::GetModelHandlingData(eVehicleTypes eModel) -{ - return g_pGame->GetModelManager()->GetVehicleModel(eModel)->GetVehicleHandling(); -} eHandlingProperty CHandlingManager::GetPropertyEnumFromName(std::string strName) { @@ -105,13 +71,3 @@ eHandlingProperty CHandlingManager::GetPropertyEnumFromName(std::string strName) return HANDLING_MAX; } - -bool CHandlingManager::HasModelHandlingChanged(eVehicleTypes eModel) -{ - return g_pGame->GetModelManager()->GetVehicleModel(eModel)->HasVehicleHandlingChanged(); -} - -void CHandlingManager::SetModelHandlingHasChanged(eVehicleTypes eModel, bool bChanged) -{ - g_pGame->GetModelManager()->GetVehicleModel(eModel)->SetVehicleHandlingChanged(bChanged); -} diff --git a/Server/mods/deathmatch/logic/CHandlingManager.h b/Server/mods/deathmatch/logic/CHandlingManager.h index 612dadc045..a256d35218 100644 --- a/Server/mods/deathmatch/logic/CHandlingManager.h +++ b/Server/mods/deathmatch/logic/CHandlingManager.h @@ -22,23 +22,8 @@ class CHandlingManager CHandlingManager(); ~CHandlingManager(); - CHandlingEntry* CreateHandlingData(); - - bool ApplyHandlingData(eVehicleTypes eModel, CHandlingEntry* pEntry); - - const CHandlingEntry* GetModelHandlingData(eVehicleTypes eModel); - const CHandlingEntry* GetOriginalHandlingData(eVehicleTypes eModel); - - void RehisterHandling(uint32_t uiModelID, tHandlingData& handling); - // Helper functions eHandlingProperty GetPropertyEnumFromName(std::string strName); - bool HasModelHandlingChanged(eVehicleTypes eModel); - void SetModelHandlingHasChanged(eVehicleTypes eModel, bool bChanged); std::map m_HandlingNames; - -private: - // Array with the original handling entries - static std::map m_pOriginalEntries; }; diff --git a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp index 3273cc1293..24af69e3d9 100644 --- a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp +++ b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp @@ -67,6 +67,7 @@ #include "packets/CElementRPCPacket.h" #include "version.h" #include +#include "models/CModelManager.h" #ifndef WIN32 #include @@ -5425,41 +5426,44 @@ bool CStaticFunctionDefinitions::GetVehicleHandling(CVehicle* pVehicle, eHandlin bool CStaticFunctionDefinitions::GetModelHandling(eVehicleTypes eModel, eHandlingProperty eProperty, CVector& vecValue, bool bOriginal) { - const CHandlingEntry* pEntry = NULL; - if (bOriginal) + const auto pVehicleModel = g_pGame->GetModelManager()->GetVehicleModel(eModel); + if (pVehicleModel) { - pEntry = g_pGame->GetHandlingManager()->GetOriginalHandlingData(eModel); - } - else - { - pEntry = g_pGame->GetHandlingManager()->GetModelHandlingData(eModel); - } + const CHandlingEntry* pEntry = nullptr; + if (bOriginal) + { + pEntry = pVehicleModel->GetOriginalHandling(); + } + else + { + pEntry = pVehicleModel->GetVehicleHandling(); + } - if (pEntry) - { if (eProperty == HANDLING_CENTEROFMASS) { vecValue = pEntry->GetCenterOfMass(); return true; } } + return false; } bool CStaticFunctionDefinitions::GetModelHandling(eVehicleTypes eModel, eHandlingProperty eProperty, float& fValue, bool bOriginal) { - const CHandlingEntry* pEntry = NULL; - if (bOriginal) + const auto pVehicleModel = g_pGame->GetModelManager()->GetVehicleModel(eModel); + if (pVehicleModel) { - pEntry = g_pGame->GetHandlingManager()->GetOriginalHandlingData(eModel); - } - else - { - pEntry = g_pGame->GetHandlingManager()->GetModelHandlingData(eModel); - } + const CHandlingEntry* pEntry = nullptr; + if (bOriginal) + { + pEntry = pVehicleModel->GetOriginalHandling(); + } + else + { + pEntry = pVehicleModel->GetVehicleHandling(); + } - if (pEntry) - { if (GetEntryHandling(pEntry, eProperty, fValue)) { return true; @@ -5470,18 +5474,19 @@ bool CStaticFunctionDefinitions::GetModelHandling(eVehicleTypes eModel, eHandlin bool CStaticFunctionDefinitions::GetModelHandling(eVehicleTypes eModel, eHandlingProperty eProperty, unsigned int& uiValue, bool bOriginal) { - const CHandlingEntry* pEntry = NULL; - if (bOriginal) + const auto pVehicleModel = g_pGame->GetModelManager()->GetVehicleModel(eModel); + if (pVehicleModel) { - pEntry = g_pGame->GetHandlingManager()->GetOriginalHandlingData(eModel); - } - else - { - pEntry = g_pGame->GetHandlingManager()->GetModelHandlingData(eModel); - } + const CHandlingEntry* pEntry = nullptr; + if (bOriginal) + { + pEntry = pVehicleModel->GetOriginalHandling(); + } + else + { + pEntry = pVehicleModel->GetVehicleHandling(); + } - if (pEntry) - { if (GetEntryHandling(pEntry, eProperty, uiValue)) { return true; @@ -5492,18 +5497,19 @@ bool CStaticFunctionDefinitions::GetModelHandling(eVehicleTypes eModel, eHandlin bool CStaticFunctionDefinitions::GetModelHandling(eVehicleTypes eModel, eHandlingProperty eProperty, unsigned char& ucValue, bool bOriginal) { - const CHandlingEntry* pEntry = NULL; - if (bOriginal) - { - pEntry = g_pGame->GetHandlingManager()->GetOriginalHandlingData(eModel); - } - else + const auto pVehicleModel = g_pGame->GetModelManager()->GetVehicleModel(eModel); + if (pVehicleModel) { - pEntry = g_pGame->GetHandlingManager()->GetModelHandlingData(eModel); - } + const CHandlingEntry* pEntry = nullptr; + if (bOriginal) + { + pEntry = pVehicleModel->GetOriginalHandling(); + } + else + { + pEntry = pVehicleModel->GetVehicleHandling(); + } - if (pEntry) - { if (GetEntryHandling(pEntry, eProperty, ucValue)) { return true; @@ -5514,18 +5520,19 @@ bool CStaticFunctionDefinitions::GetModelHandling(eVehicleTypes eModel, eHandlin bool CStaticFunctionDefinitions::GetModelHandling(eVehicleTypes eModel, eHandlingProperty eProperty, std::string& strValue, bool bOriginal) { - const CHandlingEntry* pEntry = NULL; - if (bOriginal) + const auto pVehicleModel = g_pGame->GetModelManager()->GetVehicleModel(eModel); + if (pVehicleModel) { - pEntry = g_pGame->GetHandlingManager()->GetOriginalHandlingData(eModel); - } - else - { - pEntry = g_pGame->GetHandlingManager()->GetModelHandlingData(eModel); - } + const CHandlingEntry* pEntry = nullptr; + if (bOriginal) + { + pEntry = pVehicleModel->GetOriginalHandling(); + } + else + { + pEntry = pVehicleModel->GetVehicleHandling(); + } - if (pEntry) - { if (GetEntryHandling(pEntry, eProperty, strValue)) { return true; @@ -5536,12 +5543,14 @@ bool CStaticFunctionDefinitions::GetModelHandling(eVehicleTypes eModel, eHandlin bool CStaticFunctionDefinitions::SetModelHandling(eVehicleTypes eModel, eHandlingProperty eProperty, float fValue) { - CHandlingEntry* pEntry = (CHandlingEntry*)g_pGame->GetHandlingManager()->GetModelHandlingData(eModel); - if (pEntry) + const auto pVehicleModel = g_pGame->GetModelManager()->GetVehicleModel(eModel); + if (pVehicleModel) { + CHandlingEntry* pEntry = pVehicleModel->GetVehicleHandling(); + if (SetEntryHandling(pEntry, eProperty, fValue)) { - g_pGame->GetHandlingManager()->SetModelHandlingHasChanged(eModel, true); + pVehicleModel->SetVehicleHandlingChanged(true); return true; } } @@ -5551,13 +5560,13 @@ bool CStaticFunctionDefinitions::SetModelHandling(eVehicleTypes eModel, eHandlin bool CStaticFunctionDefinitions::SetModelHandling(eVehicleTypes eModel, eHandlingProperty eProperty, CVector vecValue) { - CHandlingEntry* pEntry = (CHandlingEntry*)g_pGame->GetHandlingManager()->GetModelHandlingData(eModel); - - if (pEntry) + const auto pVehicleModel = g_pGame->GetModelManager()->GetVehicleModel(eModel); + if (pVehicleModel) { + CHandlingEntry* pEntry = pVehicleModel->GetVehicleHandling(); if (SetEntryHandling(pEntry, eProperty, vecValue)) { - g_pGame->GetHandlingManager()->SetModelHandlingHasChanged(eModel, true); + pVehicleModel->SetVehicleHandlingChanged(true); return true; } } @@ -5566,12 +5575,13 @@ bool CStaticFunctionDefinitions::SetModelHandling(eVehicleTypes eModel, eHandlin bool CStaticFunctionDefinitions::SetModelHandling(eVehicleTypes eModel, eHandlingProperty eProperty, std::string strValue) { - CHandlingEntry* pEntry = (CHandlingEntry*)g_pGame->GetHandlingManager()->GetModelHandlingData(eModel); - if (pEntry) + const auto pVehicleModel = g_pGame->GetModelManager()->GetVehicleModel(eModel); + if (pVehicleModel) { + CHandlingEntry* pEntry = pVehicleModel->GetVehicleHandling(); if (SetEntryHandling(pEntry, eProperty, strValue)) { - g_pGame->GetHandlingManager()->SetModelHandlingHasChanged(eModel, true); + pVehicleModel->SetVehicleHandlingChanged(true); return true; } } @@ -5581,12 +5591,13 @@ bool CStaticFunctionDefinitions::SetModelHandling(eVehicleTypes eModel, eHandlin bool CStaticFunctionDefinitions::SetModelHandling(eVehicleTypes eModel, eHandlingProperty eProperty, unsigned char ucValue) { - CHandlingEntry* pEntry = (CHandlingEntry*)g_pGame->GetHandlingManager()->GetModelHandlingData(eModel); - if (pEntry) + const auto pVehicleModel = g_pGame->GetModelManager()->GetVehicleModel(eModel); + if (pVehicleModel) { + CHandlingEntry* pEntry = pVehicleModel->GetVehicleHandling(); if (SetEntryHandling(pEntry, eProperty, ucValue)) { - g_pGame->GetHandlingManager()->SetModelHandlingHasChanged(eModel, true); + pVehicleModel->SetVehicleHandlingChanged(true); return true; } } @@ -5596,12 +5607,13 @@ bool CStaticFunctionDefinitions::SetModelHandling(eVehicleTypes eModel, eHandlin bool CStaticFunctionDefinitions::SetModelHandling(eVehicleTypes eModel, eHandlingProperty eProperty, unsigned int uiValue) { - CHandlingEntry* pEntry = (CHandlingEntry*)g_pGame->GetHandlingManager()->GetModelHandlingData(eModel); - if (pEntry) + const auto pVehicleModel = g_pGame->GetModelManager()->GetVehicleModel(eModel); + if (pVehicleModel) { + CHandlingEntry* pEntry = pVehicleModel->GetVehicleHandling(); if (SetEntryHandling(pEntry, eProperty, uiValue)) { - g_pGame->GetHandlingManager()->SetModelHandlingHasChanged(eModel, true); + pVehicleModel->SetVehicleHandlingChanged(true); return true; } } @@ -7360,19 +7372,21 @@ bool CStaticFunctionDefinitions::ResetVehicleHandling(CVehicle* pVehicle, bool b { assert(pVehicle); - eVehicleTypes eModel = (eVehicleTypes)pVehicle->GetModel(); + + uint16_t usModel = (eVehicleTypes)pVehicle->GetModel(); CHandlingEntry* pEntry = pVehicle->GetHandlingData(); const CHandlingEntry* pNewEntry; CBitStream BitStream; + const auto pVehicleModel = g_pGame->GetModelManager()->GetVehicleModel(usModel); if (bUseOriginal) { - pNewEntry = g_pGame->GetHandlingManager()->GetOriginalHandlingData(eModel); + pNewEntry = pVehicleModel->GetOriginalHandling(); m_pPlayerManager->BroadcastOnlyJoined(CElementRPCPacket(pVehicle, RESET_VEHICLE_HANDLING, *BitStream.pBitStream)); } else { - pNewEntry = g_pGame->GetHandlingManager()->GetModelHandlingData(eModel); + pNewEntry = pVehicleModel->GetVehicleHandling(); SVehicleHandlingSync handling; handling.data.fMass = pNewEntry->GetMass(); @@ -7503,15 +7517,13 @@ bool CStaticFunctionDefinitions::ResetVehicleHandlingProperty(CVehicle* pVehicle bool CStaticFunctionDefinitions::ResetModelHandling(eVehicleTypes eModel) { - CHandlingEntry* pEntry = (CHandlingEntry*)g_pGame->GetHandlingManager()->GetModelHandlingData(eModel); - if (pEntry) + const auto pVehicleModel = g_pGame->GetModelManager()->GetVehicleModel(eModel); + if (pVehicleModel) { - const CHandlingEntry* pHandlingEntry = g_pGame->GetHandlingManager()->GetOriginalHandlingData(eModel); - if (pHandlingEntry) - { - pEntry->ApplyHandlingData(pHandlingEntry); - return true; - } + CHandlingEntry* pEntry = pVehicleModel->GetVehicleHandling(); + const CHandlingEntry* pOriginalEntry = pVehicleModel->GetOriginalHandling(); + pEntry->ApplyHandlingData(pOriginalEntry); + return true; } return false; @@ -7519,7 +7531,11 @@ bool CStaticFunctionDefinitions::ResetModelHandling(eVehicleTypes eModel) bool CStaticFunctionDefinitions::ResetModelHandlingProperty(eVehicleTypes eModel, eHandlingProperty eProperty) { - CHandlingEntry* pEntry = (CHandlingEntry*)g_pGame->GetHandlingManager()->GetModelHandlingData(eModel); + const auto pVehicleModel = g_pGame->GetModelManager()->GetVehicleModel(eModel); + if (!pVehicleModel) + return false; + + CHandlingEntry* pEntry = pVehicleModel->GetVehicleHandling(); float fValue = 0.0f; CVector vecValue = CVector(0.0f, 0.0f, 0.0f); diff --git a/Server/mods/deathmatch/logic/CVehicle.cpp b/Server/mods/deathmatch/logic/CVehicle.cpp index 592ab3c63b..65b85a091c 100644 --- a/Server/mods/deathmatch/logic/CVehicle.cpp +++ b/Server/mods/deathmatch/logic/CVehicle.cpp @@ -15,6 +15,7 @@ #include "CHandlingManager.h" #include "CElementRefManager.h" #include "CGame.h" +#include "models/CModelManager.h" #include "packets/CVehicleInOutPacket.h" #include "CBandwidthSettings.h" #include "Utils.h" @@ -537,7 +538,7 @@ void CVehicle::SetHealth(float fHealth) CVehicleColor& CVehicle::RandomizeColor() { // Grab a random color for this vehicle and return it - m_Color = m_pVehicleManager->GetRandomColor(m_usModel); + m_Color = g_pGame->GetModelManager()->GetVehicleModel(m_usModel)->GetRandomColor(); return m_Color; } @@ -849,7 +850,7 @@ void CVehicle::GenerateHandlingData() { // Make a new CHandlingEntry if (m_pHandlingEntry == NULL) - m_pHandlingEntry = g_pGame->GetHandlingManager()->CreateHandlingData(); + m_pHandlingEntry = new CHandlingEntry(); // Apply the model handling info m_pHandlingEntry->ApplyHandlingData(g_pGame->GetModelManager()->GetVehicleModel(m_usModel)->GetVehicleHandling()); diff --git a/Server/mods/deathmatch/logic/CVehicleColorManager.cpp b/Server/mods/deathmatch/logic/CVehicleColorConfig.cpp similarity index 62% rename from Server/mods/deathmatch/logic/CVehicleColorManager.cpp rename to Server/mods/deathmatch/logic/CVehicleColorConfig.cpp index 8520c5282a..c083907068 100644 --- a/Server/mods/deathmatch/logic/CVehicleColorManager.cpp +++ b/Server/mods/deathmatch/logic/CVehicleColorConfig.cpp @@ -10,42 +10,13 @@ *****************************************************************************/ #include "StdInc.h" -#include "CVehicleColorManager.h" +#include "CVehicleColorConfig.h" #include "CVehicleDefaultColors.h" -#include "Utils.h" +#include "models/CModelManager.h" +#include "CGame.h" -CVehicleColor CVehicleColors::GetRandomColor() +bool CVehicleColorConfig::Load(const char* szFilename) { - // Grab a random index - unsigned int uiSize = CountColors(); - if (uiSize > 0) - { - // Create a random index - unsigned int uiRandomIndex = GetRandom(0, uiSize - 1); - - // Grab the random color we got off the list - unsigned int uiIndex = 0; - std::list::iterator iter = m_Colors.begin(); - for (; iter != m_Colors.end(); ++iter) - { - if (uiIndex == uiRandomIndex) - { - return *iter; - } - - ++uiIndex; - } - } - - // No items, return default color (black) - return CVehicleColor(); -} - -bool CVehicleColorManager::Load(const char* szFilename) -{ - // Make sure we're cleared - Reset(); - // Load vehiclecolors.conf FILE* pFile = File::Fopen(szFilename, "r"); if (pFile) @@ -97,10 +68,14 @@ bool CVehicleColorManager::Load(const char* szFilename) } } - // Add it to the list - CVehicleColor color; - color.SetPaletteColors(ucColor1, ucColor2, ucColor3, ucColor4); - AddColor(usModel, color); + // Can be zero for invalid config string + if (usModel) + { + // Add it to the list + CVehicleColor color; + color.SetPaletteColors(ucColor1, ucColor2, ucColor3, ucColor4); + g_pGame->GetModelManager()->GetVehicleModel(usModel)->AddColor(color); + } } } } @@ -114,7 +89,7 @@ bool CVehicleColorManager::Load(const char* szFilename) return false; } -bool CVehicleColorManager::Generate(const char* szFilename) +bool CVehicleColorConfig::Generate(const char* szFilename) { // Try to open the file FILE* pFile = File::Fopen(szFilename, "w+"); @@ -131,32 +106,3 @@ bool CVehicleColorManager::Generate(const char* szFilename) // Failed return false; } - -void CVehicleColorManager::Reset() -{ - // Remove all colors from all vehicles - for (int i = 0; i < 212; i++) - { - m_Colors[i].RemoveAllColors(); - } -} - -void CVehicleColorManager::AddColor(unsigned short usModel, const CVehicleColor& colVehicle) -{ - if (usModel >= 400 && usModel <= 611) - { - m_Colors[usModel - 400].AddColor(colVehicle); - } -} - -CVehicleColor CVehicleColorManager::GetRandomColor(unsigned short usModel) -{ - if (usModel >= 400 && usModel <= 611) - { - return m_Colors[usModel - 400].GetRandomColor(); - } - else - { - return CVehicleColor(); - } -} diff --git a/Server/mods/deathmatch/logic/CVehicleColorConfig.h b/Server/mods/deathmatch/logic/CVehicleColorConfig.h new file mode 100644 index 0000000000..17f24192e2 --- /dev/null +++ b/Server/mods/deathmatch/logic/CVehicleColorConfig.h @@ -0,0 +1,20 @@ +/***************************************************************************** + * + * PROJECT: Multi Theft Auto v1.0 + * LICENSE: See LICENSE in the top level directory + * FILE: mods/deathmatch/logic/CVehicleColorConfig.h + * PURPOSE: Vehicle colors loader + * + * Multi Theft Auto is available from http://www.multitheftauto.com/ + * + *****************************************************************************/ + +#pragma once + +class CVehicleColorConfig +{ +public: + bool Load(const char* szFilename); + bool Generate(const char* szFilename); + void Reset(); +}; diff --git a/Server/mods/deathmatch/logic/CVehicleColorManager.h b/Server/mods/deathmatch/logic/CVehicleColorManager.h deleted file mode 100644 index be6db2025b..0000000000 --- a/Server/mods/deathmatch/logic/CVehicleColorManager.h +++ /dev/null @@ -1,41 +0,0 @@ -/***************************************************************************** - * - * PROJECT: Multi Theft Auto v1.0 - * LICENSE: See LICENSE in the top level directory - * FILE: mods/deathmatch/logic/CVehicleColorManager.h - * PURPOSE: Vehicle entity color manager class - * - * Multi Theft Auto is available from http://www.multitheftauto.com/ - * - *****************************************************************************/ - -#pragma once - -#include - -class CVehicleColors -{ -public: - void AddColor(const CVehicleColor& colVehicle) { m_Colors.push_back(colVehicle); }; - unsigned int CountColors() { return static_cast(m_Colors.size()); }; - void RemoveAllColors() { m_Colors.clear(); }; - - CVehicleColor GetRandomColor(); - -private: - std::list m_Colors; -}; - -class CVehicleColorManager -{ -public: - bool Load(const char* szFilename); - bool Generate(const char* szFilename); - void Reset(); - - void AddColor(unsigned short usModel, const CVehicleColor& colVehicle); - CVehicleColor GetRandomColor(unsigned short usModel); - -private: - SFixedArray m_Colors; -}; diff --git a/Server/mods/deathmatch/logic/CVehicleColors.cpp b/Server/mods/deathmatch/logic/CVehicleColors.cpp new file mode 100644 index 0000000000..92038eab03 --- /dev/null +++ b/Server/mods/deathmatch/logic/CVehicleColors.cpp @@ -0,0 +1,31 @@ + +#include "StdInc.h" +#include "CVehicleColors.h" +#include "Utils.h" + +CVehicleColor CVehicleColors::GetRandomColor() +{ + // Grab a random index + unsigned int uiSize = CountColors(); + if (uiSize > 0) + { + // Create a random index + unsigned int uiRandomIndex = GetRandom(0, uiSize - 1); + + // Grab the random color we got off the list + unsigned int uiIndex = 0; + std::list::iterator iter = m_Colors.begin(); + for (; iter != m_Colors.end(); ++iter) + { + if (uiIndex == uiRandomIndex) + { + return *iter; + } + + ++uiIndex; + } + } + + // No items, return default color (black) + return CVehicleColor(); +} diff --git a/Server/mods/deathmatch/logic/CVehicleColors.h b/Server/mods/deathmatch/logic/CVehicleColors.h new file mode 100644 index 0000000000..dbc0bfe4fb --- /dev/null +++ b/Server/mods/deathmatch/logic/CVehicleColors.h @@ -0,0 +1,15 @@ +#pragma once +#include "StdInc.h" + +class CVehicleColors +{ +public: + void AddColor(const CVehicleColor& colVehicle) { m_Colors.push_back(colVehicle); }; + unsigned int CountColors() { return static_cast(m_Colors.size()); }; + void RemoveAllColors() { m_Colors.clear(); }; + + CVehicleColor GetRandomColor(); + +private: + std::list m_Colors; +}; diff --git a/Server/mods/deathmatch/logic/CVehicleManager.cpp b/Server/mods/deathmatch/logic/CVehicleManager.cpp index 056dcab574..9f7ee55939 100644 --- a/Server/mods/deathmatch/logic/CVehicleManager.cpp +++ b/Server/mods/deathmatch/logic/CVehicleManager.cpp @@ -13,6 +13,8 @@ #include "CVehicleManager.h" #include "Utils.h" #include "lua/LuaCommon.h" +#include "CGame.h" +#include "models/CModelManager.h" // List over all vehicles with their special attributes #define VEHICLE_HAS_TURRENT 0x001UL //1 @@ -212,61 +214,14 @@ bool CVehicleManager::HasSmokeTrail(unsigned int uiModel) return false; } -bool CVehicleManager::HasDamageModel(unsigned short usModel) -{ - return HasDamageModel(GetVehicleType(usModel)); -} - -bool CVehicleManager::HasDamageModel(eVehicleType Type) -{ - switch (Type) - { - case eVehicleType::TRAILER: - case eVehicleType::MONSTERTRUCK: - case eVehicleType::QUADBIKE: - case eVehicleType::HELI: - case eVehicleType::PLANE: - case eVehicleType::CAR: - return true; - default: - return false; - } -} - bool CVehicleManager::HasDoors(unsigned short usModel) { - bool bHasDoors = false; - - if (HasDamageModel(usModel) == true) + CModelVehicle* pModel = g_pGame->GetModelManager()->GetVehicleModel(usModel); + if (pModel) { - switch (usModel) - { - case VT_BFINJECT: - case VT_RCBANDIT: - case VT_CADDY: - case VT_RCRAIDER: - case VT_BAGGAGE: - case VT_DOZER: - case VT_FORKLIFT: - case VT_TRACTOR: - case VT_RCTIGER: - case VT_BANDITO: - case VT_KART: - case VT_MOWER: - case VT_RCCAM: - case VT_RCGOBLIN: - break; - default: - bHasDoors = true; - } + return pModel->HasDoors(); } - - return bHasDoors; -} - -CVehicleColor CVehicleManager::GetRandomColor(unsigned short usModel) -{ - return m_ColorManager.GetRandomColor(usModel); + return false; } void CVehicleManager::GetVehiclesOfType(unsigned int uiModel, lua_State* luaVM) diff --git a/Server/mods/deathmatch/logic/CVehicleManager.h b/Server/mods/deathmatch/logic/CVehicleManager.h index ec5e9318bb..b2718df928 100644 --- a/Server/mods/deathmatch/logic/CVehicleManager.h +++ b/Server/mods/deathmatch/logic/CVehicleManager.h @@ -14,7 +14,6 @@ class CVehicleManager; #pragma once #include "CVehicle.h" -#include "CVehicleColorManager.h" #include // Undefined number of passengers (to disable custom passenger seats overriding in CVehicle) @@ -46,14 +45,9 @@ class CVehicleManager static bool HasLandingGears(unsigned int uiVehicleModel); static bool HasAdjustableProperty(unsigned int uiVehicleModel); static bool HasSmokeTrail(unsigned int uiVehicleModel); - static bool HasDamageModel(unsigned short usModel); - static bool HasDamageModel(eVehicleType Type); static bool HasDoors(unsigned short usModel); static void GetRandomVariation(unsigned short usModel, unsigned char& ucVariant, unsigned char& ucVariant2); - CVehicleColorManager* GetColorManager() { return &m_ColorManager; } - CVehicleColor GetRandomColor(unsigned short usModel); - void GetVehiclesOfType(unsigned int uiModel, lua_State* luaVM); Container::size_type GetVehicleCount() { return m_List.size(); } @@ -68,8 +62,6 @@ class CVehicleManager void AddToList(CVehicle* pVehicle) { m_List.push_back(pVehicle); } void RemoveFromList(CVehicle* pVehicle); - CVehicleColorManager m_ColorManager; - Container m_List; Container m_RespawnEnabledVehicles; }; diff --git a/Server/mods/deathmatch/logic/CVehiclesConfig.cpp b/Server/mods/deathmatch/logic/CVehiclesConfig.cpp index a47486dc8e..10088a3de4 100644 --- a/Server/mods/deathmatch/logic/CVehiclesConfig.cpp +++ b/Server/mods/deathmatch/logic/CVehiclesConfig.cpp @@ -1,4 +1,11 @@ #include "StdInc.h" +#include "CVehiclesConfig.h" +#include "CLogger.h" +#include "models/CModelVehicle.h" +#include "models/CModelManager.h" +#include +#include "CGame.h" +#include "CHandlingManager.h" CVehiclesConfig::CVehiclesConfig() : CXMLConfig(nullptr) { @@ -155,13 +162,7 @@ void CVehiclesConfig::RegisterVehicles() sModelData->eVehicleVariationType = eVehicleVariationType::DEFAULT; } - // + Colors - - const CHandlingEntry* pHandling = g_pGame->GetHandlingManager()->GetOriginalHandlingData((eVehicleTypes)uiModelID); - sModelData->pHandling = pHandling; - - CModelVehicle* pModelData = new CModelVehicle(uiModelID, sModelData); - + CModelVehicle* pModelData = new CModelVehicle(uiModelID, *sModelData); g_pGame->GetModelManager()->RegisterModel(pModelData); } } diff --git a/Server/mods/deathmatch/logic/CVehiclesConfig.h b/Server/mods/deathmatch/logic/CVehiclesConfig.h index c8e0e87293..df6fd729b4 100644 --- a/Server/mods/deathmatch/logic/CVehiclesConfig.h +++ b/Server/mods/deathmatch/logic/CVehiclesConfig.h @@ -1,9 +1,8 @@ -class CVehiclesConfig; - #pragma once #include "StdInc.h" +#include "CXMLConfig.h" class CVehiclesConfig : public CXMLConfig { diff --git a/Server/mods/deathmatch/logic/lua/CLuaManager.cpp b/Server/mods/deathmatch/logic/lua/CLuaManager.cpp index 3d3e8130c0..18119f4575 100644 --- a/Server/mods/deathmatch/logic/lua/CLuaManager.cpp +++ b/Server/mods/deathmatch/logic/lua/CLuaManager.cpp @@ -42,6 +42,7 @@ #include "luadefs/CLuaVoiceDefs.h" #include "luadefs/CLuaWorldDefs.h" #include "luadefs/CLuaCompatibilityDefs.h" +#include "luadefs/CLuaModelDefs.h" extern CGame* g_pGame; diff --git a/Server/mods/deathmatch/logic/luadefs/CLuaHandlingDefs.cpp b/Server/mods/deathmatch/logic/luadefs/CLuaHandlingDefs.cpp index 9152e4dabe..522dbf9cc2 100644 --- a/Server/mods/deathmatch/logic/luadefs/CLuaHandlingDefs.cpp +++ b/Server/mods/deathmatch/logic/luadefs/CLuaHandlingDefs.cpp @@ -13,6 +13,7 @@ #include "CLuaHandlingDefs.h" #include "CScriptArgReader.h" #include "CStaticFunctionDefinitions.h" +#include "models/CModelManager.h" void CLuaHandlingDefs::LoadFunctions() { @@ -562,10 +563,10 @@ int CLuaHandlingDefs::GetModelHandling(lua_State* luaVM) if (!argStream.HasErrors()) { - eVehicleTypes eModel = static_cast(usModel); - if (eModel) + const auto pVehicleModel = g_pGame->GetModelManager()->GetVehicleModel(usModel); + if (pVehicleModel) { - const CHandlingEntry* pEntry = g_pGame->GetHandlingManager()->GetModelHandlingData(eModel); + const CHandlingEntry* pEntry = pVehicleModel->GetVehicleHandling(); if (pEntry) { lua_newtable(luaVM); @@ -735,10 +736,10 @@ int CLuaHandlingDefs::GetOriginalHandling(lua_State* luaVM) if (!argStream.HasErrors()) { - eVehicleTypes eModel = static_cast(usModel); - if (eModel) + const auto pVehicleModel = g_pGame->GetModelManager()->GetVehicleModel(usModel); + if (pVehicleModel) { - const CHandlingEntry* pEntry = g_pGame->GetHandlingManager()->GetOriginalHandlingData(eModel); + const CHandlingEntry* pEntry = pVehicleModel->GetOriginalHandling(); if (pEntry) { lua_newtable(luaVM); diff --git a/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp b/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp index 1bbf0e02b6..77901b44fa 100644 --- a/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp +++ b/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp @@ -8,7 +8,12 @@ * *****************************************************************************/ #include "StdInc.h" +#include "CLuaModelDefs.h" #include +#include "CScriptArgReader.h" +#include "CGame.h" +#include "models/CModelManager.h" +#include void CLuaModelDefs::LoadFunctions() { @@ -31,6 +36,12 @@ uint CLuaModelDefs::AllocateModel(eModelInfoType eModel, std::optional uiP boolean CLuaModelDefs::AllocateModelFromParent(uint32_t uiModelID, uint32_t uiParentModelID) { g_pGame->GetModelManager()->AllocateModelFromParent(uiModelID, uiParentModelID); + + // Send network event + CBitStream BitStream; + BitStream.pBitStream->Write(uiModelID); + BitStream.pBitStream->Write(uiParentModelID); + g_pGame->GetPlayerManager()->BroadcastOnlyJoined(CLuaPacket(ALLOCATE_MODEL_FROM_PARENT, *BitStream.pBitStream)); return true; } diff --git a/Server/mods/deathmatch/logic/models/CModelAtomic.cpp b/Server/mods/deathmatch/logic/models/CModelAtomic.cpp index b7249c27fe..f43dbe1034 100644 --- a/Server/mods/deathmatch/logic/models/CModelAtomic.cpp +++ b/Server/mods/deathmatch/logic/models/CModelAtomic.cpp @@ -10,11 +10,12 @@ *****************************************************************************/ #include "StdInc.h" +#include "CModelAtomic.h" CModelAtomic::CModelAtomic(uint32_t uiModelID, char strName[22], char strTextureName[22], uint32_t uiDrawDistance, uint32_t uiFlags) : CModelBase(uiModelID) { - strcpy(m_modelName, strName); - strcpy(m_strTextureName, strTextureName); + //strcpy(m_modelName, strName); + //strcpy(m_strTextureName, strTextureName); SetDrawDistance(uiDrawDistance); SetFlags(uiFlags); } diff --git a/Server/mods/deathmatch/logic/models/CModelAtomic.h b/Server/mods/deathmatch/logic/models/CModelAtomic.h index 64e59f79f2..8479fd4f7f 100644 --- a/Server/mods/deathmatch/logic/models/CModelAtomic.h +++ b/Server/mods/deathmatch/logic/models/CModelAtomic.h @@ -13,6 +13,8 @@ class CModelAtomic; #pragma once +#include "CModelBase.h" + class CModelAtomic : public CModelBase { public: diff --git a/Server/mods/deathmatch/logic/models/CModelBase.cpp b/Server/mods/deathmatch/logic/models/CModelBase.cpp index e7f4f09788..20506e8c91 100644 --- a/Server/mods/deathmatch/logic/models/CModelBase.cpp +++ b/Server/mods/deathmatch/logic/models/CModelBase.cpp @@ -10,12 +10,4 @@ *****************************************************************************/ #include "StdInc.h" - -//CModelBase::CModelBase(){ -// -//}; - - -CModelBase::~CModelBase() -{ -} +#include "CModelBase.h" diff --git a/Server/mods/deathmatch/logic/models/CModelBase.h b/Server/mods/deathmatch/logic/models/CModelBase.h index 388a2ac486..1633649ed1 100644 --- a/Server/mods/deathmatch/logic/models/CModelBase.h +++ b/Server/mods/deathmatch/logic/models/CModelBase.h @@ -30,19 +30,16 @@ enum class eModelInfoType : unsigned char class CModelBase { public: - CModelBase(uint32_t uiModelID): - m_uiModelID(uiModelID) + CModelBase(uint32_t uiModelID): m_uiModelID(uiModelID), m_uiParentID(-1) {}; - ~CModelBase(); + ~CModelBase(){}; virtual CModelBase* Clone(uint32_t uiModelID) = 0; - CResource* GetCreatorResource() { return m_pCreatorResouce; }; uint32_t GetModelID() { return m_uiModelID; }; uint32_t GetParentModel() { return m_uiParentID; }; void SetParentModel(uint32_t uiParentModel) { m_uiParentID = uiParentModel; }; - std::string_view GetName() { return m_modelName; }; virtual bool SetName(std::string_view strName) { return false; }; virtual bool IsCustom() { return true; }; virtual void Unload() = 0; @@ -56,7 +53,4 @@ class CModelBase // Model prototype uint32_t m_uiParentID; - - CResource* m_pCreatorResouce; - char m_modelName[22]; }; diff --git a/Server/mods/deathmatch/logic/models/CModelLoader.cpp b/Server/mods/deathmatch/logic/models/CModelLoader.cpp deleted file mode 100644 index 3e10677459..0000000000 --- a/Server/mods/deathmatch/logic/models/CModelLoader.cpp +++ /dev/null @@ -1,101 +0,0 @@ -/***************************************************************************** - * - * PROJECT: Multi Theft Auto v1.0 - * LICENSE: See LICENSE in the top level directory - * FILE: mods/deathmatch/logic/models/CModelLoader.cpp - * PURPOSE: Model info loader class - * - * Multi Theft Auto is available from http://www.multitheftauto.com/ - * - *****************************************************************************/ - -#include "StdInc.h" - -#include -#include - -CModelLoader::CModelLoader() -{ - // Should be replaced - // loadDefaultData(); -} - -CModelLoader::~CModelLoader() -{ -} - -void CModelLoader::loadDefaultData() -{ - loadObjectDefs("objects.conf"); - loadVehicleHandling("handling.conf"); -} - - -void CModelLoader::loadVehicleHandling(const char* strPath) -{ -} - -void CModelLoader::loadObjectDefs(const char* strPath) -{ - auto parseLineFunction = [](std::vector lineParams) - { - uint32_t uiModelID = atoi(lineParams[0]); - char* strModelName = lineParams[1]; - char* strTextureName = lineParams[2]; - uint32_t iDrawDistance = atoi(lineParams[3]); - uint32_t iFlags = atoi(lineParams[4]); - - //CModelAtomic* pNewObjectModel = new CModelAtomic(*strModelName, *strTextureName, iDrawDistance, iFlags); - //g_pGame->GetModelManager()->RegisterModel(pNewObjectModel); - }; -} - -void CModelLoader::loadVehicleHandling(const char* strPath) -{ - auto parseLineFunction = [](std::vector lineParams) { - tHandlingData handling; - uint32_t uiModelID = atoi(lineParams[0]); - handling.iVehicleID = uiModelID; - handling.fMass = atof(lineParams[1]); - handling.fTurnMass = atof(lineParams[2]); - handling.fDragCoeff = atof(lineParams[3]); - handling.vecCenterOfMass = CVector(atof(lineParams[4]), atof(lineParams[5]), atof(lineParams[6])); - handling.uiPercentSubmerged = atoi(lineParams[7]); - handling.fTractionMultiplier = atof(lineParams[8]); - handling.Transmission.ucDriveType = lineParams[9][0]; - handling.Transmission.ucEngineType = lineParams[10][0]; - handling.Transmission.ucNumberOfGears = atoi(lineParams[11]); - handling.Transmission.uiHandlingFlags = atoi(lineParams[12]); - handling.Transmission.fEngineAcceleration = atof(lineParams[13]); - handling.Transmission.fEngineInertia = atof(lineParams[14]); - handling.Transmission.fMaxVelocity = atof(lineParams[15]); - handling.fBrakeDeceleration = atof(lineParams[16]); - handling.fBrakeBias = atof(lineParams[17]); - handling.bABS = lineParams[18][0] == '0'; - handling.fSteeringLock = atof(lineParams[19]); - handling.fTractionLoss = atof(lineParams[20]); - handling.fTractionBias = atof(lineParams[21]); - handling.fSuspensionForceLevel = atof(lineParams[22]); - handling.fSuspensionDamping = atof(lineParams[23]); - handling.fSuspensionHighSpdDamping = atof(lineParams[24]); - handling.fSuspensionUpperLimit = atof(lineParams[25]); - handling.fSuspensionLowerLimit = atof(lineParams[26]); - handling.fSuspensionFrontRearBias = atof(lineParams[27]); - handling.fSuspensionAntiDiveMultiplier = atof(lineParams[28]); - handling.fCollisionDamageMultiplier = atof(lineParams[29]); - handling.uiModelFlags = atoi(lineParams[30]); - handling.uiHandlingFlags = atoi(lineParams[31]); - handling.fSeatOffsetDistance = atof(lineParams[32]); - handling.uiMonetary = atoi(lineParams[33]); - handling.ucHeadLight = atoi(lineParams[34]); - handling.ucTailLight = atoi(lineParams[35]); - handling.ucAnimGroup = atoi(lineParams[36]); - - g_pGame->GetHandlingManager()->RehisterHandling(uiModelID, handling); - }; -} - -void CModelLoader::loadVehicleDefs(const char* strPath) -{ - -} diff --git a/Server/mods/deathmatch/logic/models/CModelLoader.h b/Server/mods/deathmatch/logic/models/CModelLoader.h deleted file mode 100644 index cee9249a37..0000000000 --- a/Server/mods/deathmatch/logic/models/CModelLoader.h +++ /dev/null @@ -1,31 +0,0 @@ -/***************************************************************************** - * - * PROJECT: Multi Theft Auto v1.0 - * LICENSE: See LICENSE in the top level directory - * FILE: mods/deathmatch/logic/models/CModelLoader.h - * PURPOSE: Model info loader class header - * - * Multi Theft Auto is available from http://www.multitheftauto.com/ - * - *****************************************************************************/ - -#pragma once - -#include -#include - -class CModelLoader -{ -public: - CModelLoader(); - ~CModelLoader(); - - void loadDefaultData(); - -private: - void loadVehicleHandling(const char* strPath); - void loadObjectDefs(const char* strPath); - void loadVehicleDefs(const char* strPath); - void loadVehicleHandling(const char* strPath); - -}; diff --git a/Server/mods/deathmatch/logic/models/CModelManager.cpp b/Server/mods/deathmatch/logic/models/CModelManager.cpp index 7219ca1b5b..ed98708c02 100644 --- a/Server/mods/deathmatch/logic/models/CModelManager.cpp +++ b/Server/mods/deathmatch/logic/models/CModelManager.cpp @@ -10,6 +10,7 @@ *****************************************************************************/ #include "StdInc.h" +#include "CModelManager.h" CModelManager::CModelManager() { @@ -37,64 +38,21 @@ void CModelManager::RegisterModel(CModelBase* pModelHandler) m_vModels[iModelID] = pModelHandler; } -CModelBase* CModelManager::CreateModel(uint iModelID, eModelInfoType eType) -{ - // Model is curently allocated, skip it - if (m_vModels[iModelID]) - { - return nullptr; - } - - CModelBase* pModelInfo; - - switch (eType) - { - //case eModelInfoType::VEHICLE: - // break; - case eModelInfoType::ATOMIC: - //pModelInfo = new CModelAtomic(); - break; - default: - return nullptr; - } - - m_vModels[iModelID] = pModelInfo; - - return pModelInfo; -} - -void CModelManager::CleanResourceModels(CResource* pResource) -{ - for (auto* pModel : m_vModels) - { - if (pModel->GetCreatorResource() == pResource) - { - RemoveModel(pModel); - } - } -} - -void CModelManager::AllocateModelFromParent(uint32_t uiNewModelID, uint32_t uiParentModel) +bool CModelManager::AllocateModelFromParent(uint32_t uiNewModelID, uint32_t uiParentModel) { CModelBase* pParentModel = m_vModels[uiParentModel]; if (!pParentModel) - return; + return false; if (m_vModels[uiNewModelID]) - return; + return false; CModelBase* pNewModel = pParentModel->Clone(uiNewModelID); RegisterModel(pNewModel); // Save in simple allocated list m_vSimpleAllocatedModels.push_back(pNewModel); - - // Send network event - CBitStream BitStream; - BitStream.pBitStream->Write(uiNewModelID); - BitStream.pBitStream->Write(uiParentModel); - g_pGame->GetPlayerManager()->BroadcastOnlyJoined(CLuaPacket(ALLOCATE_MODEL_FROM_PARENT, *BitStream.pBitStream)); } void CModelManager::RemoveModel(CModelBase* pModel) diff --git a/Server/mods/deathmatch/logic/models/CModelManager.h b/Server/mods/deathmatch/logic/models/CModelManager.h index 97ef851b5d..121d011aea 100644 --- a/Server/mods/deathmatch/logic/models/CModelManager.h +++ b/Server/mods/deathmatch/logic/models/CModelManager.h @@ -14,7 +14,9 @@ class CModelManager; #pragma once #include "StdInc.h" -#include +#include "CModelBase.h" +#include "CModelAtomic.h" +#include "CModelVehicle.h" class CModelManager { @@ -24,12 +26,7 @@ class CModelManager // Register generic GTA:SA model info void RegisterModel(CModelBase* pModelHandler); - - // Create new GTA:SA model info - CModelBase* CreateModel(uint32_t iModelID, eModelInfoType eType); - - void CleanResourceModels(CResource* pResource); - void AllocateModelFromParent(uint32_t uiNewModelID, uint32_t uiParentModel); + bool AllocateModelFromParent(uint32_t uiNewModelID, uint32_t uiParentModel); CModelVehicle* GetVehicleModel(uint32_t iModelID) { return dynamic_cast(m_vModels[iModelID]); }; diff --git a/Server/mods/deathmatch/logic/models/CModelVehicle.cpp b/Server/mods/deathmatch/logic/models/CModelVehicle.cpp index 940bddae17..68f9307a53 100644 --- a/Server/mods/deathmatch/logic/models/CModelVehicle.cpp +++ b/Server/mods/deathmatch/logic/models/CModelVehicle.cpp @@ -11,13 +11,14 @@ #pragma once #include "StdInc.h" +#include "CModelVehicle.h" -CModelVehicle::CModelVehicle(uint32_t uiModelID, const SModelVehicleDefs* sModelDefs) +CModelVehicle::CModelVehicle(uint32_t uiModelID, const SModelVehicleDefs &sModelDefs) : CModelBase(uiModelID) { m_modelDef = sModelDefs; m_pVehicleHandling = new CHandlingEntry(); - m_pVehicleHandling->ApplyHandlingData(sModelDefs->pHandling); + m_pVehicleHandling->ApplyHandlingData((const CHandlingEntry*) &sModelDefs.handling); } CModelVehicle::~CModelVehicle() @@ -49,6 +50,51 @@ bool CModelVehicle::HasDamageModel() } } +void CModelVehicle::GetRandomVariation(unsigned char& ucVariant, unsigned char& ucVariant2) +{ + RandomizeRandomSeed(); + ucVariant = 255; + ucVariant2 = 255; + // Valid model? + char cVariants = GetVariantsCount(); + if (cVariants != 255) + { + switch (m_modelDef.eVehicleVariationType) + { + case eVehicleVariationType::CADDY: + // 255, 0, 1, 2 + ucVariant = (rand() % 4) - 1; + + // 3, 4, 5 + ucVariant2 = (rand() % 3); + ucVariant2 += 3; + return; + case eVehicleVariationType::SLAMVAN: + // Slamvan has steering wheel "extras" we want one of those so default cannot be an option. + ucVariant = (rand() % (cVariants + 1)); + return; + case eVehicleVariationType::NRG: + // e.g. 581 ( BF400 ) + // first 3 properties are Exhaust + // last 2 are fairings. + + // 255, 0, 1, 2 + ucVariant = (rand() % 4) - 1; + + // 3, 4 + ucVariant2 = (rand() % 2); + ucVariant2 += 3; + return; + default: + // e.g. ( rand () % ( 5 + 2 ) ) - 1 + // Can generate 6 then minus 1 = 5 + // Can generate 0 then minus 1 = -1 (255) (default model with nothing) + ucVariant = (rand() % (cVariants + 2)) - 1; + return; + } + } +} + void CModelVehicle::Unload() { } diff --git a/Server/mods/deathmatch/logic/models/CModelVehicle.h b/Server/mods/deathmatch/logic/models/CModelVehicle.h index 86199edaf7..e78ae4253c 100644 --- a/Server/mods/deathmatch/logic/models/CModelVehicle.h +++ b/Server/mods/deathmatch/logic/models/CModelVehicle.h @@ -12,6 +12,9 @@ class CModelVehicle; #pragma once +#include "CModelBase.h" +#include +#include "CVehicleColors.h" enum class eVehicleVariationType { @@ -28,41 +31,50 @@ struct SModelVehicleDefs eVehicleType eVehicleType = eVehicleType::CAR; uint8_t cAttributes = 0; bool bHasDoors = true; - const CHandlingEntry* pHandling = nullptr; + CHandlingEntry handling; const char* strVehicleName = "NoName"; eVehicleVariationType eVehicleVariationType = eVehicleVariationType::DEFAULT; - CVehicleColor vehicleColors; + CVehicleColors vehicleColors; }; class CModelVehicle : public CModelBase { public: - // CModelVehicle(){}; - CModelVehicle(uint32_t uiModelID, const SModelVehicleDefs* SModelVehicleDefs); + CModelVehicle(uint32_t uiModelID, const SModelVehicleDefs &SModelVehicleDefs); ~CModelVehicle(); virtual CModelVehicle* Clone(uint32_t uiModelID); CHandlingEntry* GetVehicleHandling() { return m_pVehicleHandling; }; - const CHandlingEntry* GetOriginalHandling() { return m_modelDef->pHandling; }; + const CHandlingEntry* GetOriginalHandling() { return &m_modelDef.handling; }; + void SetVehicleDefaultHandling(CHandlingEntry &pEntry) { m_modelDef.handling = pEntry; } void SetVehicleHandling(CHandlingEntry* pEntry) { m_pVehicleHandling = pEntry; }; void SetVehicleHandlingChanged(bool bState) { m_bVehicleHandlingChanged = bState; }; bool HasVehicleHandlingChanged() { return m_bVehicleHandlingChanged; }; + + void SetVehicleDafaultColors(CVehicleColors colors) { m_modelDef.vehicleColors = colors; }; + bool HasDamageModel(); - bool IsTrailer() { return m_modelDef->eVehicleType == eVehicleType::TRAILER; }; - const char* GetVehicleName() { return m_modelDef->strVehicleName; }; - eVehicleType GetVehicleType() { return m_modelDef->eVehicleType; } - uint8_t GetVariantsCount() { return m_modelDef->uiVariantsCount; }; - uint8_t GetAttributes() { return m_modelDef->cAttributes; }; - uint8_t GetPassengesCount() { return m_modelDef->uiMaxPassengers; }; - eVehicleVariationType GetVariationType() { return m_modelDef->eVehicleVariationType; }; - + bool HasDoors() { return m_modelDef.bHasDoors; }; + bool IsTrailer() { return m_modelDef.eVehicleType == eVehicleType::TRAILER; }; + const char* GetVehicleName() { return m_modelDef.strVehicleName; }; + eVehicleType GetVehicleType() { return m_modelDef.eVehicleType; } + uint8_t GetVariantsCount() { return m_modelDef.uiVariantsCount; }; + uint8_t GetAttributes() { return m_modelDef.cAttributes; }; + uint8_t GetPassengesCount() { return m_modelDef.uiMaxPassengers; }; + eVehicleVariationType GetVariationType() { return m_modelDef.eVehicleVariationType; }; + + CVehicleColor GetRandomColor() { return m_modelDef.vehicleColors.GetRandomColor(); } + void AddColor(const CVehicleColor& color) { return m_modelDef.vehicleColors.AddColor(color); }; + + void GetRandomVariation(unsigned char& ucVariant, unsigned char& ucVariant2); + eModelInfoType GetType() { return eModelInfoType::VEHICLE; }; void Unload(); private: - const SModelVehicleDefs* m_modelDef; + SModelVehicleDefs m_modelDef; CHandlingEntry* m_pVehicleHandling; bool m_bVehicleHandlingChanged = false; }; diff --git a/Server/mods/deathmatch/logic/packets/CEntityAddPacket.cpp b/Server/mods/deathmatch/logic/packets/CEntityAddPacket.cpp index 4b15fcfe5d..956596cdc6 100644 --- a/Server/mods/deathmatch/logic/packets/CEntityAddPacket.cpp +++ b/Server/mods/deathmatch/logic/packets/CEntityAddPacket.cpp @@ -24,8 +24,8 @@ #include "CRadarArea.h" #include "CWater.h" #include "CVehicleManager.h" -#include "CHandlingManager.h" #include "CGame.h" +#include "models/CModelManager.h" // // Temporary helper functions for fixing crashes on pre r6459 clients. @@ -608,8 +608,7 @@ bool CEntityAddPacket::Write(NetBitStreamInterface& BitStream) const BitStream.WriteBit(false); // Write handling - if (g_pGame->GetHandlingManager()->HasModelHandlingChanged(static_cast(pVehicle->GetModel())) || - pVehicle->HasHandlingChanged()) + if (g_pGame->GetModelManager()->GetVehicleModel(pVehicle->GetModel())->HasVehicleHandlingChanged() || pVehicle->HasHandlingChanged()) { BitStream.WriteBit(true); SVehicleHandlingSync handling; diff --git a/Server/mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.cpp b/Server/mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.cpp index 2bf9c2d8c7..b8342cb969 100644 --- a/Server/mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.cpp +++ b/Server/mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.cpp @@ -14,6 +14,7 @@ #include "CGame.h" #include "CMainConfig.h" #include +#include "models/CModelManager.h" CPlayerJoinCompletePacket::CPlayerJoinCompletePacket() { From b83eba2fb913fcf3b54686e6554973de440f0dec Mon Sep 17 00:00:00 2001 From: Uladzislau Nikalayevich Date: Wed, 8 Jun 2022 23:43:07 +0300 Subject: [PATCH 06/51] Fix linux build --- .../logic/CStaticFunctionDefinitions.cpp | 2 +- .../mods/deathmatch/logic/CVehiclesConfig.cpp | 28 +++++++++---------- .../logic/luadefs/CLuaModelDefs.cpp | 2 +- .../deathmatch/logic/luadefs/CLuaModelDefs.h | 2 +- .../deathmatch/logic/models/CModelManager.h | 2 +- .../deathmatch/logic/models/CModelVehicle.cpp | 2 +- .../deathmatch/logic/models/CModelVehicle.h | 10 +++---- 7 files changed, 24 insertions(+), 24 deletions(-) diff --git a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp index 24af69e3d9..d386ee2c37 100644 --- a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp +++ b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp @@ -7373,7 +7373,7 @@ bool CStaticFunctionDefinitions::ResetVehicleHandling(CVehicle* pVehicle, bool b assert(pVehicle); - uint16_t usModel = (eVehicleTypes)pVehicle->GetModel(); + uint16_t usModel = pVehicle->GetModel(); CHandlingEntry* pEntry = pVehicle->GetHandlingData(); const CHandlingEntry* pNewEntry; CBitStream BitStream; diff --git a/Server/mods/deathmatch/logic/CVehiclesConfig.cpp b/Server/mods/deathmatch/logic/CVehiclesConfig.cpp index 10088a3de4..e0e0e113c7 100644 --- a/Server/mods/deathmatch/logic/CVehiclesConfig.cpp +++ b/Server/mods/deathmatch/logic/CVehiclesConfig.cpp @@ -106,60 +106,60 @@ void CVehiclesConfig::RegisterVehicles() if (strcmp(strType, "car") == 0) { - sModelData->eVehicleType = eVehicleType::CAR; + sModelData->eVehicleModelType = eVehicleType::CAR; } else if (strcmp(strType, "mtruck") == 0) { - sModelData->eVehicleType = eVehicleType::MONSTERTRUCK; + sModelData->eVehicleModelType = eVehicleType::MONSTERTRUCK; } else if (strcmp(strType, "heli") == 0) { - sModelData->eVehicleType = eVehicleType::HELI; + sModelData->eVehicleModelType = eVehicleType::HELI; } else if (strcmp(strType, "boat") == 0) { - sModelData->eVehicleType = eVehicleType::BOAT; + sModelData->eVehicleModelType = eVehicleType::BOAT; } else if (strcmp(strType, "trailer") == 0) { - sModelData->eVehicleType = eVehicleType::TRAILER; + sModelData->eVehicleModelType = eVehicleType::TRAILER; } else if (strcmp(strType, "train") == 0) { - sModelData->eVehicleType = eVehicleType::TRAIN; + sModelData->eVehicleModelType = eVehicleType::TRAIN; } else if (strcmp(strType, "plane") == 0) { - sModelData->eVehicleType = eVehicleType::PLANE; + sModelData->eVehicleModelType = eVehicleType::PLANE; } else if (strcmp(strType, "bike") == 0) { - sModelData->eVehicleType = eVehicleType::BIKE; + sModelData->eVehicleModelType = eVehicleType::BIKE; } else if (strcmp(strType, "quad") == 0) { - sModelData->eVehicleType = eVehicleType::QUADBIKE; + sModelData->eVehicleModelType = eVehicleType::QUADBIKE; } else if (strcmp(strType, "bmx") == 0) { - sModelData->eVehicleType = eVehicleType::BMX; + sModelData->eVehicleModelType = eVehicleType::BMX; } else if (strcmp(strVarianType, "nrg") == 0) { - sModelData->eVehicleVariationType = eVehicleVariationType::NRG; + sModelData->eVariationType = eVehicleVariationType::NRG; } else if (strcmp(strVarianType, "caddy") == 0) { - sModelData->eVehicleVariationType = eVehicleVariationType::CADDY; + sModelData->eVariationType = eVehicleVariationType::CADDY; } else if (strcmp(strVarianType, "slamvan") == 0) { - sModelData->eVehicleVariationType = eVehicleVariationType::SLAMVAN; + sModelData->eVariationType = eVehicleVariationType::SLAMVAN; } else { - sModelData->eVehicleVariationType = eVehicleVariationType::DEFAULT; + sModelData->eVariationType = eVehicleVariationType::DEFAULT; } CModelVehicle* pModelData = new CModelVehicle(uiModelID, *sModelData); diff --git a/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp b/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp index 77901b44fa..058b108716 100644 --- a/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp +++ b/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp @@ -33,7 +33,7 @@ uint CLuaModelDefs::AllocateModel(eModelInfoType eModel, std::optional uiP return -1; } -boolean CLuaModelDefs::AllocateModelFromParent(uint32_t uiModelID, uint32_t uiParentModelID) +bool CLuaModelDefs::AllocateModelFromParent(uint32_t uiModelID, uint32_t uiParentModelID) { g_pGame->GetModelManager()->AllocateModelFromParent(uiModelID, uiParentModelID); diff --git a/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.h b/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.h index 1ba43aaddb..0a3ce548b7 100644 --- a/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.h +++ b/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.h @@ -18,7 +18,7 @@ class CLuaModelDefs : public CLuaDefs static void LoadFunctions(); static uint AllocateModel(eModelInfoType eModel, std::optional uiParentModel, std::optional uiModelID); - static boolean AllocateModelFromParent(uint32_t uiModelID, uint32_t uiParentModelID); + static bool AllocateModelFromParent(uint32_t uiModelID, uint32_t uiParentModelID); static std::vector GetAllocatedModels(std::optional eType); }; diff --git a/Server/mods/deathmatch/logic/models/CModelManager.h b/Server/mods/deathmatch/logic/models/CModelManager.h index 121d011aea..f164aac235 100644 --- a/Server/mods/deathmatch/logic/models/CModelManager.h +++ b/Server/mods/deathmatch/logic/models/CModelManager.h @@ -21,7 +21,7 @@ class CModelManager; class CModelManager { public: - CModelManager::CModelManager(); + CModelManager(); ~CModelManager(); // Register generic GTA:SA model info diff --git a/Server/mods/deathmatch/logic/models/CModelVehicle.cpp b/Server/mods/deathmatch/logic/models/CModelVehicle.cpp index 68f9307a53..9b3f2b436c 100644 --- a/Server/mods/deathmatch/logic/models/CModelVehicle.cpp +++ b/Server/mods/deathmatch/logic/models/CModelVehicle.cpp @@ -59,7 +59,7 @@ void CModelVehicle::GetRandomVariation(unsigned char& ucVariant, unsigned char& char cVariants = GetVariantsCount(); if (cVariants != 255) { - switch (m_modelDef.eVehicleVariationType) + switch (m_modelDef.eVariationType) { case eVehicleVariationType::CADDY: // 255, 0, 1, 2 diff --git a/Server/mods/deathmatch/logic/models/CModelVehicle.h b/Server/mods/deathmatch/logic/models/CModelVehicle.h index e78ae4253c..b111cd14e8 100644 --- a/Server/mods/deathmatch/logic/models/CModelVehicle.h +++ b/Server/mods/deathmatch/logic/models/CModelVehicle.h @@ -28,12 +28,12 @@ struct SModelVehicleDefs { uint8_t uiMaxPassengers = 0; uint8_t uiVariantsCount = 0; - eVehicleType eVehicleType = eVehicleType::CAR; + eVehicleType eVehicleModelType = eVehicleType::CAR; uint8_t cAttributes = 0; bool bHasDoors = true; CHandlingEntry handling; const char* strVehicleName = "NoName"; - eVehicleVariationType eVehicleVariationType = eVehicleVariationType::DEFAULT; + eVehicleVariationType eVariationType = eVehicleVariationType::DEFAULT; CVehicleColors vehicleColors; }; @@ -57,13 +57,13 @@ class CModelVehicle : public CModelBase bool HasDamageModel(); bool HasDoors() { return m_modelDef.bHasDoors; }; - bool IsTrailer() { return m_modelDef.eVehicleType == eVehicleType::TRAILER; }; + bool IsTrailer() { return m_modelDef.eVehicleModelType == eVehicleType::TRAILER; }; const char* GetVehicleName() { return m_modelDef.strVehicleName; }; - eVehicleType GetVehicleType() { return m_modelDef.eVehicleType; } + eVehicleType GetVehicleType() { return m_modelDef.eVehicleModelType; } uint8_t GetVariantsCount() { return m_modelDef.uiVariantsCount; }; uint8_t GetAttributes() { return m_modelDef.cAttributes; }; uint8_t GetPassengesCount() { return m_modelDef.uiMaxPassengers; }; - eVehicleVariationType GetVariationType() { return m_modelDef.eVehicleVariationType; }; + eVehicleVariationType GetVariationType() { return m_modelDef.eVariationType; }; CVehicleColor GetRandomColor() { return m_modelDef.vehicleColors.GetRandomColor(); } void AddColor(const CVehicleColor& color) { return m_modelDef.vehicleColors.AddColor(color); }; From 84cc9e517fd6dc1267832006cfbe11b268601c7e Mon Sep 17 00:00:00 2001 From: Uladzislau Nikalayevich Date: Thu, 9 Jun 2022 00:19:06 +0300 Subject: [PATCH 07/51] Fix client-server packet desync --- Server/mods/deathmatch/logic/CVehiclesConfig.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Server/mods/deathmatch/logic/CVehiclesConfig.cpp b/Server/mods/deathmatch/logic/CVehiclesConfig.cpp index e0e0e113c7..83bddda1e9 100644 --- a/Server/mods/deathmatch/logic/CVehiclesConfig.cpp +++ b/Server/mods/deathmatch/logic/CVehiclesConfig.cpp @@ -101,7 +101,7 @@ void CVehiclesConfig::RegisterVehicles() pAttribute = pAttibites.Find("hasDoors"); if (pAttribute) - sModelData->bHasDoors = strcmp(pAttribute->GetValue().c_str(), "true"); + sModelData->bHasDoors = strcmp(pAttribute->GetValue().c_str(), "true") == 0; if (strcmp(strType, "car") == 0) From bb3262641179317c882b2130c960d6c0941c7d7e Mon Sep 17 00:00:00 2001 From: Uladzislau Nikalayevich Date: Sun, 12 Jun 2022 03:22:22 +0300 Subject: [PATCH 08/51] Implement all base lua API --- .../deathmatch/logic/CClientModelManager.cpp | 5 +- .../deathmatch/logic/CClientModelManager.h | 2 +- .../logic/luadefs/CLuaEngineDefs.cpp | 7 +- .../mods/deathmatch/logic/rpc/CModelRPCs.cpp | 12 ++- Client/mods/deathmatch/logic/rpc/CModelRPCs.h | 1 + Server/mods/deathmatch/logic/CResource.cpp | 7 ++ Server/mods/deathmatch/logic/CResource.h | 5 +- .../mods/deathmatch/logic/CVehiclesConfig.cpp | 2 + .../logic/luadefs/CLuaModelDefs.cpp | 101 +++++++++++++++--- .../deathmatch/logic/luadefs/CLuaModelDefs.h | 7 +- .../mods/deathmatch/logic/models/CModelBase.h | 21 ++-- .../deathmatch/logic/models/CModelManager.cpp | 29 ++--- .../deathmatch/logic/models/CModelManager.h | 6 +- .../deathmatch/logic/models/CModelVehicle.cpp | 15 +++ .../deathmatch/logic/models/CModelVehicle.h | 2 +- Shared/mods/deathmatch/logic/lua/LuaBasic.h | 16 +++ Shared/sdk/net/rpc_enums.h | 1 + 17 files changed, 188 insertions(+), 51 deletions(-) diff --git a/Client/mods/deathmatch/logic/CClientModelManager.cpp b/Client/mods/deathmatch/logic/CClientModelManager.cpp index cfc775f0e0..6d62d285ba 100644 --- a/Client/mods/deathmatch/logic/CClientModelManager.cpp +++ b/Client/mods/deathmatch/logic/CClientModelManager.cpp @@ -44,9 +44,8 @@ void CClientModelManager::Add(const std::shared_ptr& pModel) m_modelCount++; } -bool CClientModelManager::Remove(const std::shared_ptr& pModel) +bool CClientModelManager::Remove(const int modelId) { - int modelId = pModel->GetModelID(); if (m_Models[modelId] != nullptr) { if (g_pGame->GetModelInfo(modelId)) @@ -106,7 +105,7 @@ void CClientModelManager::DeallocateModelsAllocatedByResource(CResource* pResour for (unsigned int i = 0; i < MAX_MODEL_ID; i++) { if (m_Models[i] != nullptr && m_Models[i]->GetParentResource() == pResource) - Remove(m_Models[i]); + Remove(i); } } diff --git a/Client/mods/deathmatch/logic/CClientModelManager.h b/Client/mods/deathmatch/logic/CClientModelManager.h index 088b624696..ac5f5402f0 100644 --- a/Client/mods/deathmatch/logic/CClientModelManager.h +++ b/Client/mods/deathmatch/logic/CClientModelManager.h @@ -28,7 +28,7 @@ class CClientModelManager void RemoveAll(void); void Add(const std::shared_ptr& pModel); - bool Remove(const std::shared_ptr& pModel); + bool Remove(const int modelId); int GetFirstFreeModelID(void); diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp b/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp index 6b68f34b6d..344b3aa308 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp +++ b/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp @@ -630,7 +630,7 @@ int CLuaEngineDefs::EngineRequestModel(lua_State* luaVM) return 1; } - m_pManager->GetModelManager()->Remove(pModel); + m_pManager->GetModelManager()->Remove(iModelID); argStream.SetCustomError("Expected valid original model ID at argument 2"); } } @@ -653,9 +653,8 @@ int CLuaEngineDefs::EngineFreeModel(lua_State* luaVM) if (!argStream.HasErrors()) { - auto modelManager = m_pManager->GetModelManager(); - std::shared_ptr pModel = modelManager->FindModelByID(iModelID); - if (pModel && modelManager->Remove(pModel)) + auto modelManager = m_pManager->GetModelManager(); + if (modelManager->Remove(iModelID)) { lua_pushboolean(luaVM, true); return 1; diff --git a/Client/mods/deathmatch/logic/rpc/CModelRPCs.cpp b/Client/mods/deathmatch/logic/rpc/CModelRPCs.cpp index 3f2b167bd4..a32041a821 100644 --- a/Client/mods/deathmatch/logic/rpc/CModelRPCs.cpp +++ b/Client/mods/deathmatch/logic/rpc/CModelRPCs.cpp @@ -3,7 +3,7 @@ * PROJECT: Multi Theft Auto v1.0 * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/rpc/CMarkerRPCs.cpp - * PURPOSE: Marker remote procedure calls + * PURPOSE: Custom models remote procedure calls * * Multi Theft Auto is available from http://www.multitheftauto.com/ * @@ -15,6 +15,7 @@ void CModelRPCs::LoadFunctions() { AddHandler(ALLOCATE_MODEL_FROM_PARENT, AllocateModelFromParent, "AllocateModelFromParent"); + AddHandler(UNLOAD_MODEL, UnloadModel, "UnloadModel"); } void CModelRPCs::AllocateModelFromParent(NetBitStreamInterface& bitStream) @@ -27,3 +28,12 @@ void CModelRPCs::AllocateModelFromParent(NetBitStreamInterface& bitStream) m_pManager->GetModelManager()->AllocateModelFromParent(uiNewModelID, uiParentModelID); } } + +void CModelRPCs::UnloadModel(NetBitStreamInterface& bitStream) +{ + uint32_t uiModelID; + if (bitStream.Read(uiModelID)) + { + m_pManager->GetModelManager()->Remove(uiModelID); + } +} diff --git a/Client/mods/deathmatch/logic/rpc/CModelRPCs.h b/Client/mods/deathmatch/logic/rpc/CModelRPCs.h index 625e4a7a0a..ad03425b81 100644 --- a/Client/mods/deathmatch/logic/rpc/CModelRPCs.h +++ b/Client/mods/deathmatch/logic/rpc/CModelRPCs.h @@ -19,4 +19,5 @@ class CModelRPCs : public CRPCFunctions static void LoadFunctions(); DECLARE_RPC(AllocateModelFromParent); + DECLARE_RPC(UnloadModel); }; diff --git a/Server/mods/deathmatch/logic/CResource.cpp b/Server/mods/deathmatch/logic/CResource.cpp index bfb8622326..8bb533cf18 100644 --- a/Server/mods/deathmatch/logic/CResource.cpp +++ b/Server/mods/deathmatch/logic/CResource.cpp @@ -34,6 +34,7 @@ #include "lua/CLuaFunctionParseHelpers.h" #include #include +#include "models/CModelManager.h" #ifdef WIN32 #include @@ -1092,6 +1093,12 @@ bool CResource::Stop(bool bManualStop) // Destroy the virtual machine for this resource DestroyVM(); + // Remove allocated models + for (const uint32_t uiModelID : m_allocatedModels) + { + g_pGame->GetModelManager()->UnloadCustomModel(uiModelID); + } + // Remove the resource element from the client CEntityRemovePacket removePacket; diff --git a/Server/mods/deathmatch/logic/CResource.h b/Server/mods/deathmatch/logic/CResource.h index a8acbf64ce..a42e1db0b2 100644 --- a/Server/mods/deathmatch/logic/CResource.h +++ b/Server/mods/deathmatch/logic/CResource.h @@ -296,6 +296,8 @@ class CResource : public EHS std::list::iterator IterBeginExportedFunctions() { return m_ExportedFunctions.begin(); } std::list::iterator IterEndExportedFunctions() { return m_ExportedFunctions.end(); } + std::list& GetAllocatedModels() { return m_allocatedModels; }; + void GetAclRequests(std::vector& outResultList); bool HandleAclRequestListCommand(bool bDetail); bool HandleAclRequestChangeCommand(const SString& strRightName, bool bAccess, const SString& strWho); @@ -386,9 +388,10 @@ class CResource : public EHS KeyValueMap m_Info; std::list m_IncludedResources; // we store them here temporarily, then read them once all the resources are loaded std::list m_ResourceFiles; - std::list m_Dependents; // resources that have "included" or loaded this one + std::list m_Dependents; // resources that have "included" or loaded this one std::list m_ExportedFunctions; std::list m_TemporaryIncludes; // started by startResource script command + std::list m_allocatedModels; std::string m_strCircularInclude; SString m_strFailureReason; diff --git a/Server/mods/deathmatch/logic/CVehiclesConfig.cpp b/Server/mods/deathmatch/logic/CVehiclesConfig.cpp index 83bddda1e9..775672fbaa 100644 --- a/Server/mods/deathmatch/logic/CVehiclesConfig.cpp +++ b/Server/mods/deathmatch/logic/CVehiclesConfig.cpp @@ -104,6 +104,8 @@ void CVehiclesConfig::RegisterVehicles() sModelData->bHasDoors = strcmp(pAttribute->GetValue().c_str(), "true") == 0; + // TODO + // Replace it with std function if (strcmp(strType, "car") == 0) { sModelData->eVehicleModelType = eVehicleType::CAR; diff --git a/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp b/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp index 058b108716..d53ea92d6e 100644 --- a/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp +++ b/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp @@ -18,9 +18,10 @@ void CLuaModelDefs::LoadFunctions() { constexpr static const std::pair functions[]{ - {"allocateModel", ArgumentParserWarn}, - {"getAllocatedModels", ArgumentParserWarn}, - {"allocateModelFromParent", ArgumentParserWarn}, + {"getAllocatedModels", ArgumentParser}, + {"getFreeModels", ArgumentParser}, + {"allocateModelFromParent", ArgumentParser}, + {"unloadModel", ArgumentParser}, }; // Add functions @@ -28,25 +29,101 @@ void CLuaModelDefs::LoadFunctions() CLuaCFunctions::AddFunction(name, func); } -uint CLuaModelDefs::AllocateModel(eModelInfoType eModel, std::optional uiParentModel, std::optional uiModelID) +bool CLuaModelDefs::AllocateModelFromParent(lua_State* const luaVM, uint32_t uiModelID, uint32_t uiParentModelID) { - return -1; -} + // Get the virtual machine + CLuaMain* pLuaMain = m_pLuaManager->GetVirtualMachine(luaVM); + if (!pLuaMain) + return false; -bool CLuaModelDefs::AllocateModelFromParent(uint32_t uiModelID, uint32_t uiParentModelID) -{ - g_pGame->GetModelManager()->AllocateModelFromParent(uiModelID, uiParentModelID); + // Get the resource + CResource* pResource = pLuaMain->GetResource(); + if (!pResource) + return false; + + // Allocate model + const bool success = g_pGame->GetModelManager()->AllocateModelFromParent(uiModelID, uiParentModelID); + if (!success) + return false; + + // Save model id for resource + pResource->GetAllocatedModels().push_back(uiModelID); // Send network event CBitStream BitStream; BitStream.pBitStream->Write(uiModelID); BitStream.pBitStream->Write(uiParentModelID); g_pGame->GetPlayerManager()->BroadcastOnlyJoined(CLuaPacket(ALLOCATE_MODEL_FROM_PARENT, *BitStream.pBitStream)); + + return true; +} + +bool CLuaModelDefs::UnloadModel(lua_State* const luaVM, uint32_t uiModelID) +{ + // Get the virtual machine + CLuaMain* pLuaMain = m_pLuaManager->GetVirtualMachine(luaVM); + if (!pLuaMain) + return false; + + // Get the resource + CResource* pResource = pLuaMain->GetResource(); + if (!pResource) + return false; + + // Unload model + const bool success = g_pGame->GetModelManager()->UnloadCustomModel(uiModelID); + if (!success) + return false; + + // Remove model from resource + // TODO: Model can be allocated by another resource + // This check is unnecessary now + pResource->GetAllocatedModels().remove(uiModelID); + + // Send network event + CBitStream BitStream; + BitStream.pBitStream->Write(uiModelID); + g_pGame->GetPlayerManager()->BroadcastOnlyJoined(CLuaPacket(UNLOAD_MODEL, *BitStream.pBitStream)); + return true; } -std::vector CLuaModelDefs::GetAllocatedModels(std::optional eType) +std::list CLuaModelDefs::GetAllocatedModels(std::optional eType) +{ + std::list output; + + const auto models = g_pGame->GetModelManager()->GetModels(); + + if (eType.has_value()) + { + for (CModelBase* pModel : models) + { + if (pModel && pModel->GetType() == eType.value()) + output.push_back(pModel->GetModelID()); + } + } + else + { + for (CModelBase* pModel : models) + { + if (pModel) + output.push_back(pModel->GetModelID()); + } + } + + return output; +} + +std::list CLuaModelDefs::GetFreeModels() { - std::vector o; - return o; + std::list output; + + const auto models = g_pGame->GetModelManager()->GetModels(); + for (CModelBase* pModel : models) + { + if (!pModel) + output.push_back(pModel->GetModelID()); + } + + return output; } diff --git a/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.h b/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.h index 0a3ce548b7..2a8e3b6eb9 100644 --- a/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.h +++ b/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.h @@ -17,8 +17,9 @@ class CLuaModelDefs : public CLuaDefs public: static void LoadFunctions(); - static uint AllocateModel(eModelInfoType eModel, std::optional uiParentModel, std::optional uiModelID); - static bool AllocateModelFromParent(uint32_t uiModelID, uint32_t uiParentModelID); + static bool AllocateModelFromParent(lua_State* const luaVM, uint32_t uiModelID, uint32_t uiParentModelID); + static bool UnloadModel(lua_State* const luaVM, uint32_t uiModelID); - static std::vector GetAllocatedModels(std::optional eType); + static std::list GetAllocatedModels(std::optional eType); + static std::list GetFreeModels(); }; diff --git a/Server/mods/deathmatch/logic/models/CModelBase.h b/Server/mods/deathmatch/logic/models/CModelBase.h index 1633649ed1..b8c7c185b5 100644 --- a/Server/mods/deathmatch/logic/models/CModelBase.h +++ b/Server/mods/deathmatch/logic/models/CModelBase.h @@ -14,6 +14,8 @@ class CModelBase; #include +#define MODEL_MISSING_PARENT -1 + enum class eModelInfoType : unsigned char { INVALID = 0, @@ -30,27 +32,28 @@ enum class eModelInfoType : unsigned char class CModelBase { public: - CModelBase(uint32_t uiModelID): m_uiModelID(uiModelID), m_uiParentID(-1) + CModelBase(uint32_t uiModelID) : m_uiModelID(uiModelID), m_uiParentID(MODEL_MISSING_PARENT) {}; - ~CModelBase(){}; + virtual ~CModelBase(){}; virtual CModelBase* Clone(uint32_t uiModelID) = 0; - uint32_t GetModelID() { return m_uiModelID; }; - uint32_t GetParentModel() { return m_uiParentID; }; - void SetParentModel(uint32_t uiParentModel) { m_uiParentID = uiParentModel; }; - virtual bool SetName(std::string_view strName) { return false; }; - virtual bool IsCustom() { return true; }; - virtual void Unload() = 0; + const uint32_t GetModelID() { return m_uiModelID; }; + uint32_t GetParentModel() { return m_uiParentID; }; + void SetParentModel(uint32_t uiParentModel) { m_uiParentID = uiParentModel; }; + bool IsCustom() { return m_uiParentID != MODEL_MISSING_PARENT; }; + virtual void Unload() = 0; eModelInfoType GetType() { return m_type; }; protected: eModelInfoType m_type = eModelInfoType::INVALID; // Model id - uint32_t m_uiModelID; + const uint32_t m_uiModelID; // Model prototype uint32_t m_uiParentID; }; + +#undef MODEL_MISSING_PARENT diff --git a/Server/mods/deathmatch/logic/models/CModelManager.cpp b/Server/mods/deathmatch/logic/models/CModelManager.cpp index ed98708c02..6f13f0e383 100644 --- a/Server/mods/deathmatch/logic/models/CModelManager.cpp +++ b/Server/mods/deathmatch/logic/models/CModelManager.cpp @@ -23,7 +23,7 @@ CModelManager::~CModelManager() { if (pModel) { - RemoveModel(pModel); + delete pModel; } } } @@ -55,19 +55,22 @@ bool CModelManager::AllocateModelFromParent(uint32_t uiNewModelID, uint32_t uiPa m_vSimpleAllocatedModels.push_back(pNewModel); } -void CModelManager::RemoveModel(CModelBase* pModel) +bool CModelManager::UnloadCustomModel(uint32 uiModelID) { + CModelBase* pModel = m_vModels[uiModelID]; + + if (!pModel) + return false; + + if (!pModel->IsCustom()) + return false; + pModel->Unload(); - switch (pModel->GetType()) - { - case eModelInfoType::ATOMIC: - delete dynamic_cast(pModel); - break; - case eModelInfoType::VEHICLE: - delete dynamic_cast(pModel); - break; - default: - break; - } + delete pModel; + + m_vSimpleAllocatedModels.remove(pModel); + + return true; } + diff --git a/Server/mods/deathmatch/logic/models/CModelManager.h b/Server/mods/deathmatch/logic/models/CModelManager.h index f164aac235..66e740041b 100644 --- a/Server/mods/deathmatch/logic/models/CModelManager.h +++ b/Server/mods/deathmatch/logic/models/CModelManager.h @@ -27,14 +27,14 @@ class CModelManager // Register generic GTA:SA model info void RegisterModel(CModelBase* pModelHandler); bool AllocateModelFromParent(uint32_t uiNewModelID, uint32_t uiParentModel); + bool UnloadCustomModel(uint32 uiModelID); + + std::vector& GetModels() { return m_vModels; }; CModelVehicle* GetVehicleModel(uint32_t iModelID) { return dynamic_cast(m_vModels[iModelID]); }; std::list GetSimpleAllocatedModels() { return m_vSimpleAllocatedModels; }; -private: - void RemoveModel(CModelBase* pModel); - private: // modelID - CModelBase std::vector m_vModels; diff --git a/Server/mods/deathmatch/logic/models/CModelVehicle.cpp b/Server/mods/deathmatch/logic/models/CModelVehicle.cpp index 9b3f2b436c..e2d9d659bf 100644 --- a/Server/mods/deathmatch/logic/models/CModelVehicle.cpp +++ b/Server/mods/deathmatch/logic/models/CModelVehicle.cpp @@ -12,6 +12,8 @@ #pragma once #include "StdInc.h" #include "CModelVehicle.h" +#include "CGame.h" +#include "CVehicleManager.h" CModelVehicle::CModelVehicle(uint32_t uiModelID, const SModelVehicleDefs &sModelDefs) : CModelBase(uiModelID) @@ -97,4 +99,17 @@ void CModelVehicle::GetRandomVariation(unsigned char& ucVariant, unsigned char& void CModelVehicle::Unload() { + const auto vehicles = g_pGame->GetVehicleManager()->GetVehicles(); + for (CVehicle* pVehicle : vehicles) + { + if (pVehicle->GetModel() == m_uiModelID) + { + pVehicle->SetModel(m_uiParentID); + + CLuaArguments Arguments; + Arguments.PushNumber(m_uiModelID); + Arguments.PushNumber(m_uiParentID); + pVehicle->CallEvent("onElementModelChange", Arguments); + } + } } diff --git a/Server/mods/deathmatch/logic/models/CModelVehicle.h b/Server/mods/deathmatch/logic/models/CModelVehicle.h index b111cd14e8..111cc8d021 100644 --- a/Server/mods/deathmatch/logic/models/CModelVehicle.h +++ b/Server/mods/deathmatch/logic/models/CModelVehicle.h @@ -41,7 +41,7 @@ class CModelVehicle : public CModelBase { public: CModelVehicle(uint32_t uiModelID, const SModelVehicleDefs &SModelVehicleDefs); - ~CModelVehicle(); + virtual ~CModelVehicle(); virtual CModelVehicle* Clone(uint32_t uiModelID); diff --git a/Shared/mods/deathmatch/logic/lua/LuaBasic.h b/Shared/mods/deathmatch/logic/lua/LuaBasic.h index 80b4c679bf..349d6ef5ca 100644 --- a/Shared/mods/deathmatch/logic/lua/LuaBasic.h +++ b/Shared/mods/deathmatch/logic/lua/LuaBasic.h @@ -128,6 +128,9 @@ namespace lua template void Push(lua_State* L, const std::vector& val); + template + void Push(lua_State* L, const std::list& val); + template void Push(lua_State* L, const std::unordered_map& val); @@ -176,6 +179,19 @@ namespace lua } } + template + void Push(lua_State* L, const std::list& val) + { + lua_newtable(L); + int i = 1; + for (const auto& v : val) + { + Push(L, i++); + Push(L, v); + lua_settable(L, -3); + } + } + template void Push(lua_State* L, const std::unordered_map& val) { diff --git a/Shared/sdk/net/rpc_enums.h b/Shared/sdk/net/rpc_enums.h index b303d3b04d..907b87ebf1 100644 --- a/Shared/sdk/net/rpc_enums.h +++ b/Shared/sdk/net/rpc_enums.h @@ -274,6 +274,7 @@ enum eElementRPCFunctions SET_COLPOLYGON_HEIGHT, ALLOCATE_MODEL_FROM_PARENT, + UNLOAD_MODEL, NUM_RPC_FUNCS // Add above this line }; From e7a8dfcb28f345da0011a0a1aaf79db1d5340687 Mon Sep 17 00:00:00 2001 From: Uladzislau Nikalayevich Date: Sun, 12 Jun 2022 08:18:34 +0300 Subject: [PATCH 09/51] Peds and object, fix getFreeModels --- Server/mods/deathmatch/logic/CGame.cpp | 20 + .../mods/deathmatch/logic/CHandlingConfig.cpp | 4 +- .../mods/deathmatch/logic/CObjectConfig.cpp | 32 + Server/mods/deathmatch/logic/CObjectConfig.h | 15 + Server/mods/deathmatch/logic/CPedConfig.cpp | 31 + Server/mods/deathmatch/logic/CPedConfig.h | 15 + .../logic/luadefs/CLuaModelDefs.cpp | 7 +- .../deathmatch/logic/models/CModelAtomic.cpp | 30 +- .../deathmatch/logic/models/CModelAtomic.h | 16 +- .../deathmatch/logic/models/CModelManager.h | 1 + .../deathmatch/logic/models/CModelPed.cpp | 55 + .../mods/deathmatch/logic/models/CModelPed.h | 26 + Server/mods/deathmatch/objects.conf | 14339 ++++++++++++++++ Server/mods/deathmatch/peds.conf | 299 + 14 files changed, 14863 insertions(+), 27 deletions(-) create mode 100644 Server/mods/deathmatch/logic/CObjectConfig.cpp create mode 100644 Server/mods/deathmatch/logic/CObjectConfig.h create mode 100644 Server/mods/deathmatch/logic/CPedConfig.cpp create mode 100644 Server/mods/deathmatch/logic/CPedConfig.h create mode 100644 Server/mods/deathmatch/logic/models/CModelPed.cpp create mode 100644 Server/mods/deathmatch/logic/models/CModelPed.h create mode 100644 Server/mods/deathmatch/objects.conf create mode 100644 Server/mods/deathmatch/peds.conf diff --git a/Server/mods/deathmatch/logic/CGame.cpp b/Server/mods/deathmatch/logic/CGame.cpp index 77d16606d6..e89b742e48 100644 --- a/Server/mods/deathmatch/logic/CGame.cpp +++ b/Server/mods/deathmatch/logic/CGame.cpp @@ -44,6 +44,8 @@ #include "CVehiclesConfig.h" #include "CHandlingConfig.h" #include "CVehicleColorConfig.h" +#include "CPedConfig.h" +#include "CObjectConfig.h" #include "models/CModelManager.h" #include "CUnoccupiedVehicleSync.h" #include "CRegistryManager.h" @@ -929,6 +931,24 @@ bool CGame::Start(int iArgumentCount, char* szArguments[]) } } + // Load ped config + const char* strPedsPath = g_pServerInterface->GetModManager()->GetAbsolutePath("peds.conf"); + CPedConfig pedConfig(strPedsPath); + if (!pedConfig.Load()) + { + CLogger::ErrorPrintf("%s", "Loading 'peds.conf' failed\n"); + return false; + } + + // Load object config + const char* strObjectsPath = g_pServerInterface->GetModManager()->GetAbsolutePath("objects.conf"); + CObjectConfig objectConfig(strObjectsPath); + if (!objectConfig.Load()) + { + CLogger::ErrorPrintf("%s", "Loading 'objects.conf' failed\n"); + return false; + } + // Load the registry strBuffer = g_pServerInterface->GetModManager()->GetAbsolutePath("registry.db"); m_pRegistry->Load(strBuffer); diff --git a/Server/mods/deathmatch/logic/CHandlingConfig.cpp b/Server/mods/deathmatch/logic/CHandlingConfig.cpp index 9867278df8..3a90caab72 100644 --- a/Server/mods/deathmatch/logic/CHandlingConfig.cpp +++ b/Server/mods/deathmatch/logic/CHandlingConfig.cpp @@ -1,6 +1,5 @@ #include "StdInc.h" #include "CHandlingConfig.h" -#include #include #include "CHandlingEntry.h" #include "models/CModelManager.h" @@ -35,8 +34,9 @@ bool CHandlingConfig::Load() } } pFile.close(); + return true; } - return true; + return false; } void CHandlingConfig::LoadHandlingParams(std::vector lineParams) diff --git a/Server/mods/deathmatch/logic/CObjectConfig.cpp b/Server/mods/deathmatch/logic/CObjectConfig.cpp new file mode 100644 index 0000000000..1577c207b2 --- /dev/null +++ b/Server/mods/deathmatch/logic/CObjectConfig.cpp @@ -0,0 +1,32 @@ + +#include "StdInc.h" +#include "CObjectConfig.h" +#include +#include "CHandlingEntry.h" +#include "models/CModelManager.h" +#include "CGame.h" + +bool CObjectConfig::Load() +{ + std::ifstream pFile(m_strPacth.data(), std::ifstream::in); + if (pFile.is_open()) + { + std::string line; + while (std::getline(pFile, line)) + { + // It is not comment + if (line[0] != '#') + { + // It is valid numberic char + if (line[0] >= '0' && line[0] <= '9') + { + CModelAtomic* pModel = new CModelAtomic(atoi(line.c_str())); + g_pGame->GetModelManager()->RegisterModel(pModel); + } + } + } + pFile.close(); + return true; + } + return false; +} diff --git a/Server/mods/deathmatch/logic/CObjectConfig.h b/Server/mods/deathmatch/logic/CObjectConfig.h new file mode 100644 index 0000000000..3391aacdb3 --- /dev/null +++ b/Server/mods/deathmatch/logic/CObjectConfig.h @@ -0,0 +1,15 @@ + +#pragma once + +#include "StdInc.h" + +class CObjectConfig +{ +public: + CObjectConfig(std::string_view strPath): m_strPacth(strPath) {}; + + bool Load(); + +private: + std::string_view m_strPacth; +}; diff --git a/Server/mods/deathmatch/logic/CPedConfig.cpp b/Server/mods/deathmatch/logic/CPedConfig.cpp new file mode 100644 index 0000000000..c473300ac4 --- /dev/null +++ b/Server/mods/deathmatch/logic/CPedConfig.cpp @@ -0,0 +1,31 @@ + +#include "StdInc.h" +#include "CPedConfig.h" +#include +#include "CGame.h" +#include "models/CModelManager.h" + +bool CPedConfig::Load() +{ + std::ifstream pFile(m_strPacth.data(), std::ifstream::in); + if (pFile.is_open()) + { + std::string line; + while (std::getline(pFile, line)) + { + // It is not comment + if (line[0] != '#') + { + // It is valid numberic char + if (line[0] >= '0' && line[0] <= '9') + { + CModelPed* pModel = new CModelPed(atoi(line.c_str())); + g_pGame->GetModelManager()->RegisterModel(pModel); + } + } + } + pFile.close(); + return true; + } + return false; +} diff --git a/Server/mods/deathmatch/logic/CPedConfig.h b/Server/mods/deathmatch/logic/CPedConfig.h new file mode 100644 index 0000000000..e5307a1da0 --- /dev/null +++ b/Server/mods/deathmatch/logic/CPedConfig.h @@ -0,0 +1,15 @@ + +#pragma once + +#include "StdInc.h" + +class CPedConfig +{ +public: + CPedConfig(std::string_view strPath) : m_strPacth(strPath){}; + + bool Load(); + +private: + std::string_view m_strPacth; +}; diff --git a/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp b/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp index d53ea92d6e..0813e8aae8 100644 --- a/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp +++ b/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp @@ -119,10 +119,11 @@ std::list CLuaModelDefs::GetFreeModels() std::list output; const auto models = g_pGame->GetModelManager()->GetModels(); - for (CModelBase* pModel : models) + // Fix magick umber + for (uint32_t uiModelID = 0; uiModelID < 20000; uiModelID++) { - if (!pModel) - output.push_back(pModel->GetModelID()); + if (!models[uiModelID]) + output.push_back(uiModelID); } return output; diff --git a/Server/mods/deathmatch/logic/models/CModelAtomic.cpp b/Server/mods/deathmatch/logic/models/CModelAtomic.cpp index f43dbe1034..4bc263a857 100644 --- a/Server/mods/deathmatch/logic/models/CModelAtomic.cpp +++ b/Server/mods/deathmatch/logic/models/CModelAtomic.cpp @@ -11,22 +11,34 @@ #include "StdInc.h" #include "CModelAtomic.h" +#include "CGame.h" +#include "CObjectManager.h" -CModelAtomic::CModelAtomic(uint32_t uiModelID, char strName[22], char strTextureName[22], uint32_t uiDrawDistance, uint32_t uiFlags) : CModelBase(uiModelID) +CModelAtomic* CModelAtomic::Clone(uint32_t uiModelID) { - //strcpy(m_modelName, strName); - //strcpy(m_strTextureName, strTextureName); - SetDrawDistance(uiDrawDistance); - SetFlags(uiFlags); -} + CModelAtomic* pNewModel = new CModelAtomic(uiModelID); -CModelAtomic::~CModelAtomic() -{ + pNewModel->SetParentModel(m_uiModelID); + return pNewModel; } void CModelAtomic::Unload() { - return; + auto iterBegin = g_pGame->GetObjectManager()->IterBegin(); + auto iterEnd = g_pGame->GetObjectManager()->IterEnd(); + for (auto iter = iterBegin; iterBegin != iterEnd; ++iterBegin) + { + CObject* pObject = *iter; + if (pObject->GetModel() == m_uiModelID) + { + pObject->SetModel(m_uiParentID); + + CLuaArguments Arguments; + Arguments.PushNumber(m_uiModelID); + Arguments.PushNumber(m_uiParentID); + pObject->CallEvent("onElementModelChange", Arguments); + } + } } diff --git a/Server/mods/deathmatch/logic/models/CModelAtomic.h b/Server/mods/deathmatch/logic/models/CModelAtomic.h index 8479fd4f7f..5c9285ec36 100644 --- a/Server/mods/deathmatch/logic/models/CModelAtomic.h +++ b/Server/mods/deathmatch/logic/models/CModelAtomic.h @@ -10,7 +10,6 @@ *****************************************************************************/ class CModelAtomic; - #pragma once #include "CModelBase.h" @@ -18,19 +17,10 @@ class CModelAtomic; class CModelAtomic : public CModelBase { public: - CModelAtomic(uint32_t uiModelID, char strName[22], char strTextureName[22], uint32_t uiDrawDistance, uint32_t uiFlags); - ~CModelAtomic(); + CModelAtomic(uint32_t uiModelID) : CModelBase(uiModelID){}; + ~CModelAtomic(){}; eModelInfoType GetType() { return eModelInfoType::ATOMIC; }; + CModelAtomic* Clone(uint32_t uiModelID); void Unload(); - - uint32_t GetDrawDistance() { return m_uiDrawDistance; }; - void SetDrawDistance(uint32_t uiDistance) { m_uiDrawDistance = uiDistance; }; - void SetFlags(uint32_t uiFlags) { m_uiDrawDistance = uiFlags; }; - uint32_t GetFlags() { return m_uiFlags; }; - -private: - char m_strTextureName[22]; - uint32_t m_uiDrawDistance; - uint32_t m_uiFlags; }; diff --git a/Server/mods/deathmatch/logic/models/CModelManager.h b/Server/mods/deathmatch/logic/models/CModelManager.h index 66e740041b..ba968557d4 100644 --- a/Server/mods/deathmatch/logic/models/CModelManager.h +++ b/Server/mods/deathmatch/logic/models/CModelManager.h @@ -17,6 +17,7 @@ class CModelManager; #include "CModelBase.h" #include "CModelAtomic.h" #include "CModelVehicle.h" +#include "CModelPed.h" class CModelManager { diff --git a/Server/mods/deathmatch/logic/models/CModelPed.cpp b/Server/mods/deathmatch/logic/models/CModelPed.cpp new file mode 100644 index 0000000000..af3056db23 --- /dev/null +++ b/Server/mods/deathmatch/logic/models/CModelPed.cpp @@ -0,0 +1,55 @@ +/***************************************************************************** + * + * PROJECT: Multi Theft Auto v1.0 + * LICENSE: See LICENSE in the top level directory + * FILE: mods/deathmatch/logic/models/CModelPed.cpp + * PURPOSE: Ped model class + * + * Multi Theft Auto is available from http://www.multitheftauto.com/ + * + *****************************************************************************/ + +#include "StdInc.h" +#include "CModelPed.h" +#include "CGame.h" +#include "CPlayerManager.h" +#include "CPedManager.h" + + +CModelPed* CModelPed::Clone(uint32_t uiModelID) +{ + CModelPed* pNewModel = new CModelPed(uiModelID); + + pNewModel->SetParentModel(m_uiModelID); + + return pNewModel; +} + + +void CModelPed::Unload() +{ + auto unloadModelsAndCallEvents = [&](auto iterBegin, auto iterEnd, auto setElementModelLambda) + { + for (auto iter = iterBegin; iter != iterEnd; iter++) + { + auto& element = **iter; + + if (element.GetModel() != m_uiModelID) + continue; + + setElementModelLambda(element); + + CLuaArguments Arguments; + Arguments.PushNumber(m_uiModelID); + Arguments.PushNumber(m_uiParentID); + element.CallEvent("onElementModelChange", Arguments); + } + }; + + CPedManager* pPedManager = g_pGame->GetPedManager(); + unloadModelsAndCallEvents(pPedManager->IterBegin(), pPedManager->IterEnd(), [&](auto& element) { element.SetModel(m_uiParentID); }); + + CPlayerManager* pPlayerManager = g_pGame->GetPlayerManager(); + unloadModelsAndCallEvents(pPlayerManager->IterBegin(), pPlayerManager->IterEnd(), [&](auto& element) { element.SetModel(m_uiParentID); }); + +} diff --git a/Server/mods/deathmatch/logic/models/CModelPed.h b/Server/mods/deathmatch/logic/models/CModelPed.h new file mode 100644 index 0000000000..ae40d2a7ef --- /dev/null +++ b/Server/mods/deathmatch/logic/models/CModelPed.h @@ -0,0 +1,26 @@ +/***************************************************************************** + * + * PROJECT: Multi Theft Auto v1.0 + * LICENSE: See LICENSE in the top level directory + * FILE: mods/deathmatch/logic/models/CModelPed.h + * PURPOSE: Ped model class + * + * Multi Theft Auto is available from http://www.multitheftauto.com/ + * + *****************************************************************************/ + +class CModelPed; +#pragma once + +#include "CModelBase.h" + +class CModelPed : public CModelBase +{ +public: + CModelPed(uint32_t uiModelID) : CModelBase(uiModelID){}; + ~CModelPed(){}; + + eModelInfoType GetType() { return eModelInfoType::PED; }; + CModelPed* Clone(uint32_t uiModelID); + void Unload(); +}; diff --git a/Server/mods/deathmatch/objects.conf b/Server/mods/deathmatch/objects.conf new file mode 100644 index 0000000000..79285f4ba1 --- /dev/null +++ b/Server/mods/deathmatch/objects.conf @@ -0,0 +1,14339 @@ +# includes ATOMIC, CLUMP, TIME, WEAPON +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +330 +331 +333 +334 +335 +336 +337 +338 +339 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +615 +616 +617 +618 +619 +620 +621 +622 +623 +624 +625 +626 +627 +628 +629 +630 +631 +632 +633 +634 +635 +636 +637 +638 +639 +640 +641 +642 +643 +644 +645 +646 +647 +648 +649 +650 +651 +652 +653 +654 +655 +656 +657 +658 +659 +660 +661 +664 +669 +670 +671 +672 +673 +674 +675 +676 +677 +678 +679 +680 +681 +682 +683 +684 +685 +686 +687 +688 +689 +690 +691 +692 +693 +694 +695 +696 +697 +698 +700 +701 +702 +703 +704 +705 +706 +707 +708 +709 +710 +711 +712 +713 +714 +715 +716 +717 +718 +719 +720 +721 +722 +723 +724 +725 +726 +727 +728 +729 +730 +731 +732 +733 +734 +735 +736 +737 +738 +739 +740 +741 +742 +743 +744 +745 +746 +747 +748 +749 +750 +751 +752 +753 +754 +755 +756 +757 +758 +759 +760 +761 +762 +763 +764 +765 +766 +767 +768 +769 +770 +771 +772 +773 +774 +775 +776 +777 +778 +779 +780 +781 +782 +783 +784 +785 +786 +787 +788 +789 +790 +791 +792 +800 +801 +802 +803 +804 +805 +806 +807 +808 +809 +810 +811 +812 +813 +814 +815 +816 +817 +818 +819 +820 +821 +822 +823 +824 +825 +826 +827 +828 +829 +830 +831 +832 +833 +834 +835 +836 +837 +838 +839 +840 +841 +842 +843 +844 +845 +846 +847 +848 +849 +850 +851 +852 +853 +854 +855 +856 +857 +858 +859 +860 +861 +862 +863 +864 +865 +866 +867 +868 +869 +870 +871 +872 +873 +874 +875 +876 +877 +878 +879 +880 +881 +882 +883 +884 +885 +886 +887 +888 +889 +890 +891 +892 +893 +894 +895 +896 +897 +898 +899 +900 +901 +902 +903 +904 +905 +906 +910 +911 +912 +913 +914 +915 +916 +917 +918 +919 +920 +921 +922 +923 +924 +925 +926 +927 +928 +929 +930 +931 +932 +933 +934 +935 +936 +937 +938 +939 +940 +941 +942 +943 +944 +945 +946 +947 +948 +949 +950 +951 +952 +953 +954 +955 +956 +957 +958 +959 +960 +961 +962 +963 +964 +966 +967 +968 +969 +970 +971 +972 +973 +974 +975 +976 +977 +978 +979 +980 +981 +982 +983 +984 +985 +986 +987 +988 +989 +990 +991 +992 +993 +994 +995 +996 +997 +998 +1000 +1001 +1002 +1003 +1004 +1005 +1006 +1007 +1008 +1009 +1010 +1011 +1012 +1013 +1014 +1015 +1016 +1017 +1018 +1019 +1020 +1021 +1022 +1023 +1024 +1025 +1026 +1027 +1028 +1029 +1030 +1031 +1032 +1033 +1034 +1035 +1036 +1037 +1038 +1039 +1040 +1041 +1042 +1043 +1044 +1045 +1046 +1047 +1048 +1049 +1050 +1051 +1052 +1053 +1054 +1055 +1056 +1057 +1058 +1059 +1060 +1061 +1062 +1063 +1064 +1065 +1066 +1067 +1068 +1069 +1070 +1071 +1072 +1073 +1074 +1075 +1076 +1077 +1078 +1079 +1080 +1081 +1082 +1083 +1084 +1085 +1086 +1087 +1088 +1089 +1090 +1091 +1092 +1093 +1094 +1095 +1096 +1097 +1098 +1099 +1100 +1101 +1102 +1103 +1104 +1105 +1106 +1107 +1108 +1109 +1110 +1111 +1112 +1113 +1114 +1115 +1116 +1117 +1118 +1119 +1120 +1121 +1122 +1123 +1124 +1125 +1126 +1127 +1128 +1129 +1130 +1131 +1132 +1133 +1134 +1135 +1136 +1137 +1138 +1139 +1140 +1141 +1142 +1143 +1144 +1145 +1146 +1147 +1148 +1149 +1150 +1151 +1152 +1153 +1154 +1155 +1156 +1157 +1158 +1159 +1160 +1161 +1162 +1163 +1164 +1165 +1166 +1167 +1168 +1169 +1170 +1171 +1172 +1173 +1174 +1175 +1176 +1177 +1178 +1179 +1180 +1181 +1182 +1183 +1184 +1185 +1186 +1187 +1188 +1189 +1190 +1191 +1192 +1193 +1207 +1208 +1209 +1210 +1211 +1212 +1213 +1214 +1215 +1216 +1217 +1218 +1219 +1220 +1221 +1222 +1223 +1224 +1225 +1226 +1227 +1228 +1229 +1230 +1231 +1232 +1233 +1234 +1235 +1236 +1237 +1238 +1239 +1240 +1241 +1242 +1243 +1244 +1245 +1246 +1247 +1248 +1249 +1250 +1251 +1252 +1253 +1254 +1255 +1256 +1257 +1258 +1259 +1260 +1261 +1262 +1263 +1264 +1265 +1266 +1267 +1268 +1269 +1270 +1271 +1272 +1273 +1274 +1275 +1276 +1277 +1278 +1279 +1280 +1281 +1282 +1283 +1284 +1285 +1286 +1287 +1288 +1289 +1290 +1291 +1292 +1293 +1294 +1295 +1296 +1297 +1298 +1299 +1300 +1301 +1302 +1303 +1304 +1305 +1306 +1307 +1308 +1309 +1310 +1311 +1312 +1313 +1314 +1315 +1316 +1317 +1318 +1319 +1320 +1321 +1322 +1323 +1324 +1325 +1327 +1328 +1329 +1330 +1331 +1332 +1333 +1334 +1335 +1336 +1337 +1338 +1339 +1340 +1341 +1342 +1343 +1344 +1345 +1346 +1347 +1348 +1349 +1350 +1351 +1352 +1353 +1354 +1355 +1356 +1357 +1358 +1359 +1360 +1361 +1362 +1363 +1364 +1365 +1366 +1367 +1368 +1369 +1370 +1371 +1372 +1373 +1374 +1375 +1376 +1377 +1378 +1379 +1380 +1381 +1382 +1383 +1384 +1385 +1386 +1387 +1388 +1389 +1390 +1391 +1392 +1393 +1394 +1395 +1396 +1397 +1398 +1399 +1400 +1401 +1402 +1403 +1404 +1405 +1406 +1407 +1408 +1409 +1410 +1411 +1412 +1413 +1414 +1415 +1416 +1417 +1418 +1419 +1420 +1421 +1422 +1423 +1424 +1425 +1426 +1427 +1428 +1429 +1430 +1431 +1432 +1433 +1434 +1435 +1436 +1437 +1438 +1439 +1440 +1441 +1442 +1443 +1444 +1445 +1446 +1447 +1448 +1449 +1450 +1451 +1452 +1453 +1454 +1455 +1456 +1457 +1458 +1459 +1460 +1461 +1462 +1463 +1464 +1465 +1466 +1467 +1468 +1469 +1470 +1471 +1472 +1473 +1474 +1475 +1476 +1477 +1478 +1479 +1480 +1481 +1482 +1483 +1484 +1485 +1486 +1487 +1488 +1489 +1490 +1491 +1492 +1493 +1494 +1495 +1496 +1497 +1498 +1499 +1500 +1501 +1502 +1503 +1504 +1505 +1506 +1507 +1508 +1509 +1510 +1511 +1512 +1513 +1514 +1515 +1516 +1517 +1518 +1519 +1520 +1521 +1522 +1523 +1524 +1525 +1526 +1527 +1528 +1529 +1530 +1531 +1532 +1533 +1534 +1535 +1536 +1537 +1538 +1539 +1540 +1541 +1542 +1543 +1544 +1545 +1546 +1547 +1548 +1549 +1550 +1551 +1552 +1553 +1554 +1555 +1556 +1557 +1558 +1559 +1560 +1561 +1562 +1563 +1564 +1565 +1566 +1567 +1568 +1569 +1570 +1571 +1572 +1574 +1575 +1576 +1577 +1578 +1579 +1580 +1581 +1582 +1583 +1584 +1585 +1586 +1587 +1588 +1589 +1590 +1591 +1592 +1593 +1594 +1595 +1596 +1597 +1598 +1599 +1600 +1601 +1602 +1603 +1604 +1605 +1606 +1607 +1608 +1609 +1610 +1611 +1612 +1613 +1614 +1615 +1616 +1617 +1618 +1619 +1620 +1621 +1622 +1623 +1624 +1625 +1626 +1627 +1628 +1629 +1630 +1631 +1632 +1633 +1634 +1635 +1636 +1637 +1638 +1639 +1640 +1641 +1642 +1643 +1644 +1645 +1646 +1647 +1648 +1649 +1650 +1651 +1652 +1653 +1654 +1655 +1656 +1657 +1658 +1659 +1660 +1661 +1662 +1663 +1664 +1665 +1666 +1667 +1668 +1669 +1670 +1671 +1672 +1673 +1674 +1675 +1676 +1677 +1678 +1679 +1680 +1681 +1682 +1683 +1684 +1685 +1686 +1687 +1688 +1689 +1690 +1691 +1692 +1693 +1694 +1695 +1696 +1697 +1698 +1700 +1701 +1702 +1703 +1704 +1705 +1706 +1707 +1708 +1709 +1710 +1711 +1712 +1713 +1714 +1715 +1716 +1717 +1718 +1719 +1720 +1721 +1722 +1723 +1724 +1725 +1726 +1727 +1728 +1729 +1730 +1731 +1732 +1733 +1734 +1735 +1736 +1737 +1738 +1739 +1740 +1741 +1742 +1743 +1744 +1745 +1746 +1747 +1748 +1749 +1750 +1751 +1752 +1753 +1754 +1755 +1756 +1757 +1758 +1759 +1760 +1761 +1762 +1763 +1764 +1765 +1766 +1767 +1768 +1769 +1770 +1771 +1772 +1773 +1774 +1775 +1776 +1777 +1778 +1779 +1780 +1781 +1782 +1783 +1784 +1785 +1786 +1787 +1788 +1789 +1790 +1791 +1792 +1793 +1794 +1795 +1796 +1797 +1798 +1799 +1800 +1801 +1802 +1803 +1804 +1805 +1806 +1807 +1808 +1809 +1810 +1811 +1812 +1813 +1814 +1815 +1816 +1817 +1818 +1819 +1820 +1821 +1822 +1823 +1824 +1825 +1826 +1827 +1828 +1829 +1830 +1831 +1832 +1833 +1834 +1835 +1836 +1837 +1838 +1839 +1840 +1841 +1842 +1843 +1844 +1845 +1846 +1847 +1848 +1849 +1850 +1851 +1852 +1853 +1854 +1855 +1856 +1857 +1858 +1859 +1860 +1861 +1862 +1863 +1864 +1865 +1866 +1867 +1868 +1869 +1870 +1871 +1872 +1873 +1874 +1875 +1876 +1877 +1878 +1879 +1880 +1881 +1882 +1883 +1884 +1885 +1886 +1887 +1888 +1889 +1890 +1891 +1892 +1893 +1894 +1895 +1896 +1897 +1898 +1899 +1900 +1901 +1902 +1903 +1904 +1905 +1906 +1907 +1908 +1909 +1910 +1911 +1912 +1913 +1914 +1915 +1916 +1917 +1918 +1919 +1920 +1921 +1922 +1923 +1924 +1925 +1926 +1927 +1928 +1929 +1930 +1931 +1932 +1933 +1934 +1935 +1936 +1937 +1938 +1939 +1940 +1941 +1942 +1943 +1944 +1945 +1946 +1947 +1948 +1949 +1950 +1951 +1952 +1953 +1954 +1955 +1956 +1957 +1958 +1959 +1960 +1961 +1962 +1963 +1964 +1965 +1966 +1967 +1968 +1969 +1970 +1971 +1972 +1973 +1974 +1975 +1976 +1977 +1978 +1979 +1980 +1981 +1982 +1983 +1984 +1985 +1986 +1987 +1988 +1989 +1990 +1991 +1992 +1993 +1994 +1995 +1996 +1997 +1998 +1999 +2000 +2001 +2002 +2003 +2004 +2005 +2006 +2007 +2008 +2009 +2010 +2011 +2012 +2013 +2014 +2015 +2016 +2017 +2018 +2019 +2020 +2021 +2022 +2023 +2024 +2025 +2026 +2027 +2028 +2029 +2030 +2031 +2032 +2033 +2034 +2035 +2036 +2037 +2038 +2039 +2040 +2041 +2042 +2043 +2044 +2045 +2046 +2047 +2048 +2049 +2050 +2051 +2052 +2053 +2054 +2055 +2056 +2057 +2058 +2059 +2060 +2061 +2062 +2063 +2064 +2065 +2066 +2067 +2068 +2069 +2070 +2071 +2072 +2073 +2074 +2075 +2076 +2077 +2078 +2079 +2080 +2081 +2082 +2083 +2084 +2085 +2086 +2087 +2088 +2089 +2090 +2091 +2092 +2093 +2094 +2095 +2096 +2097 +2098 +2099 +2100 +2101 +2102 +2103 +2104 +2105 +2106 +2107 +2108 +2109 +2110 +2111 +2112 +2113 +2114 +2115 +2116 +2117 +2118 +2119 +2120 +2121 +2122 +2123 +2124 +2125 +2126 +2127 +2128 +2129 +2130 +2131 +2132 +2133 +2134 +2135 +2136 +2137 +2138 +2139 +2140 +2141 +2142 +2143 +2144 +2145 +2146 +2147 +2148 +2149 +2150 +2151 +2152 +2153 +2154 +2155 +2156 +2157 +2158 +2159 +2160 +2161 +2162 +2163 +2164 +2165 +2166 +2167 +2168 +2169 +2170 +2171 +2172 +2173 +2174 +2175 +2176 +2177 +2178 +2179 +2180 +2181 +2182 +2183 +2184 +2185 +2186 +2187 +2188 +2189 +2190 +2191 +2192 +2193 +2194 +2195 +2196 +2197 +2198 +2199 +2200 +2201 +2202 +2203 +2204 +2205 +2206 +2207 +2208 +2209 +2210 +2211 +2212 +2213 +2214 +2215 +2216 +2217 +2218 +2219 +2220 +2221 +2222 +2223 +2224 +2225 +2226 +2227 +2228 +2229 +2230 +2231 +2232 +2233 +2234 +2235 +2236 +2237 +2238 +2239 +2240 +2241 +2242 +2243 +2244 +2245 +2246 +2247 +2248 +2249 +2250 +2251 +2252 +2253 +2254 +2255 +2256 +2257 +2258 +2259 +2260 +2261 +2262 +2263 +2264 +2265 +2266 +2267 +2268 +2269 +2270 +2271 +2272 +2273 +2274 +2275 +2276 +2277 +2278 +2279 +2280 +2281 +2282 +2283 +2284 +2285 +2286 +2287 +2288 +2289 +2290 +2291 +2292 +2293 +2294 +2295 +2296 +2297 +2298 +2299 +2300 +2301 +2302 +2303 +2304 +2305 +2306 +2307 +2308 +2309 +2310 +2311 +2312 +2313 +2314 +2315 +2316 +2317 +2318 +2319 +2320 +2321 +2322 +2323 +2324 +2325 +2326 +2327 +2328 +2329 +2330 +2331 +2332 +2333 +2334 +2335 +2336 +2337 +2338 +2339 +2340 +2341 +2342 +2343 +2344 +2345 +2346 +2347 +2348 +2349 +2350 +2351 +2352 +2353 +2354 +2355 +2356 +2357 +2358 +2359 +2360 +2361 +2362 +2363 +2364 +2365 +2366 +2367 +2368 +2369 +2370 +2371 +2372 +2373 +2374 +2375 +2376 +2377 +2378 +2379 +2380 +2381 +2382 +2383 +2384 +2385 +2386 +2387 +2388 +2389 +2390 +2391 +2392 +2393 +2394 +2395 +2396 +2397 +2398 +2399 +2400 +2401 +2402 +2403 +2404 +2405 +2406 +2407 +2408 +2409 +2410 +2411 +2412 +2413 +2414 +2415 +2416 +2417 +2418 +2419 +2420 +2421 +2422 +2423 +2424 +2425 +2426 +2427 +2428 +2429 +2430 +2431 +2432 +2433 +2434 +2435 +2436 +2437 +2438 +2439 +2440 +2441 +2442 +2443 +2444 +2445 +2446 +2447 +2448 +2449 +2450 +2451 +2452 +2453 +2454 +2455 +2456 +2457 +2458 +2459 +2460 +2461 +2462 +2463 +2464 +2465 +2466 +2467 +2468 +2469 +2470 +2471 +2472 +2473 +2474 +2475 +2476 +2477 +2478 +2479 +2480 +2481 +2482 +2483 +2484 +2485 +2486 +2487 +2488 +2489 +2490 +2491 +2492 +2493 +2494 +2495 +2496 +2497 +2498 +2499 +2500 +2501 +2502 +2503 +2504 +2505 +2506 +2507 +2508 +2509 +2510 +2511 +2512 +2513 +2514 +2515 +2516 +2517 +2518 +2519 +2520 +2521 +2522 +2523 +2524 +2525 +2526 +2527 +2528 +2529 +2530 +2531 +2532 +2533 +2534 +2535 +2536 +2537 +2538 +2539 +2540 +2541 +2542 +2543 +2544 +2545 +2546 +2547 +2548 +2549 +2550 +2551 +2552 +2553 +2554 +2555 +2556 +2557 +2558 +2559 +2560 +2561 +2562 +2563 +2564 +2565 +2566 +2567 +2568 +2569 +2570 +2571 +2572 +2573 +2574 +2575 +2576 +2577 +2578 +2579 +2580 +2581 +2582 +2583 +2584 +2585 +2586 +2587 +2588 +2589 +2590 +2591 +2592 +2593 +2594 +2595 +2596 +2597 +2598 +2599 +2600 +2601 +2602 +2603 +2604 +2605 +2606 +2607 +2608 +2609 +2610 +2611 +2612 +2613 +2614 +2615 +2616 +2617 +2618 +2619 +2620 +2621 +2622 +2623 +2624 +2625 +2626 +2627 +2628 +2629 +2630 +2631 +2632 +2633 +2634 +2635 +2636 +2637 +2638 +2639 +2640 +2641 +2642 +2643 +2644 +2645 +2646 +2647 +2648 +2649 +2650 +2651 +2652 +2653 +2654 +2655 +2656 +2657 +2658 +2659 +2660 +2661 +2662 +2663 +2664 +2665 +2666 +2667 +2668 +2669 +2670 +2671 +2672 +2673 +2674 +2675 +2676 +2677 +2678 +2679 +2680 +2681 +2682 +2683 +2684 +2685 +2686 +2687 +2688 +2689 +2690 +2691 +2692 +2693 +2694 +2695 +2696 +2697 +2698 +2699 +2700 +2701 +2702 +2703 +2704 +2705 +2706 +2707 +2708 +2709 +2710 +2711 +2712 +2713 +2714 +2715 +2716 +2717 +2718 +2719 +2720 +2721 +2722 +2723 +2724 +2725 +2726 +2727 +2728 +2729 +2730 +2731 +2732 +2733 +2734 +2735 +2736 +2737 +2738 +2739 +2740 +2741 +2742 +2743 +2744 +2745 +2746 +2747 +2748 +2749 +2750 +2751 +2752 +2753 +2754 +2755 +2756 +2757 +2758 +2759 +2760 +2761 +2762 +2763 +2764 +2765 +2766 +2767 +2768 +2769 +2770 +2771 +2772 +2773 +2774 +2775 +2776 +2777 +2778 +2779 +2780 +2781 +2782 +2783 +2784 +2785 +2786 +2787 +2788 +2789 +2790 +2791 +2792 +2793 +2794 +2795 +2796 +2797 +2798 +2799 +2800 +2801 +2802 +2803 +2804 +2805 +2806 +2807 +2808 +2809 +2810 +2811 +2812 +2813 +2814 +2815 +2816 +2817 +2818 +2819 +2820 +2821 +2822 +2823 +2824 +2825 +2826 +2827 +2828 +2829 +2830 +2831 +2832 +2833 +2834 +2835 +2836 +2837 +2838 +2839 +2840 +2841 +2842 +2843 +2844 +2845 +2846 +2847 +2848 +2849 +2850 +2851 +2852 +2853 +2854 +2855 +2856 +2857 +2858 +2859 +2860 +2861 +2862 +2863 +2864 +2865 +2866 +2867 +2868 +2869 +2870 +2871 +2872 +2873 +2874 +2875 +2876 +2877 +2878 +2879 +2880 +2881 +2882 +2885 +2886 +2887 +2888 +2889 +2890 +2891 +2892 +2893 +2894 +2895 +2896 +2897 +2898 +2899 +2900 +2901 +2902 +2903 +2904 +2905 +2906 +2907 +2908 +2909 +2910 +2911 +2912 +2913 +2914 +2915 +2916 +2917 +2918 +2919 +2920 +2921 +2922 +2923 +2924 +2925 +2926 +2927 +2928 +2929 +2930 +2931 +2932 +2933 +2934 +2935 +2936 +2937 +2938 +2939 +2940 +2941 +2942 +2943 +2944 +2945 +2946 +2947 +2948 +2949 +2950 +2951 +2952 +2953 +2954 +2955 +2956 +2957 +2958 +2959 +2960 +2961 +2962 +2963 +2964 +2965 +2966 +2967 +2968 +2969 +2970 +2971 +2972 +2973 +2974 +2975 +2976 +2977 +2978 +2979 +2980 +2981 +2982 +2983 +2984 +2985 +2986 +2987 +2988 +2989 +2990 +2991 +2992 +2993 +2994 +2995 +2996 +2997 +2998 +2999 +3000 +3001 +3002 +3003 +3004 +3005 +3006 +3007 +3008 +3009 +3010 +3011 +3012 +3013 +3014 +3015 +3016 +3017 +3018 +3019 +3020 +3021 +3022 +3023 +3024 +3025 +3026 +3027 +3028 +3029 +3030 +3031 +3032 +3033 +3034 +3035 +3036 +3037 +3038 +3039 +3040 +3041 +3042 +3043 +3044 +3045 +3046 +3047 +3048 +3049 +3050 +3051 +3052 +3053 +3054 +3055 +3056 +3057 +3058 +3059 +3060 +3061 +3062 +3063 +3064 +3065 +3066 +3067 +3068 +3069 +3070 +3071 +3072 +3073 +3074 +3075 +3076 +3077 +3078 +3079 +3080 +3081 +3082 +3083 +3084 +3085 +3086 +3087 +3088 +3089 +3090 +3091 +3092 +3093 +3094 +3095 +3096 +3097 +3098 +3099 +3100 +3101 +3102 +3103 +3104 +3105 +3106 +3107 +3108 +3109 +3110 +3111 +3112 +3113 +3114 +3115 +3116 +3117 +3118 +3119 +3120 +3121 +3122 +3123 +3124 +3125 +3126 +3127 +3128 +3129 +3130 +3131 +3132 +3133 +3134 +3135 +3167 +3168 +3169 +3170 +3171 +3172 +3173 +3174 +3175 +3178 +3187 +3193 +3214 +3221 +3241 +3242 +3243 +3244 +3246 +3249 +3250 +3252 +3253 +3255 +3256 +3257 +3258 +3259 +3260 +3261 +3262 +3263 +3264 +3265 +3267 +3268 +3269 +3270 +3271 +3272 +3273 +3274 +3275 +3276 +3277 +3278 +3279 +3280 +3281 +3282 +3283 +3284 +3285 +3286 +3287 +3288 +3289 +3290 +3291 +3292 +3293 +3294 +3295 +3296 +3297 +3298 +3299 +3300 +3301 +3302 +3303 +3304 +3305 +3306 +3307 +3308 +3309 +3310 +3311 +3312 +3313 +3314 +3315 +3316 +3317 +3318 +3319 +3320 +3321 +3322 +3323 +3324 +3325 +3326 +3327 +3328 +3329 +3330 +3331 +3332 +3333 +3334 +3335 +3336 +3337 +3338 +3339 +3340 +3341 +3342 +3343 +3344 +3345 +3346 +3347 +3350 +3351 +3352 +3353 +3354 +3355 +3356 +3357 +3358 +3359 +3360 +3361 +3362 +3363 +3364 +3365 +3366 +3367 +3368 +3369 +3370 +3371 +3372 +3373 +3374 +3375 +3376 +3377 +3378 +3379 +3380 +3381 +3382 +3383 +3384 +3385 +3386 +3387 +3388 +3389 +3390 +3391 +3392 +3393 +3394 +3395 +3396 +3397 +3398 +3399 +3400 +3401 +3402 +3403 +3404 +3405 +3406 +3407 +3408 +3409 +3410 +3411 +3412 +3413 +3414 +3415 +3417 +3418 +3419 +3420 +3421 +3422 +3423 +3424 +3425 +3426 +3427 +3428 +3430 +3431 +3432 +3433 +3434 +3435 +3436 +3437 +3438 +3439 +3440 +3441 +3442 +3443 +3444 +3445 +3446 +3447 +3448 +3449 +3450 +3451 +3452 +3453 +3454 +3455 +3456 +3457 +3458 +3459 +3460 +3461 +3462 +3463 +3464 +3465 +3466 +3467 +3468 +3469 +3470 +3471 +3472 +3473 +3474 +3475 +3476 +3477 +3478 +3479 +3480 +3481 +3482 +3483 +3484 +3485 +3486 +3487 +3488 +3489 +3490 +3491 +3492 +3493 +3494 +3495 +3496 +3497 +3498 +3499 +3500 +3501 +3502 +3503 +3504 +3505 +3506 +3507 +3508 +3509 +3510 +3511 +3512 +3513 +3514 +3515 +3516 +3517 +3518 +3519 +3520 +3521 +3522 +3523 +3524 +3525 +3526 +3527 +3528 +3529 +3530 +3531 +3532 +3533 +3534 +3535 +3536 +3537 +3538 +3539 +3540 +3541 +3542 +3543 +3544 +3545 +3546 +3547 +3548 +3549 +3550 +3551 +3552 +3553 +3554 +3555 +3556 +3557 +3558 +3559 +3560 +3561 +3562 +3563 +3564 +3565 +3566 +3567 +3568 +3569 +3570 +3571 +3572 +3573 +3574 +3575 +3576 +3577 +3578 +3579 +3580 +3581 +3582 +3583 +3584 +3585 +3586 +3587 +3588 +3589 +3590 +3591 +3592 +3593 +3594 +3595 +3596 +3597 +3598 +3599 +3600 +3601 +3602 +3603 +3604 +3605 +3606 +3607 +3608 +3609 +3612 +3613 +3614 +3615 +3616 +3617 +3618 +3619 +3620 +3621 +3622 +3623 +3624 +3625 +3626 +3627 +3628 +3629 +3630 +3631 +3632 +3633 +3634 +3635 +3636 +3637 +3638 +3639 +3640 +3641 +3642 +3643 +3644 +3645 +3646 +3647 +3648 +3649 +3650 +3651 +3652 +3653 +3654 +3655 +3656 +3657 +3658 +3659 +3660 +3661 +3662 +3663 +3664 +3665 +3666 +3667 +3668 +3669 +3670 +3671 +3672 +3673 +3674 +3675 +3676 +3677 +3678 +3679 +3680 +3681 +3682 +3683 +3684 +3685 +3686 +3687 +3688 +3689 +3690 +3691 +3692 +3693 +3694 +3695 +3696 +3697 +3698 +3699 +3700 +3701 +3702 +3703 +3704 +3705 +3706 +3707 +3708 +3709 +3710 +3711 +3712 +3713 +3714 +3715 +3716 +3717 +3718 +3719 +3720 +3721 +3722 +3723 +3724 +3725 +3726 +3727 +3728 +3729 +3730 +3731 +3732 +3733 +3734 +3735 +3736 +3737 +3738 +3739 +3740 +3741 +3742 +3743 +3744 +3745 +3746 +3747 +3748 +3749 +3750 +3751 +3752 +3753 +3754 +3755 +3756 +3757 +3758 +3759 +3760 +3761 +3762 +3763 +3764 +3765 +3766 +3767 +3768 +3769 +3770 +3771 +3772 +3773 +3774 +3775 +3776 +3777 +3778 +3779 +3780 +3781 +3782 +3783 +3785 +3786 +3787 +3788 +3789 +3790 +3791 +3792 +3793 +3794 +3795 +3796 +3797 +3798 +3799 +3800 +3801 +3802 +3803 +3804 +3805 +3806 +3807 +3808 +3809 +3810 +3811 +3812 +3813 +3814 +3815 +3816 +3817 +3818 +3819 +3820 +3821 +3822 +3823 +3824 +3825 +3826 +3827 +3828 +3829 +3830 +3831 +3832 +3833 +3834 +3835 +3836 +3837 +3838 +3839 +3840 +3841 +3842 +3843 +3844 +3845 +3846 +3847 +3848 +3849 +3850 +3851 +3852 +3853 +3854 +3855 +3856 +3857 +3858 +3859 +3860 +3861 +3862 +3863 +3864 +3865 +3866 +3867 +3868 +3869 +3872 +3873 +3874 +3875 +3876 +3877 +3878 +3879 +3880 +3881 +3882 +3884 +3885 +3886 +3887 +3888 +3890 +3891 +3892 +3893 +3894 +3895 +3896 +3897 +3898 +3899 +3900 +3901 +3902 +3903 +3904 +3905 +3906 +3907 +3908 +3909 +3910 +3911 +3912 +3913 +3914 +3915 +3916 +3917 +3918 +3919 +3920 +3921 +3922 +3923 +3924 +3925 +3926 +3927 +3928 +3929 +3930 +3931 +3932 +3933 +3934 +3935 +3936 +3937 +3938 +3939 +3940 +3941 +3942 +3943 +3944 +3945 +3946 +3947 +3948 +3949 +3950 +3951 +3952 +3953 +3954 +3955 +3956 +3957 +3958 +3959 +3960 +3961 +3962 +3963 +3964 +3965 +3966 +3967 +3968 +3969 +3970 +3971 +3972 +3973 +3975 +3976 +3977 +3978 +3979 +3980 +3981 +3982 +3983 +3984 +3985 +3986 +3987 +3988 +3989 +3990 +3991 +3992 +3993 +3994 +3995 +3996 +3997 +3998 +3999 +4000 +4001 +4002 +4003 +4004 +4005 +4006 +4007 +4008 +4009 +4010 +4011 +4012 +4013 +4014 +4015 +4016 +4017 +4018 +4019 +4020 +4021 +4022 +4023 +4024 +4025 +4026 +4027 +4028 +4029 +4030 +4031 +4032 +4033 +4034 +4035 +4036 +4037 +4038 +4039 +4040 +4041 +4042 +4043 +4044 +4045 +4046 +4047 +4048 +4049 +4050 +4051 +4052 +4053 +4054 +4055 +4056 +4057 +4058 +4059 +4060 +4061 +4062 +4063 +4064 +4065 +4066 +4067 +4068 +4069 +4070 +4071 +4072 +4073 +4074 +4075 +4076 +4077 +4078 +4079 +4080 +4081 +4082 +4083 +4084 +4085 +4086 +4087 +4088 +4089 +4090 +4091 +4092 +4093 +4094 +4095 +4096 +4097 +4098 +4099 +4100 +4101 +4102 +4103 +4104 +4105 +4106 +4107 +4108 +4109 +4110 +4111 +4112 +4113 +4114 +4115 +4116 +4117 +4118 +4119 +4120 +4121 +4122 +4123 +4124 +4125 +4126 +4127 +4128 +4129 +4130 +4131 +4132 +4133 +4134 +4135 +4136 +4137 +4138 +4139 +4140 +4141 +4142 +4143 +4144 +4145 +4146 +4147 +4148 +4149 +4150 +4151 +4152 +4153 +4154 +4155 +4156 +4157 +4158 +4159 +4160 +4161 +4162 +4163 +4164 +4165 +4166 +4167 +4168 +4169 +4170 +4171 +4172 +4173 +4174 +4175 +4176 +4177 +4178 +4179 +4180 +4181 +4182 +4183 +4184 +4185 +4186 +4187 +4188 +4189 +4190 +4191 +4192 +4193 +4194 +4195 +4196 +4197 +4198 +4199 +4200 +4201 +4202 +4203 +4204 +4205 +4206 +4207 +4208 +4209 +4210 +4211 +4212 +4213 +4214 +4215 +4216 +4217 +4218 +4219 +4220 +4221 +4222 +4223 +4224 +4225 +4226 +4227 +4228 +4229 +4230 +4231 +4232 +4233 +4234 +4235 +4236 +4237 +4238 +4239 +4240 +4241 +4242 +4243 +4244 +4245 +4246 +4247 +4248 +4249 +4250 +4251 +4252 +4253 +4254 +4255 +4256 +4257 +4258 +4259 +4260 +4261 +4262 +4263 +4264 +4265 +4266 +4267 +4268 +4269 +4270 +4271 +4272 +4273 +4274 +4275 +4276 +4277 +4278 +4279 +4280 +4281 +4282 +4283 +4284 +4285 +4286 +4287 +4288 +4289 +4290 +4291 +4292 +4293 +4294 +4295 +4296 +4297 +4298 +4299 +4300 +4301 +4302 +4303 +4304 +4305 +4306 +4307 +4308 +4309 +4310 +4311 +4312 +4313 +4314 +4315 +4316 +4317 +4318 +4319 +4320 +4321 +4322 +4323 +4324 +4325 +4326 +4327 +4328 +4329 +4330 +4331 +4332 +4333 +4334 +4335 +4336 +4337 +4338 +4339 +4340 +4341 +4342 +4343 +4344 +4345 +4346 +4347 +4348 +4349 +4350 +4351 +4352 +4353 +4354 +4355 +4356 +4357 +4358 +4359 +4360 +4361 +4362 +4363 +4364 +4365 +4366 +4367 +4368 +4369 +4370 +4371 +4372 +4373 +4374 +4375 +4376 +4377 +4378 +4379 +4380 +4381 +4382 +4383 +4384 +4385 +4386 +4387 +4388 +4389 +4390 +4391 +4392 +4393 +4394 +4395 +4396 +4397 +4398 +4399 +4400 +4401 +4402 +4403 +4404 +4405 +4406 +4407 +4408 +4409 +4410 +4411 +4412 +4413 +4414 +4415 +4416 +4417 +4418 +4419 +4420 +4421 +4422 +4423 +4424 +4425 +4426 +4427 +4428 +4429 +4430 +4431 +4432 +4433 +4434 +4435 +4436 +4437 +4438 +4439 +4440 +4441 +4442 +4443 +4444 +4445 +4446 +4447 +4448 +4449 +4450 +4451 +4452 +4453 +4454 +4455 +4456 +4457 +4458 +4459 +4460 +4461 +4462 +4463 +4464 +4465 +4466 +4467 +4468 +4469 +4470 +4471 +4472 +4473 +4474 +4475 +4476 +4477 +4478 +4479 +4480 +4481 +4482 +4483 +4484 +4485 +4486 +4487 +4488 +4489 +4490 +4491 +4492 +4493 +4494 +4495 +4496 +4497 +4498 +4499 +4500 +4501 +4502 +4503 +4504 +4505 +4506 +4507 +4508 +4509 +4510 +4511 +4512 +4513 +4514 +4515 +4516 +4517 +4518 +4519 +4520 +4521 +4522 +4523 +4524 +4525 +4526 +4527 +4528 +4529 +4530 +4531 +4532 +4533 +4534 +4535 +4536 +4537 +4538 +4539 +4540 +4541 +4550 +4551 +4552 +4553 +4554 +4555 +4556 +4557 +4558 +4559 +4560 +4561 +4562 +4563 +4564 +4565 +4566 +4567 +4568 +4569 +4570 +4571 +4572 +4573 +4574 +4575 +4576 +4577 +4578 +4579 +4580 +4581 +4582 +4583 +4584 +4585 +4586 +4587 +4588 +4589 +4590 +4591 +4592 +4593 +4594 +4595 +4596 +4597 +4598 +4599 +4600 +4601 +4602 +4603 +4604 +4605 +4606 +4607 +4608 +4609 +4610 +4611 +4612 +4613 +4614 +4615 +4616 +4617 +4618 +4619 +4620 +4621 +4622 +4623 +4624 +4625 +4626 +4627 +4628 +4629 +4630 +4631 +4632 +4633 +4634 +4635 +4636 +4637 +4638 +4639 +4640 +4641 +4642 +4643 +4644 +4645 +4646 +4647 +4648 +4649 +4650 +4651 +4652 +4653 +4654 +4655 +4656 +4657 +4658 +4659 +4660 +4661 +4662 +4663 +4664 +4665 +4666 +4667 +4668 +4669 +4670 +4671 +4672 +4673 +4674 +4675 +4676 +4677 +4678 +4679 +4680 +4681 +4682 +4683 +4684 +4685 +4686 +4687 +4688 +4689 +4690 +4691 +4692 +4693 +4694 +4695 +4696 +4697 +4698 +4699 +4700 +4701 +4702 +4703 +4704 +4705 +4706 +4707 +4708 +4709 +4710 +4711 +4712 +4713 +4714 +4715 +4716 +4717 +4718 +4719 +4720 +4721 +4722 +4723 +4724 +4725 +4726 +4727 +4728 +4729 +4730 +4731 +4732 +4733 +4734 +4735 +4736 +4737 +4738 +4739 +4740 +4741 +4742 +4743 +4744 +4745 +4746 +4747 +4748 +4749 +4750 +4751 +4752 +4753 +4754 +4755 +4756 +4757 +4758 +4759 +4760 +4761 +4762 +4806 +4807 +4808 +4809 +4810 +4811 +4812 +4813 +4814 +4815 +4816 +4817 +4818 +4819 +4820 +4821 +4822 +4823 +4824 +4825 +4826 +4827 +4828 +4829 +4830 +4831 +4832 +4833 +4834 +4835 +4836 +4837 +4838 +4839 +4840 +4841 +4842 +4843 +4844 +4845 +4846 +4847 +4848 +4849 +4850 +4851 +4852 +4853 +4854 +4855 +4856 +4857 +4858 +4859 +4860 +4861 +4862 +4863 +4864 +4865 +4866 +4867 +4868 +4869 +4870 +4871 +4872 +4873 +4874 +4875 +4876 +4877 +4878 +4879 +4880 +4881 +4882 +4883 +4884 +4885 +4886 +4887 +4888 +4889 +4890 +4891 +4892 +4893 +4894 +4895 +4896 +4897 +4898 +4899 +4900 +4901 +4902 +4903 +4904 +4905 +4906 +4907 +4908 +4909 +4910 +4911 +4912 +4913 +4914 +4915 +4916 +4917 +4918 +4919 +4920 +4921 +4922 +4923 +4924 +4925 +4926 +4927 +4928 +4929 +4930 +4931 +4932 +4933 +4934 +4935 +4936 +4937 +4938 +4939 +4940 +4941 +4942 +4943 +4944 +4945 +4946 +4947 +4948 +4949 +4950 +4951 +4952 +4953 +4954 +4955 +4956 +4957 +4958 +4959 +4960 +4961 +4962 +4963 +4964 +4965 +4966 +4967 +4968 +4969 +4970 +4971 +4972 +4973 +4974 +4975 +4976 +4977 +4978 +4979 +4980 +4981 +4982 +4983 +4984 +4985 +4986 +4987 +4988 +4989 +4990 +4991 +4992 +4993 +4994 +4995 +4996 +4997 +4998 +4999 +5000 +5001 +5002 +5003 +5004 +5005 +5006 +5007 +5008 +5009 +5010 +5011 +5012 +5013 +5014 +5015 +5016 +5017 +5018 +5019 +5020 +5021 +5022 +5023 +5024 +5025 +5026 +5027 +5028 +5029 +5030 +5031 +5032 +5033 +5034 +5035 +5036 +5037 +5038 +5039 +5040 +5041 +5042 +5043 +5044 +5045 +5046 +5047 +5048 +5049 +5050 +5051 +5052 +5053 +5054 +5055 +5056 +5057 +5058 +5059 +5060 +5061 +5062 +5063 +5064 +5065 +5066 +5067 +5068 +5069 +5070 +5071 +5072 +5073 +5074 +5075 +5076 +5077 +5078 +5079 +5080 +5081 +5082 +5083 +5084 +5086 +5087 +5088 +5089 +5105 +5106 +5107 +5108 +5109 +5110 +5111 +5112 +5113 +5114 +5115 +5116 +5117 +5118 +5119 +5120 +5121 +5122 +5123 +5124 +5125 +5126 +5127 +5128 +5129 +5130 +5131 +5132 +5133 +5134 +5135 +5136 +5137 +5138 +5139 +5140 +5141 +5142 +5143 +5144 +5145 +5146 +5147 +5148 +5149 +5150 +5151 +5152 +5153 +5154 +5155 +5156 +5157 +5158 +5159 +5160 +5161 +5162 +5163 +5164 +5165 +5166 +5167 +5168 +5169 +5170 +5171 +5172 +5173 +5174 +5175 +5176 +5177 +5178 +5179 +5180 +5181 +5182 +5183 +5184 +5185 +5186 +5187 +5188 +5189 +5190 +5191 +5192 +5193 +5194 +5195 +5196 +5197 +5198 +5199 +5200 +5201 +5202 +5203 +5204 +5205 +5206 +5207 +5208 +5209 +5210 +5211 +5212 +5213 +5214 +5215 +5216 +5217 +5218 +5219 +5220 +5221 +5222 +5223 +5224 +5225 +5226 +5227 +5228 +5229 +5230 +5231 +5232 +5233 +5234 +5235 +5236 +5237 +5238 +5239 +5240 +5241 +5242 +5243 +5244 +5245 +5246 +5247 +5248 +5249 +5250 +5251 +5252 +5253 +5254 +5255 +5256 +5257 +5258 +5259 +5260 +5261 +5262 +5263 +5264 +5265 +5266 +5267 +5268 +5269 +5270 +5271 +5272 +5273 +5274 +5275 +5276 +5277 +5278 +5279 +5280 +5281 +5282 +5283 +5284 +5285 +5286 +5287 +5288 +5289 +5290 +5291 +5292 +5293 +5294 +5295 +5296 +5297 +5298 +5299 +5300 +5301 +5302 +5303 +5304 +5305 +5306 +5307 +5308 +5309 +5310 +5311 +5312 +5313 +5314 +5315 +5316 +5317 +5318 +5319 +5320 +5321 +5322 +5323 +5324 +5325 +5326 +5327 +5328 +5329 +5330 +5331 +5332 +5333 +5334 +5335 +5336 +5337 +5338 +5339 +5340 +5341 +5342 +5343 +5344 +5345 +5346 +5347 +5348 +5349 +5350 +5351 +5352 +5353 +5354 +5355 +5356 +5357 +5358 +5359 +5360 +5361 +5362 +5363 +5364 +5365 +5366 +5367 +5368 +5369 +5370 +5371 +5372 +5373 +5374 +5375 +5390 +5391 +5392 +5393 +5394 +5395 +5396 +5397 +5398 +5399 +5400 +5401 +5402 +5403 +5404 +5405 +5406 +5407 +5408 +5409 +5410 +5411 +5412 +5413 +5414 +5415 +5416 +5417 +5418 +5419 +5420 +5421 +5422 +5423 +5424 +5425 +5426 +5427 +5428 +5429 +5430 +5431 +5432 +5433 +5434 +5435 +5436 +5437 +5438 +5439 +5440 +5441 +5442 +5443 +5444 +5445 +5446 +5447 +5448 +5449 +5450 +5451 +5452 +5453 +5454 +5455 +5456 +5457 +5458 +5459 +5460 +5461 +5462 +5463 +5464 +5465 +5466 +5467 +5468 +5469 +5470 +5471 +5472 +5473 +5474 +5475 +5476 +5477 +5478 +5479 +5480 +5481 +5482 +5483 +5484 +5485 +5486 +5487 +5488 +5489 +5490 +5491 +5492 +5493 +5494 +5495 +5496 +5497 +5498 +5499 +5500 +5501 +5502 +5503 +5504 +5505 +5506 +5507 +5508 +5509 +5510 +5511 +5512 +5513 +5514 +5515 +5516 +5517 +5518 +5519 +5520 +5521 +5522 +5523 +5524 +5525 +5526 +5527 +5528 +5529 +5530 +5531 +5532 +5533 +5534 +5535 +5536 +5537 +5538 +5539 +5540 +5541 +5542 +5543 +5544 +5545 +5546 +5547 +5548 +5549 +5550 +5551 +5552 +5553 +5554 +5555 +5556 +5557 +5558 +5559 +5560 +5561 +5562 +5563 +5564 +5565 +5566 +5567 +5568 +5569 +5570 +5571 +5572 +5573 +5574 +5575 +5576 +5577 +5578 +5579 +5580 +5581 +5582 +5583 +5584 +5585 +5586 +5587 +5588 +5589 +5590 +5591 +5592 +5593 +5594 +5595 +5596 +5597 +5598 +5599 +5600 +5601 +5602 +5603 +5604 +5605 +5606 +5607 +5608 +5609 +5610 +5611 +5612 +5613 +5614 +5615 +5616 +5617 +5618 +5619 +5620 +5621 +5622 +5623 +5624 +5625 +5626 +5627 +5628 +5629 +5630 +5631 +5632 +5633 +5634 +5635 +5636 +5637 +5638 +5639 +5640 +5641 +5642 +5643 +5644 +5645 +5646 +5647 +5648 +5649 +5650 +5651 +5652 +5653 +5654 +5655 +5656 +5657 +5658 +5659 +5660 +5661 +5662 +5663 +5664 +5665 +5666 +5667 +5668 +5669 +5670 +5671 +5672 +5673 +5674 +5675 +5676 +5677 +5678 +5679 +5680 +5681 +5682 +5703 +5704 +5705 +5706 +5707 +5708 +5709 +5710 +5711 +5712 +5713 +5714 +5715 +5716 +5717 +5718 +5719 +5720 +5721 +5722 +5723 +5724 +5725 +5726 +5727 +5728 +5729 +5730 +5731 +5732 +5733 +5734 +5735 +5736 +5737 +5738 +5739 +5740 +5741 +5742 +5743 +5744 +5745 +5746 +5747 +5748 +5749 +5750 +5751 +5752 +5753 +5754 +5755 +5756 +5757 +5758 +5759 +5760 +5761 +5762 +5763 +5764 +5765 +5766 +5767 +5768 +5769 +5770 +5771 +5772 +5773 +5774 +5775 +5776 +5777 +5778 +5779 +5780 +5781 +5782 +5783 +5784 +5785 +5786 +5787 +5788 +5789 +5790 +5791 +5792 +5793 +5794 +5795 +5796 +5797 +5798 +5799 +5800 +5801 +5802 +5803 +5804 +5805 +5806 +5807 +5808 +5809 +5810 +5811 +5812 +5813 +5814 +5815 +5816 +5817 +5818 +5819 +5820 +5821 +5822 +5823 +5824 +5825 +5826 +5827 +5828 +5829 +5830 +5831 +5832 +5833 +5834 +5835 +5836 +5837 +5838 +5839 +5840 +5841 +5842 +5843 +5844 +5845 +5846 +5847 +5848 +5849 +5850 +5851 +5852 +5853 +5854 +5855 +5856 +5857 +5858 +5859 +5860 +5861 +5862 +5863 +5864 +5865 +5866 +5867 +5868 +5869 +5870 +5871 +5872 +5873 +5874 +5875 +5876 +5877 +5878 +5879 +5880 +5881 +5882 +5883 +5884 +5885 +5886 +5887 +5888 +5889 +5890 +5891 +5892 +5893 +5894 +5895 +5896 +5897 +5898 +5899 +5900 +5901 +5902 +5903 +5904 +5905 +5906 +5907 +5908 +5909 +5910 +5911 +5912 +5913 +5914 +5915 +5916 +5917 +5918 +5919 +5920 +5921 +5922 +5923 +5924 +5925 +5926 +5927 +5928 +5929 +5930 +5931 +5932 +5933 +5934 +5935 +5936 +5937 +5938 +5939 +5940 +5941 +5942 +5943 +5944 +5945 +5946 +5947 +5948 +5949 +5950 +5951 +5952 +5953 +5954 +5955 +5956 +5957 +5958 +5959 +5960 +5961 +5962 +5963 +5964 +5965 +5966 +5967 +5968 +5969 +5970 +5971 +5972 +5973 +5974 +5975 +5976 +5977 +5978 +5979 +5980 +5981 +5982 +5983 +5984 +5985 +5986 +5987 +5988 +5989 +5990 +5991 +5992 +5993 +5994 +5995 +5996 +5997 +5998 +5999 +6000 +6001 +6002 +6003 +6004 +6005 +6006 +6007 +6008 +6009 +6010 +6035 +6036 +6037 +6038 +6039 +6040 +6041 +6042 +6043 +6044 +6045 +6046 +6047 +6048 +6049 +6050 +6051 +6052 +6053 +6054 +6055 +6056 +6057 +6058 +6059 +6060 +6061 +6062 +6063 +6064 +6065 +6066 +6067 +6068 +6069 +6070 +6071 +6072 +6073 +6074 +6075 +6076 +6077 +6078 +6079 +6080 +6081 +6082 +6083 +6084 +6085 +6086 +6087 +6088 +6089 +6090 +6091 +6092 +6093 +6094 +6095 +6096 +6097 +6098 +6099 +6100 +6101 +6102 +6103 +6104 +6105 +6106 +6107 +6108 +6109 +6110 +6111 +6112 +6113 +6114 +6115 +6116 +6117 +6118 +6119 +6120 +6121 +6122 +6123 +6124 +6125 +6126 +6127 +6128 +6129 +6130 +6131 +6132 +6133 +6134 +6135 +6136 +6137 +6138 +6139 +6140 +6141 +6142 +6143 +6144 +6145 +6146 +6147 +6148 +6149 +6150 +6151 +6152 +6153 +6154 +6155 +6156 +6157 +6158 +6159 +6160 +6161 +6162 +6163 +6164 +6165 +6166 +6167 +6168 +6169 +6170 +6171 +6172 +6173 +6174 +6175 +6176 +6177 +6178 +6179 +6180 +6181 +6182 +6183 +6184 +6185 +6186 +6187 +6188 +6189 +6190 +6191 +6192 +6193 +6194 +6195 +6196 +6197 +6198 +6199 +6200 +6201 +6202 +6203 +6204 +6205 +6206 +6207 +6208 +6209 +6210 +6211 +6212 +6213 +6214 +6215 +6216 +6217 +6218 +6219 +6220 +6221 +6222 +6223 +6224 +6225 +6226 +6227 +6228 +6229 +6230 +6231 +6232 +6233 +6234 +6235 +6236 +6237 +6238 +6239 +6240 +6241 +6242 +6243 +6244 +6245 +6246 +6247 +6248 +6249 +6250 +6251 +6252 +6253 +6255 +6256 +6257 +6280 +6281 +6282 +6283 +6284 +6285 +6286 +6287 +6288 +6289 +6290 +6291 +6292 +6293 +6294 +6295 +6296 +6297 +6298 +6299 +6300 +6301 +6302 +6303 +6304 +6305 +6306 +6307 +6308 +6309 +6310 +6311 +6312 +6313 +6314 +6315 +6316 +6317 +6318 +6319 +6320 +6321 +6322 +6323 +6324 +6325 +6326 +6327 +6328 +6329 +6330 +6331 +6332 +6333 +6334 +6335 +6336 +6337 +6338 +6339 +6340 +6341 +6342 +6343 +6344 +6345 +6346 +6347 +6349 +6350 +6351 +6352 +6353 +6354 +6355 +6356 +6357 +6358 +6359 +6360 +6361 +6362 +6363 +6364 +6365 +6366 +6367 +6368 +6369 +6370 +6371 +6372 +6373 +6374 +6375 +6376 +6377 +6378 +6379 +6380 +6381 +6382 +6383 +6384 +6385 +6386 +6387 +6388 +6389 +6390 +6391 +6392 +6393 +6394 +6395 +6396 +6397 +6398 +6399 +6400 +6401 +6402 +6403 +6404 +6405 +6406 +6407 +6408 +6409 +6410 +6411 +6412 +6413 +6414 +6415 +6416 +6417 +6418 +6419 +6420 +6421 +6422 +6423 +6424 +6425 +6426 +6427 +6428 +6429 +6430 +6431 +6432 +6433 +6434 +6435 +6436 +6437 +6438 +6439 +6440 +6441 +6442 +6443 +6444 +6445 +6446 +6447 +6448 +6449 +6450 +6451 +6452 +6453 +6454 +6455 +6456 +6457 +6458 +6459 +6460 +6461 +6462 +6463 +6464 +6465 +6466 +6467 +6468 +6469 +6470 +6471 +6472 +6473 +6474 +6475 +6476 +6477 +6478 +6479 +6480 +6481 +6482 +6483 +6484 +6485 +6486 +6487 +6488 +6489 +6490 +6491 +6492 +6493 +6494 +6495 +6496 +6497 +6498 +6499 +6500 +6501 +6502 +6503 +6504 +6505 +6506 +6507 +6508 +6509 +6510 +6511 +6512 +6513 +6514 +6515 +6516 +6517 +6518 +6519 +6520 +6521 +6522 +6523 +6524 +6525 +6863 +6864 +6865 +6866 +6867 +6868 +6869 +6870 +6871 +6872 +6873 +6874 +6875 +6876 +6877 +6878 +6879 +6880 +6881 +6882 +6883 +6884 +6885 +6886 +6887 +6888 +6889 +6890 +6891 +6892 +6893 +6894 +6895 +6896 +6897 +6898 +6899 +6900 +6901 +6902 +6903 +6904 +6905 +6906 +6907 +6908 +6909 +6910 +6911 +6912 +6913 +6914 +6915 +6916 +6917 +6918 +6919 +6920 +6921 +6922 +6923 +6924 +6925 +6926 +6927 +6928 +6929 +6930 +6931 +6932 +6933 +6934 +6935 +6936 +6937 +6938 +6939 +6940 +6941 +6942 +6943 +6944 +6945 +6946 +6947 +6948 +6949 +6950 +6951 +6952 +6953 +6954 +6955 +6956 +6957 +6958 +6959 +6960 +6961 +6962 +6963 +6964 +6965 +6966 +6967 +6968 +6969 +6970 +6971 +6972 +6973 +6974 +6975 +6976 +6977 +6978 +6979 +6980 +6981 +6982 +6983 +6984 +6985 +6986 +6987 +6988 +6989 +6990 +6991 +6992 +6993 +6994 +6995 +6996 +6997 +6998 +6999 +7000 +7001 +7002 +7003 +7004 +7005 +7006 +7007 +7008 +7009 +7010 +7011 +7012 +7013 +7014 +7015 +7016 +7017 +7018 +7019 +7020 +7021 +7022 +7023 +7024 +7025 +7026 +7027 +7028 +7029 +7030 +7031 +7032 +7033 +7034 +7035 +7036 +7037 +7038 +7039 +7040 +7041 +7042 +7043 +7044 +7045 +7046 +7047 +7048 +7049 +7050 +7051 +7052 +7053 +7054 +7055 +7056 +7057 +7058 +7059 +7060 +7061 +7062 +7063 +7064 +7065 +7066 +7067 +7068 +7069 +7070 +7071 +7072 +7073 +7074 +7075 +7076 +7077 +7078 +7079 +7080 +7081 +7082 +7083 +7084 +7085 +7086 +7087 +7088 +7089 +7090 +7091 +7092 +7093 +7094 +7095 +7096 +7097 +7098 +7099 +7100 +7101 +7102 +7103 +7104 +7105 +7106 +7107 +7108 +7109 +7110 +7111 +7112 +7113 +7114 +7115 +7116 +7117 +7118 +7119 +7120 +7121 +7122 +7123 +7124 +7125 +7126 +7127 +7128 +7129 +7130 +7131 +7132 +7133 +7134 +7135 +7136 +7137 +7138 +7139 +7140 +7141 +7142 +7143 +7144 +7145 +7146 +7147 +7148 +7149 +7150 +7151 +7152 +7153 +7154 +7155 +7156 +7157 +7158 +7159 +7160 +7161 +7162 +7163 +7164 +7165 +7166 +7167 +7168 +7169 +7170 +7171 +7172 +7173 +7174 +7175 +7176 +7177 +7178 +7179 +7180 +7181 +7182 +7183 +7184 +7185 +7186 +7187 +7188 +7189 +7190 +7191 +7192 +7193 +7194 +7195 +7196 +7197 +7198 +7199 +7200 +7201 +7202 +7203 +7204 +7205 +7206 +7207 +7208 +7209 +7210 +7211 +7212 +7213 +7214 +7215 +7216 +7217 +7218 +7219 +7220 +7221 +7222 +7223 +7224 +7225 +7226 +7227 +7228 +7229 +7230 +7231 +7232 +7233 +7234 +7235 +7236 +7237 +7238 +7239 +7240 +7241 +7242 +7243 +7244 +7245 +7246 +7247 +7248 +7249 +7250 +7251 +7252 +7253 +7254 +7255 +7256 +7257 +7258 +7259 +7260 +7261 +7262 +7263 +7264 +7265 +7266 +7267 +7268 +7269 +7270 +7271 +7272 +7273 +7274 +7275 +7276 +7277 +7278 +7279 +7280 +7281 +7282 +7283 +7284 +7285 +7286 +7287 +7288 +7289 +7290 +7291 +7292 +7293 +7294 +7295 +7296 +7297 +7298 +7299 +7300 +7301 +7302 +7303 +7304 +7305 +7306 +7307 +7308 +7309 +7310 +7311 +7312 +7313 +7314 +7315 +7316 +7317 +7318 +7319 +7320 +7321 +7322 +7323 +7324 +7325 +7326 +7327 +7328 +7329 +7330 +7331 +7332 +7333 +7334 +7335 +7336 +7337 +7338 +7339 +7340 +7341 +7342 +7343 +7344 +7345 +7346 +7347 +7348 +7349 +7350 +7351 +7352 +7353 +7354 +7355 +7356 +7357 +7358 +7359 +7360 +7361 +7362 +7363 +7364 +7365 +7366 +7367 +7368 +7369 +7370 +7371 +7372 +7373 +7374 +7375 +7376 +7377 +7378 +7379 +7380 +7381 +7382 +7383 +7384 +7385 +7386 +7387 +7388 +7389 +7390 +7391 +7392 +7415 +7416 +7417 +7418 +7419 +7420 +7421 +7422 +7423 +7424 +7425 +7426 +7427 +7428 +7429 +7430 +7431 +7432 +7433 +7434 +7435 +7436 +7437 +7438 +7439 +7440 +7441 +7442 +7443 +7444 +7445 +7446 +7447 +7448 +7449 +7450 +7451 +7452 +7453 +7454 +7455 +7456 +7457 +7458 +7459 +7460 +7461 +7462 +7463 +7464 +7465 +7466 +7467 +7468 +7469 +7470 +7471 +7472 +7473 +7474 +7475 +7476 +7477 +7478 +7479 +7480 +7481 +7482 +7483 +7484 +7485 +7486 +7487 +7488 +7489 +7490 +7491 +7492 +7493 +7494 +7495 +7496 +7497 +7498 +7499 +7500 +7501 +7502 +7503 +7504 +7505 +7506 +7507 +7508 +7509 +7510 +7511 +7512 +7513 +7514 +7515 +7516 +7517 +7518 +7519 +7520 +7521 +7522 +7523 +7524 +7525 +7526 +7527 +7528 +7529 +7530 +7531 +7532 +7533 +7534 +7535 +7536 +7537 +7538 +7539 +7540 +7541 +7542 +7543 +7544 +7545 +7546 +7547 +7548 +7549 +7550 +7551 +7552 +7553 +7554 +7555 +7556 +7557 +7558 +7559 +7560 +7561 +7562 +7563 +7564 +7565 +7566 +7567 +7568 +7569 +7570 +7571 +7572 +7573 +7574 +7575 +7576 +7577 +7578 +7579 +7580 +7581 +7582 +7583 +7584 +7585 +7586 +7587 +7588 +7589 +7590 +7591 +7592 +7593 +7594 +7595 +7596 +7597 +7598 +7599 +7600 +7601 +7602 +7603 +7604 +7605 +7606 +7607 +7608 +7609 +7610 +7611 +7612 +7613 +7614 +7615 +7616 +7617 +7618 +7619 +7620 +7621 +7622 +7623 +7624 +7625 +7626 +7627 +7628 +7629 +7630 +7631 +7632 +7633 +7634 +7635 +7636 +7637 +7638 +7639 +7640 +7641 +7642 +7643 +7644 +7645 +7646 +7647 +7648 +7649 +7650 +7651 +7652 +7653 +7654 +7655 +7656 +7657 +7658 +7659 +7660 +7661 +7662 +7663 +7664 +7665 +7666 +7667 +7668 +7669 +7670 +7671 +7672 +7673 +7674 +7675 +7676 +7677 +7678 +7679 +7680 +7681 +7682 +7683 +7684 +7685 +7686 +7687 +7688 +7689 +7690 +7691 +7692 +7693 +7694 +7695 +7696 +7697 +7698 +7699 +7700 +7701 +7702 +7703 +7704 +7705 +7706 +7707 +7708 +7709 +7710 +7711 +7712 +7713 +7714 +7715 +7716 +7717 +7718 +7719 +7720 +7721 +7722 +7723 +7724 +7725 +7726 +7727 +7728 +7729 +7730 +7731 +7732 +7733 +7734 +7735 +7736 +7737 +7738 +7739 +7740 +7741 +7742 +7743 +7744 +7745 +7746 +7747 +7748 +7749 +7750 +7751 +7752 +7753 +7754 +7755 +7756 +7757 +7758 +7759 +7760 +7761 +7762 +7763 +7764 +7765 +7766 +7767 +7768 +7769 +7770 +7771 +7772 +7773 +7774 +7775 +7776 +7777 +7778 +7779 +7780 +7781 +7782 +7783 +7784 +7785 +7786 +7787 +7788 +7789 +7790 +7791 +7792 +7793 +7794 +7795 +7796 +7797 +7798 +7799 +7800 +7801 +7802 +7803 +7804 +7805 +7806 +7807 +7808 +7809 +7810 +7811 +7812 +7813 +7814 +7815 +7816 +7817 +7818 +7819 +7820 +7821 +7822 +7823 +7824 +7825 +7826 +7827 +7828 +7829 +7830 +7831 +7832 +7833 +7834 +7835 +7836 +7837 +7838 +7839 +7840 +7841 +7842 +7843 +7844 +7845 +7846 +7847 +7848 +7849 +7850 +7851 +7852 +7853 +7854 +7855 +7856 +7857 +7858 +7859 +7860 +7861 +7862 +7863 +7864 +7865 +7866 +7867 +7868 +7869 +7870 +7871 +7872 +7873 +7874 +7875 +7876 +7877 +7878 +7879 +7880 +7881 +7882 +7883 +7884 +7885 +7886 +7887 +7888 +7889 +7890 +7891 +7892 +7893 +7894 +7895 +7896 +7897 +7898 +7899 +7900 +7901 +7902 +7903 +7904 +7905 +7906 +7907 +7908 +7909 +7910 +7911 +7912 +7913 +7914 +7915 +7916 +7917 +7918 +7919 +7920 +7921 +7922 +7923 +7924 +7925 +7926 +7927 +7928 +7929 +7930 +7931 +7932 +7933 +7934 +7935 +7936 +7937 +7938 +7939 +7940 +7941 +7942 +7943 +7944 +7945 +7946 +7947 +7948 +7949 +7950 +7951 +7952 +7953 +7954 +7955 +7956 +7957 +7958 +7959 +7960 +7961 +7962 +7963 +7964 +7965 +7966 +7967 +7968 +7969 +7970 +7971 +7972 +7973 +7978 +7979 +7980 +7981 +7982 +7983 +7984 +7985 +7986 +7987 +7988 +7989 +7990 +7991 +7992 +7993 +7994 +7995 +7996 +7997 +7998 +7999 +8000 +8001 +8002 +8003 +8004 +8005 +8006 +8007 +8008 +8009 +8010 +8011 +8012 +8013 +8014 +8015 +8016 +8017 +8018 +8019 +8020 +8021 +8022 +8023 +8024 +8025 +8026 +8027 +8028 +8029 +8030 +8031 +8032 +8033 +8034 +8035 +8036 +8037 +8038 +8039 +8040 +8041 +8042 +8043 +8044 +8045 +8046 +8047 +8048 +8049 +8050 +8051 +8052 +8053 +8054 +8055 +8056 +8057 +8058 +8059 +8060 +8061 +8062 +8063 +8064 +8065 +8066 +8067 +8068 +8069 +8070 +8071 +8072 +8073 +8074 +8075 +8076 +8077 +8078 +8079 +8080 +8081 +8082 +8083 +8084 +8085 +8086 +8087 +8088 +8089 +8090 +8091 +8092 +8093 +8094 +8095 +8096 +8097 +8098 +8099 +8100 +8101 +8102 +8103 +8104 +8105 +8106 +8107 +8108 +8109 +8110 +8111 +8112 +8113 +8114 +8115 +8116 +8117 +8118 +8119 +8120 +8121 +8122 +8123 +8124 +8125 +8126 +8127 +8128 +8129 +8130 +8131 +8132 +8133 +8134 +8135 +8136 +8137 +8138 +8139 +8140 +8141 +8142 +8143 +8144 +8145 +8146 +8147 +8148 +8149 +8150 +8151 +8152 +8153 +8154 +8155 +8156 +8157 +8158 +8159 +8160 +8161 +8162 +8163 +8164 +8165 +8166 +8167 +8168 +8169 +8170 +8171 +8172 +8173 +8174 +8175 +8176 +8177 +8178 +8179 +8180 +8181 +8182 +8183 +8184 +8185 +8186 +8187 +8188 +8189 +8190 +8191 +8192 +8193 +8194 +8195 +8196 +8197 +8198 +8199 +8200 +8201 +8202 +8203 +8204 +8205 +8206 +8207 +8208 +8209 +8210 +8211 +8212 +8213 +8214 +8215 +8216 +8217 +8218 +8219 +8220 +8221 +8222 +8223 +8224 +8225 +8226 +8227 +8228 +8229 +8230 +8231 +8232 +8233 +8234 +8235 +8236 +8237 +8238 +8239 +8240 +8241 +8242 +8243 +8244 +8245 +8246 +8247 +8248 +8249 +8250 +8251 +8252 +8253 +8254 +8255 +8256 +8257 +8258 +8259 +8260 +8261 +8262 +8263 +8264 +8265 +8266 +8267 +8268 +8269 +8270 +8271 +8272 +8273 +8274 +8275 +8276 +8277 +8278 +8279 +8280 +8281 +8282 +8283 +8284 +8285 +8286 +8287 +8288 +8289 +8290 +8291 +8292 +8293 +8294 +8295 +8296 +8297 +8298 +8299 +8300 +8301 +8302 +8303 +8304 +8305 +8306 +8307 +8308 +8309 +8310 +8311 +8312 +8313 +8314 +8315 +8316 +8317 +8318 +8319 +8320 +8321 +8322 +8323 +8324 +8325 +8326 +8327 +8328 +8329 +8330 +8331 +8332 +8333 +8334 +8335 +8336 +8337 +8338 +8339 +8340 +8341 +8342 +8343 +8344 +8345 +8346 +8347 +8348 +8349 +8350 +8351 +8352 +8353 +8354 +8355 +8356 +8357 +8358 +8359 +8360 +8361 +8362 +8363 +8364 +8365 +8366 +8367 +8368 +8369 +8370 +8371 +8372 +8373 +8374 +8375 +8376 +8377 +8378 +8379 +8380 +8381 +8382 +8383 +8384 +8385 +8386 +8387 +8388 +8389 +8390 +8391 +8392 +8393 +8394 +8395 +8396 +8397 +8398 +8399 +8400 +8401 +8402 +8403 +8404 +8405 +8406 +8407 +8408 +8409 +8410 +8411 +8412 +8413 +8414 +8415 +8416 +8417 +8418 +8419 +8420 +8421 +8422 +8423 +8424 +8425 +8426 +8427 +8428 +8429 +8430 +8431 +8432 +8433 +8434 +8435 +8436 +8437 +8438 +8439 +8440 +8441 +8442 +8443 +8444 +8445 +8446 +8447 +8448 +8449 +8450 +8451 +8452 +8453 +8454 +8455 +8456 +8457 +8458 +8459 +8460 +8461 +8462 +8463 +8464 +8465 +8466 +8467 +8468 +8469 +8470 +8471 +8472 +8473 +8474 +8475 +8476 +8477 +8478 +8479 +8480 +8481 +8482 +8483 +8484 +8485 +8486 +8487 +8488 +8489 +8490 +8491 +8492 +8493 +8494 +8495 +8496 +8497 +8498 +8499 +8500 +8501 +8502 +8503 +8504 +8505 +8506 +8507 +8508 +8509 +8510 +8511 +8512 +8513 +8514 +8515 +8516 +8517 +8518 +8519 +8520 +8521 +8522 +8523 +8524 +8525 +8526 +8527 +8528 +8529 +8530 +8531 +8532 +8533 +8534 +8535 +8536 +8537 +8538 +8539 +8540 +8541 +8542 +8543 +8544 +8545 +8546 +8547 +8548 +8549 +8550 +8551 +8552 +8553 +8554 +8555 +8556 +8557 +8558 +8559 +8560 +8561 +8562 +8563 +8564 +8565 +8566 +8567 +8568 +8569 +8570 +8571 +8572 +8573 +8574 +8575 +8576 +8577 +8578 +8579 +8580 +8581 +8582 +8583 +8584 +8585 +8586 +8587 +8588 +8589 +8590 +8591 +8592 +8593 +8594 +8595 +8596 +8597 +8598 +8599 +8600 +8601 +8602 +8603 +8604 +8605 +8606 +8607 +8608 +8609 +8610 +8611 +8612 +8613 +8614 +8615 +8616 +8617 +8618 +8619 +8620 +8621 +8622 +8623 +8624 +8625 +8626 +8627 +8628 +8629 +8630 +8631 +8632 +8633 +8634 +8635 +8636 +8637 +8638 +8639 +8640 +8641 +8642 +8643 +8644 +8645 +8646 +8647 +8648 +8649 +8650 +8651 +8652 +8653 +8654 +8655 +8656 +8657 +8658 +8659 +8660 +8661 +8662 +8663 +8664 +8665 +8666 +8667 +8668 +8669 +8670 +8671 +8672 +8673 +8674 +8675 +8676 +8677 +8678 +8679 +8680 +8681 +8682 +8683 +8684 +8685 +8686 +8687 +8688 +8689 +8690 +8691 +8692 +8693 +8694 +8695 +8696 +8697 +8698 +8699 +8700 +8701 +8702 +8703 +8704 +8705 +8706 +8707 +8708 +8709 +8710 +8711 +8712 +8713 +8714 +8715 +8716 +8717 +8718 +8719 +8720 +8721 +8722 +8723 +8724 +8725 +8726 +8727 +8728 +8729 +8730 +8731 +8732 +8733 +8734 +8735 +8736 +8737 +8738 +8739 +8740 +8741 +8742 +8743 +8744 +8745 +8746 +8747 +8748 +8749 +8750 +8751 +8752 +8753 +8754 +8755 +8756 +8757 +8758 +8759 +8760 +8761 +8762 +8763 +8764 +8765 +8766 +8767 +8768 +8769 +8770 +8771 +8772 +8773 +8774 +8775 +8776 +8777 +8778 +8779 +8780 +8781 +8782 +8783 +8784 +8785 +8786 +8787 +8788 +8789 +8790 +8791 +8792 +8793 +8794 +8795 +8796 +8797 +8798 +8799 +8800 +8801 +8802 +8803 +8804 +8805 +8806 +8807 +8808 +8809 +8810 +8811 +8812 +8813 +8814 +8815 +8816 +8817 +8818 +8819 +8820 +8821 +8822 +8823 +8824 +8825 +8826 +8827 +8828 +8829 +8830 +8831 +8832 +8833 +8834 +8835 +8836 +8837 +8838 +8839 +8840 +8841 +8842 +8843 +8844 +8845 +8846 +8847 +8848 +8849 +8850 +8851 +8852 +8853 +8854 +8855 +8856 +8857 +8858 +8859 +8860 +8861 +8862 +8863 +8864 +8865 +8866 +8867 +8868 +8869 +8870 +8871 +8872 +8873 +8874 +8875 +8876 +8877 +8878 +8879 +8880 +8881 +8882 +8883 +8884 +8885 +8886 +8887 +8888 +8889 +8890 +8891 +8892 +8893 +8894 +8895 +8896 +8897 +8898 +8899 +8900 +8901 +8902 +8903 +8904 +8905 +8906 +8907 +8908 +8909 +8910 +8911 +8912 +8913 +8914 +8915 +8916 +8917 +8918 +8919 +8920 +8921 +8922 +8923 +8924 +8925 +8926 +8927 +8928 +8929 +8930 +8931 +8932 +8933 +8934 +8935 +8936 +8937 +8938 +8939 +8940 +8941 +8942 +8943 +8944 +8945 +8946 +8947 +8948 +8949 +8950 +8951 +8952 +8953 +8954 +8955 +8956 +8957 +8958 +8959 +8960 +8961 +8962 +8963 +8964 +8965 +8966 +8967 +8968 +8969 +8970 +8971 +8972 +8973 +8974 +8975 +8976 +8977 +8978 +8979 +8980 +8981 +8982 +8983 +8984 +8985 +8986 +8987 +8988 +8989 +8990 +8991 +8992 +8993 +8994 +8995 +8996 +8997 +8998 +8999 +9000 +9001 +9002 +9003 +9004 +9005 +9006 +9007 +9008 +9009 +9010 +9011 +9012 +9013 +9014 +9015 +9016 +9017 +9018 +9019 +9020 +9021 +9022 +9023 +9024 +9025 +9026 +9027 +9028 +9029 +9030 +9031 +9032 +9033 +9034 +9035 +9036 +9037 +9038 +9039 +9040 +9041 +9042 +9043 +9044 +9045 +9046 +9047 +9048 +9049 +9050 +9051 +9052 +9053 +9054 +9055 +9056 +9057 +9058 +9059 +9060 +9061 +9062 +9063 +9064 +9065 +9066 +9067 +9068 +9069 +9070 +9071 +9072 +9073 +9074 +9075 +9076 +9077 +9078 +9079 +9080 +9081 +9082 +9083 +9084 +9085 +9086 +9087 +9088 +9089 +9090 +9091 +9092 +9093 +9094 +9095 +9096 +9097 +9098 +9099 +9100 +9101 +9102 +9103 +9104 +9105 +9106 +9107 +9108 +9109 +9110 +9111 +9112 +9113 +9114 +9115 +9116 +9117 +9118 +9119 +9120 +9121 +9122 +9123 +9124 +9125 +9126 +9127 +9128 +9129 +9130 +9131 +9132 +9133 +9134 +9135 +9136 +9137 +9138 +9139 +9140 +9141 +9142 +9143 +9144 +9145 +9146 +9147 +9148 +9149 +9150 +9151 +9152 +9153 +9154 +9155 +9156 +9157 +9158 +9159 +9160 +9161 +9162 +9163 +9164 +9165 +9166 +9167 +9168 +9169 +9170 +9171 +9172 +9173 +9174 +9175 +9176 +9177 +9178 +9179 +9180 +9181 +9182 +9183 +9184 +9185 +9186 +9187 +9188 +9189 +9190 +9191 +9192 +9193 +9205 +9206 +9207 +9208 +9209 +9210 +9211 +9212 +9213 +9214 +9215 +9216 +9217 +9218 +9219 +9220 +9221 +9222 +9223 +9224 +9225 +9226 +9227 +9228 +9229 +9230 +9231 +9232 +9233 +9234 +9235 +9236 +9237 +9238 +9239 +9240 +9241 +9242 +9243 +9244 +9245 +9246 +9247 +9248 +9249 +9250 +9251 +9252 +9253 +9254 +9255 +9256 +9257 +9258 +9259 +9260 +9261 +9262 +9263 +9264 +9265 +9266 +9267 +9269 +9270 +9271 +9272 +9273 +9274 +9275 +9276 +9277 +9278 +9279 +9280 +9281 +9282 +9283 +9284 +9285 +9286 +9287 +9288 +9289 +9290 +9291 +9292 +9293 +9294 +9295 +9296 +9297 +9298 +9299 +9300 +9301 +9302 +9303 +9304 +9305 +9306 +9307 +9308 +9309 +9310 +9311 +9312 +9313 +9314 +9315 +9316 +9317 +9318 +9319 +9320 +9321 +9322 +9323 +9324 +9325 +9326 +9327 +9328 +9329 +9330 +9331 +9332 +9333 +9334 +9335 +9336 +9337 +9338 +9339 +9340 +9341 +9342 +9343 +9344 +9345 +9346 +9347 +9348 +9349 +9350 +9351 +9352 +9353 +9354 +9355 +9356 +9357 +9358 +9359 +9360 +9361 +9362 +9363 +9364 +9365 +9366 +9367 +9368 +9369 +9370 +9371 +9372 +9373 +9374 +9375 +9376 +9377 +9378 +9379 +9380 +9381 +9382 +9383 +9384 +9385 +9386 +9387 +9388 +9389 +9390 +9391 +9392 +9393 +9394 +9395 +9396 +9397 +9398 +9399 +9400 +9401 +9402 +9403 +9404 +9405 +9406 +9407 +9408 +9409 +9410 +9411 +9412 +9413 +9414 +9415 +9416 +9417 +9418 +9419 +9420 +9421 +9422 +9423 +9424 +9425 +9426 +9427 +9428 +9429 +9430 +9431 +9432 +9433 +9434 +9435 +9436 +9437 +9438 +9439 +9440 +9441 +9442 +9443 +9444 +9445 +9446 +9447 +9448 +9449 +9450 +9451 +9452 +9453 +9454 +9455 +9456 +9457 +9458 +9459 +9460 +9461 +9462 +9463 +9464 +9465 +9466 +9467 +9468 +9469 +9470 +9471 +9472 +9473 +9474 +9475 +9476 +9477 +9478 +9482 +9483 +9484 +9485 +9486 +9487 +9488 +9489 +9490 +9491 +9492 +9493 +9494 +9495 +9496 +9497 +9498 +9499 +9500 +9501 +9502 +9503 +9504 +9505 +9506 +9507 +9508 +9509 +9510 +9511 +9512 +9513 +9514 +9515 +9516 +9517 +9518 +9519 +9520 +9521 +9522 +9523 +9524 +9525 +9526 +9527 +9528 +9529 +9530 +9531 +9532 +9533 +9534 +9535 +9536 +9537 +9538 +9539 +9540 +9541 +9542 +9543 +9544 +9545 +9546 +9547 +9548 +9549 +9550 +9551 +9552 +9553 +9554 +9555 +9556 +9557 +9558 +9559 +9560 +9561 +9562 +9563 +9564 +9565 +9566 +9567 +9568 +9569 +9570 +9571 +9572 +9573 +9574 +9575 +9576 +9577 +9578 +9579 +9580 +9581 +9582 +9583 +9584 +9585 +9586 +9587 +9588 +9589 +9590 +9591 +9592 +9593 +9594 +9595 +9596 +9597 +9598 +9599 +9600 +9601 +9602 +9603 +9604 +9605 +9606 +9607 +9608 +9609 +9610 +9611 +9612 +9613 +9614 +9615 +9616 +9617 +9618 +9619 +9620 +9621 +9622 +9623 +9624 +9625 +9626 +9627 +9628 +9629 +9630 +9631 +9632 +9633 +9634 +9635 +9636 +9637 +9638 +9639 +9640 +9641 +9642 +9643 +9644 +9645 +9646 +9647 +9648 +9649 +9650 +9651 +9652 +9653 +9654 +9655 +9656 +9657 +9658 +9659 +9660 +9661 +9662 +9663 +9664 +9665 +9666 +9667 +9668 +9669 +9670 +9671 +9672 +9673 +9674 +9675 +9676 +9677 +9678 +9679 +9680 +9681 +9682 +9683 +9684 +9685 +9686 +9687 +9688 +9689 +9690 +9691 +9692 +9693 +9694 +9695 +9696 +9697 +9698 +9699 +9700 +9701 +9702 +9703 +9704 +9705 +9706 +9707 +9708 +9709 +9710 +9711 +9712 +9713 +9714 +9715 +9716 +9717 +9718 +9719 +9720 +9721 +9722 +9723 +9724 +9725 +9726 +9727 +9728 +9729 +9730 +9731 +9732 +9733 +9734 +9735 +9736 +9737 +9738 +9739 +9740 +9741 +9742 +9743 +9744 +9745 +9746 +9747 +9748 +9749 +9750 +9751 +9752 +9753 +9754 +9755 +9756 +9757 +9758 +9759 +9760 +9761 +9762 +9763 +9764 +9765 +9766 +9767 +9768 +9769 +9770 +9771 +9772 +9773 +9774 +9775 +9776 +9777 +9778 +9779 +9780 +9781 +9782 +9783 +9784 +9785 +9786 +9787 +9788 +9789 +9790 +9791 +9792 +9793 +9794 +9795 +9796 +9797 +9798 +9799 +9800 +9801 +9802 +9803 +9804 +9805 +9806 +9807 +9808 +9809 +9810 +9811 +9812 +9813 +9814 +9815 +9816 +9817 +9818 +9819 +9820 +9821 +9822 +9823 +9824 +9825 +9826 +9827 +9828 +9829 +9830 +9831 +9832 +9833 +9834 +9835 +9836 +9837 +9838 +9839 +9840 +9841 +9842 +9843 +9844 +9845 +9846 +9847 +9848 +9849 +9850 +9851 +9852 +9853 +9854 +9855 +9856 +9857 +9858 +9859 +9860 +9861 +9862 +9863 +9864 +9865 +9866 +9867 +9868 +9869 +9870 +9871 +9872 +9873 +9874 +9875 +9876 +9877 +9878 +9879 +9880 +9881 +9882 +9883 +9884 +9885 +9886 +9887 +9888 +9889 +9890 +9891 +9892 +9893 +9894 +9895 +9896 +9897 +9898 +9899 +9900 +9901 +9902 +9903 +9904 +9905 +9906 +9907 +9908 +9909 +9910 +9911 +9912 +9913 +9914 +9915 +9916 +9917 +9918 +9919 +9920 +9921 +9922 +9923 +9924 +9925 +9926 +9927 +9928 +9929 +9930 +9931 +9932 +9933 +9934 +9935 +9936 +9937 +9938 +9939 +9940 +9941 +9942 +9943 +9944 +9945 +9946 +9947 +9948 +9949 +9950 +9951 +9952 +9953 +9954 +9955 +9956 +9957 +9958 +9959 +9960 +9961 +9962 +9963 +9964 +9965 +9966 +9967 +9968 +9969 +9970 +9971 +9972 +9973 +9974 +9975 +9976 +9977 +9978 +9979 +9980 +9981 +9982 +9983 +9984 +9985 +9986 +9987 +9988 +9989 +9990 +9991 +9992 +9993 +9994 +9995 +9996 +9997 +9998 +9999 +10000 +10001 +10002 +10003 +10004 +10005 +10006 +10007 +10008 +10009 +10010 +10011 +10012 +10013 +10014 +10015 +10016 +10017 +10018 +10019 +10020 +10021 +10022 +10023 +10024 +10025 +10026 +10027 +10028 +10029 +10030 +10031 +10032 +10033 +10034 +10035 +10036 +10037 +10038 +10039 +10040 +10041 +10042 +10043 +10044 +10045 +10046 +10047 +10048 +10049 +10050 +10051 +10052 +10053 +10054 +10055 +10056 +10057 +10058 +10059 +10060 +10061 +10062 +10063 +10064 +10065 +10066 +10067 +10068 +10069 +10070 +10071 +10072 +10073 +10074 +10075 +10076 +10077 +10078 +10079 +10080 +10081 +10082 +10083 +10084 +10085 +10086 +10087 +10088 +10089 +10090 +10091 +10092 +10093 +10094 +10095 +10096 +10097 +10098 +10099 +10100 +10101 +10102 +10103 +10104 +10105 +10106 +10107 +10108 +10109 +10110 +10111 +10112 +10113 +10114 +10115 +10116 +10117 +10118 +10119 +10120 +10121 +10122 +10123 +10124 +10125 +10126 +10127 +10128 +10129 +10130 +10131 +10132 +10133 +10134 +10135 +10136 +10137 +10138 +10139 +10140 +10141 +10142 +10143 +10144 +10145 +10146 +10147 +10148 +10149 +10150 +10151 +10152 +10153 +10154 +10155 +10156 +10157 +10158 +10159 +10160 +10161 +10162 +10163 +10164 +10165 +10166 +10167 +10168 +10169 +10170 +10171 +10172 +10173 +10174 +10175 +10176 +10177 +10178 +10179 +10180 +10181 +10182 +10183 +10184 +10185 +10186 +10187 +10188 +10189 +10190 +10191 +10192 +10193 +10194 +10195 +10196 +10197 +10198 +10199 +10200 +10201 +10202 +10203 +10204 +10205 +10206 +10207 +10208 +10209 +10210 +10211 +10212 +10213 +10214 +10215 +10216 +10217 +10218 +10219 +10220 +10221 +10222 +10223 +10224 +10225 +10226 +10227 +10228 +10229 +10230 +10231 +10232 +10233 +10234 +10235 +10236 +10237 +10238 +10239 +10240 +10241 +10242 +10243 +10244 +10245 +10246 +10247 +10248 +10249 +10250 +10251 +10252 +10253 +10254 +10255 +10256 +10257 +10258 +10259 +10260 +10261 +10262 +10263 +10264 +10265 +10266 +10267 +10268 +10269 +10270 +10271 +10272 +10273 +10274 +10275 +10276 +10277 +10278 +10279 +10280 +10281 +10282 +10283 +10284 +10285 +10286 +10287 +10288 +10289 +10290 +10291 +10292 +10293 +10294 +10295 +10296 +10297 +10298 +10299 +10300 +10301 +10302 +10303 +10304 +10305 +10306 +10307 +10308 +10309 +10310 +10315 +10316 +10317 +10318 +10319 +10320 +10321 +10322 +10323 +10324 +10325 +10326 +10327 +10328 +10329 +10330 +10331 +10332 +10333 +10334 +10335 +10336 +10337 +10338 +10339 +10340 +10341 +10342 +10343 +10344 +10345 +10346 +10347 +10348 +10349 +10350 +10351 +10352 +10353 +10354 +10355 +10356 +10357 +10358 +10359 +10360 +10361 +10362 +10363 +10364 +10365 +10366 +10367 +10368 +10369 +10370 +10371 +10372 +10373 +10374 +10375 +10376 +10377 +10378 +10379 +10380 +10381 +10382 +10383 +10384 +10385 +10386 +10387 +10388 +10389 +10390 +10391 +10392 +10393 +10394 +10395 +10396 +10397 +10398 +10399 +10400 +10401 +10402 +10403 +10404 +10405 +10406 +10407 +10408 +10409 +10410 +10411 +10412 +10413 +10414 +10415 +10416 +10417 +10418 +10419 +10420 +10421 +10422 +10423 +10424 +10425 +10426 +10427 +10428 +10429 +10430 +10431 +10432 +10433 +10434 +10435 +10436 +10437 +10438 +10439 +10440 +10441 +10442 +10443 +10444 +10445 +10446 +10447 +10448 +10449 +10450 +10451 +10452 +10453 +10454 +10455 +10456 +10457 +10458 +10459 +10460 +10461 +10462 +10463 +10464 +10465 +10466 +10467 +10468 +10469 +10470 +10471 +10472 +10473 +10474 +10475 +10476 +10477 +10478 +10479 +10480 +10481 +10482 +10483 +10484 +10485 +10486 +10487 +10488 +10489 +10490 +10491 +10492 +10493 +10494 +10495 +10496 +10497 +10498 +10499 +10500 +10501 +10502 +10503 +10504 +10505 +10506 +10507 +10508 +10509 +10510 +10511 +10512 +10513 +10514 +10515 +10516 +10517 +10518 +10519 +10520 +10521 +10522 +10523 +10524 +10525 +10526 +10527 +10528 +10529 +10530 +10531 +10532 +10533 +10534 +10535 +10536 +10537 +10538 +10539 +10540 +10541 +10542 +10543 +10544 +10545 +10546 +10547 +10548 +10549 +10550 +10551 +10552 +10553 +10554 +10555 +10556 +10557 +10558 +10559 +10560 +10561 +10562 +10563 +10564 +10565 +10566 +10567 +10568 +10569 +10570 +10571 +10572 +10573 +10574 +10575 +10576 +10577 +10578 +10579 +10580 +10581 +10582 +10583 +10584 +10585 +10586 +10587 +10588 +10589 +10590 +10591 +10592 +10593 +10594 +10595 +10596 +10597 +10598 +10599 +10600 +10601 +10602 +10603 +10604 +10605 +10606 +10607 +10608 +10609 +10610 +10611 +10612 +10613 +10614 +10615 +10616 +10617 +10618 +10619 +10620 +10621 +10622 +10623 +10624 +10625 +10626 +10627 +10628 +10629 +10630 +10631 +10632 +10633 +10634 +10635 +10636 +10637 +10638 +10639 +10640 +10641 +10642 +10643 +10644 +10645 +10646 +10647 +10648 +10649 +10650 +10651 +10652 +10653 +10654 +10655 +10656 +10657 +10658 +10659 +10660 +10661 +10662 +10663 +10664 +10665 +10666 +10667 +10668 +10669 +10670 +10671 +10672 +10673 +10674 +10675 +10676 +10677 +10678 +10679 +10680 +10681 +10682 +10683 +10684 +10685 +10686 +10687 +10688 +10689 +10690 +10691 +10692 +10693 +10694 +10695 +10696 +10697 +10698 +10699 +10700 +10701 +10702 +10703 +10704 +10705 +10706 +10707 +10708 +10709 +10710 +10711 +10712 +10713 +10714 +10715 +10716 +10717 +10718 +10719 +10720 +10721 +10722 +10723 +10724 +10725 +10726 +10727 +10728 +10729 +10730 +10731 +10732 +10733 +10734 +10735 +10736 +10737 +10738 +10739 +10740 +10741 +10742 +10743 +10744 +10750 +10751 +10752 +10753 +10754 +10755 +10756 +10757 +10758 +10759 +10760 +10761 +10762 +10763 +10764 +10765 +10766 +10767 +10768 +10769 +10770 +10771 +10772 +10773 +10774 +10775 +10776 +10777 +10778 +10779 +10780 +10781 +10782 +10783 +10784 +10785 +10786 +10787 +10788 +10789 +10790 +10791 +10792 +10793 +10794 +10795 +10796 +10797 +10798 +10799 +10800 +10801 +10802 +10803 +10804 +10805 +10806 +10807 +10808 +10809 +10810 +10811 +10812 +10813 +10814 +10815 +10816 +10817 +10818 +10819 +10820 +10821 +10822 +10823 +10824 +10825 +10826 +10827 +10828 +10829 +10830 +10831 +10832 +10833 +10834 +10835 +10836 +10837 +10838 +10839 +10840 +10841 +10842 +10843 +10844 +10845 +10846 +10847 +10848 +10849 +10850 +10851 +10852 +10853 +10854 +10855 +10856 +10857 +10858 +10859 +10860 +10861 +10862 +10863 +10864 +10865 +10866 +10867 +10868 +10869 +10870 +10871 +10872 +10873 +10874 +10875 +10876 +10877 +10878 +10879 +10880 +10881 +10882 +10883 +10884 +10885 +10886 +10887 +10888 +10889 +10890 +10891 +10892 +10893 +10894 +10895 +10896 +10897 +10898 +10899 +10900 +10901 +10902 +10903 +10904 +10905 +10906 +10907 +10908 +10909 +10910 +10911 +10912 +10913 +10914 +10915 +10916 +10917 +10918 +10919 +10920 +10921 +10922 +10923 +10924 +10925 +10926 +10927 +10928 +10929 +10930 +10931 +10932 +10933 +10934 +10935 +10936 +10937 +10938 +10939 +10940 +10941 +10942 +10943 +10944 +10945 +10946 +10947 +10948 +10949 +10950 +10951 +10952 +10953 +10954 +10955 +10956 +10957 +10958 +10959 +10960 +10961 +10962 +10963 +10964 +10965 +10966 +10967 +10968 +10969 +10970 +10971 +10972 +10973 +10974 +10975 +10976 +10977 +10978 +10979 +10980 +10981 +10982 +10983 +10984 +10985 +10986 +10987 +10988 +10989 +10990 +10991 +10992 +10993 +10994 +10995 +10996 +10997 +10998 +10999 +11000 +11001 +11002 +11003 +11004 +11005 +11006 +11007 +11008 +11009 +11010 +11011 +11012 +11013 +11014 +11015 +11016 +11017 +11018 +11019 +11020 +11021 +11022 +11023 +11024 +11025 +11026 +11027 +11028 +11029 +11030 +11031 +11032 +11033 +11034 +11035 +11036 +11037 +11038 +11039 +11040 +11041 +11042 +11043 +11044 +11045 +11046 +11047 +11048 +11049 +11050 +11051 +11052 +11053 +11054 +11055 +11056 +11057 +11058 +11059 +11060 +11061 +11062 +11063 +11064 +11065 +11066 +11067 +11068 +11069 +11070 +11071 +11072 +11073 +11074 +11075 +11076 +11077 +11078 +11079 +11080 +11081 +11082 +11083 +11084 +11085 +11086 +11087 +11088 +11089 +11090 +11091 +11092 +11093 +11094 +11095 +11096 +11097 +11098 +11099 +11100 +11101 +11102 +11103 +11104 +11105 +11106 +11107 +11108 +11109 +11110 +11111 +11112 +11113 +11114 +11115 +11116 +11117 +11118 +11119 +11120 +11121 +11122 +11123 +11124 +11125 +11126 +11127 +11128 +11129 +11130 +11131 +11132 +11133 +11134 +11135 +11136 +11137 +11138 +11139 +11140 +11141 +11142 +11143 +11144 +11145 +11146 +11147 +11148 +11149 +11150 +11151 +11152 +11153 +11154 +11155 +11156 +11157 +11158 +11159 +11160 +11161 +11162 +11163 +11164 +11165 +11166 +11167 +11168 +11169 +11170 +11171 +11172 +11173 +11174 +11175 +11176 +11177 +11178 +11179 +11180 +11181 +11182 +11183 +11184 +11185 +11186 +11187 +11188 +11189 +11190 +11191 +11192 +11193 +11194 +11195 +11196 +11197 +11198 +11199 +11200 +11201 +11202 +11203 +11204 +11205 +11206 +11207 +11208 +11209 +11210 +11211 +11212 +11213 +11214 +11215 +11216 +11217 +11218 +11219 +11220 +11221 +11222 +11223 +11224 +11225 +11226 +11227 +11228 +11229 +11230 +11231 +11232 +11233 +11234 +11235 +11236 +11237 +11238 +11239 +11240 +11241 +11242 +11243 +11244 +11245 +11246 +11247 +11248 +11249 +11250 +11251 +11252 +11253 +11254 +11255 +11256 +11257 +11258 +11259 +11260 +11261 +11262 +11263 +11264 +11265 +11266 +11267 +11268 +11269 +11270 +11271 +11272 +11273 +11274 +11275 +11276 +11277 +11278 +11279 +11280 +11281 +11282 +11283 +11284 +11285 +11286 +11287 +11288 +11289 +11290 +11291 +11292 +11293 +11294 +11295 +11296 +11297 +11298 +11299 +11300 +11301 +11302 +11303 +11304 +11305 +11306 +11307 +11308 +11309 +11310 +11311 +11312 +11313 +11314 +11315 +11316 +11317 +11318 +11319 +11320 +11321 +11322 +11323 +11324 +11325 +11326 +11327 +11328 +11329 +11330 +11331 +11332 +11333 +11334 +11335 +11336 +11337 +11338 +11339 +11340 +11341 +11342 +11343 +11344 +11345 +11346 +11347 +11348 +11349 +11350 +11351 +11352 +11353 +11354 +11355 +11356 +11357 +11358 +11359 +11360 +11361 +11362 +11363 +11364 +11365 +11366 +11367 +11368 +11369 +11370 +11371 +11372 +11373 +11374 +11375 +11376 +11377 +11378 +11379 +11380 +11381 +11382 +11383 +11384 +11385 +11386 +11387 +11388 +11389 +11390 +11391 +11392 +11393 +11394 +11395 +11396 +11397 +11398 +11399 +11400 +11401 +11402 +11403 +11404 +11405 +11406 +11407 +11408 +11409 +11410 +11411 +11412 +11413 +11414 +11415 +11416 +11417 +11420 +11421 +11422 +11423 +11424 +11425 +11426 +11427 +11428 +11429 +11430 +11431 +11432 +11433 +11434 +11435 +11436 +11437 +11438 +11439 +11440 +11441 +11442 +11443 +11444 +11445 +11446 +11447 +11448 +11449 +11450 +11451 +11452 +11453 +11454 +11455 +11456 +11457 +11458 +11459 +11460 +11461 +11462 +11463 +11464 +11465 +11466 +11467 +11468 +11469 +11470 +11471 +11472 +11473 +11474 +11475 +11476 +11477 +11478 +11479 +11480 +11481 +11482 +11483 +11484 +11485 +11486 +11487 +11488 +11489 +11490 +11491 +11492 +11493 +11494 +11495 +11496 +11497 +11498 +11499 +11500 +11501 +11502 +11503 +11504 +11505 +11506 +11507 +11508 +11509 +11510 +11511 +11512 +11513 +11514 +11515 +11516 +11517 +11518 +11519 +11520 +11521 +11522 +11523 +11524 +11525 +11526 +11527 +11528 +11529 +11530 +11531 +11532 +11533 +11534 +11535 +11536 +11537 +11538 +11539 +11540 +11541 +11542 +11543 +11544 +11545 +11546 +11547 +11548 +11549 +11550 +11551 +11552 +11553 +11554 +11555 +11556 +11557 +11558 +11559 +11560 +11561 +11562 +11563 +11564 +11565 +11566 +11567 +11568 +11569 +11570 +11571 +11572 +11573 +11574 +11575 +11576 +11577 +11578 +11579 +11580 +11581 +11582 +11583 +11584 +11585 +11586 +11587 +11588 +11589 +11590 +11591 +11592 +11593 +11594 +11595 +11596 +11597 +11598 +11599 +11600 +11601 +11602 +11603 +11604 +11605 +11606 +11607 +11608 +11609 +11610 +11611 +11612 +11613 +11614 +11615 +11616 +11617 +11618 +11619 +11620 +11621 +11622 +11623 +11624 +11625 +11626 +11627 +11628 +11629 +11630 +11631 +11632 +11633 +11634 +11635 +11636 +11637 +11638 +11639 +11640 +11641 +11642 +11643 +11644 +11645 +11646 +11647 +11648 +11649 +11650 +11651 +11652 +11653 +11654 +11655 +11656 +11657 +11658 +11659 +11660 +11661 +11662 +11663 +11664 +11665 +11666 +11667 +11668 +11669 +11670 +11671 +11672 +11673 +11674 +11675 +11676 +11677 +11678 +11679 +11680 +11681 +12800 +12801 +12802 +12803 +12804 +12805 +12806 +12807 +12808 +12809 +12810 +12811 +12812 +12813 +12814 +12815 +12816 +12817 +12818 +12819 +12820 +12821 +12822 +12823 +12824 +12825 +12826 +12827 +12828 +12829 +12830 +12831 +12832 +12833 +12834 +12835 +12836 +12837 +12838 +12839 +12840 +12841 +12842 +12843 +12844 +12845 +12846 +12847 +12848 +12849 +12850 +12851 +12852 +12853 +12854 +12855 +12856 +12857 +12858 +12859 +12860 +12861 +12862 +12863 +12864 +12865 +12866 +12867 +12868 +12869 +12870 +12871 +12872 +12873 +12874 +12875 +12876 +12877 +12878 +12879 +12880 +12881 +12882 +12883 +12884 +12885 +12886 +12887 +12888 +12889 +12890 +12891 +12892 +12893 +12894 +12895 +12896 +12897 +12898 +12899 +12900 +12901 +12902 +12903 +12904 +12905 +12906 +12907 +12908 +12909 +12910 +12911 +12912 +12913 +12914 +12915 +12916 +12917 +12918 +12919 +12920 +12921 +12922 +12923 +12924 +12925 +12926 +12927 +12928 +12929 +12930 +12931 +12932 +12933 +12934 +12935 +12936 +12937 +12938 +12939 +12940 +12941 +12942 +12943 +12944 +12945 +12946 +12947 +12948 +12949 +12950 +12951 +12952 +12953 +12954 +12955 +12956 +12957 +12958 +12959 +12960 +12961 +12962 +12963 +12964 +12965 +12966 +12967 +12968 +12969 +12970 +12971 +12972 +12973 +12974 +12975 +12976 +12977 +12978 +12979 +12980 +12981 +12982 +12983 +12984 +12985 +12986 +12987 +12988 +12989 +12990 +12991 +12992 +12993 +12994 +12995 +12996 +12997 +12998 +12999 +13000 +13001 +13002 +13003 +13004 +13005 +13006 +13007 +13008 +13009 +13010 +13011 +13012 +13013 +13014 +13015 +13016 +13017 +13018 +13019 +13020 +13021 +13022 +13023 +13024 +13025 +13026 +13027 +13028 +13029 +13030 +13031 +13032 +13033 +13034 +13035 +13036 +13037 +13038 +13039 +13040 +13041 +13042 +13043 +13044 +13045 +13046 +13047 +13048 +13049 +13050 +13051 +13052 +13053 +13054 +13055 +13056 +13057 +13058 +13059 +13060 +13061 +13062 +13063 +13064 +13065 +13066 +13067 +13068 +13069 +13070 +13071 +13072 +13073 +13074 +13075 +13076 +13077 +13078 +13079 +13080 +13081 +13082 +13083 +13084 +13085 +13086 +13087 +13088 +13089 +13090 +13091 +13092 +13093 +13094 +13095 +13096 +13097 +13098 +13099 +13100 +13101 +13102 +13103 +13104 +13105 +13106 +13107 +13108 +13109 +13110 +13111 +13112 +13113 +13114 +13115 +13116 +13117 +13118 +13119 +13120 +13121 +13122 +13123 +13124 +13125 +13126 +13127 +13128 +13129 +13130 +13131 +13132 +13133 +13134 +13135 +13136 +13137 +13138 +13139 +13140 +13141 +13142 +13143 +13144 +13145 +13146 +13147 +13148 +13149 +13150 +13151 +13152 +13153 +13154 +13155 +13156 +13157 +13158 +13159 +13160 +13161 +13162 +13163 +13164 +13165 +13166 +13167 +13168 +13169 +13170 +13171 +13172 +13173 +13174 +13175 +13176 +13177 +13178 +13179 +13180 +13181 +13182 +13183 +13184 +13185 +13186 +13187 +13188 +13189 +13190 +13191 +13192 +13193 +13194 +13195 +13196 +13197 +13198 +13199 +13200 +13201 +13202 +13203 +13204 +13205 +13206 +13207 +13208 +13209 +13210 +13211 +13212 +13213 +13214 +13215 +13216 +13217 +13218 +13219 +13220 +13221 +13222 +13223 +13224 +13225 +13226 +13227 +13228 +13229 +13230 +13231 +13232 +13233 +13234 +13235 +13236 +13237 +13238 +13239 +13240 +13241 +13242 +13243 +13244 +13245 +13246 +13247 +13248 +13249 +13250 +13251 +13252 +13253 +13254 +13255 +13256 +13257 +13258 +13259 +13260 +13261 +13262 +13263 +13264 +13265 +13266 +13267 +13268 +13269 +13270 +13271 +13272 +13273 +13274 +13275 +13276 +13277 +13278 +13279 +13280 +13281 +13282 +13283 +13284 +13285 +13286 +13287 +13288 +13289 +13290 +13291 +13292 +13293 +13294 +13295 +13296 +13297 +13298 +13299 +13300 +13301 +13302 +13303 +13304 +13305 +13306 +13307 +13308 +13309 +13310 +13311 +13312 +13313 +13314 +13315 +13316 +13317 +13318 +13319 +13320 +13321 +13322 +13323 +13324 +13325 +13326 +13327 +13328 +13329 +13330 +13331 +13332 +13333 +13334 +13335 +13336 +13337 +13338 +13339 +13340 +13341 +13342 +13343 +13344 +13345 +13346 +13347 +13348 +13349 +13350 +13351 +13352 +13353 +13354 +13355 +13356 +13357 +13358 +13359 +13360 +13361 +13362 +13363 +13364 +13365 +13366 +13367 +13368 +13369 +13370 +13371 +13372 +13373 +13374 +13375 +13376 +13377 +13378 +13379 +13380 +13381 +13382 +13383 +13384 +13385 +13386 +13387 +13388 +13389 +13390 +13391 +13392 +13393 +13394 +13395 +13396 +13397 +13398 +13399 +13400 +13401 +13402 +13403 +13404 +13405 +13406 +13407 +13408 +13409 +13410 +13411 +13412 +13413 +13414 +13415 +13416 +13417 +13418 +13419 +13420 +13421 +13422 +13423 +13424 +13425 +13426 +13427 +13428 +13429 +13430 +13431 +13432 +13433 +13434 +13435 +13436 +13437 +13438 +13439 +13440 +13441 +13442 +13443 +13444 +13445 +13446 +13447 +13448 +13449 +13450 +13451 +13452 +13453 +13454 +13455 +13456 +13457 +13458 +13459 +13460 +13461 +13462 +13463 +13464 +13465 +13466 +13467 +13468 +13469 +13470 +13471 +13472 +13473 +13474 +13475 +13476 +13477 +13478 +13479 +13480 +13481 +13482 +13483 +13484 +13485 +13486 +13487 +13488 +13489 +13490 +13491 +13492 +13493 +13494 +13495 +13496 +13497 +13498 +13499 +13500 +13501 +13502 +13503 +13504 +13505 +13506 +13507 +13508 +13509 +13510 +13511 +13512 +13513 +13514 +13515 +13516 +13517 +13518 +13519 +13520 +13521 +13522 +13523 +13524 +13525 +13526 +13527 +13528 +13529 +13530 +13531 +13532 +13533 +13534 +13535 +13536 +13537 +13538 +13539 +13540 +13541 +13542 +13543 +13544 +13545 +13546 +13547 +13548 +13549 +13550 +13551 +13552 +13553 +13554 +13555 +13556 +13557 +13558 +13559 +13560 +13561 +13562 +13563 +13590 +13591 +13592 +13593 +13594 +13595 +13596 +13597 +13598 +13599 +13600 +13601 +13602 +13603 +13604 +13605 +13606 +13607 +13608 +13609 +13610 +13611 +13612 +13613 +13614 +13615 +13616 +13617 +13618 +13619 +13620 +13621 +13622 +13623 +13624 +13625 +13626 +13627 +13628 +13629 +13630 +13631 +13632 +13633 +13634 +13635 +13636 +13637 +13638 +13639 +13640 +13641 +13642 +13643 +13644 +13645 +13646 +13647 +13648 +13649 +13650 +13651 +13652 +13653 +13654 +13655 +13656 +13657 +13658 +13659 +13660 +13661 +13662 +13663 +13664 +13665 +13666 +13667 +13672 +13673 +13674 +13675 +13676 +13677 +13678 +13679 +13680 +13681 +13682 +13683 +13684 +13685 +13686 +13687 +13688 +13689 +13690 +13691 +13692 +13693 +13694 +13695 +13696 +13697 +13698 +13699 +13700 +13701 +13702 +13703 +13704 +13705 +13706 +13707 +13708 +13709 +13710 +13711 +13712 +13713 +13714 +13715 +13716 +13717 +13718 +13719 +13720 +13721 +13722 +13723 +13724 +13725 +13726 +13727 +13728 +13729 +13730 +13731 +13732 +13733 +13734 +13735 +13736 +13737 +13738 +13739 +13740 +13741 +13742 +13743 +13744 +13745 +13746 +13747 +13748 +13749 +13750 +13751 +13752 +13753 +13754 +13755 +13756 +13757 +13758 +13759 +13760 +13761 +13762 +13763 +13764 +13765 +13766 +13767 +13768 +13769 +13770 +13771 +13772 +13773 +13774 +13775 +13776 +13777 +13778 +13779 +13780 +13781 +13782 +13783 +13784 +13785 +13786 +13787 +13788 +13789 +13790 +13791 +13792 +13793 +13794 +13795 +13796 +13797 +13798 +13799 +13800 +13801 +13802 +13803 +13804 +13805 +13806 +13807 +13808 +13809 +13810 +13811 +13812 +13813 +13814 +13815 +13816 +13817 +13818 +13819 +13820 +13821 +13822 +13823 +13824 +13825 +13826 +13827 +13828 +13829 +13830 +13831 +13832 +13833 +13834 +13835 +13836 +13837 +13838 +13839 +13840 +13841 +13842 +13843 +13844 +13845 +13846 +13847 +13848 +13849 +13850 +13851 +13852 +13853 +13854 +13855 +13856 +13857 +13858 +13859 +13860 +13861 +13862 +13863 +13864 +13865 +13866 +13867 +13868 +13869 +13870 +13871 +13872 +13873 +13874 +13875 +13876 +13877 +13878 +13879 +13880 +13881 +13882 +13883 +13884 +13885 +13886 +13887 +13888 +13889 +13890 +14383 +14384 +14385 +14386 +14387 +14388 +14389 +14390 +14391 +14392 +14393 +14394 +14395 +14396 +14397 +14398 +14399 +14400 +14401 +14402 +14403 +14404 +14405 +14406 +14407 +14408 +14409 +14410 +14411 +14412 +14413 +14414 +14415 +14416 +14417 +14418 +14419 +14420 +14421 +14422 +14423 +14424 +14425 +14426 +14427 +14428 +14429 +14430 +14431 +14432 +14433 +14434 +14435 +14436 +14437 +14438 +14439 +14440 +14441 +14442 +14443 +14444 +14445 +14446 +14447 +14448 +14449 +14450 +14451 +14452 +14453 +14454 +14455 +14456 +14457 +14458 +14459 +14460 +14461 +14462 +14463 +14464 +14465 +14466 +14467 +14468 +14469 +14470 +14471 +14472 +14473 +14474 +14475 +14476 +14477 +14478 +14479 +14480 +14481 +14482 +14483 +14484 +14485 +14486 +14487 +14488 +14489 +14490 +14491 +14492 +14493 +14494 +14495 +14496 +14497 +14498 +14499 +14500 +14501 +14502 +14503 +14504 +14505 +14506 +14507 +14508 +14509 +14510 +14511 +14512 +14513 +14514 +14515 +14516 +14517 +14518 +14519 +14520 +14521 +14522 +14523 +14524 +14525 +14526 +14527 +14528 +14530 +14531 +14532 +14533 +14534 +14535 +14536 +14537 +14538 +14539 +14540 +14541 +14542 +14543 +14544 +14545 +14546 +14547 +14548 +14549 +14550 +14551 +14552 +14553 +14554 +14556 +14558 +14559 +14560 +14561 +14562 +14563 +14564 +14565 +14566 +14567 +14568 +14569 +14570 +14571 +14572 +14573 +14574 +14575 +14576 +14577 +14578 +14579 +14580 +14581 +14582 +14583 +14584 +14585 +14586 +14587 +14588 +14589 +14590 +14591 +14592 +14593 +14594 +14595 +14596 +14597 +14598 +14599 +14600 +14601 +14602 +14603 +14604 +14605 +14606 +14607 +14608 +14609 +14610 +14611 +14612 +14613 +14614 +14615 +14616 +14617 +14618 +14619 +14620 +14621 +14622 +14623 +14624 +14625 +14626 +14627 +14628 +14629 +14630 +14631 +14632 +14633 +14634 +14635 +14636 +14637 +14638 +14639 +14640 +14641 +14642 +14643 +14650 +14651 +14652 +14653 +14654 +14655 +14656 +14657 +14660 +14661 +14662 +14663 +14664 +14665 +14666 +14667 +14668 +14669 +14670 +14671 +14672 +14673 +14674 +14675 +14676 +14677 +14678 +14679 +14680 +14681 +14682 +14683 +14684 +14685 +14686 +14687 +14688 +14689 +14690 +14691 +14692 +14693 +14694 +14695 +14699 +14700 +14701 +14702 +14703 +14704 +14705 +14706 +14707 +14708 +14709 +14710 +14711 +14712 +14713 +14714 +14715 +14716 +14717 +14718 +14719 +14720 +14721 +14722 +14723 +14724 +14725 +14726 +14727 +14728 +14735 +14736 +14737 +14738 +14739 +14740 +14741 +14742 +14743 +14744 +14745 +14746 +14747 +14748 +14749 +14750 +14751 +14752 +14753 +14754 +14755 +14756 +14757 +14758 +14759 +14760 +14761 +14762 +14763 +14764 +14765 +14770 +14771 +14772 +14773 +14774 +14775 +14776 +14777 +14778 +14779 +14780 +14781 +14782 +14783 +14784 +14785 +14786 +14787 +14788 +14789 +14790 +14791 +14792 +14793 +14794 +14795 +14796 +14797 +14798 +14799 +14800 +14801 +14802 +14803 +14804 +14805 +14806 +14807 +14808 +14809 +14810 +14811 +14812 +14813 +14814 +14815 +14816 +14817 +14818 +14819 +14820 +14821 +14822 +14823 +14824 +14825 +14826 +14827 +14828 +14829 +14830 +14831 +14832 +14833 +14834 +14835 +14836 +14837 +14838 +14839 +14840 +14841 +14842 +14843 +14844 +14845 +14846 +14847 +14848 +14849 +14850 +14851 +14852 +14853 +14854 +14855 +14856 +14858 +14859 +14860 +14861 +14862 +14863 +14864 +14865 +14866 +14867 +14868 +14869 +14870 +14871 +14872 +14873 +14874 +14875 +14876 +14877 +14878 +14879 +14880 +14881 +14882 +14883 +14885 +14886 +14887 +14888 +14889 +14890 +14891 +14892 +14893 +14894 +14895 +14896 +14897 +14898 +14900 +14901 +14902 +14903 +15025 +15026 +15027 +15028 +15029 +15030 +15031 +15032 +15033 +15034 +15035 +15036 +15037 +15038 +15039 +15040 +15041 +15042 +15043 +15044 +15045 +15046 +15047 +15048 +15049 +15050 +15051 +15052 +15053 +15054 +15055 +15056 +15057 +15058 +15059 +15060 +15061 +15062 +15063 +15064 +16000 +16001 +16002 +16003 +16004 +16005 +16006 +16007 +16008 +16009 +16010 +16011 +16012 +16013 +16014 +16015 +16016 +16017 +16018 +16019 +16020 +16021 +16022 +16023 +16024 +16025 +16026 +16027 +16028 +16029 +16030 +16031 +16032 +16033 +16034 +16035 +16036 +16037 +16038 +16039 +16040 +16041 +16042 +16043 +16044 +16045 +16046 +16047 +16048 +16049 +16050 +16051 +16052 +16053 +16054 +16055 +16056 +16057 +16058 +16059 +16060 +16061 +16062 +16063 +16064 +16065 +16066 +16067 +16068 +16069 +16070 +16071 +16072 +16073 +16074 +16075 +16076 +16077 +16078 +16079 +16080 +16081 +16082 +16083 +16084 +16085 +16086 +16087 +16088 +16089 +16090 +16091 +16092 +16093 +16094 +16095 +16096 +16097 +16098 +16099 +16100 +16101 +16102 +16103 +16104 +16105 +16106 +16107 +16108 +16109 +16110 +16111 +16112 +16113 +16114 +16115 +16116 +16117 +16118 +16119 +16120 +16121 +16122 +16123 +16124 +16125 +16126 +16127 +16128 +16129 +16130 +16131 +16132 +16133 +16134 +16135 +16136 +16137 +16138 +16139 +16140 +16141 +16142 +16143 +16144 +16145 +16146 +16147 +16148 +16149 +16150 +16151 +16152 +16153 +16154 +16155 +16156 +16157 +16158 +16159 +16160 +16161 +16162 +16163 +16164 +16165 +16166 +16167 +16168 +16169 +16170 +16171 +16172 +16173 +16174 +16175 +16176 +16177 +16178 +16179 +16180 +16181 +16182 +16183 +16184 +16185 +16186 +16187 +16188 +16189 +16190 +16191 +16192 +16193 +16194 +16195 +16196 +16197 +16198 +16199 +16200 +16201 +16202 +16203 +16204 +16205 +16206 +16207 +16208 +16209 +16210 +16211 +16212 +16213 +16214 +16215 +16216 +16217 +16218 +16219 +16220 +16221 +16222 +16223 +16224 +16225 +16226 +16227 +16228 +16229 +16230 +16231 +16232 +16233 +16234 +16235 +16236 +16237 +16238 +16239 +16240 +16241 +16242 +16243 +16244 +16245 +16246 +16247 +16248 +16249 +16250 +16251 +16252 +16253 +16254 +16255 +16256 +16257 +16258 +16259 +16260 +16261 +16262 +16263 +16264 +16265 +16266 +16267 +16268 +16269 +16270 +16271 +16272 +16273 +16274 +16275 +16276 +16277 +16278 +16279 +16280 +16281 +16282 +16283 +16284 +16285 +16286 +16287 +16288 +16289 +16290 +16291 +16292 +16293 +16294 +16295 +16296 +16297 +16298 +16299 +16300 +16301 +16302 +16303 +16304 +16305 +16306 +16307 +16308 +16309 +16310 +16311 +16312 +16313 +16314 +16315 +16316 +16317 +16318 +16319 +16320 +16321 +16322 +16323 +16324 +16325 +16326 +16327 +16328 +16329 +16330 +16331 +16332 +16333 +16334 +16335 +16336 +16337 +16338 +16339 +16340 +16341 +16342 +16343 +16344 +16345 +16346 +16347 +16348 +16349 +16350 +16351 +16352 +16353 +16354 +16355 +16356 +16357 +16358 +16359 +16360 +16361 +16362 +16363 +16364 +16365 +16366 +16367 +16368 +16369 +16370 +16371 +16372 +16373 +16374 +16375 +16376 +16377 +16378 +16379 +16380 +16381 +16382 +16383 +16384 +16385 +16386 +16387 +16388 +16389 +16390 +16391 +16392 +16393 +16394 +16395 +16396 +16397 +16398 +16399 +16400 +16401 +16402 +16403 +16404 +16405 +16406 +16407 +16408 +16409 +16410 +16411 +16412 +16413 +16414 +16415 +16416 +16417 +16418 +16419 +16420 +16421 +16422 +16423 +16424 +16425 +16426 +16427 +16428 +16429 +16430 +16431 +16432 +16433 +16434 +16435 +16436 +16437 +16438 +16439 +16440 +16441 +16442 +16443 +16444 +16445 +16446 +16447 +16448 +16449 +16450 +16451 +16452 +16453 +16454 +16455 +16456 +16457 +16458 +16459 +16460 +16461 +16462 +16463 +16464 +16465 +16466 +16467 +16468 +16469 +16470 +16471 +16472 +16473 +16474 +16475 +16476 +16477 +16478 +16479 +16480 +16481 +16482 +16483 +16484 +16485 +16486 +16487 +16488 +16489 +16490 +16491 +16492 +16493 +16494 +16495 +16496 +16497 +16498 +16499 +16500 +16501 +16502 +16503 +16504 +16505 +16506 +16507 +16508 +16509 +16510 +16511 +16512 +16513 +16514 +16515 +16516 +16517 +16518 +16519 +16520 +16521 +16522 +16523 +16524 +16525 +16526 +16527 +16528 +16529 +16530 +16531 +16532 +16533 +16534 +16535 +16536 +16537 +16538 +16539 +16540 +16541 +16542 +16543 +16544 +16545 +16546 +16547 +16548 +16549 +16550 +16551 +16552 +16553 +16554 +16555 +16556 +16557 +16558 +16559 +16560 +16561 +16562 +16563 +16564 +16565 +16566 +16567 +16568 +16569 +16570 +16571 +16572 +16573 +16574 +16575 +16576 +16577 +16578 +16579 +16580 +16581 +16582 +16583 +16584 +16585 +16586 +16587 +16588 +16589 +16590 +16591 +16592 +16593 +16594 +16595 +16596 +16597 +16598 +16599 +16600 +16601 +16602 +16603 +16604 +16605 +16606 +16607 +16608 +16609 +16610 +16611 +16612 +16613 +16614 +16615 +16616 +16617 +16618 +16619 +16620 +16621 +16622 +16623 +16624 +16625 +16626 +16627 +16628 +16629 +16630 +16631 +16632 +16633 +16634 +16635 +16636 +16637 +16638 +16639 +16640 +16641 +16642 +16643 +16644 +16645 +16646 +16647 +16648 +16649 +16650 +16651 +16652 +16653 +16654 +16655 +16656 +16657 +16658 +16659 +16660 +16661 +16662 +16663 +16664 +16665 +16666 +16667 +16668 +16669 +16670 +16671 +16672 +16673 +16674 +16675 +16676 +16677 +16678 +16679 +16680 +16681 +16682 +16683 +16684 +16685 +16686 +16687 +16688 +16689 +16690 +16691 +16692 +16693 +16694 +16695 +16696 +16697 +16698 +16699 +16700 +16701 +16702 +16703 +16704 +16705 +16706 +16707 +16708 +16709 +16710 +16711 +16712 +16713 +16714 +16715 +16716 +16717 +16718 +16719 +16720 +16721 +16722 +16723 +16724 +16725 +16726 +16727 +16728 +16729 +16730 +16731 +16732 +16733 +16734 +16735 +16736 +16737 +16738 +16739 +16740 +16741 +16742 +16743 +16744 +16745 +16746 +16747 +16748 +16749 +16750 +16751 +16752 +16753 +16754 +16755 +16756 +16757 +16758 +16759 +16760 +16761 +16762 +16763 +16764 +16765 +16766 +16767 +16768 +16769 +16770 +16771 +16772 +16773 +16774 +16775 +16776 +16777 +16778 +16779 +16780 +16781 +16782 +16783 +16784 +16785 +16786 +16787 +16788 +16789 +16790 +17000 +17001 +17002 +17003 +17004 +17005 +17006 +17007 +17008 +17009 +17010 +17011 +17012 +17013 +17014 +17015 +17016 +17017 +17018 +17019 +17020 +17021 +17022 +17023 +17024 +17025 +17026 +17027 +17028 +17029 +17030 +17031 +17032 +17033 +17034 +17035 +17036 +17037 +17038 +17039 +17040 +17041 +17042 +17043 +17044 +17045 +17046 +17047 +17048 +17049 +17050 +17051 +17052 +17053 +17054 +17055 +17056 +17057 +17058 +17059 +17060 +17061 +17062 +17063 +17064 +17065 +17066 +17067 +17068 +17069 +17070 +17071 +17072 +17073 +17074 +17075 +17076 +17077 +17078 +17079 +17080 +17081 +17082 +17083 +17084 +17085 +17086 +17087 +17088 +17089 +17090 +17091 +17092 +17093 +17094 +17095 +17096 +17097 +17098 +17099 +17100 +17101 +17102 +17103 +17104 +17105 +17106 +17107 +17108 +17109 +17110 +17111 +17112 +17113 +17114 +17115 +17116 +17117 +17118 +17119 +17120 +17121 +17122 +17123 +17124 +17125 +17126 +17127 +17128 +17129 +17130 +17131 +17132 +17133 +17134 +17135 +17136 +17137 +17138 +17139 +17140 +17141 +17142 +17143 +17144 +17145 +17146 +17147 +17148 +17149 +17150 +17151 +17152 +17153 +17154 +17155 +17156 +17157 +17158 +17159 +17160 +17161 +17162 +17163 +17164 +17165 +17166 +17167 +17168 +17169 +17170 +17171 +17172 +17173 +17174 +17175 +17176 +17177 +17178 +17179 +17180 +17181 +17182 +17183 +17184 +17185 +17186 +17187 +17188 +17189 +17190 +17191 +17192 +17193 +17194 +17195 +17196 +17197 +17198 +17199 +17200 +17201 +17202 +17203 +17204 +17205 +17206 +17207 +17208 +17209 +17210 +17211 +17212 +17213 +17214 +17215 +17216 +17217 +17218 +17219 +17220 +17221 +17222 +17223 +17224 +17225 +17226 +17227 +17228 +17229 +17230 +17231 +17232 +17233 +17234 +17235 +17236 +17237 +17238 +17239 +17240 +17241 +17242 +17243 +17244 +17245 +17246 +17247 +17248 +17249 +17250 +17251 +17252 +17253 +17254 +17255 +17256 +17257 +17258 +17259 +17260 +17261 +17262 +17263 +17264 +17265 +17266 +17267 +17268 +17269 +17270 +17271 +17272 +17273 +17274 +17275 +17276 +17277 +17278 +17279 +17280 +17281 +17282 +17283 +17284 +17285 +17286 +17287 +17288 +17289 +17290 +17291 +17292 +17293 +17294 +17295 +17296 +17297 +17298 +17299 +17300 +17301 +17302 +17303 +17304 +17305 +17306 +17307 +17308 +17309 +17310 +17311 +17312 +17313 +17314 +17315 +17316 +17317 +17318 +17319 +17320 +17321 +17322 +17323 +17324 +17325 +17326 +17327 +17328 +17329 +17330 +17331 +17332 +17333 +17334 +17335 +17336 +17337 +17338 +17339 +17340 +17341 +17342 +17343 +17344 +17345 +17346 +17347 +17348 +17349 +17350 +17351 +17352 +17353 +17354 +17355 +17356 +17357 +17358 +17359 +17360 +17361 +17362 +17363 +17364 +17365 +17366 +17367 +17368 +17369 +17370 +17371 +17372 +17373 +17374 +17375 +17376 +17377 +17378 +17379 +17380 +17381 +17382 +17383 +17384 +17385 +17386 +17387 +17388 +17389 +17390 +17391 +17392 +17393 +17394 +17395 +17396 +17397 +17398 +17399 +17400 +17401 +17402 +17403 +17404 +17405 +17406 +17407 +17408 +17409 +17410 +17411 +17412 +17413 +17414 +17415 +17416 +17417 +17418 +17419 +17420 +17421 +17422 +17423 +17424 +17425 +17426 +17427 +17428 +17429 +17430 +17431 +17432 +17433 +17434 +17435 +17436 +17437 +17438 +17439 +17440 +17441 +17442 +17443 +17444 +17445 +17446 +17447 +17448 +17449 +17450 +17451 +17452 +17453 +17454 +17455 +17456 +17457 +17458 +17459 +17460 +17461 +17462 +17463 +17464 +17465 +17466 +17467 +17468 +17469 +17470 +17471 +17472 +17473 +17474 +17500 +17501 +17502 +17503 +17504 +17505 +17506 +17507 +17508 +17509 +17510 +17511 +17512 +17513 +17514 +17515 +17516 +17517 +17518 +17519 +17520 +17521 +17522 +17523 +17524 +17525 +17526 +17527 +17528 +17529 +17530 +17531 +17532 +17533 +17534 +17535 +17536 +17537 +17538 +17539 +17540 +17541 +17542 +17543 +17544 +17545 +17546 +17547 +17548 +17549 +17550 +17551 +17552 +17553 +17554 +17555 +17556 +17557 +17558 +17559 +17560 +17561 +17562 +17563 +17564 +17565 +17566 +17567 +17568 +17569 +17570 +17571 +17572 +17573 +17574 +17575 +17576 +17577 +17578 +17579 +17580 +17581 +17582 +17583 +17584 +17585 +17586 +17587 +17588 +17589 +17590 +17591 +17592 +17593 +17594 +17595 +17596 +17597 +17598 +17599 +17600 +17601 +17602 +17603 +17604 +17605 +17606 +17607 +17608 +17609 +17610 +17611 +17612 +17613 +17614 +17615 +17616 +17617 +17618 +17619 +17620 +17621 +17622 +17623 +17624 +17625 +17626 +17627 +17628 +17629 +17630 +17631 +17632 +17633 +17634 +17635 +17636 +17637 +17638 +17639 +17640 +17641 +17642 +17643 +17644 +17645 +17646 +17647 +17648 +17649 +17650 +17651 +17652 +17653 +17654 +17655 +17656 +17657 +17658 +17659 +17660 +17661 +17662 +17663 +17664 +17665 +17666 +17667 +17668 +17669 +17670 +17671 +17672 +17673 +17674 +17675 +17676 +17677 +17678 +17679 +17680 +17681 +17682 +17683 +17684 +17685 +17686 +17687 +17688 +17689 +17690 +17691 +17692 +17693 +17694 +17695 +17696 +17697 +17698 +17699 +17700 +17701 +17702 +17703 +17704 +17705 +17706 +17707 +17708 +17709 +17710 +17711 +17712 +17713 +17714 +17715 +17716 +17717 +17718 +17719 +17720 +17721 +17722 +17723 +17724 +17725 +17726 +17727 +17728 +17729 +17730 +17731 +17732 +17733 +17734 +17735 +17736 +17737 +17738 +17739 +17740 +17741 +17742 +17743 +17744 +17745 +17746 +17747 +17748 +17749 +17750 +17751 +17752 +17753 +17754 +17755 +17756 +17757 +17758 +17759 +17760 +17761 +17762 +17763 +17764 +17765 +17766 +17767 +17768 +17769 +17770 +17771 +17772 +17773 +17774 +17775 +17776 +17777 +17778 +17779 +17780 +17781 +17782 +17783 +17784 +17785 +17786 +17787 +17788 +17789 +17790 +17791 +17792 +17793 +17794 +17795 +17796 +17797 +17798 +17799 +17800 +17801 +17802 +17803 +17804 +17805 +17806 +17807 +17808 +17809 +17810 +17811 +17812 +17813 +17814 +17815 +17816 +17817 +17818 +17819 +17820 +17821 +17822 +17823 +17824 +17825 +17826 +17827 +17828 +17829 +17830 +17831 +17832 +17833 +17834 +17835 +17836 +17837 +17838 +17839 +17840 +17841 +17842 +17843 +17844 +17845 +17846 +17847 +17848 +17849 +17850 +17851 +17852 +17853 +17854 +17855 +17856 +17857 +17858 +17859 +17860 +17861 +17862 +17863 +17864 +17865 +17866 +17867 +17868 +17869 +17870 +17871 +17872 +17873 +17874 +17875 +17876 +17877 +17878 +17879 +17880 +17881 +17882 +17883 +17884 +17885 +17886 +17887 +17888 +17889 +17890 +17891 +17892 +17893 +17894 +17895 +17896 +17897 +17898 +17899 +17900 +17901 +17902 +17903 +17904 +17905 +17906 +17907 +17908 +17909 +17910 +17911 +17912 +17913 +17914 +17915 +17916 +17917 +17918 +17919 +17920 +17921 +17922 +17923 +17924 +17925 +17926 +17927 +17928 +17929 +17930 +17931 +17932 +17933 +17934 +17935 +17936 +17937 +17938 +17939 +17940 +17941 +17942 +17943 +17944 +17945 +17946 +17947 +17948 +17949 +17950 +17951 +17952 +17953 +17954 +17955 +17956 +17957 +17958 +17959 +17960 +17961 +17962 +17963 +17964 +17965 +17966 +17967 +17968 +17969 +17970 +17971 +17972 +17973 +17974 +17976 +17978 +18000 +18001 +18002 +18003 +18004 +18005 +18006 +18007 +18008 +18009 +18010 +18011 +18012 +18013 +18014 +18015 +18016 +18017 +18018 +18019 +18020 +18021 +18022 +18023 +18024 +18025 +18026 +18027 +18028 +18029 +18030 +18031 +18032 +18033 +18034 +18035 +18036 +18038 +18039 +18040 +18041 +18042 +18043 +18044 +18045 +18046 +18047 +18048 +18049 +18050 +18051 +18052 +18053 +18054 +18055 +18056 +18057 +18058 +18059 +18060 +18061 +18062 +18063 +18064 +18065 +18066 +18067 +18068 +18069 +18070 +18071 +18072 +18073 +18074 +18075 +18076 +18077 +18078 +18079 +18080 +18081 +18082 +18083 +18084 +18085 +18086 +18087 +18088 +18089 +18090 +18091 +18092 +18093 +18094 +18095 +18096 +18097 +18098 +18099 +18100 +18101 +18102 +18104 +18105 +18109 +18112 +18200 +18201 +18202 +18203 +18204 +18205 +18206 +18207 +18208 +18209 +18210 +18211 +18212 +18213 +18214 +18215 +18216 +18217 +18218 +18219 +18220 +18221 +18222 +18223 +18224 +18225 +18226 +18227 +18228 +18229 +18230 +18231 +18232 +18233 +18234 +18235 +18236 +18237 +18238 +18239 +18240 +18241 +18242 +18243 +18244 +18245 +18246 +18247 +18248 +18249 +18250 +18251 +18252 +18253 +18254 +18255 +18256 +18257 +18258 +18259 +18260 +18261 +18262 +18263 +18264 +18265 +18266 +18267 +18268 +18269 +18270 +18271 +18272 +18273 +18274 +18275 +18276 +18277 +18278 +18279 +18280 +18281 +18282 +18283 +18284 +18285 +18286 +18287 +18288 +18289 +18290 +18291 +18292 +18293 +18294 +18295 +18296 +18297 +18298 +18299 +18300 +18301 +18302 +18303 +18304 +18305 +18306 +18307 +18308 +18309 +18310 +18311 +18312 +18313 +18314 +18315 +18316 +18317 +18318 +18319 +18320 +18321 +18322 +18323 +18324 +18325 +18326 +18327 +18328 +18329 +18330 +18331 +18332 +18333 +18334 +18335 +18336 +18337 +18338 +18339 +18340 +18341 +18342 +18343 +18344 +18345 +18346 +18347 +18348 +18349 +18350 +18351 +18352 +18353 +18354 +18355 +18356 +18357 +18358 +18359 +18360 +18361 +18362 +18363 +18364 +18365 +18366 +18367 +18368 +18369 +18370 +18371 +18372 +18373 +18374 +18375 +18376 +18377 +18378 +18379 +18380 +18381 +18382 +18383 +18384 +18385 +18386 +18387 +18388 +18389 +18390 +18391 +18392 +18393 +18394 +18395 +18396 +18397 +18398 +18399 +18400 +18401 +18402 +18403 +18404 +18405 +18406 +18407 +18408 +18409 +18410 +18411 +18412 +18413 +18414 +18415 +18416 +18417 +18418 +18419 +18420 +18421 +18422 +18423 +18424 +18425 +18426 +18427 +18428 +18429 +18430 +18431 +18432 +18433 +18434 +18435 +18436 +18437 +18438 +18439 +18440 +18441 +18442 +18443 +18444 +18445 +18446 +18447 +18448 +18449 +18450 +18451 +18452 +18453 +18454 +18455 +18456 +18457 +18458 +18459 +18460 +18461 +18462 +18463 +18464 +18465 +18466 +18467 +18468 +18469 +18470 +18471 +18472 +18473 +18474 +18475 +18476 +18477 +18478 +18479 +18480 +18481 +18482 +18483 +18484 +18485 +18486 +18487 +18488 +18489 +18490 +18491 +18492 +18493 +18494 +18495 +18496 +18497 +18498 +18499 +18500 +18501 +18502 +18503 +18504 +18505 +18506 +18507 +18508 +18509 +18510 +18511 +18512 +18513 +18514 +18515 +18516 +18517 +18518 +18519 +18520 +18521 +18522 +18523 +18524 +18525 +18526 +18527 +18528 +18529 +18530 +18531 +18532 +18533 +18534 +18535 +18536 +18537 +18538 +18539 +18540 +18541 +18542 +18543 +18544 +18545 +18546 +18547 +18548 +18549 +18550 +18551 +18552 +18553 +18554 +18555 +18556 +18557 +18558 +18559 +18560 +18561 +18562 +18563 +18564 +18565 +18566 +18567 +18568 +18569 +18570 +18571 +18572 +18573 +18574 +18575 +18576 +18577 +18578 +18579 +18580 +18581 +18582 +18583 +18584 +18585 +18586 +18587 +18588 +18589 +18590 +18591 +18592 +18593 +18594 +18595 +18596 +18597 +18598 +18599 +18600 +18601 +18602 +18603 +18604 +18605 +18606 +18607 +18608 +18609 +18610 +18611 +18612 +18613 +18614 +18615 +18616 +18617 +18618 +18619 +18620 +18621 +18622 +18623 +18624 +18625 +18626 +18627 +18628 +18629 +18630 \ No newline at end of file diff --git a/Server/mods/deathmatch/peds.conf b/Server/mods/deathmatch/peds.conf new file mode 100644 index 0000000000..c5c650a4dc --- /dev/null +++ b/Server/mods/deathmatch/peds.conf @@ -0,0 +1,299 @@ +0 +1 +2 +7 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +66 +67 +68 +69 +70 +71 +72 +73 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 \ No newline at end of file From 2fe28e6a926ac26d6e2b534a09fc1d3c73ff8af1 Mon Sep 17 00:00:00 2001 From: Uladzislau Nikalayevich Date: Sun, 12 Jun 2022 16:46:31 +0300 Subject: [PATCH 10/51] Fix out of limits allocating --- Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp | 3 +-- Server/mods/deathmatch/logic/models/CModelManager.cpp | 6 ++++-- Server/mods/deathmatch/logic/models/CModelManager.h | 2 ++ 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp b/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp index 0813e8aae8..a0b6fef76d 100644 --- a/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp +++ b/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp @@ -119,8 +119,7 @@ std::list CLuaModelDefs::GetFreeModels() std::list output; const auto models = g_pGame->GetModelManager()->GetModels(); - // Fix magick umber - for (uint32_t uiModelID = 0; uiModelID < 20000; uiModelID++) + for (uint32_t uiModelID = 0; uiModelID < MAX_GAME_MODELS; uiModelID++) { if (!models[uiModelID]) output.push_back(uiModelID); diff --git a/Server/mods/deathmatch/logic/models/CModelManager.cpp b/Server/mods/deathmatch/logic/models/CModelManager.cpp index 6f13f0e383..c6cc52151e 100644 --- a/Server/mods/deathmatch/logic/models/CModelManager.cpp +++ b/Server/mods/deathmatch/logic/models/CModelManager.cpp @@ -14,7 +14,7 @@ CModelManager::CModelManager() { - m_vModels.resize(25500); + m_vModels.resize(MAX_GAME_MODELS); } CModelManager::~CModelManager() @@ -40,6 +40,9 @@ void CModelManager::RegisterModel(CModelBase* pModelHandler) bool CModelManager::AllocateModelFromParent(uint32_t uiNewModelID, uint32_t uiParentModel) { + if (uiNewModelID >= MAX_GAME_MODELS) + return false; + CModelBase* pParentModel = m_vModels[uiParentModel]; if (!pParentModel) @@ -73,4 +76,3 @@ bool CModelManager::UnloadCustomModel(uint32 uiModelID) return true; } - diff --git a/Server/mods/deathmatch/logic/models/CModelManager.h b/Server/mods/deathmatch/logic/models/CModelManager.h index ba968557d4..550c966c81 100644 --- a/Server/mods/deathmatch/logic/models/CModelManager.h +++ b/Server/mods/deathmatch/logic/models/CModelManager.h @@ -19,6 +19,8 @@ class CModelManager; #include "CModelVehicle.h" #include "CModelPed.h" +#define MAX_GAME_MODELS 20000 + class CModelManager { public: From 9b244bab6b6dfbbcb8928be137f9a2a8f59ce724 Mon Sep 17 00:00:00 2001 From: Uladzislau Nikalayevich Date: Sun, 12 Jun 2022 17:08:55 +0300 Subject: [PATCH 11/51] fix getType --- Server/mods/deathmatch/logic/models/CModelAtomic.h | 3 +-- Server/mods/deathmatch/logic/models/CModelBase.h | 7 +++---- Server/mods/deathmatch/logic/models/CModelPed.h | 10 ++++++---- Server/mods/deathmatch/logic/models/CModelVehicle.cpp | 2 +- Server/mods/deathmatch/logic/models/CModelVehicle.h | 2 -- 5 files changed, 11 insertions(+), 13 deletions(-) diff --git a/Server/mods/deathmatch/logic/models/CModelAtomic.h b/Server/mods/deathmatch/logic/models/CModelAtomic.h index 5c9285ec36..a48e26bc01 100644 --- a/Server/mods/deathmatch/logic/models/CModelAtomic.h +++ b/Server/mods/deathmatch/logic/models/CModelAtomic.h @@ -17,10 +17,9 @@ class CModelAtomic; class CModelAtomic : public CModelBase { public: - CModelAtomic(uint32_t uiModelID) : CModelBase(uiModelID){}; + CModelAtomic(uint32_t uiModelID) : CModelBase(eModelInfoType::ATOMIC, uiModelID){}; ~CModelAtomic(){}; - eModelInfoType GetType() { return eModelInfoType::ATOMIC; }; CModelAtomic* Clone(uint32_t uiModelID); void Unload(); }; diff --git a/Server/mods/deathmatch/logic/models/CModelBase.h b/Server/mods/deathmatch/logic/models/CModelBase.h index b8c7c185b5..cc79f7199f 100644 --- a/Server/mods/deathmatch/logic/models/CModelBase.h +++ b/Server/mods/deathmatch/logic/models/CModelBase.h @@ -32,8 +32,7 @@ enum class eModelInfoType : unsigned char class CModelBase { public: - CModelBase(uint32_t uiModelID) : m_uiModelID(uiModelID), m_uiParentID(MODEL_MISSING_PARENT) - {}; + CModelBase(eModelInfoType eType, uint32_t uiModelID) : m_eType(eType), m_uiModelID(uiModelID), m_uiParentID(MODEL_MISSING_PARENT){}; virtual ~CModelBase(){}; @@ -45,10 +44,10 @@ class CModelBase bool IsCustom() { return m_uiParentID != MODEL_MISSING_PARENT; }; virtual void Unload() = 0; - eModelInfoType GetType() { return m_type; }; + eModelInfoType GetType() { return m_eType; }; protected: - eModelInfoType m_type = eModelInfoType::INVALID; + eModelInfoType m_eType; // Model id const uint32_t m_uiModelID; diff --git a/Server/mods/deathmatch/logic/models/CModelPed.h b/Server/mods/deathmatch/logic/models/CModelPed.h index ae40d2a7ef..522601e2c6 100644 --- a/Server/mods/deathmatch/logic/models/CModelPed.h +++ b/Server/mods/deathmatch/logic/models/CModelPed.h @@ -17,10 +17,12 @@ class CModelPed; class CModelPed : public CModelBase { public: - CModelPed(uint32_t uiModelID) : CModelBase(uiModelID){}; + CModelPed(uint32_t uiModelID) : CModelBase(eModelInfoType::PED, uiModelID){}; ~CModelPed(){}; - eModelInfoType GetType() { return eModelInfoType::PED; }; - CModelPed* Clone(uint32_t uiModelID); - void Unload(); + virtual CModelPed* Clone(uint32_t uiModelID); + virtual void Unload(); + +private: + eModelInfoType m_eType = eModelInfoType::PED; }; diff --git a/Server/mods/deathmatch/logic/models/CModelVehicle.cpp b/Server/mods/deathmatch/logic/models/CModelVehicle.cpp index e2d9d659bf..e4f70c9b1c 100644 --- a/Server/mods/deathmatch/logic/models/CModelVehicle.cpp +++ b/Server/mods/deathmatch/logic/models/CModelVehicle.cpp @@ -16,7 +16,7 @@ #include "CVehicleManager.h" CModelVehicle::CModelVehicle(uint32_t uiModelID, const SModelVehicleDefs &sModelDefs) - : CModelBase(uiModelID) + : CModelBase(eModelInfoType::VEHICLE, uiModelID) { m_modelDef = sModelDefs; m_pVehicleHandling = new CHandlingEntry(); diff --git a/Server/mods/deathmatch/logic/models/CModelVehicle.h b/Server/mods/deathmatch/logic/models/CModelVehicle.h index 111cc8d021..b858a00122 100644 --- a/Server/mods/deathmatch/logic/models/CModelVehicle.h +++ b/Server/mods/deathmatch/logic/models/CModelVehicle.h @@ -69,8 +69,6 @@ class CModelVehicle : public CModelBase void AddColor(const CVehicleColor& color) { return m_modelDef.vehicleColors.AddColor(color); }; void GetRandomVariation(unsigned char& ucVariant, unsigned char& ucVariant2); - - eModelInfoType GetType() { return eModelInfoType::VEHICLE; }; void Unload(); private: From 4f493063b40edd6c4d81709b8677ad9c9f728b51 Mon Sep 17 00:00:00 2001 From: Uladzislau Nikalayevich Date: Sun, 12 Jun 2022 18:04:25 +0300 Subject: [PATCH 12/51] Fix GetVehicleModel crashes --- .../deathmatch/logic/CStaticFunctionDefinitions.cpp | 8 ++++++-- Server/mods/deathmatch/logic/models/CModelManager.cpp | 10 ++++++++++ Server/mods/deathmatch/logic/models/CModelManager.h | 2 +- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp index d386ee2c37..73e29bbd32 100644 --- a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp +++ b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp @@ -4814,13 +4814,17 @@ bool CStaticFunctionDefinitions::SetWeaponAmmo(CElement* pElement, unsigned char CVehicle* CStaticFunctionDefinitions::CreateVehicle(CResource* pResource, unsigned short usModel, const CVector& vecPosition, const CVector& vecRotation, const char* szRegPlate, unsigned char ucVariant, unsigned char ucVariant2) { + CModelVehicle* pVehicleModel = g_pGame->GetModelManager()->GetVehicleModel(usModel); + if (!pVehicleModel) + return nullptr; + unsigned char ucVariation = ucVariant; unsigned char ucVariation2 = ucVariant2; if (ucVariant == 254 && ucVariant2 == 254) - CVehicleManager::GetRandomVariation(usModel, ucVariation, ucVariation2); + pVehicleModel->GetRandomVariation(ucVariation, ucVariation2); - if (CVehicleManager::IsValidModel(usModel) && (ucVariation <= 5 || ucVariation == 255) && (ucVariation2 <= 5 || ucVariation2 == 255)) + if ((ucVariation <= 5 || ucVariation == 255) && (ucVariation2 <= 5 || ucVariation2 == 255)) { CVehicle* const pVehicle = m_pVehicleManager->Create(pResource->GetDynamicElementRoot(), usModel, ucVariation, ucVariation2); diff --git a/Server/mods/deathmatch/logic/models/CModelManager.cpp b/Server/mods/deathmatch/logic/models/CModelManager.cpp index c6cc52151e..61cbbcbd38 100644 --- a/Server/mods/deathmatch/logic/models/CModelManager.cpp +++ b/Server/mods/deathmatch/logic/models/CModelManager.cpp @@ -73,6 +73,16 @@ bool CModelManager::UnloadCustomModel(uint32 uiModelID) delete pModel; m_vSimpleAllocatedModels.remove(pModel); + m_vModels[uiModelID] = nullptr; return true; } + +CModelVehicle* CModelManager::GetVehicleModel(uint32_t iModelID) +{ + CModelBase* pModel = m_vModels[iModelID]; + if (pModel && pModel->GetType() == eModelInfoType::VEHICLE) + return dynamic_cast(pModel); + + return nullptr; +} diff --git a/Server/mods/deathmatch/logic/models/CModelManager.h b/Server/mods/deathmatch/logic/models/CModelManager.h index 550c966c81..2875de7b6e 100644 --- a/Server/mods/deathmatch/logic/models/CModelManager.h +++ b/Server/mods/deathmatch/logic/models/CModelManager.h @@ -34,7 +34,7 @@ class CModelManager std::vector& GetModels() { return m_vModels; }; - CModelVehicle* GetVehicleModel(uint32_t iModelID) { return dynamic_cast(m_vModels[iModelID]); }; + CModelVehicle* GetVehicleModel(uint32_t iModelID); std::list GetSimpleAllocatedModels() { return m_vSimpleAllocatedModels; }; From b1b19c2586e62c39766516e1c3f64060cafeb456 Mon Sep 17 00:00:00 2001 From: Uladzislau Nikalayevich Date: Sun, 12 Jun 2022 22:46:33 +0300 Subject: [PATCH 13/51] Handle model conflicts --- Client/game_sa/CModelInfoSA.cpp | 6 +++--- Client/mods/deathmatch/logic/CClientModel.cpp | 4 ++-- Client/mods/deathmatch/logic/CClientModelManager.cpp | 12 +++++++----- Client/mods/deathmatch/logic/CClientModelManager.h | 2 +- .../mods/deathmatch/logic/CClientObjectManager.cpp | 2 +- .../logic/lua/CLuaFunctionParseHelpers.cpp | 2 +- .../mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp | 6 +++--- Client/mods/deathmatch/logic/rpc/CModelRPCs.cpp | 7 ++++++- Client/sdk/game/CModelInfo.h | 4 ++-- 9 files changed, 26 insertions(+), 19 deletions(-) diff --git a/Client/game_sa/CModelInfoSA.cpp b/Client/game_sa/CModelInfoSA.cpp index 432f340394..3d8f552c2e 100644 --- a/Client/game_sa/CModelInfoSA.cpp +++ b/Client/game_sa/CModelInfoSA.cpp @@ -1242,7 +1242,7 @@ void CModelInfoSA::SetCustomModel(RpClump* pClump) return pGame->GetRenderWare()->ReplaceWeaponModel(pClump, static_cast(m_dwModelID)); case eModelInfoType::VEHICLE: return pGame->GetRenderWare()->ReplaceVehicleModel(pClump, static_cast(m_dwModelID)); - case eModelInfoType::OBJECT: + case eModelInfoType::ATOMIC: case eModelInfoType::LOD_ATOMIC: case eModelInfoType::TIME: return pGame->GetRenderWare()->ReplaceAllAtomicsInModel(pClump, static_cast(m_dwModelID)); @@ -1518,7 +1518,7 @@ void CModelInfoSA::DeallocateModel(void) case eModelInfoType::PED: delete reinterpret_cast(ppModelInfo[m_dwModelID]); break; - case eModelInfoType::OBJECT: + case eModelInfoType::ATOMIC: delete reinterpret_cast(ppModelInfo[m_dwModelID]); break; default: @@ -1734,7 +1734,7 @@ void CModelInfoSA::RestoreAllObjectsPropertiesGroups() eModelInfoType CModelInfoSA::GetModelType() { - return ((eModelInfoType(*)())m_pInterface->VFTBL->GetModelType)(); + return (eModelInfoType)((uint8_t(*)())m_pInterface->VFTBL->GetModelType)(); } bool CModelInfoSA::IsTowableBy(CModelInfo* towingModel) diff --git a/Client/mods/deathmatch/logic/CClientModel.cpp b/Client/mods/deathmatch/logic/CClientModel.cpp index 0ea997ee2f..7b36753e9e 100644 --- a/Client/mods/deathmatch/logic/CClientModel.cpp +++ b/Client/mods/deathmatch/logic/CClientModel.cpp @@ -43,7 +43,7 @@ bool CClientModel::Allocate(ushort usParentID) case eModelInfoType::PED: pModelInfo->MakePedModel("PSYCHO"); return true; - case eModelInfoType::OBJECT: + case eModelInfoType::ATOMIC: if (g_pClientGame->GetObjectManager()->IsValidModel(usParentID)) { pModelInfo->MakeObjectModel(usParentID); @@ -107,7 +107,7 @@ void CClientModel::RestoreEntitiesUsingThisModel() unloadModelsAndCallEvents(pPedManager->IterBegin(), pPedManager->IterEnd(), 0, [](auto& element) { element.SetModel(0); }); break; } - case eModelInfoType::OBJECT: + case eModelInfoType::ATOMIC: { const auto& objects = &g_pClientGame->GetManager()->GetObjectManager()->GetObjects(); unsigned short usParentID = g_pGame->GetModelInfo(m_iModelID)->GetParentID(); diff --git a/Client/mods/deathmatch/logic/CClientModelManager.cpp b/Client/mods/deathmatch/logic/CClientModelManager.cpp index 6d62d285ba..7c151ad61d 100644 --- a/Client/mods/deathmatch/logic/CClientModelManager.cpp +++ b/Client/mods/deathmatch/logic/CClientModelManager.cpp @@ -109,18 +109,20 @@ void CClientModelManager::DeallocateModelsAllocatedByResource(CResource* pResour } } -void CClientModelManager::AllocateModelFromParent(uint32_t uiNewModelID, uint32_t uiParentModelID) +bool CClientModelManager::AllocateModelFromParent(uint32_t uiNewModelID, uint32_t uiParentModelID) { eModelInfoType eModelType = g_pGame->GetModelInfo(uiParentModelID)->GetModelType(); std::shared_ptr pModel = FindModelByID(uiNewModelID); - if (pModel == nullptr) - pModel = std::make_shared(g_pClientGame->GetManager(), uiNewModelID, eModelType); + if (pModel) + return false; + + pModel = std::make_shared(g_pClientGame->GetManager(), uiNewModelID, eModelType); Add(pModel); if (pModel->Allocate(uiParentModelID)) - return; + return true; - assert("Can not allocateModel"); + return false; } diff --git a/Client/mods/deathmatch/logic/CClientModelManager.h b/Client/mods/deathmatch/logic/CClientModelManager.h index ac5f5402f0..e8a722799b 100644 --- a/Client/mods/deathmatch/logic/CClientModelManager.h +++ b/Client/mods/deathmatch/logic/CClientModelManager.h @@ -37,7 +37,7 @@ class CClientModelManager std::vector> GetModelsByType(eModelInfoType type, const unsigned int minModelID = 0); void DeallocateModelsAllocatedByResource(CResource* pResource); - void AllocateModelFromParent(uint32_t usModelID, uint32_t usParentModel); + bool AllocateModelFromParent(uint32_t usModelID, uint32_t usParentModel); private: diff --git a/Client/mods/deathmatch/logic/CClientObjectManager.cpp b/Client/mods/deathmatch/logic/CClientObjectManager.cpp index 344b26a16b..8147fe9762 100644 --- a/Client/mods/deathmatch/logic/CClientObjectManager.cpp +++ b/Client/mods/deathmatch/logic/CClientObjectManager.cpp @@ -110,7 +110,7 @@ bool CClientObjectManager::IsValidModel(unsigned long ulObjectModel) return false; eModelInfoType eType = pModelInfo->GetModelType(); - return (eType == eModelInfoType::CLUMP || eType == eModelInfoType::OBJECT || eType == eModelInfoType::WEAPON || eType == eModelInfoType::TIME); + return (eType == eModelInfoType::CLUMP || eType == eModelInfoType::ATOMIC || eType == eModelInfoType::WEAPON || eType == eModelInfoType::TIME); } bool CClientObjectManager::IsBreakableModel(unsigned long ulObjectModel) diff --git a/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp b/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp index 6686dcfc6c..220e9a6040 100644 --- a/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp +++ b/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp @@ -661,7 +661,7 @@ IMPLEMENT_ENUM_END("surface-adhesion-group") IMPLEMENT_ENUM_CLASS_BEGIN(eModelInfoType) ADD_ENUM(eModelInfoType::PED, "ped") -ADD_ENUM(eModelInfoType::OBJECT, "object") +ADD_ENUM(eModelInfoType::ATOMIC, "object") ADD_ENUM(eModelInfoType::VEHICLE, "vehicle") IMPLEMENT_ENUM_CLASS_END("client-model-type") diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp b/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp index 344b3aa308..4ca6779ca0 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp +++ b/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp @@ -611,7 +611,7 @@ int CLuaEngineDefs::EngineRequestModel(lua_State* luaVM) case eModelInfoType::PED: usParentID = 7; // male01 break; - case eModelInfoType::OBJECT: + case eModelInfoType::ATOMIC: usParentID = 1337; // BinNt07_LA (trash can) break; case eModelInfoType::VEHICLE: @@ -622,14 +622,14 @@ int CLuaEngineDefs::EngineRequestModel(lua_State* luaVM) } } - if (pModel->Allocate(usParentID)) + if (usParentID != -1 && pModel->Allocate(usParentID)) { pModel->SetParentResource(pResource); lua_pushinteger(luaVM, iModelID); return 1; } - + m_pManager->GetModelManager()->Remove(iModelID); argStream.SetCustomError("Expected valid original model ID at argument 2"); } diff --git a/Client/mods/deathmatch/logic/rpc/CModelRPCs.cpp b/Client/mods/deathmatch/logic/rpc/CModelRPCs.cpp index a32041a821..86b0826673 100644 --- a/Client/mods/deathmatch/logic/rpc/CModelRPCs.cpp +++ b/Client/mods/deathmatch/logic/rpc/CModelRPCs.cpp @@ -25,7 +25,12 @@ void CModelRPCs::AllocateModelFromParent(NetBitStreamInterface& bitStream) if (bitStream.Read(uiNewModelID) && bitStream.Read(uiParentModelID)) { - m_pManager->GetModelManager()->AllocateModelFromParent(uiNewModelID, uiParentModelID); + const bool status = m_pManager->GetModelManager()->AllocateModelFromParent(uiNewModelID, uiParentModelID); + if (!status) + { + g_pCore->ShowNetErrorMessageBox(_("Error") + _E("CD21"), _("Server allocated existing model.")); + g_pCore->GetModManager()->RequestUnload(); + } } } diff --git a/Client/sdk/game/CModelInfo.h b/Client/sdk/game/CModelInfo.h index 784db9a955..986700b477 100644 --- a/Client/sdk/game/CModelInfo.h +++ b/Client/sdk/game/CModelInfo.h @@ -29,10 +29,10 @@ class CBoundingBox float fRadius; }; -enum class eModelInfoType : unsigned char +enum class eModelInfoType { INVALID = 0, - OBJECT = 1, + ATOMIC = 1, TIME = 3, WEAPON = 4, CLUMP = 5, From 7cc086f53c265df67e49868b65ecdfa3422ff8af Mon Sep 17 00:00:00 2001 From: Uladzislau Nikalayevich Date: Sun, 12 Jun 2022 23:23:22 +0300 Subject: [PATCH 14/51] Little refactor --- .../mods/deathmatch/logic/CVehiclesConfig.cpp | 62 ++++++++++--------- .../mods/deathmatch/logic/CVehiclesConfig.h | 4 +- 2 files changed, 35 insertions(+), 31 deletions(-) diff --git a/Server/mods/deathmatch/logic/CVehiclesConfig.cpp b/Server/mods/deathmatch/logic/CVehiclesConfig.cpp index 775672fbaa..1a19c7da8c 100644 --- a/Server/mods/deathmatch/logic/CVehiclesConfig.cpp +++ b/Server/mods/deathmatch/logic/CVehiclesConfig.cpp @@ -9,7 +9,6 @@ CVehiclesConfig::CVehiclesConfig() : CXMLConfig(nullptr) { - m_pRootNode = nullptr; } bool CVehiclesConfig::Load() @@ -18,7 +17,7 @@ bool CVehiclesConfig::Load() if (m_pFile) { delete m_pFile; - m_pFile = NULL; + m_pFile = nullptr; } // Load the XML @@ -39,14 +38,15 @@ bool CVehiclesConfig::Load() } // Grab the XML root node - m_pRootNode = m_pFile->GetRootNode(); - if (!m_pRootNode) + CXMLNode* pRootNode = m_pFile->GetRootNode(); + if (!pRootNode) { CLogger::ErrorPrintf("Missing root node ('config')\n"); return false; } - RegisterVehicles(); + RegisterVehicles(pRootNode); + return true; } @@ -56,9 +56,9 @@ bool CVehiclesConfig::Save() return false; } -void CVehiclesConfig::RegisterVehicles() +void CVehiclesConfig::RegisterVehicles(CXMLNode* pRootNode) { - for (auto it = m_pRootNode->ChildrenBegin(); it != m_pRootNode->ChildrenEnd(); ++it) + for (auto it = pRootNode->ChildrenBegin(); it != pRootNode->ChildrenEnd(); ++it) { CXMLNode* pNode = *it; CXMLAttributes &pAttibites = pNode->GetAttributes(); @@ -66,8 +66,8 @@ void CVehiclesConfig::RegisterVehicles() CXMLAttribute* pAttribute; uint32_t uiModelID; SModelVehicleDefs* sModelData = new SModelVehicleDefs(); - const char* strType; - const char* strVarianType; + std::string_view strType; + std::string_view strVarianType; pAttribute = pAttibites.Find("modelID"); if (pAttribute) @@ -77,15 +77,19 @@ void CVehiclesConfig::RegisterVehicles() pAttribute = pAttibites.Find("name"); if (pAttribute) - sModelData->strVehicleName = pAttribute->GetValue().c_str(); + { + std::string_view strName = pAttribute->GetValue(); + const char* pName = new char[strName.size()]; + sModelData->strVehicleName = pName; + } pAttribute = pAttibites.Find("type"); if (pAttribute) - strType = pAttribute->GetValue().c_str(); + strType = pAttribute->GetValue(); pAttribute = pAttibites.Find("variationType"); if (pAttribute) - strVarianType = pAttribute->GetValue().c_str(); + strVarianType = pAttribute->GetValue(); pAttribute = pAttibites.Find("variantsCount"); if (pAttribute) @@ -101,61 +105,63 @@ void CVehiclesConfig::RegisterVehicles() pAttribute = pAttibites.Find("hasDoors"); if (pAttribute) - sModelData->bHasDoors = strcmp(pAttribute->GetValue().c_str(), "true") == 0; + sModelData->bHasDoors = (pAttribute->GetValue().compare("true") == 0); - // TODO - // Replace it with std function - if (strcmp(strType, "car") == 0) + if (strType.compare("car") == 0) { sModelData->eVehicleModelType = eVehicleType::CAR; } - else if (strcmp(strType, "mtruck") == 0) + else if (strType.compare("mtruck") == 0) { sModelData->eVehicleModelType = eVehicleType::MONSTERTRUCK; } - else if (strcmp(strType, "heli") == 0) + else if (strType.compare("heli") == 0) { sModelData->eVehicleModelType = eVehicleType::HELI; } - else if (strcmp(strType, "boat") == 0) + else if (strType.compare("boat") == 0) { sModelData->eVehicleModelType = eVehicleType::BOAT; } - else if (strcmp(strType, "trailer") == 0) + else if (strType.compare("trailer") == 0) { sModelData->eVehicleModelType = eVehicleType::TRAILER; } - else if (strcmp(strType, "train") == 0) + else if (strType.compare("train") == 0) { sModelData->eVehicleModelType = eVehicleType::TRAIN; } - else if (strcmp(strType, "plane") == 0) + else if (strType.compare("plane") == 0) { sModelData->eVehicleModelType = eVehicleType::PLANE; } - else if (strcmp(strType, "bike") == 0) + else if (strType.compare("bike") == 0) { sModelData->eVehicleModelType = eVehicleType::BIKE; } - else if (strcmp(strType, "quad") == 0) + else if (strType.compare("quad") == 0) { sModelData->eVehicleModelType = eVehicleType::QUADBIKE; } - else if (strcmp(strType, "bmx") == 0) + else if (strType.compare("bmx") == 0) { sModelData->eVehicleModelType = eVehicleType::BMX; } + else + { + continue; + } - else if (strcmp(strVarianType, "nrg") == 0) + if (strVarianType.compare("nrg") == 0) { sModelData->eVariationType = eVehicleVariationType::NRG; } - else if (strcmp(strVarianType, "caddy") == 0) + else if (strVarianType.compare("caddy") == 0) { sModelData->eVariationType = eVehicleVariationType::CADDY; } - else if (strcmp(strVarianType, "slamvan") == 0) + else if (strVarianType.compare("slamvan") == 0) { sModelData->eVariationType = eVehicleVariationType::SLAMVAN; } diff --git a/Server/mods/deathmatch/logic/CVehiclesConfig.h b/Server/mods/deathmatch/logic/CVehiclesConfig.h index df6fd729b4..2b916cfbf0 100644 --- a/Server/mods/deathmatch/logic/CVehiclesConfig.h +++ b/Server/mods/deathmatch/logic/CVehiclesConfig.h @@ -14,7 +14,5 @@ class CVehiclesConfig : public CXMLConfig virtual bool Save() override; private: - void RegisterVehicles(); - - CXMLNode* m_pRootNode; + void RegisterVehicles(CXMLNode* pNode); }; From 8c69d0cd4bb71f3243dc9eaa86ba1c0eb0ce9833 Mon Sep 17 00:00:00 2001 From: Uladzislau Nikalayevich Date: Sun, 12 Jun 2022 23:27:21 +0300 Subject: [PATCH 15/51] Backup new configs --- Server/mods/deathmatch/logic/CGame.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Server/mods/deathmatch/logic/CGame.cpp b/Server/mods/deathmatch/logic/CGame.cpp index e89b742e48..4e33b612cc 100644 --- a/Server/mods/deathmatch/logic/CGame.cpp +++ b/Server/mods/deathmatch/logic/CGame.cpp @@ -4398,6 +4398,8 @@ void CGame::HandleBackup() zipMaker.InsertFile(pModManager->GetAbsolutePath("vehiclecolors.conf"), PathJoin("config", "vehiclecolors.conf")); zipMaker.InsertFile(pModManager->GetAbsolutePath("handling.conf"), PathJoin("config", "handling.conf")); zipMaker.InsertFile(pModManager->GetAbsolutePath("vehicles.conf"), PathJoin("config", "vehicles.conf")); + zipMaker.InsertFile(pModManager->GetAbsolutePath("peds.conf"), PathJoin("config", "peds.conf")); + zipMaker.InsertFile(pModManager->GetAbsolutePath("objects.conf"), PathJoin("config", "objects.conf")); // Backup database files zipMaker.InsertDirectoryTree(m_pMainConfig->GetGlobalDatabasesPath(), PathJoin("databases", "global")); From f6a2701e548e965383757510d38c66e4439cf0f5 Mon Sep 17 00:00:00 2001 From: Uladzislau Nikalayevich Date: Mon, 13 Jun 2022 18:11:35 +0300 Subject: [PATCH 16/51] Change HasDoors check for SetVehicleDoorState --- .../logic/CStaticFunctionDefinitions.cpp | 26 ++----------------- 1 file changed, 2 insertions(+), 24 deletions(-) diff --git a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp index 73e29bbd32..79e2a27141 100644 --- a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp +++ b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp @@ -6565,30 +6565,8 @@ bool CStaticFunctionDefinitions::SetVehicleDoorState(CElement* pElement, unsigne { CVehicle* pVehicle = static_cast(pElement); - if (ucDoor < MAX_DOORS) - { - switch (pVehicle->GetModel()) - { - case VT_BFINJECT: - case VT_RCBANDIT: - case VT_CADDY: - case VT_RCRAIDER: - case VT_BAGGAGE: - case VT_DOZER: - case VT_FORKLIFT: - case VT_TRACTOR: - case VT_RCTIGER: - case VT_BANDITO: - case VT_KART: - case VT_MOWER: - case VT_RCCAM: - case VT_RCGOBLIN: - return false; - break; - default: - break; - } - + if (ucDoor < MAX_DOORS && g_pGame->GetModelManager()->GetVehicleModel(pVehicle->GetModel())->HasDoors()) + { if (ucState != pVehicle->m_ucDoorStates[ucDoor]) { pVehicle->m_ucDoorStates[ucDoor] = ucState; From a53f37a315540f9b73ba3e58ca7da825059b1f7c Mon Sep 17 00:00:00 2001 From: Uladzislau Nikalayevich Date: Tue, 14 Jun 2022 19:42:42 +0300 Subject: [PATCH 17/51] Remove GetInitialDoorStates hardcoded part --- Server/mods/deathmatch/logic/CVehicle.cpp | 35 +++++++---------------- 1 file changed, 10 insertions(+), 25 deletions(-) diff --git a/Server/mods/deathmatch/logic/CVehicle.cpp b/Server/mods/deathmatch/logic/CVehicle.cpp index 65b85a091c..1477332e8b 100644 --- a/Server/mods/deathmatch/logic/CVehicle.cpp +++ b/Server/mods/deathmatch/logic/CVehicle.cpp @@ -818,31 +818,16 @@ void CVehicle::SetPaintjob(unsigned char ucPaintjob) void CVehicle::GetInitialDoorStates(SFixedArray& ucOutDoorStates) { - switch (m_usModel) - { - case VT_BAGGAGE: - case VT_BANDITO: - case VT_BFINJECT: - case VT_CADDY: - case VT_DOZER: - case VT_FORKLIFT: - case VT_KART: - case VT_MOWER: - case VT_QUAD: - case VT_RCBANDIT: - case VT_RCCAM: - case VT_RCGOBLIN: - case VT_RCRAIDER: - case VT_RCTIGER: - case VT_TRACTOR: - case VT_VORTEX: - memset(&ucOutDoorStates[0], DT_DOOR_MISSING, MAX_DOORS); - - // Keep the bonet and boot intact - ucOutDoorStates[0] = ucOutDoorStates[1] = DT_DOOR_INTACT; - break; - default: - memset(&ucOutDoorStates[0], DT_DOOR_INTACT, MAX_DOORS); + if (g_pGame->GetModelManager()->GetVehicleModel(m_usModel)->HasDoors()) + { + memset(&ucOutDoorStates[0], DT_DOOR_INTACT, MAX_DOORS); + } + else + { + memset(&ucOutDoorStates[0], DT_DOOR_MISSING, MAX_DOORS); + + // Keep the bonet and boot intact + ucOutDoorStates[0] = ucOutDoorStates[1] = DT_DOOR_INTACT; } } From faf18c56c696844738940fd755ddeb96d1adf837 Mon Sep 17 00:00:00 2001 From: Uladzislau Nikalayevich Date: Sun, 23 Oct 2022 18:49:52 +0300 Subject: [PATCH 18/51] Fix server crash with invalid allocateModelFromParent arguments --- Server/mods/deathmatch/logic/models/CModelManager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Server/mods/deathmatch/logic/models/CModelManager.cpp b/Server/mods/deathmatch/logic/models/CModelManager.cpp index 61cbbcbd38..bfb82ddcf0 100644 --- a/Server/mods/deathmatch/logic/models/CModelManager.cpp +++ b/Server/mods/deathmatch/logic/models/CModelManager.cpp @@ -40,7 +40,7 @@ void CModelManager::RegisterModel(CModelBase* pModelHandler) bool CModelManager::AllocateModelFromParent(uint32_t uiNewModelID, uint32_t uiParentModel) { - if (uiNewModelID >= MAX_GAME_MODELS) + if (uiNewModelID >= MAX_GAME_MODELS || uiParentModel >= MAX_GAME_MODELS) return false; CModelBase* pParentModel = m_vModels[uiParentModel]; From e69562d496e17b125a06d6bdac6515c1e200a382 Mon Sep 17 00:00:00 2001 From: Uladzislau Nikalayevich Date: Sun, 23 Oct 2022 20:02:26 +0300 Subject: [PATCH 19/51] Fix collision with engineFreeModel --- Client/mods/deathmatch/logic/CClientModelManager.cpp | 12 ++++++++++++ Client/mods/deathmatch/logic/CClientModelManager.h | 1 + .../mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp | 2 +- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Client/mods/deathmatch/logic/CClientModelManager.cpp b/Client/mods/deathmatch/logic/CClientModelManager.cpp index 7c151ad61d..e7b611d5c8 100644 --- a/Client/mods/deathmatch/logic/CClientModelManager.cpp +++ b/Client/mods/deathmatch/logic/CClientModelManager.cpp @@ -58,6 +58,18 @@ bool CClientModelManager::Remove(const int modelId) return false; } +bool CClientModelManager::RemoveClientModel(const int modelId) +{ + if (m_Models[modelId] == nullptr) + return false; + + // Model was allocated clientside + if (!m_Models[modelId]->GetParentResource()) + return false; + + return Remove(modelId); +} + int CClientModelManager::GetFirstFreeModelID(void) { const unsigned int MAX_MODEL_ID = g_pGame->GetBaseIDforTXD(); diff --git a/Client/mods/deathmatch/logic/CClientModelManager.h b/Client/mods/deathmatch/logic/CClientModelManager.h index e8a722799b..aa55e51194 100644 --- a/Client/mods/deathmatch/logic/CClientModelManager.h +++ b/Client/mods/deathmatch/logic/CClientModelManager.h @@ -29,6 +29,7 @@ class CClientModelManager void Add(const std::shared_ptr& pModel); bool Remove(const int modelId); + bool RemoveClientModel(const int modelId); int GetFirstFreeModelID(void); diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp b/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp index 0338ecd581..d495621088 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp +++ b/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp @@ -657,7 +657,7 @@ int CLuaEngineDefs::EngineFreeModel(lua_State* luaVM) if (!argStream.HasErrors()) { auto modelManager = m_pManager->GetModelManager(); - if (modelManager->Remove(iModelID)) + if (modelManager->RemoveClientModel(iModelID)) { lua_pushboolean(luaVM, true); return 1; From c926786d0a1b09c7e9cf528a16fcff3158e2cc74 Mon Sep 17 00:00:00 2001 From: Uladzislau Nikalayevich Date: Sun, 23 Oct 2022 21:11:32 +0300 Subject: [PATCH 20/51] Fix clientside desync issues --- .../logic/CClientVehicleManager.cpp | 26 +++++++++++++------ .../deathmatch/logic/CClientVehicleManager.h | 1 + 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/Client/mods/deathmatch/logic/CClientVehicleManager.cpp b/Client/mods/deathmatch/logic/CClientVehicleManager.cpp index 56c027211c..93a2722c52 100644 --- a/Client/mods/deathmatch/logic/CClientVehicleManager.cpp +++ b/Client/mods/deathmatch/logic/CClientVehicleManager.cpp @@ -432,6 +432,14 @@ bool CClientVehicleManager::IsStandardModel(unsigned long ulModel) return ulModel >= 400 && ulModel <= 611; } +unsigned long CClientVehicleManager::GetRootModelId(unsigned long ulModel) +{ + if (IsStandardModel(ulModel)) + return ulModel; + + return g_pGame->GetModelInfo(ulModel)->GetParentID(); +} + eClientVehicleType CClientVehicleManager::GetVehicleType(unsigned long ulModel) { // Valid vehicle id? @@ -625,42 +633,42 @@ unsigned char CClientVehicleManager::ConvertIndexToGameSeat(unsigned long ulMode bool CClientVehicleManager::HasTurret(unsigned long ulModel) { - return (IsStandardModel(ulModel) && (g_ulVehicleAttributes[ulModel - 400] & VEHICLE_HAS_TURRENT)); + return ((g_ulVehicleAttributes[GetRootModelId(ulModel) - 400] & VEHICLE_HAS_TURRENT)); } bool CClientVehicleManager::HasSirens(unsigned long ulModel) { - return (IsStandardModel(ulModel) && (g_ulVehicleAttributes[ulModel - 400] & VEHICLE_HAS_SIRENS)); + return ((g_ulVehicleAttributes[GetRootModelId(ulModel) - 400] & VEHICLE_HAS_SIRENS)); } bool CClientVehicleManager::HasTaxiLight(unsigned long ulModel) { - return (IsStandardModel(ulModel) && (g_ulVehicleAttributes[ulModel - 400] & VEHICLE_HAS_TAXI_LIGHTS)); + return ((g_ulVehicleAttributes[GetRootModelId(ulModel) - 400] & VEHICLE_HAS_TAXI_LIGHTS)); } bool CClientVehicleManager::HasSearchLight(unsigned long ulModel) { - return (IsStandardModel(ulModel) && (g_ulVehicleAttributes[ulModel - 400] & VEHICLE_HAS_SEARCH_LIGHT)); + return ((g_ulVehicleAttributes[GetRootModelId(ulModel) - 400] & VEHICLE_HAS_SEARCH_LIGHT)); } bool CClientVehicleManager::HasLandingGears(unsigned long ulModel) { - return (IsStandardModel(ulModel) && (g_ulVehicleAttributes[ulModel - 400] & VEHICLE_HAS_LANDING_GEARS)); + return ((g_ulVehicleAttributes[GetRootModelId(ulModel) - 400] & VEHICLE_HAS_LANDING_GEARS)); } bool CClientVehicleManager::HasAdjustableProperty(unsigned long ulModel) { - return (IsStandardModel(ulModel) && (g_ulVehicleAttributes[ulModel - 400] & VEHICLE_HAS_ADJUSTABLE_PROPERTY)); + return ((g_ulVehicleAttributes[GetRootModelId(ulModel) - 400] & VEHICLE_HAS_ADJUSTABLE_PROPERTY)); } bool CClientVehicleManager::HasSmokeTrail(unsigned long ulModel) { - return (IsStandardModel(ulModel) && (g_ulVehicleAttributes[ulModel - 400] & VEHICLE_HAS_SMOKE_TRAIL)); + return ((g_ulVehicleAttributes[GetRootModelId(ulModel) - 400] & VEHICLE_HAS_SMOKE_TRAIL)); } bool CClientVehicleManager::HasDamageModel(unsigned long ulModel) { - return HasDamageModel(GetVehicleType(ulModel)); + return HasDamageModel(GetVehicleType(GetRootModelId(ulModel))); } bool CClientVehicleManager::HasDamageModel(eClientVehicleType Type) @@ -681,6 +689,8 @@ bool CClientVehicleManager::HasDamageModel(eClientVehicleType Type) bool CClientVehicleManager::HasDoors(unsigned long ulModel) { + ulModel = GetRootModelId(ulModel); + bool bHasDoors = false; if (HasDamageModel(ulModel) == true) diff --git a/Client/mods/deathmatch/logic/CClientVehicleManager.h b/Client/mods/deathmatch/logic/CClientVehicleManager.h index 2f062d650a..1ea89f57a0 100644 --- a/Client/mods/deathmatch/logic/CClientVehicleManager.h +++ b/Client/mods/deathmatch/logic/CClientVehicleManager.h @@ -35,6 +35,7 @@ class CClientVehicleManager static bool IsTrainModel(unsigned long ulModel); static bool IsValidModel(unsigned long ulModel); static bool IsStandardModel(unsigned long ulModel); + static unsigned long GetRootModelId(unsigned long ulModel); static eClientVehicleType GetVehicleType(unsigned long ulModel); static unsigned char GetMaxPassengerCount(unsigned long ulModel); static unsigned char ConvertIndexToGameSeat(unsigned long ulModel, unsigned char ucIndex); From 2d06b283b26f1ff10da8bb4791d53a0b2ee0281b Mon Sep 17 00:00:00 2001 From: patrikjuvonen <22572159+patrikjuvonen@users.noreply.github.com> Date: Sat, 8 Apr 2023 14:53:26 +0300 Subject: [PATCH 21/51] Update CLuaFunctionParseHelpers.cpp --- Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp b/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp index 0605f9963c..6d5df86971 100644 --- a/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp +++ b/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp @@ -297,7 +297,6 @@ ADD_ENUM(eModelInfoType::PED, "ped") ADD_ENUM(eModelInfoType::LOD_ATOMIC, "lod-atomic") IMPLEMENT_ENUM_CLASS_END("model-info-type") - // // CResource from userdata // From f290bf16dbe72e90199b75e1c46913a6b903c861 Mon Sep 17 00:00:00 2001 From: patrikjuvonen <22572159+patrikjuvonen@users.noreply.github.com> Date: Sat, 8 Apr 2023 14:53:41 +0300 Subject: [PATCH 22/51] Update CVehiclesConfig.h --- Server/mods/deathmatch/logic/CVehiclesConfig.h | 1 - 1 file changed, 1 deletion(-) diff --git a/Server/mods/deathmatch/logic/CVehiclesConfig.h b/Server/mods/deathmatch/logic/CVehiclesConfig.h index 2b916cfbf0..0314c677d3 100644 --- a/Server/mods/deathmatch/logic/CVehiclesConfig.h +++ b/Server/mods/deathmatch/logic/CVehiclesConfig.h @@ -1,4 +1,3 @@ - #pragma once #include "StdInc.h" From f88cb0b8df38846fa9d5ca85fb7ccee1003d9492 Mon Sep 17 00:00:00 2001 From: patrikjuvonen <22572159+patrikjuvonen@users.noreply.github.com> Date: Sat, 8 Apr 2023 14:55:34 +0300 Subject: [PATCH 23/51] Update CLuaEngineDefs.cpp --- Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp b/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp index 6b1ff68873..1b031da1fd 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp +++ b/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp @@ -814,7 +814,7 @@ int CLuaEngineDefs::EngineRequestModel(lua_State* luaVM) lua_pushinteger(luaVM, iModelID); return 1; } - + m_pManager->GetModelManager()->Remove(iModelID); argStream.SetCustomError("Expected valid original model ID at argument 2"); } From 695cdf329ddb031dd0794143db0c21aa0a1c5ef9 Mon Sep 17 00:00:00 2001 From: patrikjuvonen <22572159+patrikjuvonen@users.noreply.github.com> Date: Sat, 8 Apr 2023 14:56:50 +0300 Subject: [PATCH 24/51] Update CClientModelManager.h --- Client/mods/deathmatch/logic/CClientModelManager.h | 1 - 1 file changed, 1 deletion(-) diff --git a/Client/mods/deathmatch/logic/CClientModelManager.h b/Client/mods/deathmatch/logic/CClientModelManager.h index aa55e51194..e9eee47285 100644 --- a/Client/mods/deathmatch/logic/CClientModelManager.h +++ b/Client/mods/deathmatch/logic/CClientModelManager.h @@ -40,7 +40,6 @@ class CClientModelManager void DeallocateModelsAllocatedByResource(CResource* pResource); bool AllocateModelFromParent(uint32_t usModelID, uint32_t usParentModel); - private: std::unique_ptr[]> m_Models; unsigned int m_modelCount = 0; From 5ebc232dd76871a011fd36b9b415d6000a2673d0 Mon Sep 17 00:00:00 2001 From: patrikjuvonen <22572159+patrikjuvonen@users.noreply.github.com> Date: Sat, 8 Apr 2023 15:05:43 +0300 Subject: [PATCH 25/51] Rename SimpleModelAllocationg to SimpleModelAllocation --- Client/mods/deathmatch/logic/CPacketHandler.cpp | 4 ++-- Server/mods/deathmatch/logic/packets/CEntityAddPacket.cpp | 2 +- .../deathmatch/logic/packets/CPlayerJoinCompletePacket.cpp | 2 +- Shared/sdk/net/bitstream.h | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Client/mods/deathmatch/logic/CPacketHandler.cpp b/Client/mods/deathmatch/logic/CPacketHandler.cpp index 8327548b90..4e9dd08340 100644 --- a/Client/mods/deathmatch/logic/CPacketHandler.cpp +++ b/Client/mods/deathmatch/logic/CPacketHandler.cpp @@ -418,7 +418,7 @@ void CPacketHandler::Packet_ServerJoined(NetBitStreamInterface& bitStream) bitStream.ReadString(strExternalHTTPDownloadURL); } - if (bitStream.Can(eBitStreamVersion::SimpleModelAllocationg)) + if (bitStream.Can(eBitStreamVersion::SimpleModelAllocation)) { uint32_t modelsCount = 0; bitStream.Read(modelsCount); @@ -3206,7 +3206,7 @@ void CPacketHandler::Packet_EntityAdd(NetBitStreamInterface& bitStream) // Read out the vehicle value as a char, then convert unsigned short usModel = 0xFFFF; - if (bitStream.Can(eBitStreamVersion::SimpleModelAllocationg)) + if (bitStream.Can(eBitStreamVersion::SimpleModelAllocation)) { bitStream.Read(usModel); } diff --git a/Server/mods/deathmatch/logic/packets/CEntityAddPacket.cpp b/Server/mods/deathmatch/logic/packets/CEntityAddPacket.cpp index b4165dc749..e89bed44e9 100644 --- a/Server/mods/deathmatch/logic/packets/CEntityAddPacket.cpp +++ b/Server/mods/deathmatch/logic/packets/CEntityAddPacket.cpp @@ -444,7 +444,7 @@ bool CEntityAddPacket::Write(NetBitStreamInterface& BitStream) const BitStream.Write(&position); BitStream.Write(&rotationDegrees); - if (BitStream.Can(eBitStreamVersion::SimpleModelAllocationg)) + if (BitStream.Can(eBitStreamVersion::SimpleModelAllocation)) { BitStream.Write(pVehicle->GetModel()); } diff --git a/Server/mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.cpp b/Server/mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.cpp index b8342cb969..5a2ddfc152 100644 --- a/Server/mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.cpp +++ b/Server/mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.cpp @@ -123,7 +123,7 @@ bool CPlayerJoinCompletePacket::Write(NetBitStreamInterface& BitStream) const std::list listSimpleAllocatedModels = g_pGame->GetModelManager()->GetSimpleAllocatedModels(); - if (BitStream.Can(eBitStreamVersion::SimpleModelAllocationg)) + if (BitStream.Can(eBitStreamVersion::SimpleModelAllocation)) { uint32_t uiModelsCount = listSimpleAllocatedModels.size(); BitStream.Write(uiModelsCount); diff --git a/Shared/sdk/net/bitstream.h b/Shared/sdk/net/bitstream.h index 5cff59b288..d12e01ee88 100644 --- a/Shared/sdk/net/bitstream.h +++ b/Shared/sdk/net/bitstream.h @@ -487,7 +487,7 @@ enum class eBitStreamVersion : unsigned short // Implement simple serverside model allocating // yyyy-mm-dd 0xFF add date later ;-) - SimpleModelAllocationg, + SimpleModelAllocation, // This allows us to automatically increment the BitStreamVersion when things are added to this enum. // Make sure you only add things above this comment. From 51c25c9d5241e2f4c0bcd193959439a2fb8e8444 Mon Sep 17 00:00:00 2001 From: patrikjuvonen <22572159+patrikjuvonen@users.noreply.github.com> Date: Sat, 8 Apr 2023 15:06:57 +0300 Subject: [PATCH 26/51] Update CHandlingConfig.h --- Server/mods/deathmatch/logic/CHandlingConfig.h | 1 - 1 file changed, 1 deletion(-) diff --git a/Server/mods/deathmatch/logic/CHandlingConfig.h b/Server/mods/deathmatch/logic/CHandlingConfig.h index 1711162434..58fda1949a 100644 --- a/Server/mods/deathmatch/logic/CHandlingConfig.h +++ b/Server/mods/deathmatch/logic/CHandlingConfig.h @@ -1,4 +1,3 @@ - #pragma once #include "StdInc.h" From e3d3d717a8d8e2eea7003786bef5f94cb68e82e2 Mon Sep 17 00:00:00 2001 From: patrikjuvonen <22572159+patrikjuvonen@users.noreply.github.com> Date: Sat, 8 Apr 2023 15:07:13 +0300 Subject: [PATCH 27/51] Update CHandlingConfig.cpp --- Server/mods/deathmatch/logic/CHandlingConfig.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/Server/mods/deathmatch/logic/CHandlingConfig.cpp b/Server/mods/deathmatch/logic/CHandlingConfig.cpp index 3a90caab72..8e17e596f0 100644 --- a/Server/mods/deathmatch/logic/CHandlingConfig.cpp +++ b/Server/mods/deathmatch/logic/CHandlingConfig.cpp @@ -87,5 +87,4 @@ void CHandlingConfig::LoadHandlingParams(std::vector lineParams) CHandlingEntry handlingEntry(&handling); pVehicleModel->SetVehicleDefaultHandling(handlingEntry); } - } From fc710c3a3bbfa4088f6bc37bc0cfae6bb4dc7e18 Mon Sep 17 00:00:00 2001 From: patrikjuvonen <22572159+patrikjuvonen@users.noreply.github.com> Date: Sat, 8 Apr 2023 15:08:17 +0300 Subject: [PATCH 28/51] Update CGame.cpp --- Server/mods/deathmatch/logic/CGame.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Server/mods/deathmatch/logic/CGame.cpp b/Server/mods/deathmatch/logic/CGame.cpp index 8a0407152f..834521a06c 100644 --- a/Server/mods/deathmatch/logic/CGame.cpp +++ b/Server/mods/deathmatch/logic/CGame.cpp @@ -932,7 +932,7 @@ bool CGame::Start(int iArgumentCount, char* szArguments[]) } // Load ped config - const char* strPedsPath = g_pServerInterface->GetModManager()->GetAbsolutePath("peds.conf"); + const char* strPedsPath = g_pServerInterface->GetModManager()->GetAbsolutePath("peds.conf"); CPedConfig pedConfig(strPedsPath); if (!pedConfig.Load()) { @@ -941,8 +941,8 @@ bool CGame::Start(int iArgumentCount, char* szArguments[]) } // Load object config - const char* strObjectsPath = g_pServerInterface->GetModManager()->GetAbsolutePath("objects.conf"); - CObjectConfig objectConfig(strObjectsPath); + const char* strObjectsPath = g_pServerInterface->GetModManager()->GetAbsolutePath("objects.conf"); + CObjectConfig objectConfig(strObjectsPath); if (!objectConfig.Load()) { CLogger::ErrorPrintf("%s", "Loading 'objects.conf' failed\n"); From e42b68799d907d5fc86b98e99918fc8993a6dd09 Mon Sep 17 00:00:00 2001 From: patrikjuvonen <22572159+patrikjuvonen@users.noreply.github.com> Date: Sat, 8 Apr 2023 15:31:37 +0300 Subject: [PATCH 29/51] Apply win-apply-clang-format.bat --- Client/game_sa/CRenderWareSA.ShaderSupport.h | 6 +- Client/mods/deathmatch/ClientCommands.h | 2 +- Client/mods/deathmatch/logic/CClientModel.h | 22 +++---- Client/sdk/ijsify.h | 64 +++++++++---------- Server/core/CCrashHandler.cpp | 2 +- Server/core/CCrashHandlerAPI.cpp | 10 +-- Server/core/Server.cpp | 2 +- Server/core/StdInc.h | 14 ++-- Server/dbconmy/StdInc.h | 6 +- Server/launcher/Main.cpp | 2 +- Server/mods/deathmatch/StdInc.h | 6 +- .../mods/deathmatch/logic/CHandlingConfig.cpp | 1 - .../deathmatch/logic/CHandlingManager.cpp | 1 - Server/mods/deathmatch/logic/CObjectConfig.h | 2 +- .../logic/CStaticFunctionDefinitions.cpp | 5 +- .../mods/deathmatch/logic/CVehicleManager.cpp | 1 - .../mods/deathmatch/logic/CVehiclesConfig.cpp | 6 +- .../logic/luadefs/CLuaHandlingDefs.cpp | 2 +- .../logic/luadefs/CLuaModelDefs.cpp | 2 +- .../deathmatch/logic/models/CModelAtomic.cpp | 1 - .../deathmatch/logic/models/CModelAtomic.h | 4 +- .../mods/deathmatch/logic/models/CModelBase.h | 2 +- .../deathmatch/logic/models/CModelManager.h | 2 +- .../deathmatch/logic/models/CModelPed.cpp | 6 +- .../deathmatch/logic/models/CModelVehicle.cpp | 5 +- .../deathmatch/logic/models/CModelVehicle.h | 41 ++++++------ Server/sdk/MTAPlatform.h | 2 +- Shared/publicsdk/Common.h | 2 +- Shared/sdk/RTree.h | 4 +- Shared/sdk/SharedUtil.AllocTracking.h | 4 +- Shared/sdk/SharedUtil.Misc.hpp | 8 +-- Shared/sdk/SharedUtil.Time.hpp | 4 +- Shared/sdk/sha1.hpp | 6 +- 33 files changed, 117 insertions(+), 130 deletions(-) diff --git a/Client/game_sa/CRenderWareSA.ShaderSupport.h b/Client/game_sa/CRenderWareSA.ShaderSupport.h index c24d8e11bc..9f1bfac20f 100644 --- a/Client/game_sa/CRenderWareSA.ShaderSupport.h +++ b/Client/game_sa/CRenderWareSA.ShaderSupport.h @@ -14,9 +14,9 @@ #include "CRenderWareSA.h" #ifdef MTA_DEBUG - // Comment out the lines below for your desired debug options - // #define SHADER_DEBUG_CHECKS // Do lots of validation which can slow a debug build - // #define SHADER_DEBUG_OUTPUT // Output lots of debug strings +// Comment out the lines below for your desired debug options +// #define SHADER_DEBUG_CHECKS // Do lots of validation which can slow a debug build +// #define SHADER_DEBUG_OUTPUT // Output lots of debug strings #endif // Various dodgy pointer values diff --git a/Client/mods/deathmatch/ClientCommands.h b/Client/mods/deathmatch/ClientCommands.h index 8b28fe8445..6df40bd2dd 100644 --- a/Client/mods/deathmatch/ClientCommands.h +++ b/Client/mods/deathmatch/ClientCommands.h @@ -46,7 +46,7 @@ void COMMAND_ServerInfo(const char* szCmdLine); // DISABLE THESE BEFORE RELEASE #ifdef MTA_DEBUG void COMMAND_ShowSyncData(const char* szCmdLine); - // void COMMAND_DumpPlayers ( const char* szCmdLine ); +// void COMMAND_DumpPlayers ( const char* szCmdLine ); #endif #if defined(MTA_DEBUG) || defined(MTA_BETA) diff --git a/Client/mods/deathmatch/logic/CClientModel.h b/Client/mods/deathmatch/logic/CClientModel.h index 678fbc39b5..e05980e267 100644 --- a/Client/mods/deathmatch/logic/CClientModel.h +++ b/Client/mods/deathmatch/logic/CClientModel.h @@ -26,19 +26,19 @@ class CClientModel final CClientModel(CClientManager* pManager, int iModelID, eModelInfoType eModelType); ~CClientModel(); - int GetModelID() const { return m_iModelID; }; - eModelInfoType GetModelType() const { return m_eModelType; }; - bool Allocate(ushort usParentID); - bool Deallocate(); - void RestoreEntitiesUsingThisModel(); - void SetParentResource(CResource* pResource) { m_pParentResource = pResource; } - CResource* GetParentResource() const { return m_pParentResource; } + int GetModelID() const { return m_iModelID; }; + eModelInfoType GetModelType() const { return m_eModelType; }; + bool Allocate(ushort usParentID); + bool Deallocate(); + void RestoreEntitiesUsingThisModel(); + void SetParentResource(CResource* pResource) { m_pParentResource = pResource; } + CResource* GetParentResource() const { return m_pParentResource; } protected: CClientManager* m_pManager; - int m_iModelID; - eModelInfoType m_eModelType; - bool m_bAllocatedByUs = false; - CResource* m_pParentResource = nullptr; // Resource that allocated model + int m_iModelID; + eModelInfoType m_eModelType; + bool m_bAllocatedByUs = false; + CResource* m_pParentResource = nullptr; // Resource that allocated model }; diff --git a/Client/sdk/ijsify.h b/Client/sdk/ijsify.h index 6491906949..74e827d1e2 100644 --- a/Client/sdk/ijsify.h +++ b/Client/sdk/ijsify.h @@ -81,45 +81,45 @@ extern DWORD* g_Table; extern DWORD* g_TableSize; extern DWORD g_dwTable; - /* - inline void* __cdecl operator new ( unsigned int uiSize ) - { - DWORD dwOld, dwData; +/* +inline void* __cdecl operator new ( unsigned int uiSize ) +{ + DWORD dwOld, dwData; - if ( !g_bBoundsChecker ) { - dwData = (DWORD)HeapAlloc (GetProcessHeap(), HEAP_ZERO_MEMORY, uiSize); - VirtualProtect ( (void*)dwData, uiSize, PAGE_EXECUTE_READWRITE, &dwOld ); - return (void*)dwData; - } - // define the guard bytes - DWORD dwGuardBegin = 0xBEEFFDFD; - WORD wGuardEnd = 0xDEAC; + if ( !g_bBoundsChecker ) { + dwData = (DWORD)HeapAlloc (GetProcessHeap(), HEAP_ZERO_MEMORY, uiSize); + VirtualProtect ( (void*)dwData, uiSize, PAGE_EXECUTE_READWRITE, &dwOld ); + return (void*)dwData; + } + // define the guard bytes + DWORD dwGuardBegin = 0xBEEFFDFD; + WORD wGuardEnd = 0xDEAC; - // allocate ( size + 4 (begin) + 2 (end) ) - dwData = (DWORD) HeapAlloc ( GetProcessHeap (), HEAP_ZERO_MEMORY, uiSize + 6 ); + // allocate ( size + 4 (begin) + 2 (end) ) + dwData = (DWORD) HeapAlloc ( GetProcessHeap (), HEAP_ZERO_MEMORY, uiSize + 6 ); - // [0 -> 4] insert begin guard bytes - memcpy ( (void*)(dwData), &dwGuardBegin, 4 ); - uiSize += 4; + // [0 -> 4] insert begin guard bytes + memcpy ( (void*)(dwData), &dwGuardBegin, 4 ); + uiSize += 4; - // [x -> x+2] insert end guard bytes - memcpy ( (void*)(dwData + uiSize), &wGuardEnd, 2 ); - uiSize += 2; + // [x -> x+2] insert end guard bytes + memcpy ( (void*)(dwData + uiSize), &wGuardEnd, 2 ); + uiSize += 2; - // set guard protection state - VirtualProtect ( (void*)dwData, uiSize, PAGE_EXECUTE_READWRITE | PAGE_GUARD, &dwOld ); + // set guard protection state + VirtualProtect ( (void*)dwData, uiSize, PAGE_EXECUTE_READWRITE | PAGE_GUARD, &dwOld ); - g_Table[g_dwTable] = dwData; - g_TableSize[g_dwTable++] = (DWORD)uiSize; + g_Table[g_dwTable] = dwData; + g_TableSize[g_dwTable++] = (DWORD)uiSize; - // and return the correct data pointer - return (void*)( dwData + 4 ); + // and return the correct data pointer + return (void*)( dwData + 4 ); - }; +}; - inline void __cdecl operator delete ( void* pData ) - { - HeapFree ( GetProcessHeap(), 0, pData ); - }; - */ +inline void __cdecl operator delete ( void* pData ) +{ + HeapFree ( GetProcessHeap(), 0, pData ); +}; +*/ #endif diff --git a/Server/core/CCrashHandler.cpp b/Server/core/CCrashHandler.cpp index fe36a8482f..100be50807 100644 --- a/Server/core/CCrashHandler.cpp +++ b/Server/core/CCrashHandler.cpp @@ -142,7 +142,7 @@ inline __attribute__((always_inline)) static void SaveBacktraceSummary() } } - // Linux/Mac crash callback when using google-breakpad +// Linux/Mac crash callback when using google-breakpad #ifdef __APPLE__ bool DumpCallback(const char* dump_dir, const char* minidump_id, void* context, bool succeeded) { diff --git a/Server/core/CCrashHandlerAPI.cpp b/Server/core/CCrashHandlerAPI.cpp index 7d6df0bc13..6f232ea7b1 100644 --- a/Server/core/CCrashHandlerAPI.cpp +++ b/Server/core/CCrashHandlerAPI.cpp @@ -46,11 +46,11 @@ static LPTOP_LEVEL_EXCEPTION_FILTER g_pfnOrigFilt = NULL; // The exception handler LONG __stdcall CrashHandlerExceptionFilter(EXCEPTION_POINTERS* pExPtrs); - /*////////////////////////////////////////////////////////////////////// - Destructor Class - //////////////////////////////////////////////////////////////////////*/ - // See the note in MEMDUMPVALIDATOR.CPP about automatic classes. - // Turn off warning : initializers put in library initialization area +/*////////////////////////////////////////////////////////////////////// + Destructor Class +//////////////////////////////////////////////////////////////////////*/ +// See the note in MEMDUMPVALIDATOR.CPP about automatic classes. +// Turn off warning : initializers put in library initialization area #pragma warning (disable : 4073) #pragma init_seg(lib) class CleanUpCrashHandler diff --git a/Server/core/Server.cpp b/Server/core/Server.cpp index 7236d84ec0..4144db6b65 100644 --- a/Server/core/Server.cpp +++ b/Server/core/Server.cpp @@ -16,7 +16,7 @@ #include "SharedUtil.hpp" #include "ErrorCodes.h" #ifdef WIN_x86 - // TODO - 64 bit file hooks +// TODO - 64 bit file hooks #include "SharedUtil.Win32Utf8FileHooks.hpp" #endif diff --git a/Server/core/StdInc.h b/Server/core/StdInc.h index b92bd0f2cc..070a739d35 100644 --- a/Server/core/StdInc.h +++ b/Server/core/StdInc.h @@ -13,22 +13,22 @@ #include #ifndef WIN32 - // Linux allocation tracking doesn't work in this module for some reason +// Linux allocation tracking doesn't work in this module for some reason #define WITH_ALLOC_TRACKING 0 #endif #include "SharedUtil.h" #ifdef WIN32 - // - // Windows - // +// +// Windows +// #include #include #include #else - // - // POSIX - // +// +// POSIX +// #include #include #include diff --git a/Server/dbconmy/StdInc.h b/Server/dbconmy/StdInc.h index bd01141444..305ccccdc4 100644 --- a/Server/dbconmy/StdInc.h +++ b/Server/dbconmy/StdInc.h @@ -24,9 +24,9 @@ #include #ifdef WIN32 - // - // Windows - // +// +// Windows +// #include #include #endif diff --git a/Server/launcher/Main.cpp b/Server/launcher/Main.cpp index 8f3a5d3141..dc24613491 100644 --- a/Server/launcher/Main.cpp +++ b/Server/launcher/Main.cpp @@ -26,7 +26,7 @@ #include "SharedUtil.h" #ifdef WIN32 - // Linux gcc 4.4.5 memory corruption on destruction of g_StatEvents (Reason unknown) +// Linux gcc 4.4.5 memory corruption on destruction of g_StatEvents (Reason unknown) #include "SharedUtil.hpp" #else #include diff --git a/Server/mods/deathmatch/StdInc.h b/Server/mods/deathmatch/StdInc.h index 24039ac251..c2e6355739 100644 --- a/Server/mods/deathmatch/StdInc.h +++ b/Server/mods/deathmatch/StdInc.h @@ -27,9 +27,9 @@ #include "MTAPlatform.h" #ifdef WIN32 - // - // Windows - // +// +// Windows +// #include #include #include diff --git a/Server/mods/deathmatch/logic/CHandlingConfig.cpp b/Server/mods/deathmatch/logic/CHandlingConfig.cpp index 8e17e596f0..9d1a736850 100644 --- a/Server/mods/deathmatch/logic/CHandlingConfig.cpp +++ b/Server/mods/deathmatch/logic/CHandlingConfig.cpp @@ -79,7 +79,6 @@ void CHandlingConfig::LoadHandlingParams(std::vector lineParams) handling.ucTailLight = atoi(lineParams[35]); handling.ucAnimGroup = atoi(lineParams[36]); - auto pVehicleModel = g_pGame->GetModelManager()->GetVehicleModel(uiModelID); if (pVehicleModel) diff --git a/Server/mods/deathmatch/logic/CHandlingManager.cpp b/Server/mods/deathmatch/logic/CHandlingManager.cpp index 7321c7b1c3..570779b7e0 100644 --- a/Server/mods/deathmatch/logic/CHandlingManager.cpp +++ b/Server/mods/deathmatch/logic/CHandlingManager.cpp @@ -58,7 +58,6 @@ CHandlingManager::~CHandlingManager() { } - eHandlingProperty CHandlingManager::GetPropertyEnumFromName(std::string strName) { std::map::iterator it; diff --git a/Server/mods/deathmatch/logic/CObjectConfig.h b/Server/mods/deathmatch/logic/CObjectConfig.h index 3391aacdb3..a30b5b2070 100644 --- a/Server/mods/deathmatch/logic/CObjectConfig.h +++ b/Server/mods/deathmatch/logic/CObjectConfig.h @@ -6,7 +6,7 @@ class CObjectConfig { public: - CObjectConfig(std::string_view strPath): m_strPacth(strPath) {}; + CObjectConfig(std::string_view strPath) : m_strPacth(strPath){}; bool Load(); diff --git a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp index 6ab8cff7e3..a1221f1ffa 100644 --- a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp +++ b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp @@ -5583,7 +5583,7 @@ bool CStaticFunctionDefinitions::SetModelHandling(eVehicleTypes eModel, eHandlin if (pVehicleModel) { CHandlingEntry* pEntry = pVehicleModel->GetVehicleHandling(); - + if (SetEntryHandling(pEntry, eProperty, fValue)) { pVehicleModel->SetVehicleHandlingChanged(true); @@ -7386,7 +7386,6 @@ bool CStaticFunctionDefinitions::ResetVehicleHandling(CVehicle* pVehicle, bool b { assert(pVehicle); - uint16_t usModel = pVehicle->GetModel(); CHandlingEntry* pEntry = pVehicle->GetHandlingData(); const CHandlingEntry* pNewEntry; @@ -7534,7 +7533,7 @@ bool CStaticFunctionDefinitions::ResetModelHandling(eVehicleTypes eModel) const auto pVehicleModel = g_pGame->GetModelManager()->GetVehicleModel(eModel); if (pVehicleModel) { - CHandlingEntry* pEntry = pVehicleModel->GetVehicleHandling(); + CHandlingEntry* pEntry = pVehicleModel->GetVehicleHandling(); const CHandlingEntry* pOriginalEntry = pVehicleModel->GetOriginalHandling(); pEntry->ApplyHandlingData(pOriginalEntry); return true; diff --git a/Server/mods/deathmatch/logic/CVehicleManager.cpp b/Server/mods/deathmatch/logic/CVehicleManager.cpp index 9f84882713..043bc358ba 100644 --- a/Server/mods/deathmatch/logic/CVehicleManager.cpp +++ b/Server/mods/deathmatch/logic/CVehicleManager.cpp @@ -25,7 +25,6 @@ #define VEHICLE_HAS_TAXI_LIGHTS 0x020UL //32 #define VEHICLE_HAS_SEARCH_LIGHT 0x040UL //64 - CVehicleManager::CVehicleManager() { } diff --git a/Server/mods/deathmatch/logic/CVehiclesConfig.cpp b/Server/mods/deathmatch/logic/CVehiclesConfig.cpp index 1a19c7da8c..9884c8783b 100644 --- a/Server/mods/deathmatch/logic/CVehiclesConfig.cpp +++ b/Server/mods/deathmatch/logic/CVehiclesConfig.cpp @@ -60,8 +60,8 @@ void CVehiclesConfig::RegisterVehicles(CXMLNode* pRootNode) { for (auto it = pRootNode->ChildrenBegin(); it != pRootNode->ChildrenEnd(); ++it) { - CXMLNode* pNode = *it; - CXMLAttributes &pAttibites = pNode->GetAttributes(); + CXMLNode* pNode = *it; + CXMLAttributes& pAttibites = pNode->GetAttributes(); CXMLAttribute* pAttribute; uint32_t uiModelID; @@ -107,7 +107,6 @@ void CVehiclesConfig::RegisterVehicles(CXMLNode* pRootNode) if (pAttribute) sModelData->bHasDoors = (pAttribute->GetValue().compare("true") == 0); - if (strType.compare("car") == 0) { sModelData->eVehicleModelType = eVehicleType::CAR; @@ -174,4 +173,3 @@ void CVehiclesConfig::RegisterVehicles(CXMLNode* pRootNode) g_pGame->GetModelManager()->RegisterModel(pModelData); } } - diff --git a/Server/mods/deathmatch/logic/luadefs/CLuaHandlingDefs.cpp b/Server/mods/deathmatch/logic/luadefs/CLuaHandlingDefs.cpp index 522dbf9cc2..b29408fe4c 100644 --- a/Server/mods/deathmatch/logic/luadefs/CLuaHandlingDefs.cpp +++ b/Server/mods/deathmatch/logic/luadefs/CLuaHandlingDefs.cpp @@ -563,7 +563,7 @@ int CLuaHandlingDefs::GetModelHandling(lua_State* luaVM) if (!argStream.HasErrors()) { - const auto pVehicleModel = g_pGame->GetModelManager()->GetVehicleModel(usModel); + const auto pVehicleModel = g_pGame->GetModelManager()->GetVehicleModel(usModel); if (pVehicleModel) { const CHandlingEntry* pEntry = pVehicleModel->GetVehicleHandling(); diff --git a/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp b/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp index a0b6fef76d..99315bcf76 100644 --- a/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp +++ b/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp @@ -74,7 +74,7 @@ bool CLuaModelDefs::UnloadModel(lua_State* const luaVM, uint32_t uiModelID) const bool success = g_pGame->GetModelManager()->UnloadCustomModel(uiModelID); if (!success) return false; - + // Remove model from resource // TODO: Model can be allocated by another resource // This check is unnecessary now diff --git a/Server/mods/deathmatch/logic/models/CModelAtomic.cpp b/Server/mods/deathmatch/logic/models/CModelAtomic.cpp index 4bc263a857..e5a4fe5cd7 100644 --- a/Server/mods/deathmatch/logic/models/CModelAtomic.cpp +++ b/Server/mods/deathmatch/logic/models/CModelAtomic.cpp @@ -41,4 +41,3 @@ void CModelAtomic::Unload() } } } - diff --git a/Server/mods/deathmatch/logic/models/CModelAtomic.h b/Server/mods/deathmatch/logic/models/CModelAtomic.h index a48e26bc01..1415ec5ca5 100644 --- a/Server/mods/deathmatch/logic/models/CModelAtomic.h +++ b/Server/mods/deathmatch/logic/models/CModelAtomic.h @@ -20,6 +20,6 @@ class CModelAtomic : public CModelBase CModelAtomic(uint32_t uiModelID) : CModelBase(eModelInfoType::ATOMIC, uiModelID){}; ~CModelAtomic(){}; - CModelAtomic* Clone(uint32_t uiModelID); - void Unload(); + CModelAtomic* Clone(uint32_t uiModelID); + void Unload(); }; diff --git a/Server/mods/deathmatch/logic/models/CModelBase.h b/Server/mods/deathmatch/logic/models/CModelBase.h index cc79f7199f..af1dffa5ea 100644 --- a/Server/mods/deathmatch/logic/models/CModelBase.h +++ b/Server/mods/deathmatch/logic/models/CModelBase.h @@ -44,7 +44,7 @@ class CModelBase bool IsCustom() { return m_uiParentID != MODEL_MISSING_PARENT; }; virtual void Unload() = 0; - eModelInfoType GetType() { return m_eType; }; + eModelInfoType GetType() { return m_eType; }; protected: eModelInfoType m_eType; diff --git a/Server/mods/deathmatch/logic/models/CModelManager.h b/Server/mods/deathmatch/logic/models/CModelManager.h index 2875de7b6e..a1476e1657 100644 --- a/Server/mods/deathmatch/logic/models/CModelManager.h +++ b/Server/mods/deathmatch/logic/models/CModelManager.h @@ -41,5 +41,5 @@ class CModelManager private: // modelID - CModelBase std::vector m_vModels; - std::list m_vSimpleAllocatedModels; + std::list m_vSimpleAllocatedModels; }; diff --git a/Server/mods/deathmatch/logic/models/CModelPed.cpp b/Server/mods/deathmatch/logic/models/CModelPed.cpp index af3056db23..17fd0c2855 100644 --- a/Server/mods/deathmatch/logic/models/CModelPed.cpp +++ b/Server/mods/deathmatch/logic/models/CModelPed.cpp @@ -15,7 +15,6 @@ #include "CPlayerManager.h" #include "CPedManager.h" - CModelPed* CModelPed::Clone(uint32_t uiModelID) { CModelPed* pNewModel = new CModelPed(uiModelID); @@ -25,11 +24,9 @@ CModelPed* CModelPed::Clone(uint32_t uiModelID) return pNewModel; } - void CModelPed::Unload() { - auto unloadModelsAndCallEvents = [&](auto iterBegin, auto iterEnd, auto setElementModelLambda) - { + auto unloadModelsAndCallEvents = [&](auto iterBegin, auto iterEnd, auto setElementModelLambda) { for (auto iter = iterBegin; iter != iterEnd; iter++) { auto& element = **iter; @@ -51,5 +48,4 @@ void CModelPed::Unload() CPlayerManager* pPlayerManager = g_pGame->GetPlayerManager(); unloadModelsAndCallEvents(pPlayerManager->IterBegin(), pPlayerManager->IterEnd(), [&](auto& element) { element.SetModel(m_uiParentID); }); - } diff --git a/Server/mods/deathmatch/logic/models/CModelVehicle.cpp b/Server/mods/deathmatch/logic/models/CModelVehicle.cpp index e4f70c9b1c..14932143a2 100644 --- a/Server/mods/deathmatch/logic/models/CModelVehicle.cpp +++ b/Server/mods/deathmatch/logic/models/CModelVehicle.cpp @@ -15,12 +15,11 @@ #include "CGame.h" #include "CVehicleManager.h" -CModelVehicle::CModelVehicle(uint32_t uiModelID, const SModelVehicleDefs &sModelDefs) - : CModelBase(eModelInfoType::VEHICLE, uiModelID) +CModelVehicle::CModelVehicle(uint32_t uiModelID, const SModelVehicleDefs& sModelDefs) : CModelBase(eModelInfoType::VEHICLE, uiModelID) { m_modelDef = sModelDefs; m_pVehicleHandling = new CHandlingEntry(); - m_pVehicleHandling->ApplyHandlingData((const CHandlingEntry*) &sModelDefs.handling); + m_pVehicleHandling->ApplyHandlingData((const CHandlingEntry*)&sModelDefs.handling); } CModelVehicle::~CModelVehicle() diff --git a/Server/mods/deathmatch/logic/models/CModelVehicle.h b/Server/mods/deathmatch/logic/models/CModelVehicle.h index b858a00122..8626a79eed 100644 --- a/Server/mods/deathmatch/logic/models/CModelVehicle.h +++ b/Server/mods/deathmatch/logic/models/CModelVehicle.h @@ -40,39 +40,38 @@ struct SModelVehicleDefs class CModelVehicle : public CModelBase { public: - CModelVehicle(uint32_t uiModelID, const SModelVehicleDefs &SModelVehicleDefs); + CModelVehicle(uint32_t uiModelID, const SModelVehicleDefs& SModelVehicleDefs); virtual ~CModelVehicle(); virtual CModelVehicle* Clone(uint32_t uiModelID); - CHandlingEntry* GetVehicleHandling() { return m_pVehicleHandling; }; - const CHandlingEntry* GetOriginalHandling() { return &m_modelDef.handling; }; - void SetVehicleDefaultHandling(CHandlingEntry &pEntry) { m_modelDef.handling = pEntry; } - void SetVehicleHandling(CHandlingEntry* pEntry) { m_pVehicleHandling = pEntry; }; - void SetVehicleHandlingChanged(bool bState) { m_bVehicleHandlingChanged = bState; }; - bool HasVehicleHandlingChanged() { return m_bVehicleHandlingChanged; }; - + CHandlingEntry* GetVehicleHandling() { return m_pVehicleHandling; }; + const CHandlingEntry* GetOriginalHandling() { return &m_modelDef.handling; }; + void SetVehicleDefaultHandling(CHandlingEntry& pEntry) { m_modelDef.handling = pEntry; } + void SetVehicleHandling(CHandlingEntry* pEntry) { m_pVehicleHandling = pEntry; }; + void SetVehicleHandlingChanged(bool bState) { m_bVehicleHandlingChanged = bState; }; + bool HasVehicleHandlingChanged() { return m_bVehicleHandlingChanged; }; void SetVehicleDafaultColors(CVehicleColors colors) { m_modelDef.vehicleColors = colors; }; - bool HasDamageModel(); - bool HasDoors() { return m_modelDef.bHasDoors; }; - bool IsTrailer() { return m_modelDef.eVehicleModelType == eVehicleType::TRAILER; }; - const char* GetVehicleName() { return m_modelDef.strVehicleName; }; - eVehicleType GetVehicleType() { return m_modelDef.eVehicleModelType; } - uint8_t GetVariantsCount() { return m_modelDef.uiVariantsCount; }; - uint8_t GetAttributes() { return m_modelDef.cAttributes; }; - uint8_t GetPassengesCount() { return m_modelDef.uiMaxPassengers; }; - eVehicleVariationType GetVariationType() { return m_modelDef.eVariationType; }; + bool HasDamageModel(); + bool HasDoors() { return m_modelDef.bHasDoors; }; + bool IsTrailer() { return m_modelDef.eVehicleModelType == eVehicleType::TRAILER; }; + const char* GetVehicleName() { return m_modelDef.strVehicleName; }; + eVehicleType GetVehicleType() { return m_modelDef.eVehicleModelType; } + uint8_t GetVariantsCount() { return m_modelDef.uiVariantsCount; }; + uint8_t GetAttributes() { return m_modelDef.cAttributes; }; + uint8_t GetPassengesCount() { return m_modelDef.uiMaxPassengers; }; + eVehicleVariationType GetVariationType() { return m_modelDef.eVariationType; }; CVehicleColor GetRandomColor() { return m_modelDef.vehicleColors.GetRandomColor(); } void AddColor(const CVehicleColor& color) { return m_modelDef.vehicleColors.AddColor(color); }; void GetRandomVariation(unsigned char& ucVariant, unsigned char& ucVariant2); - void Unload(); + void Unload(); private: - SModelVehicleDefs m_modelDef; - CHandlingEntry* m_pVehicleHandling; - bool m_bVehicleHandlingChanged = false; + SModelVehicleDefs m_modelDef; + CHandlingEntry* m_pVehicleHandling; + bool m_bVehicleHandlingChanged = false; }; diff --git a/Server/sdk/MTAPlatform.h b/Server/sdk/MTAPlatform.h index c467e593ac..9421c54957 100644 --- a/Server/sdk/MTAPlatform.h +++ b/Server/sdk/MTAPlatform.h @@ -57,7 +57,7 @@ extern "C" bool g_bNoTopBar; // Define types typedef int socklen_t; - // Define keys +// Define keys #define KEY_BACKSPACE 0x08 #define KEY_EXTENDED 0xE0 #define KEY_LEFT 0x4B diff --git a/Shared/publicsdk/Common.h b/Shared/publicsdk/Common.h index db9775aa43..036890ba0b 100644 --- a/Shared/publicsdk/Common.h +++ b/Shared/publicsdk/Common.h @@ -38,7 +38,7 @@ using namespace std; #ifndef __COMMON_H #define __COMMON_H - // used in the function argument vector +// used in the function argument vector #define MAX_ARGUMENTS 10 struct FunctionArguments { diff --git a/Shared/sdk/RTree.h b/Shared/sdk/RTree.h index 3994745160..646c0f4dfc 100644 --- a/Shared/sdk/RTree.h +++ b/Shared/sdk/RTree.h @@ -46,9 +46,9 @@ o Minor updates for MSVC 2005/08 compilers #ifndef RTREE_H #define RTREE_H - // NOTE This file compiles under MSVC 6 SP5 and MSVC .Net 2003 it may not work on other compilers without modification. +// NOTE This file compiles under MSVC 6 SP5 and MSVC .Net 2003 it may not work on other compilers without modification. - // NOTE These next few lines may be win32 specific, you may need to modify them to compile on other platform +// NOTE These next few lines may be win32 specific, you may need to modify them to compile on other platform #include #include #include diff --git a/Shared/sdk/SharedUtil.AllocTracking.h b/Shared/sdk/SharedUtil.AllocTracking.h index 8e736eb800..5636f1b9bf 100644 --- a/Shared/sdk/SharedUtil.AllocTracking.h +++ b/Shared/sdk/SharedUtil.AllocTracking.h @@ -228,8 +228,8 @@ namespace std }; } // namespace std -// Replace std classes -// Not safe - do not enable this in distributed builds + // Replace std classes + // Not safe - do not enable this in distributed builds #define vector CArray #define list CList #define map CMap diff --git a/Shared/sdk/SharedUtil.Misc.hpp b/Shared/sdk/SharedUtil.Misc.hpp index ddc3f2f7ad..6e7e6d956b 100644 --- a/Shared/sdk/SharedUtil.Misc.hpp +++ b/Shared/sdk/SharedUtil.Misc.hpp @@ -61,10 +61,10 @@ CDuplicateLineFilter ms_ReportLineFilter; #define PRODUCT_COMMON_DATA_DIR "MTA San Andreas All" // C:\ProgramData #define TROUBLE_URL1 "http://updatesa.multitheftauto.com/sa/trouble/?v=_VERSION_&id=_ID_&tr=_TROUBLE_" - // - // Output a UTF8 encoded messagebox - // Used in the Win32 Client only - // +// +// Output a UTF8 encoded messagebox +// Used in the Win32 Client only +// #ifdef _WINDOWS_ //Only for modules that use windows.h int SharedUtil::MessageBoxUTF8(HWND hWnd, SString lpText, SString lpCaption, UINT uType) { diff --git a/Shared/sdk/SharedUtil.Time.hpp b/Shared/sdk/SharedUtil.Time.hpp index 9fd29e00f4..12286675b6 100644 --- a/Shared/sdk/SharedUtil.Time.hpp +++ b/Shared/sdk/SharedUtil.Time.hpp @@ -248,7 +248,7 @@ void SharedUtil::UpdateModuleTickCount64() // #if defined(__APPLE__) - // Apple / Darwin platforms with Mach monotonic clock support +// Apple / Darwin platforms with Mach monotonic clock support #include unsigned long GetTickCountInternal() { @@ -306,7 +306,7 @@ unsigned long GetTickCountInternal() #else - // Win32 platforms +// Win32 platforms #include #pragma comment(lib, "Winmm.lib") unsigned long GetTickCountInternal() diff --git a/Shared/sdk/sha1.hpp b/Shared/sdk/sha1.hpp index 5a4d74e096..6457432d38 100644 --- a/Shared/sdk/sha1.hpp +++ b/Shared/sdk/sha1.hpp @@ -50,9 +50,9 @@ static void polarssl_zeroize(void* v, size_t n) #if !defined(POLARSSL_SHA1_ALT) - /* - * 32-bit integer manipulation macros (big endian) - */ +/* + * 32-bit integer manipulation macros (big endian) + */ #ifndef GET_UINT32_BE #define GET_UINT32_BE(n,b,i) \ { \ From cee659cde0e75036ac521a823a8681f21f32a539 Mon Sep 17 00:00:00 2001 From: patrikjuvonen <22572159+patrikjuvonen@users.noreply.github.com> Date: Sat, 8 Apr 2023 15:36:32 +0300 Subject: [PATCH 30/51] Update CVehicleColors.cpp [ci skip] --- Server/mods/deathmatch/logic/CVehicleColors.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/Server/mods/deathmatch/logic/CVehicleColors.cpp b/Server/mods/deathmatch/logic/CVehicleColors.cpp index 92038eab03..b9691d522e 100644 --- a/Server/mods/deathmatch/logic/CVehicleColors.cpp +++ b/Server/mods/deathmatch/logic/CVehicleColors.cpp @@ -1,4 +1,3 @@ - #include "StdInc.h" #include "CVehicleColors.h" #include "Utils.h" From e50f7b746280a5d9ae3cffbcbf0035683c06f160 Mon Sep 17 00:00:00 2001 From: patrikjuvonen <22572159+patrikjuvonen@users.noreply.github.com> Date: Sat, 8 Apr 2023 15:38:55 +0300 Subject: [PATCH 31/51] Update CPedConfig.cpp [ci skip] --- Server/mods/deathmatch/logic/CPedConfig.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/Server/mods/deathmatch/logic/CPedConfig.cpp b/Server/mods/deathmatch/logic/CPedConfig.cpp index c473300ac4..006e05e088 100644 --- a/Server/mods/deathmatch/logic/CPedConfig.cpp +++ b/Server/mods/deathmatch/logic/CPedConfig.cpp @@ -1,4 +1,3 @@ - #include "StdInc.h" #include "CPedConfig.h" #include From 2e1314621640c1586764b5b8ac4afde3ca6f8ae1 Mon Sep 17 00:00:00 2001 From: patrikjuvonen <22572159+patrikjuvonen@users.noreply.github.com> Date: Sat, 8 Apr 2023 15:39:09 +0300 Subject: [PATCH 32/51] Update CObjectConfig.cpp [ci skip] --- Server/mods/deathmatch/logic/CObjectConfig.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/Server/mods/deathmatch/logic/CObjectConfig.cpp b/Server/mods/deathmatch/logic/CObjectConfig.cpp index 1577c207b2..96f8a51b73 100644 --- a/Server/mods/deathmatch/logic/CObjectConfig.cpp +++ b/Server/mods/deathmatch/logic/CObjectConfig.cpp @@ -1,4 +1,3 @@ - #include "StdInc.h" #include "CObjectConfig.h" #include From aeb3a122df843d252171c37f049e820acbf06c79 Mon Sep 17 00:00:00 2001 From: patrikjuvonen <22572159+patrikjuvonen@users.noreply.github.com> Date: Sat, 8 Apr 2023 15:41:45 +0300 Subject: [PATCH 33/51] Update CGame.cpp [ci skip] --- Server/mods/deathmatch/logic/CGame.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Server/mods/deathmatch/logic/CGame.cpp b/Server/mods/deathmatch/logic/CGame.cpp index 834521a06c..7091eb0307 100644 --- a/Server/mods/deathmatch/logic/CGame.cpp +++ b/Server/mods/deathmatch/logic/CGame.cpp @@ -894,8 +894,7 @@ bool CGame::Start(int iArgumentCount, char* szArguments[]) // Load vehicles config CVehiclesConfig vehiclesConfig; - - const char* strVehiclesPath = g_pServerInterface->GetModManager()->GetAbsolutePath("vehicles.conf"); + const char* strVehiclesPath = g_pServerInterface->GetModManager()->GetAbsolutePath("vehicles.conf"); vehiclesConfig.SetFileName(strVehiclesPath); if (!vehiclesConfig.Load()) { From edbb2a7fd45ca49bdebd804cfb21830ee1dda03a Mon Sep 17 00:00:00 2001 From: patrikjuvonen <22572159+patrikjuvonen@users.noreply.github.com> Date: Sat, 8 Apr 2023 15:42:57 +0300 Subject: [PATCH 34/51] Update CPedConfig.h [ci skip] --- Server/mods/deathmatch/logic/CPedConfig.h | 1 - 1 file changed, 1 deletion(-) diff --git a/Server/mods/deathmatch/logic/CPedConfig.h b/Server/mods/deathmatch/logic/CPedConfig.h index e5307a1da0..06730420a9 100644 --- a/Server/mods/deathmatch/logic/CPedConfig.h +++ b/Server/mods/deathmatch/logic/CPedConfig.h @@ -1,4 +1,3 @@ - #pragma once #include "StdInc.h" From e63ff7b6827a9a61620f7a1bbe3ae2ed7f01aa5e Mon Sep 17 00:00:00 2001 From: patrikjuvonen <22572159+patrikjuvonen@users.noreply.github.com> Date: Sat, 8 Apr 2023 15:43:01 +0300 Subject: [PATCH 35/51] Update CObjectConfig.h [ci skip] --- Server/mods/deathmatch/logic/CObjectConfig.h | 1 - 1 file changed, 1 deletion(-) diff --git a/Server/mods/deathmatch/logic/CObjectConfig.h b/Server/mods/deathmatch/logic/CObjectConfig.h index a30b5b2070..3ed1e48c49 100644 --- a/Server/mods/deathmatch/logic/CObjectConfig.h +++ b/Server/mods/deathmatch/logic/CObjectConfig.h @@ -1,4 +1,3 @@ - #pragma once #include "StdInc.h" From 2b60f7957ba9fd9976a7ce8947e1d736ad194da1 Mon Sep 17 00:00:00 2001 From: patrikjuvonen <22572159+patrikjuvonen@users.noreply.github.com> Date: Sat, 8 Apr 2023 15:45:26 +0300 Subject: [PATCH 36/51] Update CModelVehicle.h [ci skip] --- Server/mods/deathmatch/logic/models/CModelVehicle.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Server/mods/deathmatch/logic/models/CModelVehicle.h b/Server/mods/deathmatch/logic/models/CModelVehicle.h index 8626a79eed..60d1db3fc7 100644 --- a/Server/mods/deathmatch/logic/models/CModelVehicle.h +++ b/Server/mods/deathmatch/logic/models/CModelVehicle.h @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory - * FILE: mods/deathmatch/logic/CModelAtomic.h - * PURPOSE: Atomic model class + * FILE: mods/deathmatch/logic/CModelVehicle.h + * PURPOSE: Vehicle model class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://www.multitheftauto.com/ * *****************************************************************************/ From 4e6c08741522aa4ce058f801442be0180f05e814 Mon Sep 17 00:00:00 2001 From: patrikjuvonen <22572159+patrikjuvonen@users.noreply.github.com> Date: Sat, 8 Apr 2023 15:46:28 +0300 Subject: [PATCH 37/51] Update CModelVehicle.h [ci skip] --- Server/mods/deathmatch/logic/models/CModelVehicle.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Server/mods/deathmatch/logic/models/CModelVehicle.h b/Server/mods/deathmatch/logic/models/CModelVehicle.h index 60d1db3fc7..89d62c2f96 100644 --- a/Server/mods/deathmatch/logic/models/CModelVehicle.h +++ b/Server/mods/deathmatch/logic/models/CModelVehicle.h @@ -2,7 +2,7 @@ * * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory - * FILE: mods/deathmatch/logic/CModelVehicle.h + * FILE: mods/deathmatch/logic/models/CModelVehicle.h * PURPOSE: Vehicle model class * * Multi Theft Auto is available from https://www.multitheftauto.com/ From 11ec287977217591114e9df93f126a6d4862f0f0 Mon Sep 17 00:00:00 2001 From: patrikjuvonen <22572159+patrikjuvonen@users.noreply.github.com> Date: Sat, 8 Apr 2023 15:46:43 +0300 Subject: [PATCH 38/51] Update CModelVehicle.cpp [ci skip] --- Server/mods/deathmatch/logic/models/CModelVehicle.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Server/mods/deathmatch/logic/models/CModelVehicle.cpp b/Server/mods/deathmatch/logic/models/CModelVehicle.cpp index 14932143a2..d41a763b2b 100644 --- a/Server/mods/deathmatch/logic/models/CModelVehicle.cpp +++ b/Server/mods/deathmatch/logic/models/CModelVehicle.cpp @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/models/CModelVehicle.cpp * PURPOSE: Vehicle model info class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://www.multitheftauto.com/ * *****************************************************************************/ From 323970e4107c43f791117c8664af6b5e9c995270 Mon Sep 17 00:00:00 2001 From: patrikjuvonen <22572159+patrikjuvonen@users.noreply.github.com> Date: Sat, 8 Apr 2023 15:47:34 +0300 Subject: [PATCH 39/51] Update CPlayerJoinCompletePacket.cpp [ci skip] --- .../deathmatch/logic/packets/CPlayerJoinCompletePacket.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Server/mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.cpp b/Server/mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.cpp index 5a2ddfc152..9ffb48d265 100644 --- a/Server/mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.cpp +++ b/Server/mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.cpp @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.cpp * PURPOSE: Player join completion packet class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://www.multitheftauto.com/ * *****************************************************************************/ From b2c7172ea6eea8b2fa1770b3fa83c674cdb4cbd1 Mon Sep 17 00:00:00 2001 From: patrikjuvonen <22572159+patrikjuvonen@users.noreply.github.com> Date: Sat, 8 Apr 2023 16:14:26 +0300 Subject: [PATCH 40/51] Fix header comments --- Client/game_sa/CModelInfoSA.cpp | 4 ++-- Client/mods/deathmatch/logic/CClientModel.cpp | 3 ++- Client/mods/deathmatch/logic/CClientModel.h | 3 ++- Client/mods/deathmatch/logic/CClientModelManager.cpp | 4 +++- Client/mods/deathmatch/logic/CClientModelManager.h | 3 ++- Client/mods/deathmatch/logic/CClientVehicleManager.cpp | 7 ++++--- Client/mods/deathmatch/logic/CClientVehicleManager.h | 7 ++++--- Client/mods/deathmatch/logic/CPacketHandler.cpp | 4 ++-- .../mods/deathmatch/logic/CStaticFunctionDefinitions.cpp | 2 +- .../mods/deathmatch/logic/lua/CLuaFunctionDefs.Util.cpp | 7 ++++--- .../deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp | 4 +++- .../mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h | 4 +++- Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp | 4 ++-- Client/mods/deathmatch/logic/rpc/CModelRPCs.cpp | 6 +++--- Client/mods/deathmatch/logic/rpc/CModelRPCs.h | 8 ++++---- Client/mods/deathmatch/logic/rpc/CRPCFunctions.cpp | 4 ++-- Client/sdk/game/CModelInfo.h | 4 ++-- Server/mods/deathmatch/logic/CCommon.h | 4 ++-- Server/mods/deathmatch/logic/CGame.cpp | 4 ++-- Server/mods/deathmatch/logic/CGame.h | 4 ++-- Server/mods/deathmatch/logic/CHandlingManager.cpp | 4 ++-- Server/mods/deathmatch/logic/CHandlingManager.h | 4 ++-- Server/mods/deathmatch/logic/CResource.cpp | 4 ++-- Server/mods/deathmatch/logic/CResource.h | 2 +- .../mods/deathmatch/logic/CStaticFunctionDefinitions.cpp | 4 ++-- Server/mods/deathmatch/logic/CVehicle.cpp | 4 ++-- Server/mods/deathmatch/logic/CVehicle.h | 4 ++-- Server/mods/deathmatch/logic/CVehicleColorConfig.cpp | 8 ++++---- Server/mods/deathmatch/logic/CVehicleColorConfig.h | 4 ++-- Server/mods/deathmatch/logic/CVehicleManager.cpp | 4 ++-- Server/mods/deathmatch/logic/CVehicleManager.h | 4 ++-- Server/mods/deathmatch/logic/CVehicleNames.cpp | 4 ++-- Server/mods/deathmatch/logic/CVehicleUpgrades.cpp | 4 ++-- .../deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp | 2 +- .../mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h | 2 +- Server/mods/deathmatch/logic/lua/CLuaManager.cpp | 4 ++-- Server/mods/deathmatch/logic/luadefs/CLuaHandlingDefs.cpp | 4 ++-- Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp | 5 +++-- Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.h | 4 ++-- Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp | 4 ++-- Server/mods/deathmatch/logic/models/CModelAtomic.cpp | 4 ++-- Server/mods/deathmatch/logic/models/CModelAtomic.h | 4 ++-- Server/mods/deathmatch/logic/models/CModelBase.cpp | 4 ++-- Server/mods/deathmatch/logic/models/CModelBase.h | 4 ++-- Server/mods/deathmatch/logic/models/CModelManager.cpp | 6 +++--- Server/mods/deathmatch/logic/models/CModelManager.h | 4 ++-- Server/mods/deathmatch/logic/models/CModelPed.cpp | 4 ++-- Server/mods/deathmatch/logic/models/CModelPed.h | 4 ++-- Server/mods/deathmatch/logic/models/CModelVehicle.cpp | 2 +- Server/mods/deathmatch/logic/models/CModelVehicle.h | 2 +- Server/mods/deathmatch/logic/net/CSimPlayerManager.h | 4 ++-- .../mods/deathmatch/logic/net/CSimVehiclePuresyncPacket.h | 4 ++-- Server/mods/deathmatch/logic/packets/CEntityAddPacket.h | 4 ++-- Server/mods/deathmatch/logic/packets/CKeysyncPacket.h | 4 ++-- .../logic/packets/CPlayerJoinCompletePacket.cpp | 2 +- .../deathmatch/logic/packets/CPlayerJoinCompletePacket.h | 4 ++-- .../deathmatch/logic/packets/CVehiclePuresyncPacket.h | 4 ++-- Shared/mods/deathmatch/logic/lua/LuaBasic.h | 2 +- Shared/sdk/net/bitstream.h | 4 ++-- Shared/sdk/net/rpc_enums.h | 2 +- 60 files changed, 127 insertions(+), 114 deletions(-) diff --git a/Client/game_sa/CModelInfoSA.cpp b/Client/game_sa/CModelInfoSA.cpp index 11eeb7467a..ed58fc7bb6 100644 --- a/Client/game_sa/CModelInfoSA.cpp +++ b/Client/game_sa/CModelInfoSA.cpp @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: game_sa/CModelInfoSA.cpp * PURPOSE: Entity model information handler * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Client/mods/deathmatch/logic/CClientModel.cpp b/Client/mods/deathmatch/logic/CClientModel.cpp index 92586cad7a..447b3da54f 100644 --- a/Client/mods/deathmatch/logic/CClientModel.cpp +++ b/Client/mods/deathmatch/logic/CClientModel.cpp @@ -1,11 +1,12 @@ /***************************************************************************** * * PROJECT: Multi Theft Auto - * (Shared logic for modifications) * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/CClientModel.h * PURPOSE: Model handling class * + * Multi Theft Auto is available from https://multitheftauto.com/ + * *****************************************************************************/ #include "StdInc.h" diff --git a/Client/mods/deathmatch/logic/CClientModel.h b/Client/mods/deathmatch/logic/CClientModel.h index e05980e267..c42ca07f13 100644 --- a/Client/mods/deathmatch/logic/CClientModel.h +++ b/Client/mods/deathmatch/logic/CClientModel.h @@ -1,11 +1,12 @@ /***************************************************************************** * * PROJECT: Multi Theft Auto - * (Shared logic for modifications) * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/CClientModel.h * PURPOSE: Model handling class * + * Multi Theft Auto is available from https://multitheftauto.com/ + * *****************************************************************************/ class CClientModel; diff --git a/Client/mods/deathmatch/logic/CClientModelManager.cpp b/Client/mods/deathmatch/logic/CClientModelManager.cpp index e7b611d5c8..aab6ba1110 100644 --- a/Client/mods/deathmatch/logic/CClientModelManager.cpp +++ b/Client/mods/deathmatch/logic/CClientModelManager.cpp @@ -1,14 +1,16 @@ /***************************************************************************** * * PROJECT: Multi Theft Auto - * (Shared logic for modifications) * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/CClientModelManager.cpp * PURPOSE: Model manager class * + * Multi Theft Auto is available from https://multitheftauto.com/ + * *****************************************************************************/ #include "StdInc.h" + CClientModelManager::CClientModelManager() : m_Models(std::make_unique[]>(g_pGame->GetBaseIDforTXD())) { const unsigned int MAX_MODEL_ID = g_pGame->GetBaseIDforTXD(); diff --git a/Client/mods/deathmatch/logic/CClientModelManager.h b/Client/mods/deathmatch/logic/CClientModelManager.h index e9eee47285..687c3d3da8 100644 --- a/Client/mods/deathmatch/logic/CClientModelManager.h +++ b/Client/mods/deathmatch/logic/CClientModelManager.h @@ -1,11 +1,12 @@ /***************************************************************************** * * PROJECT: Multi Theft Auto - * (Shared logic for modifications) * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/CClientModelManager.h * PURPOSE: Model manager class * + * Multi Theft Auto is available from https://multitheftauto.com/ + * *****************************************************************************/ class CClientModelManager; diff --git a/Client/mods/deathmatch/logic/CClientVehicleManager.cpp b/Client/mods/deathmatch/logic/CClientVehicleManager.cpp index 170be5b816..85130c89fd 100644 --- a/Client/mods/deathmatch/logic/CClientVehicleManager.cpp +++ b/Client/mods/deathmatch/logic/CClientVehicleManager.cpp @@ -1,11 +1,12 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 - * (Shared logic for modifications) + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory - * FILE: mods/shared_logic/CClientVehicleManager.cpp + * FILE: mods/deathmatch/logic/CClientVehicleManager.cpp * PURPOSE: Vehicle entity manager class * + * Multi Theft Auto is available from https://multitheftauto.com/ + * *****************************************************************************/ #include "StdInc.h" diff --git a/Client/mods/deathmatch/logic/CClientVehicleManager.h b/Client/mods/deathmatch/logic/CClientVehicleManager.h index 1ea89f57a0..0a88c83ba7 100644 --- a/Client/mods/deathmatch/logic/CClientVehicleManager.h +++ b/Client/mods/deathmatch/logic/CClientVehicleManager.h @@ -1,11 +1,12 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 - * (Shared logic for modifications) + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory - * FILE: mods/shared_logic/CClientVehicleManager.h + * FILE: mods/deathmatch/logic/CClientVehicleManager.h * PURPOSE: Vehicle entity manager class header * + * Multi Theft Auto is available from https://multitheftauto.com/ + * *****************************************************************************/ #pragma once diff --git a/Client/mods/deathmatch/logic/CPacketHandler.cpp b/Client/mods/deathmatch/logic/CPacketHandler.cpp index 4e9dd08340..28385fe4cd 100644 --- a/Client/mods/deathmatch/logic/CPacketHandler.cpp +++ b/Client/mods/deathmatch/logic/CPacketHandler.cpp @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/CPacketHandler.cpp * PURPOSE: Packet handling and processing * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Client/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp b/Client/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp index ab81cd192b..351acab33e 100644 --- a/Client/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp +++ b/Client/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp @@ -5,7 +5,7 @@ * FILE: mods/deathmatch/logic/CStaticFunctionDefinitions.cpp * PURPOSE: Scripting function processing * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Client/mods/deathmatch/logic/lua/CLuaFunctionDefs.Util.cpp b/Client/mods/deathmatch/logic/lua/CLuaFunctionDefs.Util.cpp index ec932b58e1..2b52a3d286 100644 --- a/Client/mods/deathmatch/logic/lua/CLuaFunctionDefs.Util.cpp +++ b/Client/mods/deathmatch/logic/lua/CLuaFunctionDefs.Util.cpp @@ -1,11 +1,12 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 - * (Shared logic for modifications) + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory - * FILE: mods/shared_logic/lua/CLuaFunctionDefs.Util.cpp + * FILE: mods/deathmatch/logic/lua/CLuaFunctionDefs.Util.cpp * PURPOSE: Lua function definitions class * + * Multi Theft Auto is available from https://multitheftauto.com/ + * *****************************************************************************/ #include "StdInc.h" diff --git a/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp b/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp index 4769a4aa07..ba8146f148 100644 --- a/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp +++ b/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp @@ -2,7 +2,9 @@ * * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory - * FILE: Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp + * FILE: mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp + * + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h b/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h index c89ab76244..29cfe9a28d 100644 --- a/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h +++ b/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h @@ -2,7 +2,9 @@ * * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory - * FILE: Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h + * FILE: mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h + * + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp b/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp index 92d27f496f..2b98dab280 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp +++ b/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp @@ -2,10 +2,10 @@ * * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory - * FILE: mods/shared_logic/luadefs/CLuaEngineDefs.cpp + * FILE: mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp * PURPOSE: Lua definitions class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Client/mods/deathmatch/logic/rpc/CModelRPCs.cpp b/Client/mods/deathmatch/logic/rpc/CModelRPCs.cpp index 86b0826673..541b80a236 100644 --- a/Client/mods/deathmatch/logic/rpc/CModelRPCs.cpp +++ b/Client/mods/deathmatch/logic/rpc/CModelRPCs.cpp @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory - * FILE: mods/deathmatch/logic/rpc/CMarkerRPCs.cpp + * FILE: mods/deathmatch/logic/rpc/CModelRPCs.cpp * PURPOSE: Custom models remote procedure calls * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Client/mods/deathmatch/logic/rpc/CModelRPCs.h b/Client/mods/deathmatch/logic/rpc/CModelRPCs.h index ad03425b81..27c8dcf9cd 100644 --- a/Client/mods/deathmatch/logic/rpc/CModelRPCs.h +++ b/Client/mods/deathmatch/logic/rpc/CModelRPCs.h @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory - * FILE: mods/deathmatch/logic/rpc/CMarkerRPCs.h - * PURPOSE: Header for marker RPC class + * FILE: mods/deathmatch/logic/rpc/CModelRPCs.h + * PURPOSE: Header for model RPC class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Client/mods/deathmatch/logic/rpc/CRPCFunctions.cpp b/Client/mods/deathmatch/logic/rpc/CRPCFunctions.cpp index 8eb8249c88..368c337bd0 100644 --- a/Client/mods/deathmatch/logic/rpc/CRPCFunctions.cpp +++ b/Client/mods/deathmatch/logic/rpc/CRPCFunctions.cpp @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/rpc/CRPCFunctions.cpp * PURPOSE: Remote procedure calls manager * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Client/sdk/game/CModelInfo.h b/Client/sdk/game/CModelInfo.h index 0a94d4c703..a874ce1561 100644 --- a/Client/sdk/game/CModelInfo.h +++ b/Client/sdk/game/CModelInfo.h @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: sdk/game/CModelInfo.h * PURPOSE: Entity model info interface * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/CCommon.h b/Server/mods/deathmatch/logic/CCommon.h index aab0282e84..2a748a8483 100644 --- a/Server/mods/deathmatch/logic/CCommon.h +++ b/Server/mods/deathmatch/logic/CCommon.h @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/CCommon.h * PURPOSE: Common definitions and enumerations header * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/CGame.cpp b/Server/mods/deathmatch/logic/CGame.cpp index 7091eb0307..a25b2ed1ab 100644 --- a/Server/mods/deathmatch/logic/CGame.cpp +++ b/Server/mods/deathmatch/logic/CGame.cpp @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/CGame.cpp * PURPOSE: Server game class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/CGame.h b/Server/mods/deathmatch/logic/CGame.h index a9caeb4101..e366acdd35 100644 --- a/Server/mods/deathmatch/logic/CGame.h +++ b/Server/mods/deathmatch/logic/CGame.h @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/CGame.h * PURPOSE: Server game class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/CHandlingManager.cpp b/Server/mods/deathmatch/logic/CHandlingManager.cpp index 570779b7e0..e1a00b4e79 100644 --- a/Server/mods/deathmatch/logic/CHandlingManager.cpp +++ b/Server/mods/deathmatch/logic/CHandlingManager.cpp @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/CHandlingManager.cpp * PURPOSE: Vehicle handling manager * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/CHandlingManager.h b/Server/mods/deathmatch/logic/CHandlingManager.h index a256d35218..61a75373b9 100644 --- a/Server/mods/deathmatch/logic/CHandlingManager.h +++ b/Server/mods/deathmatch/logic/CHandlingManager.h @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/CHandlingManager.h * PURPOSE: Header file for vehicle handling manager class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/CResource.cpp b/Server/mods/deathmatch/logic/CResource.cpp index d14a622c10..cb91b61457 100644 --- a/Server/mods/deathmatch/logic/CResource.cpp +++ b/Server/mods/deathmatch/logic/CResource.cpp @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/CResource.cpp * PURPOSE: Resource handler class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/CResource.h b/Server/mods/deathmatch/logic/CResource.h index dffd1b36e5..9fd3c42393 100644 --- a/Server/mods/deathmatch/logic/CResource.h +++ b/Server/mods/deathmatch/logic/CResource.h @@ -5,7 +5,7 @@ * FILE: mods/deathmatch/logic/CResource.h * PURPOSE: Resource handler class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp index a1221f1ffa..01f40a1769 100644 --- a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp +++ b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/CStaticFunctionDefinitions.cpp * PURPOSE: Lua static function definitions class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/CVehicle.cpp b/Server/mods/deathmatch/logic/CVehicle.cpp index 1477332e8b..b0cacbc880 100644 --- a/Server/mods/deathmatch/logic/CVehicle.cpp +++ b/Server/mods/deathmatch/logic/CVehicle.cpp @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/CVehicle.cpp * PURPOSE: Vehicle entity class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/CVehicle.h b/Server/mods/deathmatch/logic/CVehicle.h index d104673fc1..3ffec0ba51 100644 --- a/Server/mods/deathmatch/logic/CVehicle.h +++ b/Server/mods/deathmatch/logic/CVehicle.h @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/CVehicle.h * PURPOSE: Vehicle entity class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/CVehicleColorConfig.cpp b/Server/mods/deathmatch/logic/CVehicleColorConfig.cpp index c083907068..1d9627974c 100644 --- a/Server/mods/deathmatch/logic/CVehicleColorConfig.cpp +++ b/Server/mods/deathmatch/logic/CVehicleColorConfig.cpp @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory - * FILE: mods/deathmatch/logic/CVehicleColorManager.cpp - * PURPOSE: Vehicle entity color manager class + * FILE: mods/deathmatch/logic/CVehicleColorConfig.cpp + * PURPOSE: Vehicle colors loader * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/CVehicleColorConfig.h b/Server/mods/deathmatch/logic/CVehicleColorConfig.h index 17f24192e2..3305aead31 100644 --- a/Server/mods/deathmatch/logic/CVehicleColorConfig.h +++ b/Server/mods/deathmatch/logic/CVehicleColorConfig.h @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/CVehicleColorConfig.h * PURPOSE: Vehicle colors loader * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/CVehicleManager.cpp b/Server/mods/deathmatch/logic/CVehicleManager.cpp index 043bc358ba..2dd6bf4a31 100644 --- a/Server/mods/deathmatch/logic/CVehicleManager.cpp +++ b/Server/mods/deathmatch/logic/CVehicleManager.cpp @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/CVehicleManager.cpp * PURPOSE: Vehicle entity manager class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/CVehicleManager.h b/Server/mods/deathmatch/logic/CVehicleManager.h index b2718df928..be510df7b1 100644 --- a/Server/mods/deathmatch/logic/CVehicleManager.h +++ b/Server/mods/deathmatch/logic/CVehicleManager.h @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/CVehicleManager.h * PURPOSE: Vehicle entity manager class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/CVehicleNames.cpp b/Server/mods/deathmatch/logic/CVehicleNames.cpp index d8531c5e65..afb2204961 100644 --- a/Server/mods/deathmatch/logic/CVehicleNames.cpp +++ b/Server/mods/deathmatch/logic/CVehicleNames.cpp @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/CVehicleNames.cpp * PURPOSE: GTA vehicle name definitions class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/CVehicleUpgrades.cpp b/Server/mods/deathmatch/logic/CVehicleUpgrades.cpp index e55eca70b9..27d1ffca01 100644 --- a/Server/mods/deathmatch/logic/CVehicleUpgrades.cpp +++ b/Server/mods/deathmatch/logic/CVehicleUpgrades.cpp @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/CVehicleUpgrades.cpp * PURPOSE: GTA vehicle upgrade definitions class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp b/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp index 18b5e59d44..4ce61b4f23 100644 --- a/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp +++ b/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp @@ -2,7 +2,7 @@ * * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory - * FILE: Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp + * FILE: mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h b/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h index 254aa20792..9152dc5ef5 100644 --- a/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h +++ b/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h @@ -2,7 +2,7 @@ * * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory - * FILE: Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h + * FILE: mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/lua/CLuaManager.cpp b/Server/mods/deathmatch/logic/lua/CLuaManager.cpp index 18119f4575..83066caf03 100644 --- a/Server/mods/deathmatch/logic/lua/CLuaManager.cpp +++ b/Server/mods/deathmatch/logic/lua/CLuaManager.cpp @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/lua/CLuaManager.cpp * PURPOSE: Lua virtual machine manager class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/luadefs/CLuaHandlingDefs.cpp b/Server/mods/deathmatch/logic/luadefs/CLuaHandlingDefs.cpp index b29408fe4c..01274d1cda 100644 --- a/Server/mods/deathmatch/logic/luadefs/CLuaHandlingDefs.cpp +++ b/Server/mods/deathmatch/logic/luadefs/CLuaHandlingDefs.cpp @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/luadefs/CLuaHandlingDefs.cpp * PURPOSE: Lua vehicle handling definitions class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp b/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp index 99315bcf76..4f831908bb 100644 --- a/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp +++ b/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp @@ -2,11 +2,12 @@ * * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory - * FILE: Shared/mods/logic/luadefs/CLuaModelDefs.cpp + * FILE: mods/deathmatch/logic/luadefs/CLuaModelDefs.cpp * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ + #include "StdInc.h" #include "CLuaModelDefs.h" #include diff --git a/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.h b/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.h index 2a8e3b6eb9..2889445f15 100644 --- a/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.h +++ b/Server/mods/deathmatch/logic/luadefs/CLuaModelDefs.h @@ -2,9 +2,9 @@ * * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory - * FILE: Shared/mods/logic/luadefs/CLuaModelDefs.h + * FILE: mods/deathmatch/logic/luadefs/CLuaModelDefs.h * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp b/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp index ad7aab7e34..013180a086 100644 --- a/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp +++ b/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp * PURPOSE: Lua function definitions class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/models/CModelAtomic.cpp b/Server/mods/deathmatch/logic/models/CModelAtomic.cpp index e5a4fe5cd7..6943bb8612 100644 --- a/Server/mods/deathmatch/logic/models/CModelAtomic.cpp +++ b/Server/mods/deathmatch/logic/models/CModelAtomic.cpp @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/models/CModelAtomic.cpp * PURPOSE: Atomic model class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/models/CModelAtomic.h b/Server/mods/deathmatch/logic/models/CModelAtomic.h index 1415ec5ca5..829055a8bb 100644 --- a/Server/mods/deathmatch/logic/models/CModelAtomic.h +++ b/Server/mods/deathmatch/logic/models/CModelAtomic.h @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/models/CModelAtomic.h * PURPOSE: Atomic model class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/models/CModelBase.cpp b/Server/mods/deathmatch/logic/models/CModelBase.cpp index 20506e8c91..7c89c7cffb 100644 --- a/Server/mods/deathmatch/logic/models/CModelBase.cpp +++ b/Server/mods/deathmatch/logic/models/CModelBase.cpp @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/models/CModelBase.cpp * PURPOSE: Base model info class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/models/CModelBase.h b/Server/mods/deathmatch/logic/models/CModelBase.h index af1dffa5ea..4e05f4db64 100644 --- a/Server/mods/deathmatch/logic/models/CModelBase.h +++ b/Server/mods/deathmatch/logic/models/CModelBase.h @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/models/CModelBase.h * PURPOSE: Base model info class header * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/models/CModelManager.cpp b/Server/mods/deathmatch/logic/models/CModelManager.cpp index bfb82ddcf0..38b2c4105f 100644 --- a/Server/mods/deathmatch/logic/models/CModelManager.cpp +++ b/Server/mods/deathmatch/logic/models/CModelManager.cpp @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory - * FILE: mods/deathmatch/logic/CModelManager.cpp + * FILE: mods/deathmatch/logic/models/CModelManager.cpp * PURPOSE: Model manager class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/models/CModelManager.h b/Server/mods/deathmatch/logic/models/CModelManager.h index a1476e1657..9d904a2064 100644 --- a/Server/mods/deathmatch/logic/models/CModelManager.h +++ b/Server/mods/deathmatch/logic/models/CModelManager.h @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/models/CModelManager.h * PURPOSE: Model manager class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/models/CModelPed.cpp b/Server/mods/deathmatch/logic/models/CModelPed.cpp index 17fd0c2855..200b175a4c 100644 --- a/Server/mods/deathmatch/logic/models/CModelPed.cpp +++ b/Server/mods/deathmatch/logic/models/CModelPed.cpp @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/models/CModelPed.cpp * PURPOSE: Ped model class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/models/CModelPed.h b/Server/mods/deathmatch/logic/models/CModelPed.h index 522601e2c6..e8e880ea03 100644 --- a/Server/mods/deathmatch/logic/models/CModelPed.h +++ b/Server/mods/deathmatch/logic/models/CModelPed.h @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/models/CModelPed.h * PURPOSE: Ped model class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/models/CModelVehicle.cpp b/Server/mods/deathmatch/logic/models/CModelVehicle.cpp index d41a763b2b..e1208723c4 100644 --- a/Server/mods/deathmatch/logic/models/CModelVehicle.cpp +++ b/Server/mods/deathmatch/logic/models/CModelVehicle.cpp @@ -5,7 +5,7 @@ * FILE: mods/deathmatch/logic/models/CModelVehicle.cpp * PURPOSE: Vehicle model info class * - * Multi Theft Auto is available from https://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/models/CModelVehicle.h b/Server/mods/deathmatch/logic/models/CModelVehicle.h index 89d62c2f96..698d53772e 100644 --- a/Server/mods/deathmatch/logic/models/CModelVehicle.h +++ b/Server/mods/deathmatch/logic/models/CModelVehicle.h @@ -5,7 +5,7 @@ * FILE: mods/deathmatch/logic/models/CModelVehicle.h * PURPOSE: Vehicle model class * - * Multi Theft Auto is available from https://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/net/CSimPlayerManager.h b/Server/mods/deathmatch/logic/net/CSimPlayerManager.h index ce2c862e09..9efdbd2370 100644 --- a/Server/mods/deathmatch/logic/net/CSimPlayerManager.h +++ b/Server/mods/deathmatch/logic/net/CSimPlayerManager.h @@ -1,9 +1,9 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/net/CSimVehiclePuresyncPacket.h b/Server/mods/deathmatch/logic/net/CSimVehiclePuresyncPacket.h index ead28e54b7..bcde6e9aa5 100644 --- a/Server/mods/deathmatch/logic/net/CSimVehiclePuresyncPacket.h +++ b/Server/mods/deathmatch/logic/net/CSimVehiclePuresyncPacket.h @@ -1,9 +1,9 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/packets/CEntityAddPacket.h b/Server/mods/deathmatch/logic/packets/CEntityAddPacket.h index 641c9115c0..8ed0e85d6e 100644 --- a/Server/mods/deathmatch/logic/packets/CEntityAddPacket.h +++ b/Server/mods/deathmatch/logic/packets/CEntityAddPacket.h @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/packets/CEntityAddPacket.h * PURPOSE: Entity add packet class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/packets/CKeysyncPacket.h b/Server/mods/deathmatch/logic/packets/CKeysyncPacket.h index 47f72fd286..bd8d8245c1 100644 --- a/Server/mods/deathmatch/logic/packets/CKeysyncPacket.h +++ b/Server/mods/deathmatch/logic/packets/CKeysyncPacket.h @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/packets/CKeysyncPacket.h * PURPOSE: Key controls synchronization packet class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.cpp b/Server/mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.cpp index 9ffb48d265..0045e17b23 100644 --- a/Server/mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.cpp +++ b/Server/mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.cpp @@ -5,7 +5,7 @@ * FILE: mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.cpp * PURPOSE: Player join completion packet class * - * Multi Theft Auto is available from https://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.h b/Server/mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.h index 74d27b6ae9..5dc9b647b6 100644 --- a/Server/mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.h +++ b/Server/mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.h @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.h * PURPOSE: Player join completion packet class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/packets/CVehiclePuresyncPacket.h b/Server/mods/deathmatch/logic/packets/CVehiclePuresyncPacket.h index d4bd139aac..5ce1b4c252 100644 --- a/Server/mods/deathmatch/logic/packets/CVehiclePuresyncPacket.h +++ b/Server/mods/deathmatch/logic/packets/CVehiclePuresyncPacket.h @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/packets/CVehiclePuresyncPacket.h * PURPOSE: Vehicle pure synchronization packet class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Shared/mods/deathmatch/logic/lua/LuaBasic.h b/Shared/mods/deathmatch/logic/lua/LuaBasic.h index 7022e82f54..67afe39f24 100644 --- a/Shared/mods/deathmatch/logic/lua/LuaBasic.h +++ b/Shared/mods/deathmatch/logic/lua/LuaBasic.h @@ -3,7 +3,7 @@ * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Shared/sdk/net/bitstream.h b/Shared/sdk/net/bitstream.h index 7a14ff82e5..2b70d607d9 100644 --- a/Shared/sdk/net/bitstream.h +++ b/Shared/sdk/net/bitstream.h @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: Shared/sdk/net/bitstream.h * PURPOSE: Network bitstream interface * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Shared/sdk/net/rpc_enums.h b/Shared/sdk/net/rpc_enums.h index 907b87ebf1..ebef8da130 100644 --- a/Shared/sdk/net/rpc_enums.h +++ b/Shared/sdk/net/rpc_enums.h @@ -5,7 +5,7 @@ * FILE: Shared/sdk/net/rpc_enums.h * PURPOSE: Lua RPC enums * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ From e07956c61f6284021692009e5f12185897836420 Mon Sep 17 00:00:00 2001 From: patrikjuvonen <22572159+patrikjuvonen@users.noreply.github.com> Date: Sat, 8 Apr 2023 16:17:17 +0300 Subject: [PATCH 41/51] Fix header comments [ci skip] --- Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp b/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp index 4ce61b4f23..42db5d9eba 100644 --- a/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp +++ b/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp @@ -4,6 +4,8 @@ * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp * + * Multi Theft Auto is available from https://multitheftauto.com/ + * *****************************************************************************/ #include "StdInc.h" From 8af33b393b8389187543b8ccca1ee67e1a936dbd Mon Sep 17 00:00:00 2001 From: patrikjuvonen <22572159+patrikjuvonen@users.noreply.github.com> Date: Sat, 8 Apr 2023 16:17:35 +0300 Subject: [PATCH 42/51] Fix header comments [ci skip] --- Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h b/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h index 9152dc5ef5..6e12e368fa 100644 --- a/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h +++ b/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h @@ -4,6 +4,8 @@ * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h * + * Multi Theft Auto is available from https://multitheftauto.com/ + * *****************************************************************************/ #pragma once From 309f5b1067fcd61371346d01200d387d591ef95f Mon Sep 17 00:00:00 2001 From: patrikjuvonen <22572159+patrikjuvonen@users.noreply.github.com> Date: Sat, 8 Apr 2023 16:26:11 +0300 Subject: [PATCH 43/51] Fix header comments [ci skip] --- .../mods/deathmatch/logic/packets/CVehiclePuresyncPacket.cpp | 4 ++-- Server/mods/deathmatch/logic/packets/CVehiclePuresyncPacket.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Server/mods/deathmatch/logic/packets/CVehiclePuresyncPacket.cpp b/Server/mods/deathmatch/logic/packets/CVehiclePuresyncPacket.cpp index e46636ea71..0bfc11e75d 100644 --- a/Server/mods/deathmatch/logic/packets/CVehiclePuresyncPacket.cpp +++ b/Server/mods/deathmatch/logic/packets/CVehiclePuresyncPacket.cpp @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/packets/CVehiclePuresyncPacket.cpp * PURPOSE: Vehicle pure synchronization packet class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/packets/CVehiclePuresyncPacket.h b/Server/mods/deathmatch/logic/packets/CVehiclePuresyncPacket.h index 5ce1b4c252..d4bd139aac 100644 --- a/Server/mods/deathmatch/logic/packets/CVehiclePuresyncPacket.h +++ b/Server/mods/deathmatch/logic/packets/CVehiclePuresyncPacket.h @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto + * PROJECT: Multi Theft Auto v1.0 * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/packets/CVehiclePuresyncPacket.h * PURPOSE: Vehicle pure synchronization packet class * - * Multi Theft Auto is available from https://multitheftauto.com/ + * Multi Theft Auto is available from http://www.multitheftauto.com/ * *****************************************************************************/ From 5f018f6539b88d630fdca22449f5fe1cacf42750 Mon Sep 17 00:00:00 2001 From: patrikjuvonen <22572159+patrikjuvonen@users.noreply.github.com> Date: Sat, 8 Apr 2023 16:27:01 +0300 Subject: [PATCH 44/51] Fix header comments [ci skip] --- .../mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Server/mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.h b/Server/mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.h index 5dc9b647b6..74d27b6ae9 100644 --- a/Server/mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.h +++ b/Server/mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.h @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto + * PROJECT: Multi Theft Auto v1.0 * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/packets/CPlayerJoinCompletePacket.h * PURPOSE: Player join completion packet class * - * Multi Theft Auto is available from https://multitheftauto.com/ + * Multi Theft Auto is available from http://www.multitheftauto.com/ * *****************************************************************************/ From a1a3a5eb5042c04def63596cc3a3fbeeb0df8764 Mon Sep 17 00:00:00 2001 From: patrikjuvonen <22572159+patrikjuvonen@users.noreply.github.com> Date: Sat, 8 Apr 2023 16:27:45 +0300 Subject: [PATCH 45/51] Fix header comments [ci skip] --- Server/mods/deathmatch/logic/packets/CKeysyncPacket.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Server/mods/deathmatch/logic/packets/CKeysyncPacket.h b/Server/mods/deathmatch/logic/packets/CKeysyncPacket.h index bd8d8245c1..47f72fd286 100644 --- a/Server/mods/deathmatch/logic/packets/CKeysyncPacket.h +++ b/Server/mods/deathmatch/logic/packets/CKeysyncPacket.h @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto + * PROJECT: Multi Theft Auto v1.0 * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/packets/CKeysyncPacket.h * PURPOSE: Key controls synchronization packet class * - * Multi Theft Auto is available from https://multitheftauto.com/ + * Multi Theft Auto is available from http://www.multitheftauto.com/ * *****************************************************************************/ From 911b09175abf3f93022327cf6493a9c8e8adb514 Mon Sep 17 00:00:00 2001 From: patrikjuvonen <22572159+patrikjuvonen@users.noreply.github.com> Date: Sat, 8 Apr 2023 16:28:16 +0300 Subject: [PATCH 46/51] Fix header comments [ci skip] --- Server/mods/deathmatch/logic/packets/CEntityAddPacket.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Server/mods/deathmatch/logic/packets/CEntityAddPacket.h b/Server/mods/deathmatch/logic/packets/CEntityAddPacket.h index 8ed0e85d6e..641c9115c0 100644 --- a/Server/mods/deathmatch/logic/packets/CEntityAddPacket.h +++ b/Server/mods/deathmatch/logic/packets/CEntityAddPacket.h @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto + * PROJECT: Multi Theft Auto v1.0 * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/packets/CEntityAddPacket.h * PURPOSE: Entity add packet class * - * Multi Theft Auto is available from https://multitheftauto.com/ + * Multi Theft Auto is available from http://www.multitheftauto.com/ * *****************************************************************************/ From 04f6f98e177a5280f862834bcf108a8763c43887 Mon Sep 17 00:00:00 2001 From: patrikjuvonen <22572159+patrikjuvonen@users.noreply.github.com> Date: Sat, 8 Apr 2023 16:28:51 +0300 Subject: [PATCH 47/51] Fix header comments [ci skip] --- Server/mods/deathmatch/logic/net/CSimPlayerManager.h | 4 ++-- Server/mods/deathmatch/logic/net/CSimVehiclePuresyncPacket.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Server/mods/deathmatch/logic/net/CSimPlayerManager.h b/Server/mods/deathmatch/logic/net/CSimPlayerManager.h index 9efdbd2370..ce2c862e09 100644 --- a/Server/mods/deathmatch/logic/net/CSimPlayerManager.h +++ b/Server/mods/deathmatch/logic/net/CSimPlayerManager.h @@ -1,9 +1,9 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto + * PROJECT: Multi Theft Auto v1.0 * LICENSE: See LICENSE in the top level directory * - * Multi Theft Auto is available from https://multitheftauto.com/ + * Multi Theft Auto is available from http://www.multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/net/CSimVehiclePuresyncPacket.h b/Server/mods/deathmatch/logic/net/CSimVehiclePuresyncPacket.h index bcde6e9aa5..ead28e54b7 100644 --- a/Server/mods/deathmatch/logic/net/CSimVehiclePuresyncPacket.h +++ b/Server/mods/deathmatch/logic/net/CSimVehiclePuresyncPacket.h @@ -1,9 +1,9 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto + * PROJECT: Multi Theft Auto v1.0 * LICENSE: See LICENSE in the top level directory * - * Multi Theft Auto is available from https://multitheftauto.com/ + * Multi Theft Auto is available from http://www.multitheftauto.com/ * *****************************************************************************/ From 1288daebded9a0677434c13811eb9b51f1100da4 Mon Sep 17 00:00:00 2001 From: patrikjuvonen <22572159+patrikjuvonen@users.noreply.github.com> Date: Sat, 8 Apr 2023 16:29:51 +0300 Subject: [PATCH 48/51] Fix header comments [ci skip] --- Server/mods/deathmatch/logic/net/CSimPlayerManager.cpp | 4 ++-- .../mods/deathmatch/logic/net/CSimVehiclePuresyncPacket.cpp | 4 +++- Server/mods/deathmatch/logic/packets/CKeysyncPacket.cpp | 4 ++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/Server/mods/deathmatch/logic/net/CSimPlayerManager.cpp b/Server/mods/deathmatch/logic/net/CSimPlayerManager.cpp index 697a74cbcd..36b158fbd5 100644 --- a/Server/mods/deathmatch/logic/net/CSimPlayerManager.cpp +++ b/Server/mods/deathmatch/logic/net/CSimPlayerManager.cpp @@ -1,9 +1,9 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ diff --git a/Server/mods/deathmatch/logic/net/CSimVehiclePuresyncPacket.cpp b/Server/mods/deathmatch/logic/net/CSimVehiclePuresyncPacket.cpp index 32661e6ea9..96d59c2906 100644 --- a/Server/mods/deathmatch/logic/net/CSimVehiclePuresyncPacket.cpp +++ b/Server/mods/deathmatch/logic/net/CSimVehiclePuresyncPacket.cpp @@ -1,8 +1,10 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * + * Multi Theft Auto is available from https://multitheftauto.com/ + * *****************************************************************************/ #include "StdInc.h" diff --git a/Server/mods/deathmatch/logic/packets/CKeysyncPacket.cpp b/Server/mods/deathmatch/logic/packets/CKeysyncPacket.cpp index 8bbedb110c..1dfa58450b 100644 --- a/Server/mods/deathmatch/logic/packets/CKeysyncPacket.cpp +++ b/Server/mods/deathmatch/logic/packets/CKeysyncPacket.cpp @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/packets/CKeysyncPacket.cpp * PURPOSE: Key controls synchronization packet class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ From 9b534e93b49868c9e961d03ba311468c9ee4fd87 Mon Sep 17 00:00:00 2001 From: patrikjuvonen <22572159+patrikjuvonen@users.noreply.github.com> Date: Sat, 8 Apr 2023 16:30:07 +0300 Subject: [PATCH 49/51] Fix header comments [ci skip] --- Server/mods/deathmatch/logic/packets/CEntityAddPacket.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Server/mods/deathmatch/logic/packets/CEntityAddPacket.cpp b/Server/mods/deathmatch/logic/packets/CEntityAddPacket.cpp index e89bed44e9..34eaa24431 100644 --- a/Server/mods/deathmatch/logic/packets/CEntityAddPacket.cpp +++ b/Server/mods/deathmatch/logic/packets/CEntityAddPacket.cpp @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory * FILE: mods/deathmatch/logic/packets/CEntityAddPacket.cpp * PURPOSE: Entity-add packet class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ From ddb35c7ed36e2c7cbf4887e8d9570c0839586bde Mon Sep 17 00:00:00 2001 From: Uladzislau Nikalayevich Date: Sat, 15 Jul 2023 19:13:47 +0300 Subject: [PATCH 50/51] Fix file headers --- Server/mods/deathmatch/logic/CHandlingConfig.cpp | 9 +++++++++ Server/mods/deathmatch/logic/CHandlingConfig.h | 9 +++++++++ Server/mods/deathmatch/logic/CObjectConfig.cpp | 9 +++++++++ Server/mods/deathmatch/logic/CObjectConfig.h | 9 +++++++++ Server/mods/deathmatch/logic/CPedConfig.cpp | 9 +++++++++ Server/mods/deathmatch/logic/CPedConfig.h | 9 +++++++++ Server/mods/deathmatch/logic/CVehicleColors.cpp | 9 +++++++++ Server/mods/deathmatch/logic/CVehicleColors.h | 9 +++++++++ Server/mods/deathmatch/logic/CVehiclesConfig.cpp | 9 +++++++++ Server/mods/deathmatch/logic/CVehiclesConfig.h | 9 +++++++++ 10 files changed, 90 insertions(+) diff --git a/Server/mods/deathmatch/logic/CHandlingConfig.cpp b/Server/mods/deathmatch/logic/CHandlingConfig.cpp index 9d1a736850..22e9cddc4a 100644 --- a/Server/mods/deathmatch/logic/CHandlingConfig.cpp +++ b/Server/mods/deathmatch/logic/CHandlingConfig.cpp @@ -1,3 +1,12 @@ +/***************************************************************************** + * + * PROJECT: Multi Theft Auto + * LICENSE: See LICENSE in the top level directory + * + * Multi Theft Auto is available from http://www.multitheftauto.com/ + * + *****************************************************************************/ + #include "StdInc.h" #include "CHandlingConfig.h" #include diff --git a/Server/mods/deathmatch/logic/CHandlingConfig.h b/Server/mods/deathmatch/logic/CHandlingConfig.h index 58fda1949a..faf6960b4a 100644 --- a/Server/mods/deathmatch/logic/CHandlingConfig.h +++ b/Server/mods/deathmatch/logic/CHandlingConfig.h @@ -1,3 +1,12 @@ +/***************************************************************************** + * + * PROJECT: Multi Theft Auto + * LICENSE: See LICENSE in the top level directory + * + * Multi Theft Auto is available from http://www.multitheftauto.com/ + * + *****************************************************************************/ + #pragma once #include "StdInc.h" diff --git a/Server/mods/deathmatch/logic/CObjectConfig.cpp b/Server/mods/deathmatch/logic/CObjectConfig.cpp index 96f8a51b73..79824ebfb5 100644 --- a/Server/mods/deathmatch/logic/CObjectConfig.cpp +++ b/Server/mods/deathmatch/logic/CObjectConfig.cpp @@ -1,3 +1,12 @@ +/***************************************************************************** + * + * PROJECT: Multi Theft Auto + * LICENSE: See LICENSE in the top level directory + * + * Multi Theft Auto is available from http://www.multitheftauto.com/ + * + *****************************************************************************/ + #include "StdInc.h" #include "CObjectConfig.h" #include diff --git a/Server/mods/deathmatch/logic/CObjectConfig.h b/Server/mods/deathmatch/logic/CObjectConfig.h index 3ed1e48c49..024120c044 100644 --- a/Server/mods/deathmatch/logic/CObjectConfig.h +++ b/Server/mods/deathmatch/logic/CObjectConfig.h @@ -1,3 +1,12 @@ +/***************************************************************************** + * + * PROJECT: Multi Theft Auto + * LICENSE: See LICENSE in the top level directory + * + * Multi Theft Auto is available from http://www.multitheftauto.com/ + * + *****************************************************************************/ + #pragma once #include "StdInc.h" diff --git a/Server/mods/deathmatch/logic/CPedConfig.cpp b/Server/mods/deathmatch/logic/CPedConfig.cpp index 006e05e088..48824f6104 100644 --- a/Server/mods/deathmatch/logic/CPedConfig.cpp +++ b/Server/mods/deathmatch/logic/CPedConfig.cpp @@ -1,3 +1,12 @@ +/***************************************************************************** + * + * PROJECT: Multi Theft Auto + * LICENSE: See LICENSE in the top level directory + * + * Multi Theft Auto is available from http://www.multitheftauto.com/ + * + *****************************************************************************/ + #include "StdInc.h" #include "CPedConfig.h" #include diff --git a/Server/mods/deathmatch/logic/CPedConfig.h b/Server/mods/deathmatch/logic/CPedConfig.h index 06730420a9..24588c766b 100644 --- a/Server/mods/deathmatch/logic/CPedConfig.h +++ b/Server/mods/deathmatch/logic/CPedConfig.h @@ -1,3 +1,12 @@ +/***************************************************************************** + * + * PROJECT: Multi Theft Auto + * LICENSE: See LICENSE in the top level directory + * + * Multi Theft Auto is available from http://www.multitheftauto.com/ + * + *****************************************************************************/ + #pragma once #include "StdInc.h" diff --git a/Server/mods/deathmatch/logic/CVehicleColors.cpp b/Server/mods/deathmatch/logic/CVehicleColors.cpp index b9691d522e..5ded59fade 100644 --- a/Server/mods/deathmatch/logic/CVehicleColors.cpp +++ b/Server/mods/deathmatch/logic/CVehicleColors.cpp @@ -1,3 +1,12 @@ +/***************************************************************************** + * + * PROJECT: Multi Theft Auto + * LICENSE: See LICENSE in the top level directory + * + * Multi Theft Auto is available from http://www.multitheftauto.com/ + * + *****************************************************************************/ + #include "StdInc.h" #include "CVehicleColors.h" #include "Utils.h" diff --git a/Server/mods/deathmatch/logic/CVehicleColors.h b/Server/mods/deathmatch/logic/CVehicleColors.h index dbc0bfe4fb..85d4eaae98 100644 --- a/Server/mods/deathmatch/logic/CVehicleColors.h +++ b/Server/mods/deathmatch/logic/CVehicleColors.h @@ -1,3 +1,12 @@ +/***************************************************************************** + * + * PROJECT: Multi Theft Auto + * LICENSE: See LICENSE in the top level directory + * + * Multi Theft Auto is available from http://www.multitheftauto.com/ + * + *****************************************************************************/ + #pragma once #include "StdInc.h" diff --git a/Server/mods/deathmatch/logic/CVehiclesConfig.cpp b/Server/mods/deathmatch/logic/CVehiclesConfig.cpp index 9884c8783b..99ce05941d 100644 --- a/Server/mods/deathmatch/logic/CVehiclesConfig.cpp +++ b/Server/mods/deathmatch/logic/CVehiclesConfig.cpp @@ -1,3 +1,12 @@ +/***************************************************************************** + * + * PROJECT: Multi Theft Auto + * LICENSE: See LICENSE in the top level directory + * + * Multi Theft Auto is available from http://www.multitheftauto.com/ + * + *****************************************************************************/ + #include "StdInc.h" #include "CVehiclesConfig.h" #include "CLogger.h" diff --git a/Server/mods/deathmatch/logic/CVehiclesConfig.h b/Server/mods/deathmatch/logic/CVehiclesConfig.h index 0314c677d3..68d7896b27 100644 --- a/Server/mods/deathmatch/logic/CVehiclesConfig.h +++ b/Server/mods/deathmatch/logic/CVehiclesConfig.h @@ -1,3 +1,12 @@ +/***************************************************************************** + * + * PROJECT: Multi Theft Auto + * LICENSE: See LICENSE in the top level directory + * + * Multi Theft Auto is available from http://www.multitheftauto.com/ + * + *****************************************************************************/ + #pragma once #include "StdInc.h" From 4dab556c554b1c46a35e5b1988bb327e66e3420a Mon Sep 17 00:00:00 2001 From: Uladzislau Nikalayevich Date: Mon, 9 Oct 2023 18:59:50 +0300 Subject: [PATCH 51/51] Fix conflicts --- Client/game_sa/CModelInfoSA.cpp | 10 ++++---- Client/mods/deathmatch/logic/CClientModel.cpp | 22 ++++++++-------- Client/mods/deathmatch/logic/CClientModel.h | 10 ++++---- .../deathmatch/logic/CClientModelManager.cpp | 25 ++++++++++++++++++- .../deathmatch/logic/CClientModelManager.h | 2 +- .../deathmatch/logic/CClientObjectManager.cpp | 2 +- .../logic/lua/CLuaFunctionDefs.Util.cpp | 2 +- .../logic/lua/CLuaFunctionParseHelpers.cpp | 1 + .../logic/lua/CLuaFunctionParseHelpers.h | 1 + .../logic/luadefs/CLuaEngineDefs.cpp | 6 ++--- Client/sdk/game/CModelInfo.h | 2 +- .../logic/lua/CLuaFunctionParseHelpers.cpp | 2 +- 12 files changed, 55 insertions(+), 30 deletions(-) diff --git a/Client/game_sa/CModelInfoSA.cpp b/Client/game_sa/CModelInfoSA.cpp index e74902ab80..c1cf88de34 100644 --- a/Client/game_sa/CModelInfoSA.cpp +++ b/Client/game_sa/CModelInfoSA.cpp @@ -538,7 +538,7 @@ void CModelInfoSA::SetIdeFlags(unsigned int uiFlags) switch (GetModelType()) { case eModelInfoType::ATOMIC: - case eModelInfoType::TIME: + case eModelInfoType::TIMED_OBJECT: { // SetAtomicModelInfoFlags m_pInterface->bIsRoad = ideFlags.bIsRoad; @@ -842,7 +842,7 @@ bool CModelInfoSA::SetTime(char cHourOn, char cHourOff) if (!m_pInterface) return false; - if (GetModelType() != eModelInfoType::TIME) + if (GetModelType() != eModelInfoType::TIMED_OBJECT) return false; CTimeInfoSAInterface* pTime = &static_cast(m_pInterface)->timeInfo; @@ -861,7 +861,7 @@ bool CModelInfoSA::GetTime(char& cHourOn, char& cHourOff) if (!m_pInterface) return false; - if (GetModelType() != eModelInfoType::TIME) + if (GetModelType() != eModelInfoType::TIMED_OBJECT) return false; CTimeInfoSAInterface* pTime = &static_cast(m_pInterface)->timeInfo; @@ -1498,7 +1498,7 @@ bool CModelInfoSA::SetCustomModel(RpClump* pClump) break; case eModelInfoType::ATOMIC: case eModelInfoType::LOD_ATOMIC: - case eModelInfoType::TIME: + case eModelInfoType::TIMED_OBJECT: success = pGame->GetRenderWare()->ReplaceAllAtomicsInModel(pClump, static_cast(m_dwModelID)); break; default: @@ -1804,7 +1804,7 @@ void CModelInfoSA::DeallocateModel(void) case eModelInfoType::CLUMP: delete reinterpret_cast(ppModelInfo[m_dwModelID]); break; - case eModelInfoType::TIME: + case eModelInfoType::TIMED_OBJECT: delete reinterpret_cast(ppModelInfo[m_dwModelID]); break; default: diff --git a/Client/mods/deathmatch/logic/CClientModel.cpp b/Client/mods/deathmatch/logic/CClientModel.cpp index 01e3aac56c..fb9d447051 100644 --- a/Client/mods/deathmatch/logic/CClientModel.cpp +++ b/Client/mods/deathmatch/logic/CClientModel.cpp @@ -12,7 +12,7 @@ #include "StdInc.h" #include "game/CStreaming.h" -CClientModel::CClientModel(CClientManager* pManager, int iModelID, eModelInfoType eModelType) +CClientModel::CClientModel(CClientManager* pManager, int iModelID, eClientModelType eModelType) { m_pManager = pManager; m_iModelID = iModelID; @@ -42,31 +42,31 @@ bool CClientModel::Allocate(ushort usParentID) switch (m_eModelType) { - case eModelInfoType::PED: + case eClientModelType::PED: pModelInfo->MakePedModel("PSYCHO"); return true; - case eModelInfoType::ATOMIC: + case eClientModelType::OBJECT: if (g_pClientGame->GetObjectManager()->IsValidModel(usParentID)) { pModelInfo->MakeObjectModel(usParentID); return true; } break; - case eModelInfoType::CLUMP: + case eClientModelType::CLUMP: if (g_pClientGame->GetObjectManager()->IsValidModel(usParentID)) { pModelInfo->MakeClumpModel(usParentID); return true; } break; - case eModelInfoType::TIME: + case eClientModelType::TIMED_OBJECT: if (g_pClientGame->GetObjectManager()->IsValidModel(usParentID)) { pModelInfo->MakeTimedObjectModel(usParentID); return true; } break; - case eModelInfoType::VEHICLE: + case eClientModelType::VEHICLE: if (g_pClientGame->GetVehicleManager()->IsValidModel(usParentID)) { pModelInfo->MakeVehicleAutomobile(usParentID); @@ -145,7 +145,7 @@ void CClientModel::RestoreDFF(CModelInfo* pModelInfo) switch (m_eModelType) { - case eModelInfoType::PED: + case eClientModelType::PED: { // If some ped is using this ID, change him to CJ CClientPedManager* pPedManager = g_pClientGame->GetManager()->GetPedManager(); @@ -153,9 +153,9 @@ void CClientModel::RestoreDFF(CModelInfo* pModelInfo) unloadModelsAndCallEvents(pPedManager->IterBegin(), pPedManager->IterEnd(), 0, [](auto& element) { element.SetModel(0); }); break; } - case eModelInfoType::ATOMIC: - case eModelInfoType::CLUMP: - case eModelInfoType::TIME: + case eClientModelType::OBJECT: + case eClientModelType::CLUMP: + case eClientModelType::TIMED_OBJECT: { const auto& objects = &g_pClientGame->GetManager()->GetObjectManager()->GetObjects(); unsigned short usParentID = g_pGame->GetModelInfo(m_iModelID)->GetParentID(); @@ -171,7 +171,7 @@ void CClientModel::RestoreDFF(CModelInfo* pModelInfo) g_pClientGame->GetManager()->GetColModelManager()->RestoreModel(m_iModelID); break; } - case eModelInfoType::VEHICLE: + case eClientModelType::VEHICLE: { CClientVehicleManager* pVehicleManager = g_pClientGame->GetManager()->GetVehicleManager(); unsigned short usParentID = g_pGame->GetModelInfo(m_iModelID)->GetParentID(); diff --git a/Client/mods/deathmatch/logic/CClientModel.h b/Client/mods/deathmatch/logic/CClientModel.h index 34d21306e6..ab263edff4 100644 --- a/Client/mods/deathmatch/logic/CClientModel.h +++ b/Client/mods/deathmatch/logic/CClientModel.h @@ -33,7 +33,7 @@ class CClientModel final friend class CClientModelManager; public: - CClientModel(CClientManager* pManager, int iModelID, eModelInfoType eModelType); + CClientModel(CClientManager* pManager, int iModelID, eClientModelType eModelType); ~CClientModel(); int GetModelID(void) const { return m_iModelID; }; @@ -52,8 +52,8 @@ class CClientModel final protected: CClientManager* m_pManager; - int m_iModelID; - eModelInfoType m_eModelType; - bool m_bAllocatedByUs = false; - CResource* m_pParentResource = nullptr; // Resource that allocated model + int m_iModelID; + eClientModelType m_eModelType; + bool m_bAllocatedByUs = false; + CResource* m_pParentResource = nullptr; // Resource that allocated model }; diff --git a/Client/mods/deathmatch/logic/CClientModelManager.cpp b/Client/mods/deathmatch/logic/CClientModelManager.cpp index b1ff5b645d..8378cd9b52 100644 --- a/Client/mods/deathmatch/logic/CClientModelManager.cpp +++ b/Client/mods/deathmatch/logic/CClientModelManager.cpp @@ -147,7 +147,30 @@ bool CClientModelManager::AllocateModelFromParent(uint32_t uiNewModelID, uint32_ if (pModel) return false; - pModel = std::make_shared(g_pClientGame->GetManager(), uiNewModelID, eModelType); + eClientModelType clientModelType; + + switch (eModelType) + { + case eModelInfoType::ATOMIC: + clientModelType = eClientModelType::OBJECT; + break; + case eModelInfoType::TIMED_OBJECT: + clientModelType = eClientModelType::TIMED_OBJECT; + break; + case eModelInfoType::CLUMP: + clientModelType = eClientModelType::CLUMP; + break; + case eModelInfoType::VEHICLE: + clientModelType = eClientModelType::VEHICLE; + break; + case eModelInfoType::PED: + clientModelType = eClientModelType::PED; + break; + default: + return false; + } + + pModel = std::make_shared(g_pClientGame->GetManager(), uiNewModelID, clientModelType); Add(pModel); diff --git a/Client/mods/deathmatch/logic/CClientModelManager.h b/Client/mods/deathmatch/logic/CClientModelManager.h index 9764ff7d52..18acde2a86 100644 --- a/Client/mods/deathmatch/logic/CClientModelManager.h +++ b/Client/mods/deathmatch/logic/CClientModelManager.h @@ -42,7 +42,7 @@ class CClientModelManager std::shared_ptr FindModelByID(int iModelID); std::shared_ptr Request(CClientManager* pManager, int iModelID, eClientModelType eType); - std::vector> GetModelsByType(eModelInfoType type, const unsigned int minModelID = 0); + std::vector> GetModelsByType(eClientModelType type, const unsigned int minModelID = 0); void DeallocateModelsAllocatedByResource(CResource* pResource); bool AllocateModelFromParent(uint32_t usModelID, uint32_t usParentModel); diff --git a/Client/mods/deathmatch/logic/CClientObjectManager.cpp b/Client/mods/deathmatch/logic/CClientObjectManager.cpp index 45cc2a0408..7b69208f03 100644 --- a/Client/mods/deathmatch/logic/CClientObjectManager.cpp +++ b/Client/mods/deathmatch/logic/CClientObjectManager.cpp @@ -110,7 +110,7 @@ bool CClientObjectManager::IsValidModel(unsigned long ulObjectModel) return false; eModelInfoType eType = pModelInfo->GetModelType(); - return (eType == eModelInfoType::CLUMP || eType == eModelInfoType::ATOMIC || eType == eModelInfoType::WEAPON || eType == eModelInfoType::TIME); + return (eType == eModelInfoType::CLUMP || eType == eModelInfoType::ATOMIC || eType == eModelInfoType::WEAPON || eType == eModelInfoType::TIMED_OBJECT); } bool CClientObjectManager::IsBreakableModel(unsigned long ulObjectModel) diff --git a/Client/mods/deathmatch/logic/lua/CLuaFunctionDefs.Util.cpp b/Client/mods/deathmatch/logic/lua/CLuaFunctionDefs.Util.cpp index 2b52a3d286..1217ee5e9e 100644 --- a/Client/mods/deathmatch/logic/lua/CLuaFunctionDefs.Util.cpp +++ b/Client/mods/deathmatch/logic/lua/CLuaFunctionDefs.Util.cpp @@ -29,7 +29,7 @@ int CLuaFunctionDefs::GetValidPedModels(lua_State* luaVM) // Gather our custom skin model IDs allocated with engineRequestModel // (there might be some < 313 as well, and since we don't want duplicates, we start at 313, others are already included by the loop above) - for (const auto& model : m_pManager->GetModelManager()->GetModelsByType(eModelInfoType::PED, 313)) + for (const auto& model : m_pManager->GetModelManager()->GetModelsByType(eClientModelType::PED, 313)) { lua_pushnumber(luaVM, ++iIndex); lua_pushnumber(luaVM, model->GetModelID()); diff --git a/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp b/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp index f47ea11340..f85935fbd3 100644 --- a/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp +++ b/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp @@ -680,6 +680,7 @@ ADD_ENUM(eClientModelType::OBJECT, "object") ADD_ENUM(eClientModelType::VEHICLE, "vehicle") ADD_ENUM(eClientModelType::TIMED_OBJECT, "timed-object") ADD_ENUM(eClientModelType::CLUMP, "clump") +ADD_ENUM(eClientModelType::TXD, "txd") IMPLEMENT_ENUM_CLASS_END("client-model-type") // Sound effects diff --git a/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h b/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h index 976dc6d754..a2c4e1f123 100644 --- a/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h +++ b/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h @@ -82,6 +82,7 @@ DECLARE_ENUM_CLASS(eSoundEffectParams::I3DL2Reverb); DECLARE_ENUM_CLASS(eSoundEffectParams::ParamEq); DECLARE_ENUM_CLASS(eSoundEffectParams::Reverb); DECLARE_ENUM_CLASS(eModelIdeFlag); +DECLARE_ENUM_CLASS(eClientModelType); DECLARE_ENUM_CLASS(_D3DFORMAT); class CRemoteCall; diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp b/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp index 1f171fc8dc..2bad482a3f 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp +++ b/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp @@ -846,7 +846,7 @@ int CLuaEngineDefs::EngineRestoreModel(lua_State* luaVM) int CLuaEngineDefs::EngineRequestModel(lua_State* luaVM) { - eModelInfoType eModelType; + eClientModelType eModelType; CScriptArgReader argStream(luaVM); argStream.ReadEnumString(eModelType); @@ -872,7 +872,7 @@ int CLuaEngineDefs::EngineRequestModel(lua_State* luaVM) { switch (eModelType) { - case eModelInfoType::PED: + case eClientModelType::PED: usParentID = 7; // male01 break; case eClientModelType::TIMED_OBJECT: @@ -884,7 +884,7 @@ int CLuaEngineDefs::EngineRequestModel(lua_State* luaVM) case eClientModelType::OBJECT: usParentID = 1337; // BinNt07_LA (trash can) break; - case eModelInfoType::VEHICLE: + case eClientModelType::VEHICLE: usParentID = VT_LANDSTAL; break; default: diff --git a/Client/sdk/game/CModelInfo.h b/Client/sdk/game/CModelInfo.h index 49a608b2bc..a7a1fd99ee 100644 --- a/Client/sdk/game/CModelInfo.h +++ b/Client/sdk/game/CModelInfo.h @@ -55,7 +55,7 @@ enum class eModelInfoType { INVALID = 0, ATOMIC = 1, - TIME = 3, + TIMED_OBJECT = 3, WEAPON = 4, CLUMP = 5, VEHICLE = 6, diff --git a/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp b/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp index 42db5d9eba..3d93557fb8 100644 --- a/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp +++ b/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp @@ -297,7 +297,7 @@ ADD_ENUM(eModelInfoType::CLUMP, "clump") ADD_ENUM(eModelInfoType::VEHICLE, "vehicle") ADD_ENUM(eModelInfoType::PED, "ped") ADD_ENUM(eModelInfoType::LOD_ATOMIC, "lod-atomic") -IMPLEMENT_ENUM_CLASS_END("model-info-type") +IMPLEMENT_ENUM_CLASS_END("model-type") // // CResource from userdata