Skip to content

Commit 70ebb5b

Browse files
committed
Add getVehicleWheelState function
1 parent 02bc654 commit 70ebb5b

File tree

7 files changed

+101
-0
lines changed

7 files changed

+101
-0
lines changed

Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ void CLuaVehicleDefs::LoadFunctions()
4949
{"getVehiclePaintjob", GetVehiclePaintjob},
5050
{"getVehiclePlateText", GetVehiclePlateText},
5151
{"getVehicleWheelStates", GetVehicleWheelStates},
52+
{"getVehicleWheelState", GetVehicleWheelState},
5253
{"isVehicleWheelOnGround", IsVehicleWheelCollided},
5354
{"isVehicleDamageProof", IsVehicleDamageProof},
5455
{"isVehicleFuelTankExplodable", IsVehicleFuelTankExplodable},
@@ -223,6 +224,7 @@ void CLuaVehicleDefs::AddClass(lua_State* luaVM)
223224
lua_classfunction(luaVM, "getPaintjob", "getVehiclePaintjob");
224225
lua_classfunction(luaVM, "getTurretPosition", "getVehicleTurretPosition");
225226
lua_classfunction(luaVM, "getWheelStates", "getVehicleWheelStates");
227+
lua_classfunction(luaVM, "getWheelState", "getVehicleWheelState");
226228
lua_classfunction(luaVM, "isWheelOnGround", "isVehicleWheelOnGround");
227229
lua_classfunction(luaVM, "getDoorOpenRatio", "getVehicleDoorOpenRatio");
228230
lua_classfunction(luaVM, "getVariant", "getVehicleVariant");
@@ -980,6 +982,48 @@ int CLuaVehicleDefs::GetVehicleWheelStates(lua_State* luaVM)
980982
return 1;
981983
}
982984

