Skip to content

Commit d21c66f

Browse files
StrixGpatrikjuvonen
authored andcommitted
Add setPedFightingStyle for clientside peds (#810)
* Add setPedFightingStyle for clientside peds * Refactor * Return nil on errors * Hard error
1 parent ded201f commit d21c66f

File tree

4 files changed

+39
-1
lines changed

4 files changed

+39
-1
lines changed

Client/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2308,6 +2308,25 @@ bool CStaticFunctionDefinitions::SetPedDoingGangDriveby(CClientEntity& Entity, b
23082308
return false;
23092309
}
23102310

2311+
bool CStaticFunctionDefinitions::SetPedFightingStyle(CClientEntity& Entity, unsigned char ucStyle)
2312+
{
2313+
RUN_CHILDREN(SetPedFightingStyle(**iter, ucStyle))
2314+
if (IS_PED(&Entity) && Entity.IsLocalEntity())
2315+
{
2316+
CClientPed& Ped = static_cast<CClientPed&>(Entity);
2317+
if (Ped.GetFightingStyle() != ucStyle)
2318+
{
2319+
// Is valid style
2320+
if (ucStyle >= 4 && ucStyle <= 16)
2321+
{
2322+
Ped.SetFightingStyle(static_cast<eFightingStyle>(ucStyle));
2323+
return true;
2324+
}
2325+
}
2326+
}
2327+
return false;
2328+
}
2329+
23112330
bool CStaticFunctionDefinitions::SetPedLookAt(CClientEntity& Entity, CVector& vecPosition, int iTime, int iBlend, CClientEntity* pTarget)
23122331
{
23132332
RUN_CHILDREN(SetPedLookAt(**iter, vecPosition, iTime, iBlend, pTarget))

Client/mods/deathmatch/logic/CStaticFunctionDefinitions.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ class CStaticFunctionDefinitions
177177
static bool SetPedControlState(CClientEntity& Entity, const char* szControl, bool bState);
178178
static bool SetPedAnalogControlState(CClientEntity& Entity, const char* szControl, float fState);
179179
static bool SetPedDoingGangDriveby(CClientEntity& Entity, bool bGangDriveby);
180+
static bool SetPedFightingStyle(CClientEntity& Entity, unsigned char ucStyle);
180181
static bool SetPedLookAt(CClientEntity& Entity, CVector& vecPosition, int iTime, int iBlend, CClientEntity* pTarget);
181182
static bool SetPedHeadless(CClientEntity& Entity, bool bHeadless);
182183
static bool SetPedFrozen(CClientEntity& Entity, bool bFrozen);

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

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ void CLuaPedDefs::LoadFunctions()
7676
{"setPedControlState", SetPedControlState},
7777
{"setPedAnalogControlState", SetPedAnalogControlState},
7878
{"setPedDoingGangDriveby", SetPedDoingGangDriveby},
79+
{"setPedFightingStyle", SetPedFightingStyle},
7980
{"setPedLookAt", SetPedLookAt},
8081
{"setPedHeadless", SetPedHeadless},
8182
{"setPedFrozen", SetPedFrozen},
@@ -168,6 +169,7 @@ void CLuaPedDefs::AddClass(lua_State* luaVM)
168169
lua_classfunction(luaVM, "setOxygenLevel", "setPedOxygenLevel");
169170
lua_classfunction(luaVM, "setWeaponSlot", "setPedWeaponSlot");
170171
lua_classfunction(luaVM, "setDoingGangDriveby", "setPedDoingGangDriveby");
172+
lua_classfunction(luaVM, "setFightingStyle", "setPedFightingStyle");
171173
lua_classfunction(luaVM, "setHeadless", "setPedHeadless");
172174
lua_classfunction(luaVM, "setOnFire", "setPedOnFire");
173175
lua_classfunction(luaVM, "setTargetingMarkerEnabled", "setPedTargetingMarkerEnabled");
@@ -186,7 +188,7 @@ void CLuaPedDefs::AddClass(lua_State* luaVM)
186188
lua_classvariable(luaVM, "hasJetPack", NULL, "doesPedHaveJetPack");
187189
lua_classvariable(luaVM, "jetpack", NULL, "isPedWearingJetpack"); // introduced in 1.5.5-9.13846
188190
lua_classvariable(luaVM, "armor", NULL, "getPedArmor");
189-
lua_classvariable(luaVM, "fightingStyle", NULL, "getPedFightingStyle");
191+
lua_classvariable(luaVM, "fightingStyle", "setPedFightingStyle", "getPedFightingStyle");
190192
lua_classvariable(luaVM, "cameraRotation", "setPedCameraRotation", "getPedCameraRotation");
191193
lua_classvariable(luaVM, "contactElement", NULL, "getPedContactElement");
192194
lua_classvariable(luaVM, "moveState", NULL, "getPedMoveState");
@@ -1700,6 +1702,21 @@ int CLuaPedDefs::SetPedDoingGangDriveby(lua_State* luaVM)
17001702
return 1;
17011703
}
17021704

1705+
int CLuaPedDefs::SetPedFightingStyle(lua_State* luaVM)
1706+
{
1707+
CClientEntity* pEntity;
1708+
unsigned char ucStyle;
1709+
CScriptArgReader argStream(luaVM);
1710+
argStream.ReadUserData(pEntity);
1711+
argStream.ReadNumber(ucStyle);
1712+
1713+
if (argStream.HasErrors())
1714+
return luaL_error(luaVM, argStream.GetFullErrorMessage());
1715+
1716+
lua_pushboolean(luaVM, CStaticFunctionDefinitions::SetPedFightingStyle(*pEntity, ucStyle));
1717+
return 1;
1718+
}
1719+
17031720
int CLuaPedDefs::SetPedLookAt(lua_State* luaVM)
17041721
{
17051722
// Verify the argument

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ class CLuaPedDefs : public CLuaDefs
8080
LUA_DECLARE(SetPedControlState);
8181
LUA_DECLARE(SetPedAnalogControlState);
8282
LUA_DECLARE(SetPedDoingGangDriveby);
83+
LUA_DECLARE(SetPedFightingStyle);
8384
LUA_DECLARE(SetPedLookAt);
8485
LUA_DECLARE(SetPedHeadless);
8586
LUA_DECLARE(SetPedFrozen);

0 commit comments

Comments
 (0)