From 70ebb5b1f68998f6b68a1e04e068aac7ecdb392a Mon Sep 17 00:00:00 2001 From: Omar Date: Mon, 15 Sep 2025 15:33:09 +0300 Subject: [PATCH 1/6] Add getVehicleWheelState function --- .../logic/luadefs/CLuaVehicleDefs.cpp | 44 +++++++++++++++++++ .../logic/luadefs/CLuaVehicleDefs.h | 1 + .../deathmatch/logic/CResourceChecker.Data.h | 2 + .../logic/CStaticFunctionDefinitions.cpp | 25 +++++++++++ .../logic/CStaticFunctionDefinitions.h | 1 + .../logic/luadefs/CLuaVehicleDefs.cpp | 27 ++++++++++++ .../logic/luadefs/CLuaVehicleDefs.h | 1 + 7 files changed, 101 insertions(+) diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp b/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp index 94945f0fbc5..76008638128 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp +++ b/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp @@ -49,6 +49,7 @@ void CLuaVehicleDefs::LoadFunctions() {"getVehiclePaintjob", GetVehiclePaintjob}, {"getVehiclePlateText", GetVehiclePlateText}, {"getVehicleWheelStates", GetVehicleWheelStates}, + {"getVehicleWheelState", GetVehicleWheelState}, {"isVehicleWheelOnGround", IsVehicleWheelCollided}, {"isVehicleDamageProof", IsVehicleDamageProof}, {"isVehicleFuelTankExplodable", IsVehicleFuelTankExplodable}, @@ -223,6 +224,7 @@ void CLuaVehicleDefs::AddClass(lua_State* luaVM) lua_classfunction(luaVM, "getPaintjob", "getVehiclePaintjob"); lua_classfunction(luaVM, "getTurretPosition", "getVehicleTurretPosition"); lua_classfunction(luaVM, "getWheelStates", "getVehicleWheelStates"); + lua_classfunction(luaVM, "getWheelState", "getVehicleWheelState"); lua_classfunction(luaVM, "isWheelOnGround", "isVehicleWheelOnGround"); lua_classfunction(luaVM, "getDoorOpenRatio", "getVehicleDoorOpenRatio"); lua_classfunction(luaVM, "getVariant", "getVehicleVariant"); @@ -980,6 +982,48 @@ int CLuaVehicleDefs::GetVehicleWheelStates(lua_State* luaVM) return 1; } +int CLuaVehicleDefs::GetVehicleWheelState(lua_State* luaVM) +{ + CClientVehicle* pVehicle = nullptr; + unsigned char ucWheel = 0; + + CScriptArgReader argStream(luaVM); + argStream.ReadUserData(pVehicle); + argStream.ReadNumber(ucWheel); + + if (!argStream.HasErrors() && pVehicle) + { + unsigned char ucState = 0; + + switch (ucWheel) + { + case 1: + ucState = pVehicle->GetWheelStatus(FRONT_LEFT_WHEEL); + break; + case 2: + ucState = pVehicle->GetWheelStatus(REAR_LEFT_WHEEL); + break; + case 3: + ucState = pVehicle->GetWheelStatus(FRONT_RIGHT_WHEEL); + break; + case 4: + ucState = pVehicle->GetWheelStatus(REAR_RIGHT_WHEEL); + break; + default: + lua_pushboolean(luaVM, false); + return 1; + } + + lua_pushnumber(luaVM, ucState); + return 1; + } + else + m_pScriptDebugging->LogCustom(luaVM, argStream.GetFullErrorMessage()); + + lua_pushboolean(luaVM, false); + return 1; +} + int CLuaVehicleDefs::IsVehicleWheelCollided(lua_State* luaVM) { CClientVehicle* pVehicle = nullptr; diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h b/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h index d2139619184..51f7ab0df26 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h +++ b/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h @@ -43,6 +43,7 @@ class CLuaVehicleDefs : public CLuaDefs LUA_DECLARE(GetVehicleUpgradeSlotName); LUA_DECLARE(GetVehicleCompatibleUpgrades); LUA_DECLARE(GetVehicleWheelStates); + LUA_DECLARE(GetVehicleWheelState); LUA_DECLARE(IsVehicleWheelCollided); LUA_DECLARE(GetVehicleDoorState); LUA_DECLARE(GetVehicleLightState); diff --git a/Server/mods/deathmatch/logic/CResourceChecker.Data.h b/Server/mods/deathmatch/logic/CResourceChecker.Data.h index 51d8c22258c..8d7de9c9fcf 100644 --- a/Server/mods/deathmatch/logic/CResourceChecker.Data.h +++ b/Server/mods/deathmatch/logic/CResourceChecker.Data.h @@ -91,6 +91,7 @@ namespace {false, "getVehicleID", "getElementModel"}, {false, "getVehicleRotation", "getElementRotation"}, {false, "getVehicleNameFromID", "getVehicleNameFromModel"}, + {false, "getVehicleWheelStates", "getVehicleWheelState"}, {false, "setVehicleRotation", "setElementRotation"}, {false, "attachElementToElement", "attachElements"}, {false, "detachElementFromElement", "detachElements"}, @@ -155,6 +156,7 @@ namespace {false, "getVehicleID", "getElementModel"}, {false, "getVehicleIDFromName", "getVehicleModelFromName"}, {false, "getVehicleNameFromID", "getVehicleNameFromModel"}, + {false, "getVehicleWheelStates", "getVehicleWheelState"}, {false, "getPlayerWeaponSlot", "getPedWeaponSlot"}, {false, "getPlayerWeapon", "getPedWeapon"}, {false, "getPlayerTotalAmmo", "getPedTotalAmmo"}, diff --git a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp index d42467bc53c..aec998ccf13 100644 --- a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp +++ b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp @@ -5284,6 +5284,31 @@ bool CStaticFunctionDefinitions::GetVehicleWheelStates(CVehicle* pVehicle, unsig return true; } +bool CStaticFunctionDefinitions::GetVehicleWheelState(CVehicle* pVehicle, unsigned char& ucWheel, unsigned char& ucState) +{ + assert(pVehicle); + + switch(ucWheel) + { + case 1: + ucState = pVehicle->m_ucWheelStates[FRONT_LEFT_WHEEL]; + break; + case 2: + ucState = pVehicle->m_ucWheelStates[REAR_LEFT_WHEEL]; + break; + case 3: + ucState = pVehicle->m_ucWheelStates[FRONT_RIGHT_WHEEL]; + break; + case 4: + ucState = pVehicle->m_ucWheelStates[REAR_RIGHT_WHEEL]; + break; + default: + return false; + } + + return true; +} + bool CStaticFunctionDefinitions::GetVehicleLightState(CVehicle* pVehicle, unsigned char ucLight, unsigned char& ucState) { assert(pVehicle); diff --git a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.h b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.h index c0d46d5a7ed..d4a2ce3f5bd 100644 --- a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.h +++ b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.h @@ -264,6 +264,7 @@ class CStaticFunctionDefinitions static bool GetVehicleDoorState(CVehicle* pVehicle, unsigned char ucDoor, unsigned char& ucState); static bool GetVehicleWheelStates(CVehicle* pVehicle, unsigned char& ucFrontLeft, unsigned char& ucRearLeft, unsigned char& ucFrontRight, unsigned char& ucRearRight); + static bool GetVehicleWheelState(CVehicle* pVehicle, unsigned char& ucWheel, unsigned char& ucState); static bool GetVehicleLightState(CVehicle* pVehicle, unsigned char ucLight, unsigned char& ucState); static bool GetVehiclePanelState(CVehicle* pVehicle, unsigned char ucPanel, unsigned char& ucState); static bool GetVehicleOverrideLights(CVehicle* pVehicle, unsigned char& ucLights); diff --git a/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp b/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp index 13d72615fcd..00223d30ac0 100644 --- a/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp +++ b/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp @@ -48,6 +48,7 @@ void CLuaVehicleDefs::LoadFunctions() {"getVehicleCompatibleUpgrades", GetVehicleCompatibleUpgrades}, {"getVehicleDoorState", GetVehicleDoorState}, {"getVehicleWheelStates", GetVehicleWheelStates}, + {"getVehicleWheelState", GetVehicleWheelState}, {"getVehicleLightState", GetVehicleLightState}, {"getVehiclePanelState", GetVehiclePanelState}, {"getVehicleOverrideLights", GetVehicleOverrideLights}, @@ -202,6 +203,7 @@ void CLuaVehicleDefs::AddClass(lua_State* luaVM) lua_classfunction(luaVM, "getUpgradeOnSlot", "getVehicleUpgradeOnSlot"); lua_classfunction(luaVM, "getUpgrades", "getVehicleUpgrades"); lua_classfunction(luaVM, "getWheelStates", "getVehicleWheelStates"); + lua_classfunction(luaVM, "getWheelState", "getVehicleWheelState"); lua_classfunction(luaVM, "getDoorOpenRatio", "getVehicleDoorOpenRatio"); lua_classfunction(luaVM, "getHandling", "getVehicleHandling"); lua_classfunction(luaVM, "getRespawnPosition", "getVehicleRespawnPosition"); @@ -1320,6 +1322,31 @@ int CLuaVehicleDefs::GetVehicleWheelStates(lua_State* luaVM) return 1; } +int CLuaVehicleDefs::GetVehicleWheelState(lua_State* luaVM) +{ + CVehicle* pVehicle; + unsigned char ucWheel = 0; + + CScriptArgReader argStream(luaVM); + argStream.ReadUserData(pVehicle); + argStream.ReadNumber(ucWheel); + + if (!argStream.HasErrors() && pVehicle) + { + unsigned char ucState; + if (CStaticFunctionDefinitions::GetVehicleWheelState(pVehicle, ucWheel, ucState)) + { + lua_pushnumber(luaVM, ucState); + return 1; + } + } + else + m_pScriptDebugging->LogCustom(luaVM, argStream.GetFullErrorMessage()); + + lua_pushboolean(luaVM, false); + return 1; +} + int CLuaVehicleDefs::GetVehicleLightState(lua_State* luaVM) { CVehicle* pVehicle; diff --git a/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h b/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h index 38652371c00..b5dd8373ff5 100644 --- a/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h +++ b/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h @@ -46,6 +46,7 @@ class CLuaVehicleDefs : public CLuaDefs LUA_DECLARE(GetVehicleCompatibleUpgrades); LUA_DECLARE(GetVehicleDoorState); LUA_DECLARE(GetVehicleWheelStates); + LUA_DECLARE(GetVehicleWheelState); LUA_DECLARE(GetVehicleLightState); LUA_DECLARE(GetVehiclePanelState); LUA_DECLARE(GetVehicleOverrideLights); From 4d3b1914f4d344c9ddbe4c2eefe383e88e8b6e46 Mon Sep 17 00:00:00 2001 From: Omar Date: Tue, 16 Sep 2025 18:25:43 +0300 Subject: [PATCH 2/6] fixes --- .../logic/luadefs/CLuaVehicleDefs.cpp | 49 +++++-------------- .../logic/luadefs/CLuaVehicleDefs.h | 2 +- .../logic/CStaticFunctionDefinitions.cpp | 14 +++--- .../logic/CStaticFunctionDefinitions.h | 2 +- .../logic/luadefs/CLuaVehicleDefs.cpp | 29 +++-------- .../logic/luadefs/CLuaVehicleDefs.h | 2 +- 6 files changed, 29 insertions(+), 69 deletions(-) diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp b/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp index 76008638128..a1c9bdcd325 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp +++ b/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp @@ -49,7 +49,7 @@ void CLuaVehicleDefs::LoadFunctions() {"getVehiclePaintjob", GetVehiclePaintjob}, {"getVehiclePlateText", GetVehiclePlateText}, {"getVehicleWheelStates", GetVehicleWheelStates}, - {"getVehicleWheelState", GetVehicleWheelState}, + {"getVehicleWheelState", ArgumentParser}, {"isVehicleWheelOnGround", IsVehicleWheelCollided}, {"isVehicleDamageProof", IsVehicleDamageProof}, {"isVehicleFuelTankExplodable", IsVehicleFuelTankExplodable}, @@ -982,48 +982,23 @@ int CLuaVehicleDefs::GetVehicleWheelStates(lua_State* luaVM) return 1; } -int CLuaVehicleDefs::GetVehicleWheelState(lua_State* luaVM) +std::variant CLuaVehicleDefs::GetVehicleWheelState(CClientVehicle* vehicle, unsigned char wheelIndex) { - CClientVehicle* pVehicle = nullptr; - unsigned char ucWheel = 0; - - CScriptArgReader argStream(luaVM); - argStream.ReadUserData(pVehicle); - argStream.ReadNumber(ucWheel); + if (!vehicle) + return std::nullopt; - if (!argStream.HasErrors() && pVehicle) + switch (wheelIndex) { - unsigned char ucState = 0; - - switch (ucWheel) - { - case 1: - ucState = pVehicle->GetWheelStatus(FRONT_LEFT_WHEEL); - break; - case 2: - ucState = pVehicle->GetWheelStatus(REAR_LEFT_WHEEL); - break; - case 3: - ucState = pVehicle->GetWheelStatus(FRONT_RIGHT_WHEEL); - break; - case 4: - ucState = pVehicle->GetWheelStatus(REAR_RIGHT_WHEEL); - break; - default: - lua_pushboolean(luaVM, false); - return 1; - } - - lua_pushnumber(luaVM, ucState); - return 1; + case 1: return vehicle->GetWheelStatus(FRONT_LEFT_WHEEL); + case 2: return vehicle->GetWheelStatus(REAR_LEFT_WHEEL); + case 3: return vehicle->GetWheelStatus(FRONT_RIGHT_WHEEL); + case 4: return vehicle->GetWheelStatus(REAR_RIGHT_WHEEL); + default: + return std::nullopt; } - else - m_pScriptDebugging->LogCustom(luaVM, argStream.GetFullErrorMessage()); - - lua_pushboolean(luaVM, false); - return 1; } + int CLuaVehicleDefs::IsVehicleWheelCollided(lua_State* luaVM) { CClientVehicle* pVehicle = nullptr; diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h b/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h index 51f7ab0df26..611cf6112c6 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h +++ b/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h @@ -43,7 +43,7 @@ class CLuaVehicleDefs : public CLuaDefs LUA_DECLARE(GetVehicleUpgradeSlotName); LUA_DECLARE(GetVehicleCompatibleUpgrades); LUA_DECLARE(GetVehicleWheelStates); - LUA_DECLARE(GetVehicleWheelState); + static std::optional GetVehicleWheelState(CClientVehicle* vehicle, unsigned char wheelIndex); LUA_DECLARE(IsVehicleWheelCollided); LUA_DECLARE(GetVehicleDoorState); LUA_DECLARE(GetVehicleLightState); diff --git a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp index aec998ccf13..a650a184887 100644 --- a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp +++ b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp @@ -5284,23 +5284,23 @@ bool CStaticFunctionDefinitions::GetVehicleWheelStates(CVehicle* pVehicle, unsig return true; } -bool CStaticFunctionDefinitions::GetVehicleWheelState(CVehicle* pVehicle, unsigned char& ucWheel, unsigned char& ucState) +bool CStaticFunctionDefinitions::GetVehicleWheelState(CVehicle* vehicle, unsigned char wheelIndex, unsigned char& wheelState) { - assert(pVehicle); + assert(vehicle); - switch(ucWheel) + switch(wheelIndex) { case 1: - ucState = pVehicle->m_ucWheelStates[FRONT_LEFT_WHEEL]; + wheelState = vehicle->m_ucWheelStates[FRONT_LEFT_WHEEL]; break; case 2: - ucState = pVehicle->m_ucWheelStates[REAR_LEFT_WHEEL]; + wheelState = vehicle->m_ucWheelStates[REAR_LEFT_WHEEL]; break; case 3: - ucState = pVehicle->m_ucWheelStates[FRONT_RIGHT_WHEEL]; + wheelState = vehicle->m_ucWheelStates[FRONT_RIGHT_WHEEL]; break; case 4: - ucState = pVehicle->m_ucWheelStates[REAR_RIGHT_WHEEL]; + wheelState = vehicle->m_ucWheelStates[REAR_RIGHT_WHEEL]; break; default: return false; diff --git a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.h b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.h index d4a2ce3f5bd..ba82658eaed 100644 --- a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.h +++ b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.h @@ -264,7 +264,7 @@ class CStaticFunctionDefinitions static bool GetVehicleDoorState(CVehicle* pVehicle, unsigned char ucDoor, unsigned char& ucState); static bool GetVehicleWheelStates(CVehicle* pVehicle, unsigned char& ucFrontLeft, unsigned char& ucRearLeft, unsigned char& ucFrontRight, unsigned char& ucRearRight); - static bool GetVehicleWheelState(CVehicle* pVehicle, unsigned char& ucWheel, unsigned char& ucState); + static bool GetVehicleWheelState(CVehicle* vehicle, unsigned char wheelIndex, unsigned char& wheelState); static bool GetVehicleLightState(CVehicle* pVehicle, unsigned char ucLight, unsigned char& ucState); static bool GetVehiclePanelState(CVehicle* pVehicle, unsigned char ucPanel, unsigned char& ucState); static bool GetVehicleOverrideLights(CVehicle* pVehicle, unsigned char& ucLights); diff --git a/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp b/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp index 00223d30ac0..16580209d36 100644 --- a/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp +++ b/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp @@ -48,7 +48,7 @@ void CLuaVehicleDefs::LoadFunctions() {"getVehicleCompatibleUpgrades", GetVehicleCompatibleUpgrades}, {"getVehicleDoorState", GetVehicleDoorState}, {"getVehicleWheelStates", GetVehicleWheelStates}, - {"getVehicleWheelState", GetVehicleWheelState}, + {"getVehicleWheelState", ArgumentParser}, {"getVehicleLightState", GetVehicleLightState}, {"getVehiclePanelState", GetVehiclePanelState}, {"getVehicleOverrideLights", GetVehicleOverrideLights}, @@ -1322,29 +1322,14 @@ int CLuaVehicleDefs::GetVehicleWheelStates(lua_State* luaVM) return 1; } -int CLuaVehicleDefs::GetVehicleWheelState(lua_State* luaVM) +std::variant CLuaVehicleDefs::GetVehicleWheelState(CVehicle* vehicle, unsigned char wheelIndex) { - CVehicle* pVehicle; - unsigned char ucWheel = 0; - - CScriptArgReader argStream(luaVM); - argStream.ReadUserData(pVehicle); - argStream.ReadNumber(ucWheel); - - if (!argStream.HasErrors() && pVehicle) + unsigned char wheelState + if (CStaticFunctionDefinitions::GetVehicleWheelState(vehicle, wheelIndex, wheelState)) { - unsigned char ucState; - if (CStaticFunctionDefinitions::GetVehicleWheelState(pVehicle, ucWheel, ucState)) - { - lua_pushnumber(luaVM, ucState); - return 1; - } + return wheelState; } - else - m_pScriptDebugging->LogCustom(luaVM, argStream.GetFullErrorMessage()); - - lua_pushboolean(luaVM, false); - return 1; + return false; } int CLuaVehicleDefs::GetVehicleLightState(lua_State* luaVM) @@ -3086,4 +3071,4 @@ bool CLuaVehicleDefs::SetVehicleNitroActivated(CVehicle* vehicle, bool state) no m_pPlayerManager->BroadcastOnlyJoined(CElementRPCPacket(vehicle, SET_VEHICLE_NITRO_ACTIVATED, *BitStream.pBitStream)); return true; -} \ No newline at end of file +} diff --git a/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h b/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h index b5dd8373ff5..dd1df96a8cf 100644 --- a/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h +++ b/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h @@ -46,7 +46,7 @@ class CLuaVehicleDefs : public CLuaDefs LUA_DECLARE(GetVehicleCompatibleUpgrades); LUA_DECLARE(GetVehicleDoorState); LUA_DECLARE(GetVehicleWheelStates); - LUA_DECLARE(GetVehicleWheelState); + static std::variant GetVehicleWheelState(CVehicle* vehicle, unsigned char wheelIndex); LUA_DECLARE(GetVehicleLightState); LUA_DECLARE(GetVehiclePanelState); LUA_DECLARE(GetVehicleOverrideLights); From 015c543cadcecc1dfe12dd67dca02371850d4fad Mon Sep 17 00:00:00 2001 From: Omar Date: Wed, 17 Sep 2025 05:41:31 +0300 Subject: [PATCH 3/6] Remove space added by mistake --- Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp b/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp index a1c9bdcd325..933757b4f59 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp +++ b/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp @@ -998,7 +998,6 @@ std::variant CLuaVehicleDefs::GetVehicleWheelState(CClientV } } - int CLuaVehicleDefs::IsVehicleWheelCollided(lua_State* luaVM) { CClientVehicle* pVehicle = nullptr; From e3099fa79a1fc8180d7e114b6423c68047773864 Mon Sep 17 00:00:00 2001 From: Omar Date: Mon, 22 Sep 2025 17:01:17 +0300 Subject: [PATCH 4/6] fixes --- .../logic/luadefs/CLuaVehicleDefs.cpp | 15 +++++-------- .../logic/CStaticFunctionDefinitions.cpp | 22 ++++--------------- 2 files changed, 9 insertions(+), 28 deletions(-) diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp b/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp index 933757b4f59..c59239b7474 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp +++ b/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp @@ -982,20 +982,15 @@ int CLuaVehicleDefs::GetVehicleWheelStates(lua_State* luaVM) return 1; } -std::variant CLuaVehicleDefs::GetVehicleWheelState(CClientVehicle* vehicle, unsigned char wheelIndex) +std::optional CLuaVehicleDefs::GetVehicleWheelState(CClientVehicle* vehicle, unsigned char wheelIndex) { if (!vehicle) return std::nullopt; - switch (wheelIndex) - { - case 1: return vehicle->GetWheelStatus(FRONT_LEFT_WHEEL); - case 2: return vehicle->GetWheelStatus(REAR_LEFT_WHEEL); - case 3: return vehicle->GetWheelStatus(FRONT_RIGHT_WHEEL); - case 4: return vehicle->GetWheelStatus(REAR_RIGHT_WHEEL); - default: - return std::nullopt; - } + if (wheelIndex >= MAX_WHEELS) + return std::nullopt + + return vehicle->GetWheelStatus(static_cast(wheelIndex)); } int CLuaVehicleDefs::IsVehicleWheelCollided(lua_State* luaVM) diff --git a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp index 6330ff3e2f5..dfd77124bfd 100644 --- a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp +++ b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp @@ -5288,24 +5288,10 @@ bool CStaticFunctionDefinitions::GetVehicleWheelState(CVehicle* vehicle, unsigne { assert(vehicle); - switch(wheelIndex) - { - case 1: - wheelState = vehicle->m_ucWheelStates[FRONT_LEFT_WHEEL]; - break; - case 2: - wheelState = vehicle->m_ucWheelStates[REAR_LEFT_WHEEL]; - break; - case 3: - wheelState = vehicle->m_ucWheelStates[FRONT_RIGHT_WHEEL]; - break; - case 4: - wheelState = vehicle->m_ucWheelStates[REAR_RIGHT_WHEEL]; - break; - default: - return false; - } - + if (wheelIndex >= MAX_WHEELS) + return false; + + wheelState = vehicle->m_ucWheelStates[static_cast(wheelIndex)]; return true; } From 0a6820e8aac3e43782b127e1fcefef848f2db836 Mon Sep 17 00:00:00 2001 From: Omar Date: Mon, 22 Sep 2025 17:17:11 +0300 Subject: [PATCH 5/6] fixes wrong syntax --- Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp | 2 +- Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp b/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp index c59239b7474..98e0f42b4d8 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp +++ b/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp @@ -988,7 +988,7 @@ std::optional CLuaVehicleDefs::GetVehicleWheelState(CClientVehicl return std::nullopt; if (wheelIndex >= MAX_WHEELS) - return std::nullopt + return std::nullopt; return vehicle->GetWheelStatus(static_cast(wheelIndex)); } diff --git a/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp b/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp index 16580209d36..e433a58a400 100644 --- a/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp +++ b/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp @@ -1324,7 +1324,7 @@ int CLuaVehicleDefs::GetVehicleWheelStates(lua_State* luaVM) std::variant CLuaVehicleDefs::GetVehicleWheelState(CVehicle* vehicle, unsigned char wheelIndex) { - unsigned char wheelState + unsigned char wheelState; if (CStaticFunctionDefinitions::GetVehicleWheelState(vehicle, wheelIndex, wheelState)) { return wheelState; From 4bf10883fee81dc9ce3bf65de99114ccfbb17e8c Mon Sep 17 00:00:00 2001 From: Omar Date: Tue, 23 Sep 2025 22:56:34 +0300 Subject: [PATCH 6/6] fixes --- Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp | 6 +++--- Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h | 2 +- Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp | 2 +- Server/mods/deathmatch/logic/CStaticFunctionDefinitions.h | 2 +- Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp | 4 ++-- Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp b/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp index 98e0f42b4d8..de4a5e7abff 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp +++ b/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp @@ -982,13 +982,13 @@ int CLuaVehicleDefs::GetVehicleWheelStates(lua_State* luaVM) return 1; } -std::optional CLuaVehicleDefs::GetVehicleWheelState(CClientVehicle* vehicle, unsigned char wheelIndex) +std::variant CLuaVehicleDefs::GetVehicleWheelState(CClientVehicle* vehicle, std::uint8_t wheelIndex) { if (!vehicle) - return std::nullopt; + return false; if (wheelIndex >= MAX_WHEELS) - return std::nullopt; + return false; return vehicle->GetWheelStatus(static_cast(wheelIndex)); } diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h b/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h index 611cf6112c6..9ec3533d47b 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h +++ b/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h @@ -43,7 +43,7 @@ class CLuaVehicleDefs : public CLuaDefs LUA_DECLARE(GetVehicleUpgradeSlotName); LUA_DECLARE(GetVehicleCompatibleUpgrades); LUA_DECLARE(GetVehicleWheelStates); - static std::optional GetVehicleWheelState(CClientVehicle* vehicle, unsigned char wheelIndex); + static std::variant GetVehicleWheelState(CClientVehicle* vehicle, std::uint8_t wheelIndex); LUA_DECLARE(IsVehicleWheelCollided); LUA_DECLARE(GetVehicleDoorState); LUA_DECLARE(GetVehicleLightState); diff --git a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp index dfd77124bfd..2fed1301f1b 100644 --- a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp +++ b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp @@ -5284,7 +5284,7 @@ bool CStaticFunctionDefinitions::GetVehicleWheelStates(CVehicle* pVehicle, unsig return true; } -bool CStaticFunctionDefinitions::GetVehicleWheelState(CVehicle* vehicle, unsigned char wheelIndex, unsigned char& wheelState) +bool CStaticFunctionDefinitions::GetVehicleWheelState(CVehicle* vehicle, std::uint8_t wheelIndex, std::uint8_t& wheelState) { assert(vehicle); diff --git a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.h b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.h index 506dec18ec0..032daba2716 100644 --- a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.h +++ b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.h @@ -264,7 +264,7 @@ class CStaticFunctionDefinitions static bool GetVehicleDoorState(CVehicle* pVehicle, unsigned char ucDoor, unsigned char& ucState); static bool GetVehicleWheelStates(CVehicle* pVehicle, unsigned char& ucFrontLeft, unsigned char& ucRearLeft, unsigned char& ucFrontRight, unsigned char& ucRearRight); - static bool GetVehicleWheelState(CVehicle* vehicle, unsigned char wheelIndex, unsigned char& wheelState); + static bool GetVehicleWheelState(CVehicle* vehicle, std::uint8_t wheelIndex, std::uint8_t& wheelState); static bool GetVehicleLightState(CVehicle* pVehicle, unsigned char ucLight, unsigned char& ucState); static bool GetVehiclePanelState(CVehicle* pVehicle, unsigned char ucPanel, unsigned char& ucState); static bool GetVehicleOverrideLights(CVehicle* pVehicle, unsigned char& ucLights); diff --git a/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp b/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp index e433a58a400..0707c6fb29a 100644 --- a/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp +++ b/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp @@ -1322,9 +1322,9 @@ int CLuaVehicleDefs::GetVehicleWheelStates(lua_State* luaVM) return 1; } -std::variant CLuaVehicleDefs::GetVehicleWheelState(CVehicle* vehicle, unsigned char wheelIndex) +std::variant CLuaVehicleDefs::GetVehicleWheelState(CVehicle* vehicle, std::uint8_t wheelIndex) { - unsigned char wheelState; + std::uint8_t wheelState; if (CStaticFunctionDefinitions::GetVehicleWheelState(vehicle, wheelIndex, wheelState)) { return wheelState; diff --git a/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h b/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h index dd1df96a8cf..8f87c7a6ba5 100644 --- a/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h +++ b/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h @@ -46,7 +46,7 @@ class CLuaVehicleDefs : public CLuaDefs LUA_DECLARE(GetVehicleCompatibleUpgrades); LUA_DECLARE(GetVehicleDoorState); LUA_DECLARE(GetVehicleWheelStates); - static std::variant GetVehicleWheelState(CVehicle* vehicle, unsigned char wheelIndex); + static std::variant GetVehicleWheelState(CVehicle* vehicle, std::uint8_t wheelIndex); LUA_DECLARE(GetVehicleLightState); LUA_DECLARE(GetVehiclePanelState); LUA_DECLARE(GetVehicleOverrideLights);