985+
int CLuaVehicleDefs::GetVehicleWheelState(lua_State* luaVM)
986+
{
987+
CClientVehicle* pVehicle = nullptr;
988+
unsigned char ucWheel = 0;
989+
990+
CScriptArgReader argStream(luaVM);
991+
argStream.ReadUserData(pVehicle);
992+
argStream.ReadNumber(ucWheel);
993+
994+
if (!argStream.HasErrors() && pVehicle)
995+
{
996+
unsigned char ucState = 0;
997+
998+
switch (ucWheel)
999+
{
1000+
case 1:
1001+
ucState = pVehicle->GetWheelStatus(FRONT_LEFT_WHEEL);
1002+
break;
1003+
case 2:
1004+
ucState = pVehicle->GetWheelStatus(REAR_LEFT_WHEEL);
1005+
break;
1006+
case 3:
1007+
ucState = pVehicle->GetWheelStatus(FRONT_RIGHT_WHEEL);
1008+
break;
1009+
case 4:
1010+
ucState = pVehicle->GetWheelStatus(REAR_RIGHT_WHEEL);
1011+
break;
1012+
default:
1013+
lua_pushboolean(luaVM, false);
1014+
return 1;
1015+
}
1016+
1017+
lua_pushnumber(luaVM, ucState);
1018+
return 1;
1019+
}
1020+
else
1021+
m_pScriptDebugging->LogCustom(luaVM, argStream.GetFullErrorMessage());
1022+
1023+
lua_pushboolean(luaVM, false);
1024+
return 1;
1025+
}
1026+
9831027
int CLuaVehicleDefs::IsVehicleWheelCollided(lua_State* luaVM)
9841028
{
9851029
CClientVehicle* pVehicle = nullptr;

Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ class CLuaVehicleDefs : public CLuaDefs
4343
LUA_DECLARE(GetVehicleUpgradeSlotName);
4444
LUA_DECLARE(GetVehicleCompatibleUpgrades);
4545
LUA_DECLARE(GetVehicleWheelStates);
46+
LUA_DECLARE(GetVehicleWheelState);
4647
LUA_DECLARE(IsVehicleWheelCollided);
4748
LUA_DECLARE(GetVehicleDoorState);
4849
LUA_DECLARE(GetVehicleLightState);

Server/mods/deathmatch/logic/CResourceChecker.Data.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ namespace
9191
{false, "getVehicleID", "getElementModel"},
9292
{false, "getVehicleRotation", "getElementRotation"},
9393
{false, "getVehicleNameFromID", "getVehicleNameFromModel"},
94+
{false, "getVehicleWheelStates", "getVehicleWheelState"},
9495
{false, "setVehicleRotation", "setElementRotation"},
9596
{false, "attachElementToElement", "attachElements"},
9697
{false, "detachElementFromElement", "detachElements"},
@@ -155,6 +156,7 @@ namespace
155156
{false, "getVehicleID", "getElementModel"},
156157
{false, "getVehicleIDFromName", "getVehicleModelFromName"},
157158
{false, "getVehicleNameFromID", "getVehicleNameFromModel"},
159+
{false, "getVehicleWheelStates", "getVehicleWheelState"},
158160
{false, "getPlayerWeaponSlot", "getPedWeaponSlot"},
159161
{false, "getPlayerWeapon", "getPedWeapon"},
160162
{false, "getPlayerTotalAmmo", "getPedTotalAmmo"},

Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5284,6 +5284,31 @@ bool CStaticFunctionDefinitions::GetVehicleWheelStates(CVehicle* pVehicle, unsig
52845284
return true;
52855285
}
52865286

5287+
bool CStaticFunctionDefinitions::GetVehicleWheelState(CVehicle* pVehicle, unsigned char& ucWheel, unsigned char& ucState)
5288+
{
5289+
assert(pVehicle);
5290+
5291+
switch(ucWheel)
5292+
{
5293+
case 1:
5294+
ucState = pVehicle->m_ucWheelStates[FRONT_LEFT_WHEEL];
5295+
break;
5296+
case 2:
5297+
ucState = pVehicle->m_ucWheelStates[REAR_LEFT_WHEEL];
5298+
break;
5299+
case 3:
5300+
ucState = pVehicle->m_ucWheelStates[FRONT_RIGHT_WHEEL];
5301+
break;
5302+
case 4:
5303+
ucState = pVehicle->m_ucWheelStates[REAR_RIGHT_WHEEL];
5304+
break;
5305+
default:
5306+
return false;
5307+
}
5308+
5309+
return true;
5310+
}
5311+
52875312
bool CStaticFunctionDefinitions::GetVehicleLightState(CVehicle* pVehicle, unsigned char ucLight, unsigned char& ucState)
52885313
{
52895314
assert(pVehicle);

Server/mods/deathmatch/logic/CStaticFunctionDefinitions.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,7 @@ class CStaticFunctionDefinitions
264264
static bool GetVehicleDoorState(CVehicle* pVehicle, unsigned char ucDoor, unsigned char& ucState);
265265
static bool GetVehicleWheelStates(CVehicle* pVehicle, unsigned char& ucFrontLeft, unsigned char& ucRearLeft, unsigned char& ucFrontRight,
266266
unsigned char& ucRearRight);
267+
static bool GetVehicleWheelState(CVehicle* pVehicle, unsigned char& ucWheel, unsigned char& ucState);
267268
static bool GetVehicleLightState(CVehicle* pVehicle, unsigned char ucLight, unsigned char& ucState);
268269
static bool GetVehiclePanelState(CVehicle* pVehicle, unsigned char ucPanel, unsigned char& ucState);
269270
static bool GetVehicleOverrideLights(CVehicle* pVehicle, unsigned char& ucLights);

Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ void CLuaVehicleDefs::LoadFunctions()
4848
{"getVehicleCompatibleUpgrades", GetVehicleCompatibleUpgrades},
4949
{"getVehicleDoorState", GetVehicleDoorState},
5050
{"getVehicleWheelStates", GetVehicleWheelStates},
51+
{"getVehicleWheelState", GetVehicleWheelState},
5152
{"getVehicleLightState", GetVehicleLightState},
5253
{"getVehiclePanelState", GetVehiclePanelState},
5354
{"getVehicleOverrideLights", GetVehicleOverrideLights},
@@ -202,6 +203,7 @@ void CLuaVehicleDefs::AddClass(lua_State* luaVM)
202203
lua_classfunction(luaVM, "getUpgradeOnSlot", "getVehicleUpgradeOnSlot");
203204
lua_classfunction(luaVM, "getUpgrades", "getVehicleUpgrades");
204205
lua_classfunction(luaVM, "getWheelStates", "getVehicleWheelStates");
206+
lua_classfunction(luaVM, "getWheelState", "getVehicleWheelState");
205207
lua_classfunction(luaVM, "getDoorOpenRatio", "getVehicleDoorOpenRatio");
206208
lua_classfunction(luaVM, "getHandling", "getVehicleHandling");
207209
lua_classfunction(luaVM, "getRespawnPosition", "getVehicleRespawnPosition");
@@ -1320,6 +1322,31 @@ int CLuaVehicleDefs::GetVehicleWheelStates(lua_State* luaVM)
13201322
return 1;
13211323
}
13221324

1325+
int CLuaVehicleDefs::GetVehicleWheelState(lua_State* luaVM)
1326+
{
1327+
CVehicle* pVehicle;
1328+
unsigned char ucWheel = 0;
1329+
1330+
CScriptArgReader argStream(luaVM);
1331+
argStream.ReadUserData(pVehicle);
1332+
argStream.ReadNumber(ucWheel);
1333+
1334+
if (!argStream.HasErrors() && pVehicle)
1335+
{
1336+
unsigned char ucState;
1337+
if (CStaticFunctionDefinitions::GetVehicleWheelState(pVehicle, ucWheel, ucState))
1338+
{
1339+
lua_pushnumber(luaVM, ucState);
1340+
return 1;
1341+
}
1342+
}
1343+
else
1344+
m_pScriptDebugging->LogCustom(luaVM, argStream.GetFullErrorMessage());
1345+
1346+
lua_pushboolean(luaVM, false);
1347+
return 1;
1348+
}
1349+
13231350
int CLuaVehicleDefs::GetVehicleLightState(lua_State* luaVM)
13241351
{
13251352
CVehicle* pVehicle;

Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ class CLuaVehicleDefs : public CLuaDefs
4646
LUA_DECLARE(GetVehicleCompatibleUpgrades);
4747
LUA_DECLARE(GetVehicleDoorState);
4848
LUA_DECLARE(GetVehicleWheelStates);
49+
LUA_DECLARE(GetVehicleWheelState);
4950
LUA_DECLARE(GetVehicleLightState);
5051
LUA_DECLARE(GetVehiclePanelState);
5152
LUA_DECLARE(GetVehicleOverrideLights);

0 commit comments

Comments
 (0)